diff --git a/bash_it.sh b/bash_it.sh
index 693c024..226213f 100755
--- a/bash_it.sh
+++ b/bash_it.sh
@@ -24,6 +24,9 @@
 # Load composure first, so we support function metadata
 source "${BASH_IT}/lib/composure.sh"
 
+# support 'plumbing' metadata
+cite _about _param _example _group _author _version
+
 # Load colors first so they can be use in base theme
 source "${BASH_IT}/themes/colors.theme.bash"
 source "${BASH_IT}/themes/base.theme.bash"
@@ -72,23 +75,3 @@
 then
   . $HOME/.jekyllconfig
 fi
-
-
-#
-# Custom Help
-
-function bash-it() {
-  echo "Welcome to Bash It!"
-  echo
-  echo "Here is a list of commands you can use to get help screens for specific pieces of Bash it:"
-  echo
-  echo "  rails-help                  list out all aliases you can use with rails."
-  echo "  git-help                    list out all aliases you can use with git."
-  echo "  todo-help                   list out all aliases you can use with todo.txt-cli"
-  echo "  brew-help                   list out all aliases you can use with Homebrew"
-  echo "  aliases-help                generic list of aliases."
-  echo "  plugins-help                list out all functions you have installed with bash-it"
-  echo "  bash-it-plugins             summarize bash-it plugins, and their installation status"
-  echo "  reference <function name>   detailed help for a specific function"
-  echo
-}
diff --git a/lib/helpers.bash b/lib/helpers.bash
index 2530d7f..e1787fe 100644
--- a/lib/helpers.bash
+++ b/lib/helpers.bash
@@ -29,33 +29,86 @@
   _load_bash_it_files "plugins"
 }
 
-bash-it-aliases ()
+bash-it ()
 {
-    about 'summarizes available bash_it aliases'
-    group 'lib'
+    about 'bash-it help and maintenance'
+    param '1: verb [one of: help | show | enable | disable ]'
+    param '2: component type [one of: alias(es) | completion(s) | plugin(s) ]'
+    param '3: specific component [optional]'
+    example '$ bash-it show plugins'
+    example '$ bash-it help aliases'
+    example '$ bash-it enable plugin git'
+    example '$ bash-it disable alias hg'
+    typeset verb=${1:-}
+    shift
+    typeset component=${1:-}
+    shift
+    typeset func
+    case $verb in
+         show)
+             func=_bash-it-$component;;
+         enable)
+             func=_enable-$component;;
+         disable)
+             func=_disable-$component;;
+         help)
+             func=_help-$component;;
+         *)
+             reference bash-it
+             return;;
+    esac
+
+    # pluralize component if necessary
+    if ! _is_function $func; then
+        if _is_function ${func}s; then
+            func=${func}s
+        else
+            if _is_function ${func}es; then
+                func=${func}es
+            else
+                echo "oops! $component is not a valid option!"
+                reference bash-it
+                return
+            fi
+        fi
+    fi
+    $func $*
+}
+
+_is_function ()
+{
+    _about 'sets $? to true if parameter is the name of a function'
+    _param '1: name of alleged function'
+    _group 'lib'
+    [ -n "$(type -a $1 2>/dev/null | grep 'is a function')" ]
+}
+
+_bash-it-aliases ()
+{
+    _about 'summarizes available bash_it aliases'
+    _group 'lib'
 
     _bash-it-describe "aliases" "an" "alias" "Alias"
 }
 
-bash-it-completions ()
+_bash-it-completions ()
 {
-    about 'summarizes available bash_it completions'
-    group 'lib'
+    _about 'summarizes available bash_it completions'
+    _group 'lib'
 
     _bash-it-describe "completion" "a" "completion" "Completion"
 }
 
-bash-it-plugins ()
+_bash-it-plugins ()
 {
-    about 'summarizes available bash_it plugins'
-    group 'lib'
+    _about 'summarizes available bash_it plugins'
+    _group 'lib'
 
     _bash-it-describe "plugins" "a" "plugin" "Plugin"
 }
 
 _bash-it-describe ()
 {
-    cite _about _param _example
     _about 'summarizes available bash_it components'
     _param '1: subdirectory'
     _param '2: preposition'
@@ -86,39 +139,38 @@
     printf '%s\n' "$ bash-it disable $file_type <$file_type name> -or- $ bash-it disable $file_type all"
 }
 
