diff --git a/aliases/available/general.aliases.bash b/aliases/available/general.aliases.bash
index 660a8ca..89e7e94 100644
--- a/aliases/available/general.aliases.bash
+++ b/aliases/available/general.aliases.bash
@@ -1,5 +1,8 @@
 #!/usr/bin/env bash
 
+cite about-plugin
+about-plugin 'general aliases'
+
 # List directory contents
 alias sl=ls
 alias ls='ls -G'        # Compact view, show colors
diff --git a/lib/helpers.bash b/lib/helpers.bash
index dfd64b0..c75a502 100644
--- a/lib/helpers.bash
+++ b/lib/helpers.bash
@@ -29,27 +29,56 @@
   _load_bash_it_files "plugins"
 }
 
+bash-it-aliases ()
+{
+    about 'summarizes available bash_it aliases'
+    group 'lib'
+    
+    _bash-it-describe "aliases" "an" "alias" "Alias"
+}
+
+bash-it-completions ()
+{
+    about 'summarizes available bash_it completions'
+    group 'lib'
+    
+    _bash-it-describe "completion" "a" "completion" "Completion"
+}
+
 bash-it-plugins ()
 {
     about 'summarizes available bash_it plugins'
     group 'lib'
+    
+    _bash-it-describe "plugins" "a" "plugin" "Plugin"
+}
+
+_bash-it-describe ()
+{
+    about 'summarizes available bash_it plugins'
+    group 'lib'
+    
+    file_type="$1"
+    preposition="$2"
+    command_suffix="$3"
+    column_header="$4"
 
     typeset f
     typeset enabled
-    printf "%-20s%-10s%s\n" 'Plugin' 'Enabled?' 'Description'
-    for f in $BASH_IT/plugins/available/*.bash
+    printf "%-20s%-10s%s\n" "$column_header" 'Enabled?' 'Description'
+    for f in $BASH_IT/$file_type/available/*.bash
     do
-        if [ -e $BASH_IT/plugins/enabled/$(basename $f) ]; then
+        if [ -e $BASH_IT/$file_type/enabled/$(basename $f) ]; then
             enabled='x'
         else
             enabled=' '
         fi
         printf "%-20s%-10s%s\n" "$(basename $f | cut -d'.' -f1)" "  [$enabled]" "$(cat $f | metafor about-plugin)"
     done
-    printf '\n%s\n' 'to enable a plugin, do:'
-    printf '%s\n' '$ enable-plugin  <plugin name> -or- $ enable-plugin all'
-    printf '\n%s\n' 'to disable a plugin, do:'
-    printf '%s\n' '$ disable-plugin <plugin name> -or- $ disable-plugin all'
+    printf '\n%s\n' "to enable $preposition $command_suffix, do:"
+    printf '%s\n' "$ enable-$command_suffix  <$command_suffix name> -or- $ enable-$command_suffix all"
+    printf '\n%s\n' "to disable $preposition $command_suffix, do:"
+    printf '%s\n' "$ disable-$command_suffix <$command_suffix name> -or- $ disable-$command_suffix all"
 }
 
 disable-plugin ()
@@ -58,31 +87,60 @@
     param '1: plugin name'
     example '$ disable-plugin rvm'
     group 'lib'
+    
+    _disable-thing "plugins" "plugin" $1
+}
 
-    if [ -z "$1" ]; then
-        reference disable-plugin
+disable-alias ()
+{
+    about 'disables bash_it alias'
+    param '1: alias name'
+    example '$ disable-alias git'
+    group 'lib'
+    
+    _disable-thing "aliases" "alias" $1
+}
+
+disable-completion ()
+{
+    about 'disables bash_it completion'
+    param '1: completion name'
+    example '$ disable-completion git'
+    group 'lib'
+    
+    _disable-thing "completion" "completion" $1
+}
+
+_disable-thing ()
+{
+	file_type="$1"
+	command_suffix="$2"
+	file_entity="$3"
+	
+    if [ -z "$file_entity" ]; then
+        reference "disable-$command_suffix"
         return
     fi
 
-    if [ "$1" = "all" ]; then
-        typeset f plugin
-        for f in $BASH_IT/plugins/available/*.bash
+    if [ "$file_entity" = "all" ]; then
+        typeset f $command_suffix
+        for f in $BASH_IT/$file_type/available/*.bash
         do
             plugin=$(basename $f)
-            if [ -e $BASH_IT/plugins/enabled/$plugin ]; then
-                rm $BASH_IT/plugins/enabled/$(basename $plugin)
+            if [ -e $BASH_IT/$file_type/enabled/$plugin ]; then
+                rm $BASH_IT/$file_type/enabled/$(basename $plugin)
             fi
         done
     else
-        typeset plugin=$(command ls $BASH_IT/plugins/enabled/$1.*bash 2>/dev/null | head -1)
-        if [ ! -h $plugin ]; then
-            printf '%s\n' 'sorry, that does not appear to be an enabled plugin.'
+        typeset plugin=$(command ls $BASH_IT/$file_type/enabled/$file_entity.*bash 2>/dev/null | head -1)
+        if [ -z "$plugin" ]; then
+            printf '%s\n' "sorry, that does not appear to be an enabled $command_suffix."
             return
         fi
-        rm $BASH_IT/plugins/enabled/$(basename $plugin)
+        rm $BASH_IT/$file_type/enabled/$(basename $plugin)
     fi
 
-    printf '%s\n' "$1 disabled."
+    printf '%s\n' "$file_entity disabled."
 }
 
 enable-plugin ()
@@ -91,38 +149,67 @@
     param '1: plugin name'
     example '$ enable-plugin rvm'
     group 'lib'
+      
+    _enable-thing "plugins" "plugin" $1
+}
 
-    if [ -z "$1" ]; then
-        reference enable-plugin
+enable-alias ()
+{
+    about 'enables bash_it alias'
+    param '1: alias name'
+    example '$ enable-alias git'
+    group 'lib'
+      
+    _enable-thing "aliases" "alias" $1
+}
+
+enable-completion ()
+{
+    about 'enables bash_it completion'
+    param '1: completion name'
+    example '$ enable-completion git'
+    group 'lib'
+      
+    _enable-thing "completion" "completion" $1
+}
+
+_enable-thing ()
+{
+	file_type="$1"
+	command_suffix="$2"
+	file_entity="$3"
+	
+    if [ -z "$file_entity" ]; then
+        reference "enable-$command_suffix"
         return
     fi
 
-    if [ "$1" = "all" ]; then
-        typeset f plugin
-        for f in $BASH_IT/plugins/available/*.bash
+    if [ "$file_entity" = "all" ]; then
+        typeset f $command_suffix
+        for f in $BASH_IT/$file_type/available/*.bash
         do
             plugin=$(basename $f)
-            if [ ! -h $BASH_IT/plugins/enabled/$plugin ]; then
-                ln -s $BASH_IT/plugins/available/$plugin $BASH_IT/plugins/enabled/$plugin
+            if [ ! -h $BASH_IT/$file_type/enabled/$plugin ]; then
+                ln -s $BASH_IT/$file_type/available/$plugin $BASH_IT/$file_type/enabled/$plugin
             fi
         done
     else
-        typeset plugin=$(command ls $BASH_IT/plugins/available/$1.*bash 2>/dev/null | head -1)
+        typeset plugin=$(command ls $BASH_IT/$file_type/available/$file_entity.*bash 2>/dev/null | head -1)
         if [ -z "$plugin" ]; then
-            printf '%s\n' 'sorry, that does not appear to be an available plugin.'
+            printf '%s\n' "sorry, that does not appear to be an available $command_suffix."
             return
         fi
 
         plugin=$(basename $plugin)
-        if [ -e $BASH_IT/plugins/enabled/$plugin ]; then
-            printf '%s\n' "$1 is already enabled."
+        if [ -e $BASH_IT/$file_type/enabled/$plugin ]; then
+            printf '%s\n' "$file_entity is already enabled."
             return
         fi
 
-        ln -s $BASH_IT/plugins/available/$plugin $BASH_IT/plugins/enabled/$plugin
+        ln -s $BASH_IT/$file_type/available/$plugin $BASH_IT/$file_type/enabled/$plugin
     fi
 
-    printf '%s\n' "$1 enabled."
+    printf '%s\n' "$file_entity enabled."
 }
 
 plugins-help ()
