diff --git a/jira/jira-search/getopt/detect-modifiers.sh b/jira/jira-search/getopt/detect-modifiers.sh
new file mode 100644
index 0000000..84a1afd
--- /dev/null
+++ b/jira/jira-search/getopt/detect-modifiers.sh
@@ -0,0 +1,95 @@
+#!/bin/bash
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+
+## -----------------------------------------------------------------------
+## Intent: Set state flags for parsing based on detection of switch modifiers
+## -----------------------------------------------------------------------
+function getopt_detect_modifiers()
+{
+    local arg="$1"; shift
+
+    local -a patterns=()
+    patterns+=('and'  'or')
+    patterns+=('excl' 'incl')
+    patterns+=('in'   'not')
+    patterns+=('is-empty')
+
+    unset getopt_argv_AND
+    unset getopt_argv_EXCL
+    unset getopt_argv_INCL
+    unset getopt_argv_IN
+    unset getopt_argv_IS_EMPTY
+    unset getopt_argv_NOT
+    unset getopt_argv_OR
+
+    local pattern
+    for pattern in "${patterns[@]}";
+    do
+        # echo "** ${FUNCNAME} pattern=[$pattern], arg=[$arg]"
+        case "$pattern" in
+            'and')
+                case "$arg" in
+                    *'-'[aA][nN][dD]*)        declare -g -i getopt_argv_AND=1 ;;
+                esac
+                ;;
+
+            'or')
+                case "$arg" in
+                    *'-'[oO][rR]*)
+                        declare -g -i getopt_argv_OR=1
+                        ;;
+                esac
+                ;;
+
+            'excl')
+                case "$arg" in                    
+                    *'-'[eE][xX][cC][lL]*)    declare -g -i getopt_argv_EXCL=1 ;;
+                esac
+                ;;
+            
+            'incl')
+                case "$arg" in                    
+                    *'-'[iI][nN][cC][lL]*)    declare -g -i getopt_argv_INCL=1 ;;
+                esac
+                ;;
+
+            'in')
+                if [[ ! -v getopt_argv_INCL ]]; then
+                    case "$arg" in                    
+                        *'-'[iI][nN]*)            declare -g -i getopt_argv_IN=1 ;;
+                    esac
+                fi
+                ;;
+
+            'is-empty')
+                case "$arg" in                    
+                    *'-'[iI][sS]-[eE][mM][pP][tT][yY])  declare -g -i getopt_argv_IS_EMPTY=1 ;;
+                esac
+                ;;
+
+            'not')
+                case "$arg" in                    
+                    *'-'[nN][oO][tT]*)        declare -g -i getopt_argv_NOT=1 ;;
+                esac
+                ;;
+
+        esac
+        
+    done
+
+    if false; then
+        [[ -v getopt_argv_AND ]] && { declare -p getopt_argv_AND; }
+        [[ -v getopt_argv_EXCL ]] && { declare -p getopt_argv_EXCL; }
+        [[ -v getopt_argv_INCL ]] && { declare -p getopt_argv_INCL; }
+        [[ -v getopt_argv_IN ]] && { declare -p getopt_argv_IN; }
+        [[ -v getopt_argv_IS_EMPTY ]] && { declare -p getopt_argv_IS_EMPTY; }
+        [[ -v getopt_argv_NOT ]] && { declare -p getopt_argv_NOT; }
+        [[ -v getopt_argv_OR ]] && { declare -p getopt_argv_OR; }
+    fi
+    
+    : # return $?==0
+    return
+}
+
+# [EOF]
diff --git a/jira/jira-search/include.sh b/jira/jira-search/include.sh
new file mode 100644
index 0000000..57405c9
--- /dev/null
+++ b/jira/jira-search/include.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+function init()
+{
+    declare pgm=''
+    pgm="$(realpath --canonicalize-existing "$0")"
+    readonly pgm
+
+    declare -g pgmsrc
+    pgmsrc="$(readlink --canonicalize-existing "${BASH_SOURCE[0]}")"
+    readonly pgmsrc
+
+    # stack-trace-on-error
+    # interrupt handler
+    # mkdir with auto-cleanup at exit
+    declare pgm_root="${pgm%%/jira/jira-search/include.sh}"
+
+    declare root
+    root="${pgm%%/jira/bin/jira-search.sh}"
+    source "$root/lf/onf-common/common.sh" '--common-args-begin--'
+
+    pgm_lib="${root}/jira/jira-search"
+    readonly pgm_lib
+
+    pgm_bin="${root}/bin"
+    readonly pgm_bin
+
+    pgm_help="${root}/jira/jira-search/help"
+    readonly pgm_help
+}
+# init
+# unset init
+
+##--------------------##
+##---]  INCLUDES  [---##
+##--------------------##
+source "${pgm_lib}/getopt/detect-modifiers.sh"
+
+# source "${pgm_lib}/utils.sh"
+#source "$pgmlib/fixversion.sh"
+#source "$pgmlib/resolved.sh"
+source "${pgm_lib}/fixversion.sh"
+source "${pgm_lib}/resolved.sh"
+source "${pgm_lib}/help/utils.sh"
+
+# [EOF]