-disable-plugin ()
+_disable-plugin ()
 {
-    about 'disables bash_it plugin'
-    param '1: plugin name'
-    example '$ disable-plugin rvm'
-    group 'lib'
+    _about 'disables bash_it plugin'
+    _param '1: plugin name'
+    _example '$ disable-plugin rvm'
+    _group 'lib'
 
     _disable-thing "plugins" "plugin" $1
 }
 
-disable-alias ()
+_disable-alias ()
 {
-    about 'disables bash_it alias'
-    param '1: alias name'
-    example '$ disable-alias git'
-    group 'lib'
+    _about 'disables bash_it alias'
+    _param '1: alias name'
+    _example '$ disable-alias git'
+    _group 'lib'
 
     _disable-thing "aliases" "alias" $1
 }
 
-disable-completion ()
+_disable-completion ()
 {
-    about 'disables bash_it completion'
-    param '1: completion name'
-    example '$ disable-completion git'
-    group 'lib'
+    _about 'disables bash_it completion'
+    _param '1: completion name'
+    _example '$ disable-completion git'
+    _group 'lib'
 
     _disable-thing "completion" "completion" $1
 }
 
 _disable-thing ()
 {
-    cite _about _param _example
     _about 'disables a bash_it component'
     _param '1: subdirectory'
     _param '2: file_type'
@@ -155,32 +207,32 @@
     printf '%s\n' "$file_entity disabled."
 }
 
-enable-plugin ()
+_enable-plugin ()
 {
-    about 'enables bash_it plugin'
-    param '1: plugin name'
-    example '$ enable-plugin rvm'
-    group 'lib'
+    _about 'enables bash_it plugin'
+    _param '1: plugin name'
+    _example '$ enable-plugin rvm'
+    _group 'lib'
 
     _enable-thing "plugins" "plugin" $1
 }
 
-enable-alias ()
+_enable-alias ()
 {
-    about 'enables bash_it alias'
-    param '1: alias name'
-    example '$ enable-alias git'
-    group 'lib'
+    _about 'enables bash_it alias'
+    _param '1: alias name'
+    _example '$ enable-alias git'
+    _group 'lib'
 
     _enable-thing "aliases" "alias" $1
 }
 
-enable-completion ()
+_enable-completion ()
 {
-    about 'enables bash_it completion'
-    param '1: completion name'
-    example '$ enable-completion git'
-    group 'lib'
+    _about 'enables bash_it completion'
+    _param '1: completion name'
+    _example '$ enable-completion git'
+    _group 'lib'
 
     _enable-thing "completion" "completion" $1
 }
@@ -231,15 +283,15 @@
     printf '%s\n' "$file_entity enabled."
 }
 
-alias-help ()
+_help-aliases()
 {
-    about 'shows help for all aliases, or a specific alias group'
-    param '1: optional alias group'
-    example '$ alias-help'
-    example '$ alias-help git'
+    _about 'shows help for all aliases, or a specific alias group'
+    _param '1: optional alias group'
+    _example '$ alias-help'
+    _example '$ alias-help git'
 
     if [ -n "$1" ]; then
-        cat $BASH_IT/aliases/enabled/$1.aliases.bash | metafor alias | sed "s/$/'/"
+        cat $BASH_IT/aliases/available/$1.aliases.bash | metafor alias | sed "s/$/'/"
     else
         typeset f
         for f in $BASH_IT/aliases/enabled/*
@@ -252,10 +304,10 @@
     fi
 }
 
-plugins-help ()
+_help-plugins()
 {
-    about 'summarize all functions defined by enabled bash-it plugins'
-    group 'lib'
+    _about 'summarize all functions defined by enabled bash-it plugins'
+    _group 'lib'
 
     # display a brief progress message...
     printf '%s' 'please wait, building help...'
