diff --git a/gerrit/bin/gerrit.sh b/gerrit/bin/gerrit.sh
index 4900ab1..3463960 100755
--- a/gerrit/bin/gerrit.sh
+++ b/gerrit/bin/gerrit.sh
@@ -27,10 +27,23 @@
 ##--------------------##
 ##---]  INCLUDES  [---##
 ##--------------------##
-source "${libdir}/filters/status.sh"
+source "${libdir}/filters/include.sh"
 source "${libdir}/usage/include.sh"
-# source "${libdir}/usage/main.sh"
 
+## --------------------------------------------------------------------
+## --------------------------------------------------------------------
+function error()
+{
+    cat <<ERROR
+
+** -----------------------------------------------------------------------
+**   IAM: ${FUNCNAME[1]}
+** ERROR: $@
+** -----------------------------------------------------------------------
+ERROR
+    echo 
+    exit 1
+}
 
 ## -----------------------------------------------------------------------
 ## -----------------------------------------------------------------------
@@ -86,7 +99,56 @@
     return
 }
 
+## -----------------------------------------------------------------------
+## Usage: $0 --status open --reviewer [u]
+## -----------------------------------------------------------------------
+function do_gerrit_review()
+{
+    local -n ref_urls=$1   ; shift
+    local -n ref_repos=$1   ; shift
+    local -n ref_status=$1 ; shift
 
+    ref_urls=()
+
+    # local stem='https://gerrit.opencord.org/q/project:voltha-go+status:open'
+    local stem='https://gerrit.opencord.org/q/'
+
+    local -a common=()
+    [[ -v me ]] && { common+=('reviewer:self') }
+
+    for reviewer in "${argv_reviewer[@]}"; do
+        common+=("reviewer:${reviewer}")
+    done
+
+    local repo
+    for repo in "${ref_repos[@]}";
+    do
+        local -a args=()
+        args+=("project:${repo}")
+        args+=("${common[@]}")
+
+        local url="$stem"
+        url+="$(join_by '+' "${args[@]}")"
+        ref_urls+=("$url")
+    done
+
+    ## If not repo specific then query all
+    if [[ ${#ref_urls[@]} -eq 0 ]]; then
+        local -a args=()
+        args=("${common[@]}")
+
+        local url="$stem"
+        url+="$(join_by '+' "${args[@]}")"
+        ref_urls+=("$url")
+    fi
+
+	# --debug)  declare -g -i debug=1 ;;
+    # --search) declare -g -i search=1 ;;
+    # --wip)    declare -g -i status_is_open=1 ;;
+
+    return
+}
+ 
 ## -----------------------------------------------------------------------
 ## Intent: Iterate over --admin values and generate repositories
 ## -----------------------------------------------------------------------
@@ -283,7 +345,7 @@
         --search) declare -g -i argv_search=1 ;;
 
         --me)
-            # declare -g -i argv_me=1
+            declare -g -i argv_me=1
             me+=("owner:${USER}@opennetworking.org")
             ;;
 
@@ -402,13 +464,20 @@
 
         --patch*)
             repo="$1"; shift
-            urls+=("https://gerrit.opencord.org/q/${repo}+stats:open")
+            urls+=("https://gerrit.opencord.org/q/${repo}+status:open")
             # https://gerrit.opencord.org/q/voltha-openolt-adapter-go
             ;;
-        --review)
-            urls+=('https://gerrit.opencord.org/c/aether-ci-management/+/34900')
+
+        --reviewer)
+            arg="$1"; shift
+            add_filter_reviewer "$arg"
+
+            declare -g -i argv_review=1
+            # Replace with: set -- '--review' "$@"
             ;;
 
+        --review) declare -g -i argv_review=1 ;;
+
         --ver*)
             [[ $# -eq 0 ]] && { error "Usage: $arg [str]"; }
             arg="$1"; shift
@@ -470,12 +539,18 @@
     esac
 done
 
-[[ -v argv_search ]] && { do_gerrit_search urls repos argv_status; }
-[[ -v admins ]] && { gen_admin_urls urls repos admins; }
+[[ -v argv_search ]]   && { do_gerrit_search urls repos argv_status; }
+[[ -v admins ]]      && { gen_admin_urls urls repos admins; }
+
+# -----------------------------------------------------------------------
+# Generalize:
+#   o --review function like a simple search filter.
+#   o piece missing is defining query URL stem= when needed.
+# -----------------------------------------------------------------------
+[[ -v argv_review ]] && { do_gerrit_review urls repos argv_status; }
 
 ## are --views working ?
 [[ "${#views[@]}" -gt 0 ]] && { gen_view_urls  urls repos views;  }
-# [[ ! -v views  ]] && { echo 'called'; gen_view_urls  urls repos views;  }
 
 if [[ ${#urls[@]} -eq 0 ]]; then
     declare -a show_all=() # show all for visiblity
