diff --git a/lib/aethyr/core/commands/admin/acarea.rb b/lib/aethyr/core/commands/admin/acarea.rb
index 24ccc2d1ae7e70c3ac9a84c8ab8be8d849b11c89..5fdc36cdb1bd8746aa1f55def8a1e844fca5a0d7 100644
--- a/lib/aethyr/core/commands/admin/acarea.rb
+++ b/lib/aethyr/core/commands/admin/acarea.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Acarea
         class AcareaHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "acarea"
+            see_also = nil
+            syntax_formats = ["ACAREA [NAME]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["acarea"])
+            super(player, ["acarea"], AcareaHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -20,19 +37,10 @@ module Aethyr
             when /^acarea\s+(.*)$/i
               name = $1.strip
               acarea({:name => name})
-            when /^help (acarea)$/i
-              action_help_acarea({})
             end
           end
 
           private
-          def action_help_acarea(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def acarea(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/acdoor.rb b/lib/aethyr/core/commands/admin/acdoor.rb
index 99539248b3055c274a520c5a2adef65d7d94e01a..3c4089e44e1af355703a7581240d644ea06cb1b3 100644
--- a/lib/aethyr/core/commands/admin/acdoor.rb
+++ b/lib/aethyr/core/commands/admin/acdoor.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Acdoor
         class AcdoorHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "acdoor"
+            see_also = nil
+            syntax_formats = ["ACDOOR [DIRECTION] [EXIT_ROOM]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["acdoor"])
+            super(player, ["acdoor"], AcdoorHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -24,19 +41,10 @@ module Aethyr
               direction = $1.strip
               exit_room = $2.strip
               acdoor({:direction => direction, :exit_room => exit_room})
-            when /^help (acdoor)$/i
-              action_help_acdoor({})
             end
           end
 
           private
-          def action_help_acdoor(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def acdoor event, player, room
 
             exit_room = nil
diff --git a/lib/aethyr/core/commands/admin/acexit.rb b/lib/aethyr/core/commands/admin/acexit.rb
index c8075dd3190396f4fd37720f52469b546b46f5c9..183065a67280dd8c1f0b73fb0b53f6fd41447bbb 100644
--- a/lib/aethyr/core/commands/admin/acexit.rb
+++ b/lib/aethyr/core/commands/admin/acexit.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Acexit
         class AcexitHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "acexit"
+            see_also = nil
+            syntax_formats = ["ACEXIT [DIRECTION] [EXIT_ROOM]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["acexit"])
+            super(player, ["acexit"], AcexitHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -22,19 +39,10 @@ module Aethyr
               alt_names = [$1.strip]
               args = [$2.strip]
               acreate({:object => object, :alt_names => alt_names, :args => args})
-            when /^help (acexit)$/i
-              action_help_acexit({})
             end
           end
 
           private
-          def action_help_acexit(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def acreate(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/acomm.rb b/lib/aethyr/core/commands/admin/acomm.rb
index 09eb87de7f22fd3142595548ed08f4dda8f21d43..9821e481de61308275829a39ea9008898a24b509 100644
--- a/lib/aethyr/core/commands/admin/acomm.rb
+++ b/lib/aethyr/core/commands/admin/acomm.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Acomm
         class AcommHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "acomm"
+            see_also = nil
+            syntax_formats = ["ACOMMENT [OBJECT] [COMMENT]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["acomm"])
+            super(player, ["acomm"], AcommHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               target = $2
               comment = $3
               acomment({:target => target, :comment => comment})
-            when /^help (acomm)$/i
-              action_help_acomm({})
             end
           end
 
           private
-          def action_help_acomm(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def acomment(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/acomment.rb b/lib/aethyr/core/commands/admin/acomment.rb
index fbed91bda4df99d5464f3ce7aa60c784bd4276e8..268722a62d8be6bc58b2b1d8bbc9055196c76e42 100644
--- a/lib/aethyr/core/commands/admin/acomment.rb
+++ b/lib/aethyr/core/commands/admin/acomment.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Acomment
         class AcommentHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "acomment"
+            see_also = nil
+            syntax_formats = ["ACOMMENT [OBJECT] [COMMENT]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["acomment"])
+            super(player, ["acomment"], AcommentHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               target = $2
               comment = $3
               acomment({:target => target, :comment => comment})
-            when /^help (acomment)$/i
-              action_help_acomment({})
             end
           end
 
           private
-          def action_help_acomment(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def acomment(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/aconfig.rb b/lib/aethyr/core/commands/admin/aconfig.rb
index 8b40f51188066bf27e59de91dfa4805882cd7c51..0f41725bca0ec4d62522de106d3a53ecb250f8cf 100644
--- a/lib/aethyr/core/commands/admin/aconfig.rb
+++ b/lib/aethyr/core/commands/admin/aconfig.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Aconfig
         class AconfigHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "aconfig"
+            see_also = nil
+            syntax_formats = ["ACONFIG", "ACONFIG RELOAD", "ACONFIG [SETTING] [VALUE]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["aconfig"])
+            super(player, ["aconfig"], AconfigHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -24,19 +41,10 @@ module Aethyr
               setting = $1
               value = $2
               aconfig({:setting => setting, :value => value})
-            when /^help (aconfig)$/i
-              action_help_aconfig({})
             end
           end
 
           private
-          def action_help_aconfig(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def aconfig(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/acportal.rb b/lib/aethyr/core/commands/admin/acportal.rb
index b7c3edd8e483513cb2d6b4fab35e3da89d5d56e5..bfb2e70ab38ffbd51981b32b8eb7e110e5d94ba8 100644
--- a/lib/aethyr/core/commands/admin/acportal.rb
+++ b/lib/aethyr/core/commands/admin/acportal.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Acportal
         class AcportalHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "acportal"
+            see_also = nil
+            syntax_formats = ["ACPORTAL"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["acportal"])
+            super(player, ["acportal"], AcportalHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -23,19 +40,10 @@ module Aethyr
               portal_action = $2
               args = [$4]
               acportal({:object => object, :alt_names => alt_names, :portal_action => portal_action, :args => args})
-            when /^help (acportal)$/i
-              action_help_acportal({})
             end
           end
 
           private
-          def action_help_acportal(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def acportal(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/acprop.rb b/lib/aethyr/core/commands/admin/acprop.rb
index da94b07a6115f12a42f70a68f7b908d796724ee6..d580acb1e3a592aeb0ce311f0b2cd27cde98bc43 100644
--- a/lib/aethyr/core/commands/admin/acprop.rb
+++ b/lib/aethyr/core/commands/admin/acprop.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Acprop
         class AcpropHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "acprop"
+            see_also = nil
+            syntax_formats = ["ACPROP [GENERIC]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["acprop"])
+            super(player, ["acprop"], AcpropHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = "prop"
               generic = $1
               acreate({:object => object, :generic => generic})
-            when /^help (acprop)$/i
-              action_help_acprop({})
             end
           end
 
           private
-          def action_help_acprop(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def acreate(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/acreate.rb b/lib/aethyr/core/commands/admin/acreate.rb
index 55c96b6c3e23ce849736c5ef53f07dbaa300f48b..137c7a658b1dbe480fabfca386f48e6d50ecb5d0 100644
--- a/lib/aethyr/core/commands/admin/acreate.rb
+++ b/lib/aethyr/core/commands/admin/acreate.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Acreate
         class AcreateHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "acreate"
+            see_also = nil
+            syntax_formats = ["ACREATE [OBJECT_TYPE] [NAME]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["acreate"])
+            super(player, ["acreate"], AcreateHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $2
               name = $3.strip
               acreate({:object => object, :name => name})
-            when /^help (acreate)$/i
-              action_help_acreate({})
             end
           end
 
           private
-          def action_help_acreate(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def acreate(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/acroom.rb b/lib/aethyr/core/commands/admin/acroom.rb
index 9f93812b713c8aaa9215ae5e7ff0dcd68971f0f3..f28578b23f09ecd6393cad5630d0a2f9a8b0741f 100644
--- a/lib/aethyr/core/commands/admin/acroom.rb
+++ b/lib/aethyr/core/commands/admin/acroom.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Acroom
         class AcroomHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "acroom"
+            see_also = nil
+            syntax_formats = ["ACROOM [OUT_DIRECTION] [NAME]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["acroom"])
+            super(player, ["acroom"], AcroomHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -22,19 +39,10 @@ module Aethyr
               in_dir = opposite_dir($1)
               name = $2
               acroom({:out_dir => out_dir, :in_dir => in_dir, :name => name})
-            when /^help (acroom)$/i
-              action_help_acroom({})
             end
           end
 
           private
-          def action_help_acroom(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def acroom(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/adelete.rb b/lib/aethyr/core/commands/admin/adelete.rb
index e94ddd959d870874f791c34fae2706672eea5532..9f4db48d62cc921401e245df85f9426fd0809dbd 100644
--- a/lib/aethyr/core/commands/admin/adelete.rb
+++ b/lib/aethyr/core/commands/admin/adelete.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Adelete
         class AdeleteHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "adelete"
+            see_also = nil
+            syntax_formats = ["ADELETE [OBJECT]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["adelete"])
+            super(player, ["adelete"], AdeleteHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -20,19 +37,10 @@ module Aethyr
             when /^adelete\s+(.*)$/i
               object = $1
               adelete({:object => object})
-            when /^help (adelete)$/i
-              action_help_adelete({})
             end
           end
 
           private
-          def action_help_adelete(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def adelete(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/adesc.rb b/lib/aethyr/core/commands/admin/adesc.rb
index 18d08997f6b4aaf23ec44b97446e5e403bbdaf93..7f8ef15796d557752239479e3edbbb2b7efba1da 100644
--- a/lib/aethyr/core/commands/admin/adesc.rb
+++ b/lib/aethyr/core/commands/admin/adesc.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Adesc
         class AdescHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "adesc"
+            see_also = nil
+            syntax_formats = ["ADESC [OBJECT] [DESCRIPTION]", "ADESC INROOM [OBJECT] [DESCRIPTION]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["adesc"])
+            super(player, ["adesc"], AdescHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -26,19 +43,10 @@ module Aethyr
               object = $1
               desc = $2
               adesc({:object => object, :desc => desc})
-            when /^help (adesc)$/i
-              action_help_adesc({})
             end
           end
 
           private
-          def action_help_adesc(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def adesc(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/aforce.rb b/lib/aethyr/core/commands/admin/aforce.rb
index 13d8e2cda2bc1334f1df93e7b96e2f7c6fefef17..6c63e9f67fa0824cff527f546e6904acc599baf8 100644
--- a/lib/aethyr/core/commands/admin/aforce.rb
+++ b/lib/aethyr/core/commands/admin/aforce.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Aforce
         class AforceHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "aforce"
+            see_also = nil
+            syntax_formats = ["AFORCE [OBJECT] [ACTION]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["aforce"])
+            super(player, ["aforce"], AforceHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               target = $1
               command = $2
               aforce({:target => target, :command => command})
-            when /^help (aforce)$/i
-              action_help_aforce({})
             end
           end
 
           private
-          def action_help_aforce(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def aforce(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/ahelp.rb b/lib/aethyr/core/commands/admin/ahelp.rb
index 1d58b04e717ddcb1de6e4cc80bab720dc5203397..4c3ec7d72217c9a128bd862c5679e02fd0f00966 100644
--- a/lib/aethyr/core/commands/admin/ahelp.rb
+++ b/lib/aethyr/core/commands/admin/ahelp.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Ahelp
         class AhelpHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "ahelp"
+            see_also = nil
+            syntax_formats = ["AHELP"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["ahelp"])
+            super(player, ["ahelp"], AhelpHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -20,19 +37,10 @@ module Aethyr
             when /^ahelp(.*)$/i
               object = $1
               ahelp({:object => object})
-            when /^help (ahelp)$/i
-              action_help_ahelp({})
             end
           end
 
           private
-          def action_help_ahelp(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def ahelp(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/ahide.rb b/lib/aethyr/core/commands/admin/ahide.rb
index b03383752eee3c6151dda98dfe658ab166120772..6ee5a7ae56d2e04c903d2608f4e292150e346171 100644
--- a/lib/aethyr/core/commands/admin/ahide.rb
+++ b/lib/aethyr/core/commands/admin/ahide.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Ahide
         class AhideHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "ahide"
+            see_also = nil
+            syntax_formats = ["AHIDE"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["ahide"])
+            super(player, ["ahide"], AhideHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $1
               hide = true
               ahide({:object => object, :hide => hide})
-            when /^help (ahide)$/i
-              action_help_ahide({})
             end
           end
 
           private
-          def action_help_ahide(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def ahide(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/ainfo.rb b/lib/aethyr/core/commands/admin/ainfo.rb
index 88b7c9f96d3a6ed3db906fd8e9c06d668f6dba8e..5d68380aed9cfc6aede1656f1142ed6f93c8dd58 100644
--- a/lib/aethyr/core/commands/admin/ainfo.rb
+++ b/lib/aethyr/core/commands/admin/ainfo.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Ainfo
         class AinfoHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "ainfo"
+            see_also = nil
+            syntax_formats = ["AINFO SET [OBJECT] @[ATTRIBUTE] [VALUE]", "AINFO DELETE [OBJECT] @[ATTRIBUTE]", "AINFO [SHOW|CLEAR] [OBJECT]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["ainfo"])
+            super(player, ["ainfo"], AinfoHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -32,19 +49,10 @@ module Aethyr
               object = $2
               attrib = $3
               ainfo({:command => command, :object => object, :attrib => attrib})
-            when /^help (ainfo)$/i
-              action_help_ainfo({})
             end
           end
 
           private
-          def action_help_ainfo(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def ainfo(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/alearn.rb b/lib/aethyr/core/commands/admin/alearn.rb
index dcf633c8c1a81f50eae5205d4a67b5249d505e31..62c2467c2601713e941e5113bf65dfe63a1807f7 100644
--- a/lib/aethyr/core/commands/admin/alearn.rb
+++ b/lib/aethyr/core/commands/admin/alearn.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Alearn
         class AlearnHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "alearn"
+            see_also = nil
+            syntax_formats = ["ALEARN [SKILL]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["alearn"])
+            super(player, ["alearn"], AlearnHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -20,19 +37,10 @@ module Aethyr
             when /^alearn\s+(\w+)$/i
               skill = $1
               alearn({:skill => skill})
-            when /^help (alearn)$/i
-              action_help_alearn({})
             end
           end
 
           private
-          def action_help_alearn(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def alearn(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/alist.rb b/lib/aethyr/core/commands/admin/alist.rb
index 8424c99d74c770c24710bf53a3911d4cdbe60a86..629eb213c624b4ce70c7d95fbb9e5e215d37f9e9 100644
--- a/lib/aethyr/core/commands/admin/alist.rb
+++ b/lib/aethyr/core/commands/admin/alist.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Alist
         class AlistHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "alist"
+            see_also = nil
+            syntax_formats = ["ALIST [ATTRIB] [QUERY]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["alist"])
+            super(player, ["alist"], AlistHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -23,19 +40,10 @@ module Aethyr
               attrib = $2
               match = $1
               alist({:attrib => attrib, :match => match})
-            when /^help (alist)$/i
-              action_help_alist({})
             end
           end
 
           private
-          def action_help_alist(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def alist(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/alog.rb b/lib/aethyr/core/commands/admin/alog.rb
index 235e7d11674d7207af101f56c2bc7f1abe7a73d2..975464ee5b3f7bec69d1fc848d5ba3d59d455c27 100644
--- a/lib/aethyr/core/commands/admin/alog.rb
+++ b/lib/aethyr/core/commands/admin/alog.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Alog
         class AlogHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "alog"
+            see_also = nil
+            syntax_formats = ["ALOG (DEBUG|NORMAL|HIGH|ULTIMATE|OFF)", "ALOG (PLAYER|SERVER|SYSTEM) [LINES]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["alog"])
+            super(player, ["alog"], AlogHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               command = $1
               value = $3.downcase if $3
               alog({:command => command, :value => value})
-            when /^help (alog)$/i
-              action_help_alog({})
             end
           end
 
           private
-          def action_help_alog(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def alog(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/alook.rb b/lib/aethyr/core/commands/admin/alook.rb
index 87fdbd270b9898b1513a1d4ea5caefe8ee797493..ab44f46933b0c4334ed19f3861a81f30e4100b98 100644
--- a/lib/aethyr/core/commands/admin/alook.rb
+++ b/lib/aethyr/core/commands/admin/alook.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Alook
         class AlookHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "alook"
+            see_also = nil
+            syntax_formats = ["ALOOK [OBJECT]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["alook"])
+            super(player, ["alook"], AlookHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -22,19 +39,10 @@ module Aethyr
             when /^alook\s+(.*)$/i
               at = $1
               alook({:at => at})
-            when /^help (alook)$/i
-              action_help_alook({})
             end
           end
 
           private
-          def action_help_alook(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def alook(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/aput.rb b/lib/aethyr/core/commands/admin/aput.rb
index 3b02d70f523a0aec4f331e7977bc12af2922febd..b6b91f2fdd7bbbbc9db4ac102a5ee9569d6b4df3 100644
--- a/lib/aethyr/core/commands/admin/aput.rb
+++ b/lib/aethyr/core/commands/admin/aput.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Aput
         class AputHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "aput"
+            see_also = nil
+            syntax_formats = ["APUT [OBJECT] IN [CONTAINER]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["aput"])
+            super(player, ["aput"], AputHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -26,19 +43,10 @@ module Aethyr
               object = $1
               in_var = $2
               aput({:object => object, :in => in_var})
-            when /^help (aput)$/i
-              action_help_aput({})
             end
           end
 
           private
-          def action_help_aput(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def aput(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/areact.rb b/lib/aethyr/core/commands/admin/areact.rb
index 65f8cecf5caeaf4538f5dc309cbefa92240ac967..021ae561395f408a1741fc2a509e18c19430abae 100644
--- a/lib/aethyr/core/commands/admin/areact.rb
+++ b/lib/aethyr/core/commands/admin/areact.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Areact
         class AreactHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "areact"
+            see_also = nil
+            syntax_formats = ["AREACT LOAD [OBJECT] [FILE]", "AREACT [RELOAD|CLEAR] [OBJECT]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["areact"])
+            super(player, ["areact"], AreactHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -31,19 +48,10 @@ module Aethyr
               command = $1
               action_name = $3
               areaction({:object => object, :command => command, :action_name => action_name})
-            when /^help (areact)$/i
-              action_help_areact({})
             end
           end
 
           private
-          def action_help_areact(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def areaction(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/areas.rb b/lib/aethyr/core/commands/admin/areas.rb
index 71b69c04e0069119963a990bb3e17fd109fac96c..16c5a44c2b839b178a973a6f8d34610c3d35589e 100644
--- a/lib/aethyr/core/commands/admin/areas.rb
+++ b/lib/aethyr/core/commands/admin/areas.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Areas
         class AreasHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "areas"
+            see_also = nil
+            syntax_formats = ["AREAS"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["areas"])
+            super(player, ["areas"], AreasHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -19,19 +36,10 @@ module Aethyr
             case data[:input]
             when /^areas$/i
               areas({})
-            when /^help (areas)$/i
-              action_help_areas({})
             end
           end
 
           private
-          def action_help_areas(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def areas(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/areload.rb b/lib/aethyr/core/commands/admin/areload.rb
index 1837bf4f6eb24829748b1d72dc6afe1f1a94d4f3..fa47c902ade34866a20de1ca46eb5f597b279a45 100644
--- a/lib/aethyr/core/commands/admin/areload.rb
+++ b/lib/aethyr/core/commands/admin/areload.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Areload
         class AreloadHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "areload"
+            see_also = nil
+            syntax_formats = ["ARELOAD [OBJECT]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["areload"])
+            super(player, ["areload"], AreloadHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -20,19 +37,10 @@ module Aethyr
             when /^areload\s+(.*)$/i
               object = $1
               areload({:object => object})
-            when /^help (areload)$/i
-              action_help_areload({})
             end
           end
 
           private
-          def action_help_areload(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def areload(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/asave.rb b/lib/aethyr/core/commands/admin/asave.rb
index 1c8c4753207de5576275420a37bc88f47b64d773..83b8401cc688a05269178cb06a8881ad618ee0fc 100644
--- a/lib/aethyr/core/commands/admin/asave.rb
+++ b/lib/aethyr/core/commands/admin/asave.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Asave
         class AsaveHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "asave"
+            see_also = nil
+            syntax_formats = ["ASAVE"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["asave"])
+            super(player, ["asave"], AsaveHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -19,19 +36,10 @@ module Aethyr
             case data[:input]
             when /^asave$/i
               asave({})
-            when /^help (asave)$/i
-              action_help_asave({})
             end
           end
 
           private
-          def action_help_asave(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def asave(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/aset.rb b/lib/aethyr/core/commands/admin/aset.rb
index 1ad79e0c4d72b9134e0dcbf87d40109e42ef1c32..c3785c1b1596062735d3691ff1a6be9a8c5c6031 100644
--- a/lib/aethyr/core/commands/admin/aset.rb
+++ b/lib/aethyr/core/commands/admin/aset.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Aset
         class AsetHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "aset"
+            see_also = nil
+            syntax_formats = ["ASET [OBJECT] @[ATTRIBUTE] [VALUE]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["aset", "aset!"])
+            super(player, ["aset", "aset!"], AsetHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -34,19 +51,10 @@ module Aethyr
               value = $3
               force = true
               aset({:object => object, :attribute => attribute, :value => value, :force => force})
-            when /^help (aset|aset!)$/i
-              action_help_aset({})
             end
           end
 
           private
-          def action_help_aset(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def aset(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/ashow.rb b/lib/aethyr/core/commands/admin/ashow.rb
index 3191f8156017e96e38cc16a44959e25a5acd8aec..f1ff2be9f3f46691a387b7a75e42af587fc35146 100644
--- a/lib/aethyr/core/commands/admin/ashow.rb
+++ b/lib/aethyr/core/commands/admin/ashow.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Ashow
         class AshowHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "ashow"
+            see_also = nil
+            syntax_formats = ["ASHOW"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["ashow"])
+            super(player, ["ashow"], AshowHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $1
               hide = false
               ahide({:object => object, :hide => hide})
-            when /^help (ashow)$/i
-              action_help_ashow({})
             end
           end
 
           private
-          def action_help_ashow(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def ahide(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/astatus.rb b/lib/aethyr/core/commands/admin/astatus.rb
index 39307d542e746f0ce2f2322dc3f4fa799eee592f..1a30bdd74c88f6d77dece4e965e614303009a0b2 100644
--- a/lib/aethyr/core/commands/admin/astatus.rb
+++ b/lib/aethyr/core/commands/admin/astatus.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Astatus
         class AstatusHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "astatus"
+            see_also = nil
+            syntax_formats = ["ASTATUS"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["astatus"])
+            super(player, ["astatus"], AstatusHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -19,19 +36,10 @@ module Aethyr
             case data[:input]
             when /^astatus/i
               astatus({})
-            when /^help (astatus)$/i
-              action_help_astatus({})
             end
           end
 
           private
-          def action_help_astatus(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def astatus(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/ateach.rb b/lib/aethyr/core/commands/admin/ateach.rb
index d2e21d1ce04a58369b5fe0ae9e2642c29afc39ae..0f133d09ba659152213eb9d1bdd41b8b9f681e1e 100644
--- a/lib/aethyr/core/commands/admin/ateach.rb
+++ b/lib/aethyr/core/commands/admin/ateach.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Ateach
         class AteachHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "ateach"
+            see_also = nil
+            syntax_formats = ["ATEACH [OBJECT] [SKILL]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["ateach"])
+            super(player, ["ateach"], AteachHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               target = $1
               skill = $2
               ateach({:target => target, :skill => skill})
-            when /^help (ateach)$/i
-              action_help_ateach({})
             end
           end
 
           private
-          def action_help_ateach(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def ateach(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/awatch.rb b/lib/aethyr/core/commands/admin/awatch.rb
index b014ca6e747ba138fe63728ee5d669e5a296bb61..7424309f9a8b8214caafad4fca723ba75be7c51a 100644
--- a/lib/aethyr/core/commands/admin/awatch.rb
+++ b/lib/aethyr/core/commands/admin/awatch.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Awatch
         class AwatchHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "awatch"
+            see_also = nil
+            syntax_formats = ["AWATCH"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["awatch"])
+            super(player, ["awatch"], AwatchHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               target = $3.downcase if $3
               command = $2.downcase if $2
               awatch({:target => target, :command => command})
-            when /^help (awatch)$/i
-              action_help_awatch({})
             end
           end
 
           private
-          def action_help_awatch(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def awatch(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/awho.rb b/lib/aethyr/core/commands/admin/awho.rb
index 7a68b50e4fe88ac2f8a8d94fe4ce80025b9a0df0..772acef6d46e1ae8b696c4e48e50607975ddb2f0 100644
--- a/lib/aethyr/core/commands/admin/awho.rb
+++ b/lib/aethyr/core/commands/admin/awho.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Awho
         class AwhoHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "awho"
+            see_also = nil
+            syntax_formats = ["AWHO"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["awho"])
+            super(player, ["awho"], AwhoHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -19,19 +36,10 @@ module Aethyr
             case data[:input]
             when /^awho/i
               awho({})
-            when /^help (awho)$/i
-              action_help_awho({})
             end
           end
 
           private
-          def action_help_awho(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def awho(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/deleteplayer.rb b/lib/aethyr/core/commands/admin/deleteplayer.rb
index c81cffbbe9afb568c750ff7f9e2fe46693801a6e..e2c0794c52d3d0b0a378b081c9aff15878ed8118 100644
--- a/lib/aethyr/core/commands/admin/deleteplayer.rb
+++ b/lib/aethyr/core/commands/admin/deleteplayer.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Deleteplayer
         class DeleteplayerHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "deleteplayer"
+            see_also = nil
+            syntax_formats = ["DELETEPLAYER"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["deleteplayer"])
+            super(player, ["deleteplayer"], DeleteplayerHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -20,19 +37,10 @@ module Aethyr
             when /^deleteplayer\s+(\w+)$/i
               object = $1.downcase
               delete_player({:object => object})
-            when /^help (deleteplayer)$/i
-              action_help_deleteplayer({})
             end
           end
 
           private
-          def action_help_deleteplayer(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def delete_player(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/restart.rb b/lib/aethyr/core/commands/admin/restart.rb
index b66336de36ec0b6abc41bddb95ceca80e0f288da..7720a9780dd47c25828810a7e72094baad6e9dd8 100644
--- a/lib/aethyr/core/commands/admin/restart.rb
+++ b/lib/aethyr/core/commands/admin/restart.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Restart
         class RestartHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "restart"
+            see_also = nil
+            syntax_formats = ["RESTART"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["restart"])
+            super(player, ["restart"], RestartHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -19,19 +36,10 @@ module Aethyr
             case data[:input]
             when /^restart$/i
               restart({})
-            when /^help (restart)$/i
-              action_help_restart({})
             end
           end
 
           private
-          def action_help_restart(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def restart(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/admin/terrain.rb b/lib/aethyr/core/commands/admin/terrain.rb
index 1c2429cf13c622e2ea4ecf42b64fd5e6ac615555..4ec1d45a4fcad7be60ffee82377843ecb9edb08e 100644
--- a/lib/aethyr/core/commands/admin/terrain.rb
+++ b/lib/aethyr/core/commands/admin/terrain.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Terrain
         class TerrainHandler < Aethyr::Extend::AdminHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "terrain"
+            see_also = nil
+            syntax_formats = ["TERRAIN AREA [TYPE]", "TERRAIN HERE TYPE [TYPE]", "TERRAIN HERE (INDOORS|WATER|UNDERWATER) (YES|NO)"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["terrain"])
+            super(player, ["terrain"], TerrainHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -26,19 +43,10 @@ module Aethyr
               setting = $2.downcase
               value = $3
               terrain({:target => target, :setting => setting, :value => value})
-            when /^help (terrain)$/i
-              action_help_terrain({})
             end
           end
 
           private
-          def action_help_terrain(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def terrain(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/block.rb b/lib/aethyr/core/commands/block.rb
index 7a7aa7c00ed2a5948d6d541c069e0197e4d5fbda..6e660092b56071bcdc219c5fe8d939cce537f9ae 100644
--- a/lib/aethyr/core/commands/block.rb
+++ b/lib/aethyr/core/commands/block.rb
@@ -6,8 +6,26 @@ module Aethyr
     module Commands
       module Block
         class BlockHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "block"
+            see_also = ["THRUST", "STATUS"]
+            syntax_formats = ["BLOCK <target>", "BLOCK"]
+            aliases = nil
+            content =  <<'EOF'
+This is a simple block which uses your weapon to attempt to block an opponent's attack. If you are not wielding a weapon, you will attempt a block with your bare hands.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["block"])
+            super(player, ["block"], BlockHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -20,27 +38,10 @@ module Aethyr
             when /^block(\s+(.*))?$/i
               target = $2
               simple_block({:target => target})
-            when /^help (block)$/i
-              action_help_block({})
             end
           end
 
           private
-          def action_help_block(event)
-            @player.output <<'EOF'
-Command: Simple Block
-Syntax: BLOCK <target>
-Syntax: BLOCK
-
-This is a simple block which uses your weapon to attempt to block an opponent's attack. If you are not wielding a weapon, you will attempt a block with your bare hands.
-
-
-See also: THRUST, STATUS
-
-EOF
-          end
-
-
           def simple_block(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/command_handler.rb b/lib/aethyr/core/commands/command_handler.rb
index 034a39319bf0924648cb1c26ab52a39cc56c734f..f263145481bad8a740b338ad6af6521931da7e83 100644
--- a/lib/aethyr/core/commands/command_handler.rb
+++ b/lib/aethyr/core/commands/command_handler.rb
@@ -7,7 +7,7 @@ module Aethyr
       attr_reader :player
 
       def initialize(player, *args)
-        super(*args)
+        super()
         @player = player
       end
 
diff --git a/lib/aethyr/core/commands/dodge.rb b/lib/aethyr/core/commands/dodge.rb
index fc6d4fdb241adb0745979f084b51fa82c0cfeb9b..952b771deb9481f7013dd8a001f8da52b4b019e2 100644
--- a/lib/aethyr/core/commands/dodge.rb
+++ b/lib/aethyr/core/commands/dodge.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Dodge
         class DodgeHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "dodge"
+            see_also = nil
+            syntax_formats = ["DODGE"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["dodge"])
+            super(player, ["dodge"], DodgeHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -20,19 +37,10 @@ module Aethyr
             when /^dodge(\s+(.*))?$/i
               target = $2 if $2
               simple_dodge({:target => target})
-            when /^help (dodge)$/i
-              action_help_dodge({})
             end
           end
 
           private
-          def action_help_dodge(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def simple_dodge(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/drop.rb b/lib/aethyr/core/commands/drop.rb
index dec978798026f357fbe531c9c0c693411b3f24c3..1b86665957e682e137651390dad2f6db8e907c77 100644
--- a/lib/aethyr/core/commands/drop.rb
+++ b/lib/aethyr/core/commands/drop.rb
@@ -6,8 +6,26 @@ module Aethyr
     module Commands
       module Drop
         class DropHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "drop"
+            see_also = ["GET", "TAKE", "GRAB"]
+            syntax_formats = ["DROP [object]"]
+            aliases = nil
+            content =  <<'EOF'
+Removes an object from your inventory and places it gently on the ground.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["drop"])
+            super(player, ["drop"], DropHandler.create_help_entries)
           end
           
           def self.object_added(data)
@@ -19,8 +37,6 @@ module Aethyr
             case data[:input]
             when /^drop\s+((\w+\s*)*)$/i
               action({ :object => $1.strip })
-            when /^help drop$/i
-              action_help({})
             end
           end
           
@@ -50,18 +66,6 @@ module Aethyr
             event[:to_blind_other] = "You hear something hit the ground."
             room.out_event(event)
           end
-          
-          def action_help(event)
-            @player.output <<'EOF'
-Command: Drop
-Syntax: DROP [object]
-
-Removes an object from your inventory and places it gently on the ground.
-
-See also: GET, TAKE, GRAB
-
-EOF
-          end
         end
 
         Aethyr::Extend::HandlerRegistry.register_handler(DropHandler)
diff --git a/lib/aethyr/core/commands/emotes/agree.rb b/lib/aethyr/core/commands/emotes/agree.rb
index c672fc1b82ddca6713480b2d8fcc611db5ccfc75..01757ee0aa7a088b4c2212af34474d27b4a7eb83 100644
--- a/lib/aethyr/core/commands/emotes/agree.rb
+++ b/lib/aethyr/core/commands/emotes/agree.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Agree
         class AgreeHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "agree"
+            see_also = nil
+            syntax_formats = ["AGREE"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["agree"])
+            super(player, ["agree"], AgreeHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               agree({:object => object, :post => post})
-            when /^help (agree)$/i
-              action_help_agree({})
             end
           end
 
           private
-          def action_help_agree(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def agree(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/back.rb b/lib/aethyr/core/commands/emotes/back.rb
index da0034701c955d7c42e25a5706fbbccf263ecd6e..1a395781d88347666f54b752ea749701a4ab3f55 100644
--- a/lib/aethyr/core/commands/emotes/back.rb
+++ b/lib/aethyr/core/commands/emotes/back.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Back
         class BackHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "back"
+            see_also = nil
+            syntax_formats = ["BACK"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["back"])
+            super(player, ["back"], BackHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               back({:object => object, :post => post})
-            when /^help (back)$/i
-              action_help_back({})
             end
           end
 
           private
-          def action_help_back(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def back(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/blush.rb b/lib/aethyr/core/commands/emotes/blush.rb
index 36760c9a05cbb7cbe0bb2b662c539fc4c76e693a..ec30761964a3018b551cd1fc3f9fdf6da198a34e 100644
--- a/lib/aethyr/core/commands/emotes/blush.rb
+++ b/lib/aethyr/core/commands/emotes/blush.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Blush
         class BlushHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "blush"
+            see_also = nil
+            syntax_formats = ["BLUSH"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["blush"])
+            super(player, ["blush"], BlushHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               blush({:object => object, :post => post})
-            when /^help (blush)$/i
-              action_help_blush({})
             end
           end
 
           private
-          def action_help_blush(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def blush(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/bow.rb b/lib/aethyr/core/commands/emotes/bow.rb
index f2a7a24c90fe75bffcb4adea29c411e3737ce7a6..eb37bb28e7f0e7b252fa90918226559f4910bb2c 100644
--- a/lib/aethyr/core/commands/emotes/bow.rb
+++ b/lib/aethyr/core/commands/emotes/bow.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Bow
         class BowHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "bow"
+            see_also = nil
+            syntax_formats = ["BOW"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["bow"])
+            super(player, ["bow"], BowHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               bow({:object => object, :post => post})
-            when /^help (bow)$/i
-              action_help_bow({})
             end
           end
 
           private
-          def action_help_bow(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def bow(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/brb.rb b/lib/aethyr/core/commands/emotes/brb.rb
index 48ea3d25059f83612979977a3105d9bad4f37fbb..9577d6296981cc53ab38b56e207f95212e8e2175 100644
--- a/lib/aethyr/core/commands/emotes/brb.rb
+++ b/lib/aethyr/core/commands/emotes/brb.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Brb
         class BrbHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "brb"
+            see_also = nil
+            syntax_formats = ["BRB"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["brb"])
+            super(player, ["brb"], BrbHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               brb({:object => object, :post => post})
-            when /^help (brb)$/i
-              action_help_brb({})
             end
           end
 
           private
-          def action_help_brb(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def brb(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/bye.rb b/lib/aethyr/core/commands/emotes/bye.rb
index 18ffeaad303dc506770b16212bc08c49b4ae996c..83d70b3e1054ed895037276bc2838c6a83846b03 100644
--- a/lib/aethyr/core/commands/emotes/bye.rb
+++ b/lib/aethyr/core/commands/emotes/bye.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Bye
         class ByeHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "bye"
+            see_also = nil
+            syntax_formats = ["BYE"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["bye"])
+            super(player, ["bye"], ByeHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               bye({:object => object, :post => post})
-            when /^help (bye)$/i
-              action_help_bye({})
             end
           end
 
           private
-          def action_help_bye(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def bye(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/cheer.rb b/lib/aethyr/core/commands/emotes/cheer.rb
index 94370d5cecafcfbd8d39943ffd0d8c1796705888..d5118955245d46de0512d75bb52715b55ea98647 100644
--- a/lib/aethyr/core/commands/emotes/cheer.rb
+++ b/lib/aethyr/core/commands/emotes/cheer.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Cheer
         class CheerHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "cheer"
+            see_also = nil
+            syntax_formats = ["CHEER"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["cheer"])
+            super(player, ["cheer"], CheerHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               cheer({:object => object, :post => post})
-            when /^help (cheer)$/i
-              action_help_cheer({})
             end
           end
 
           private
-          def action_help_cheer(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def cheer(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/cry.rb b/lib/aethyr/core/commands/emotes/cry.rb
index 5ad2e1eee511e691c269d54477963dfd1e66f668..ee7cd4a431619020bfa4b5fbce8182fd2009c918 100644
--- a/lib/aethyr/core/commands/emotes/cry.rb
+++ b/lib/aethyr/core/commands/emotes/cry.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Cry
         class CryHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "cry"
+            see_also = nil
+            syntax_formats = ["CRY"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["cry"])
+            super(player, ["cry"], CryHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               cry({:object => object, :post => post})
-            when /^help (cry)$/i
-              action_help_cry({})
             end
           end
 
           private
-          def action_help_cry(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def cry(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/curtsey.rb b/lib/aethyr/core/commands/emotes/curtsey.rb
index e87bb7797c482ead9265281c2325857ae2e8aca9..c007331c53b71e0ee01150e68c0eeb768ec38b56 100644
--- a/lib/aethyr/core/commands/emotes/curtsey.rb
+++ b/lib/aethyr/core/commands/emotes/curtsey.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Curtsey
         class CurtseyHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "curtsey"
+            see_also = nil
+            syntax_formats = ["CURTSEY"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["curtsey"])
+            super(player, ["curtsey"], CurtseyHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               curtsey({:object => object, :post => post})
-            when /^help (curtsey)$/i
-              action_help_curtsey({})
             end
           end
 
           private
-          def action_help_curtsey(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def curtsey(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/eh.rb b/lib/aethyr/core/commands/emotes/eh.rb
index 77b04021e43fe9ba5e475446d06b376d6a0b5861..85130c33d201d3a363ce678406b0958087e01f7c 100644
--- a/lib/aethyr/core/commands/emotes/eh.rb
+++ b/lib/aethyr/core/commands/emotes/eh.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Eh
         class EhHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "eh"
+            see_also = nil
+            syntax_formats = ["EH"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["eh", "eh?"])
+            super(player, ["eh", "eh?"], EhHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -25,19 +42,10 @@ module Aethyr
               object = $3
               post = $5
               eh({:object => object, :post => post})
-            when /^help (eh|eh\?)$/i
-              action_help_eh({})
             end
           end
 
           private
-          def action_help_eh(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def eh(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/emote.rb b/lib/aethyr/core/commands/emotes/emote.rb
index 4ad7c3277b94857018898b616b2edc73eb906ef8..dea4b75ea51f2d634ffba6bba672f67930ce5a55 100644
--- a/lib/aethyr/core/commands/emotes/emote.rb
+++ b/lib/aethyr/core/commands/emotes/emote.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Emote
         class EmoteHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "emote"
+            see_also = nil
+            syntax_formats = ["EMOTE"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["emote"])
+            super(player, ["emote"], EmoteHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -20,19 +37,10 @@ module Aethyr
             when /^emote\s+(.*)/i
               show = $1
               emote({:show => show})
-            when /^help (emote)$/i
-              action_help_emote({})
             end
           end
 
           private
-          def action_help_emote(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def emote(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/er.rb b/lib/aethyr/core/commands/emotes/er.rb
index ad1dc73dd70b86a0977f47b45bca430bcc5b9a2c..a44f3a08ac7800410141d84a75d79f569cf14b2c 100644
--- a/lib/aethyr/core/commands/emotes/er.rb
+++ b/lib/aethyr/core/commands/emotes/er.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Er
         class ErHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "er"
+            see_also = nil
+            syntax_formats = ["ER"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["er"])
+            super(player, ["er"], ErHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               er({:object => object, :post => post})
-            when /^help (er)$/i
-              action_help_er({})
             end
           end
 
           private
-          def action_help_er(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def er(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/ew.rb b/lib/aethyr/core/commands/emotes/ew.rb
index 3b63eaccd201a58cf9c99d6cbdcf6a88ecd74d35..00de2240b3a544bc52f60feebe56b63aa551a7f4 100644
--- a/lib/aethyr/core/commands/emotes/ew.rb
+++ b/lib/aethyr/core/commands/emotes/ew.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Ew
         class EwHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "ew"
+            see_also = nil
+            syntax_formats = ["EW"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["ew"])
+            super(player, ["ew"], EwHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               ew({:object => object, :post => post})
-            when /^help (ew)$/i
-              action_help_ew({})
             end
           end
 
           private
-          def action_help_ew(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def ew(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/frown.rb b/lib/aethyr/core/commands/emotes/frown.rb
index e3e8d8afa1d246b0e1fb10f64f277941df84bade..94a17ed23b591c32cde4cb8dd8d6ec420692d778 100644
--- a/lib/aethyr/core/commands/emotes/frown.rb
+++ b/lib/aethyr/core/commands/emotes/frown.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Frown
         class FrownHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "frown"
+            see_also = nil
+            syntax_formats = ["FROWN"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["frown"])
+            super(player, ["frown"], FrownHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               frown({:object => object, :post => post})
-            when /^help (frown)$/i
-              action_help_frown({})
             end
           end
 
           private
-          def action_help_frown(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def frown(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/grin.rb b/lib/aethyr/core/commands/emotes/grin.rb
index 9eaccea325efc8d20cdb3c38c52aa143376c8b27..fc7837660067caac54bb1f27830a07355b419698 100644
--- a/lib/aethyr/core/commands/emotes/grin.rb
+++ b/lib/aethyr/core/commands/emotes/grin.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Grin
         class GrinHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "grin"
+            see_also = nil
+            syntax_formats = ["GRIN"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["grin"])
+            super(player, ["grin"], GrinHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               grin({:object => object, :post => post})
-            when /^help (grin)$/i
-              action_help_grin({})
             end
           end
 
           private
-          def action_help_grin(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def grin(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/hi.rb b/lib/aethyr/core/commands/emotes/hi.rb
index f3479fa68e7cc1a8916422b686012e78415c6485..16a41ec251bb4b7e7a28b6357b032142ffe8040c 100644
--- a/lib/aethyr/core/commands/emotes/hi.rb
+++ b/lib/aethyr/core/commands/emotes/hi.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Hi
         class HiHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "hi"
+            see_also = nil
+            syntax_formats = ["HI"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["hi"])
+            super(player, ["hi"], HiHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               hi({:object => object, :post => post})
-            when /^help (hi)$/i
-              action_help_hi({})
             end
           end
 
           private
-          def action_help_hi(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def hi(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/hm.rb b/lib/aethyr/core/commands/emotes/hm.rb
index 395038e1bb0caa917f363bc596d3a9eb0ab67291..1681e1109658fa59aa781447937757d1cbe73d89 100644
--- a/lib/aethyr/core/commands/emotes/hm.rb
+++ b/lib/aethyr/core/commands/emotes/hm.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Hm
         class HmHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "hm"
+            see_also = nil
+            syntax_formats = ["HM"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["hm"])
+            super(player, ["hm"], HmHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               hm({:object => object, :post => post})
-            when /^help (hm)$/i
-              action_help_hm({})
             end
           end
 
           private
-          def action_help_hm(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def hm(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/hug.rb b/lib/aethyr/core/commands/emotes/hug.rb
index f0944eb229416f9db2bf696cbce94fc541c7f19c..251680399a5d94977163ca729fec95f7a15cec82 100644
--- a/lib/aethyr/core/commands/emotes/hug.rb
+++ b/lib/aethyr/core/commands/emotes/hug.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Hug
         class HugHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "hug"
+            see_also = nil
+            syntax_formats = ["HUG"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["hug"])
+            super(player, ["hug"], HugHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               hug({:object => object, :post => post})
-            when /^help (hug)$/i
-              action_help_hug({})
             end
           end
 
           private
-          def action_help_hug(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def hug(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/huh.rb b/lib/aethyr/core/commands/emotes/huh.rb
index 07364922c52ef606eb7eea1c4ceccffd3a555e69..cb91a8f1e3574b746df9017e9feabc5509355f63 100644
--- a/lib/aethyr/core/commands/emotes/huh.rb
+++ b/lib/aethyr/core/commands/emotes/huh.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Huh
         class HuhHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "huh"
+            see_also = nil
+            syntax_formats = ["HUH"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["huh"])
+            super(player, ["huh"], HuhHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               huh({:object => object, :post => post})
-            when /^help (huh)$/i
-              action_help_huh({})
             end
           end
 
           private
-          def action_help_huh(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def huh(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/laugh.rb b/lib/aethyr/core/commands/emotes/laugh.rb
index e0804c124faff33be436c9419af7c92ac0e12c37..dd12ce602248ba99b682bdf6858fdd76e4cf3833 100644
--- a/lib/aethyr/core/commands/emotes/laugh.rb
+++ b/lib/aethyr/core/commands/emotes/laugh.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Laugh
         class LaughHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "laugh"
+            see_also = nil
+            syntax_formats = ["LAUGH"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["laugh"])
+            super(player, ["laugh"], LaughHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               laugh({:object => object, :post => post})
-            when /^help (laugh)$/i
-              action_help_laugh({})
             end
           end
 
           private
-          def action_help_laugh(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def laugh(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/no.rb b/lib/aethyr/core/commands/emotes/no.rb
index 0a4767d60226079876bbcb61e49635d79752292f..0e7ccad11375b927b19c8dadbbb3998a6a336817 100644
--- a/lib/aethyr/core/commands/emotes/no.rb
+++ b/lib/aethyr/core/commands/emotes/no.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module No
         class NoHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "no"
+            see_also = nil
+            syntax_formats = ["NO"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["no"])
+            super(player, ["no"], NoHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               no({:object => object, :post => post})
-            when /^help (no)$/i
-              action_help_no({})
             end
           end
 
           private
-          def action_help_no(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def no(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/nod.rb b/lib/aethyr/core/commands/emotes/nod.rb
index 08dbb5c6fae2a1299d602baa9f8013efdb04ce08..bbfc7b5f279426adbfec9d6eacd513345a730306 100644
--- a/lib/aethyr/core/commands/emotes/nod.rb
+++ b/lib/aethyr/core/commands/emotes/nod.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Nod
         class NodHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "nod"
+            see_also = nil
+            syntax_formats = ["NOD"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["nod"])
+            super(player, ["nod"], NodHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               nod({:object => object, :post => post})
-            when /^help (nod)$/i
-              action_help_nod({})
             end
           end
 
           private
-          def action_help_nod(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def nod(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/pet.rb b/lib/aethyr/core/commands/emotes/pet.rb
index 7d5407c665b1a53e4cc0e68be9e83296dfd6979a..ac8ae84575c55c0d68b4e7cd2884cbde04571aa6 100644
--- a/lib/aethyr/core/commands/emotes/pet.rb
+++ b/lib/aethyr/core/commands/emotes/pet.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Pet
         class PetHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "pet"
+            see_also = nil
+            syntax_formats = ["PET"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["pet"])
+            super(player, ["pet"], PetHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               pet({:object => object, :post => post})
-            when /^help (pet)$/i
-              action_help_pet({})
             end
           end
 
           private
-          def action_help_pet(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def pet(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/poke.rb b/lib/aethyr/core/commands/emotes/poke.rb
index 18558e34a51abe84d15e13f52147d813e287112c..14fa437919e85521212f0ce9c67b5338bce24865 100644
--- a/lib/aethyr/core/commands/emotes/poke.rb
+++ b/lib/aethyr/core/commands/emotes/poke.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Poke
         class PokeHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "poke"
+            see_also = nil
+            syntax_formats = ["POKE"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["poke"])
+            super(player, ["poke"], PokeHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               poke({:object => object, :post => post})
-            when /^help (poke)$/i
-              action_help_poke({})
             end
           end
 
           private
-          def action_help_poke(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def poke(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/ponder.rb b/lib/aethyr/core/commands/emotes/ponder.rb
index b5fbcad7527f647e136a4423730a7e4e3563cb65..0d18d4fb073e23808596fcec9527b001771813b7 100644
--- a/lib/aethyr/core/commands/emotes/ponder.rb
+++ b/lib/aethyr/core/commands/emotes/ponder.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Ponder
         class PonderHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "ponder"
+            see_also = nil
+            syntax_formats = ["PONDER"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["ponder"])
+            super(player, ["ponder"], PonderHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               ponder({:object => object, :post => post})
-            when /^help (ponder)$/i
-              action_help_ponder({})
             end
           end
 
           private
-          def action_help_ponder(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def ponder(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/shrug.rb b/lib/aethyr/core/commands/emotes/shrug.rb
index f348a64ee4d488380d408a29f71a440e6fef916a..f0ad86f180705a3e04cbb2bd1f0cb07d5b01b800 100644
--- a/lib/aethyr/core/commands/emotes/shrug.rb
+++ b/lib/aethyr/core/commands/emotes/shrug.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Shrug
         class ShrugHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "shrug"
+            see_also = nil
+            syntax_formats = ["SHRUG"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["shrug"])
+            super(player, ["shrug"], ShrugHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               shrug({:object => object, :post => post})
-            when /^help (shrug)$/i
-              action_help_shrug({})
             end
           end
 
           private
-          def action_help_shrug(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def shrug(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/sigh.rb b/lib/aethyr/core/commands/emotes/sigh.rb
index d8485bfe4f22fa27a848b957caaeb167e8cb547b..09dd54086b5544b21c0ce1f35becf47202e01935 100644
--- a/lib/aethyr/core/commands/emotes/sigh.rb
+++ b/lib/aethyr/core/commands/emotes/sigh.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Sigh
         class SighHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "sigh"
+            see_also = nil
+            syntax_formats = ["SIGH"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["sigh"])
+            super(player, ["sigh"], SighHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               sigh({:object => object, :post => post})
-            when /^help (sigh)$/i
-              action_help_sigh({})
             end
           end
 
           private
-          def action_help_sigh(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def sigh(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/skip.rb b/lib/aethyr/core/commands/emotes/skip.rb
index 105e1933aab7402ef835d12ce2af95b39431b509..36bf852da64331428f00be13a392510d9b23cde0 100644
--- a/lib/aethyr/core/commands/emotes/skip.rb
+++ b/lib/aethyr/core/commands/emotes/skip.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Skip
         class SkipHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "skip"
+            see_also = nil
+            syntax_formats = ["SKIP"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["skip"])
+            super(player, ["skip"], SkipHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               skip({:object => object, :post => post})
-            when /^help (skip)$/i
-              action_help_skip({})
             end
           end
 
           private
-          def action_help_skip(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def skip(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/smile.rb b/lib/aethyr/core/commands/emotes/smile.rb
index d2c88b9d3325273bba607e21d8a77d528636aa27..0ef2b2e74d2c51fe78068ec41cbfa70492433223 100644
--- a/lib/aethyr/core/commands/emotes/smile.rb
+++ b/lib/aethyr/core/commands/emotes/smile.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Smile
         class SmileHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "smile"
+            see_also = nil
+            syntax_formats = ["SMILE"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["smile"])
+            super(player, ["smile"], SmileHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               smile({:object => object, :post => post})
-            when /^help (smile)$/i
-              action_help_smile({})
             end
           end
 
           private
-          def action_help_smile(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def smile(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/snicker.rb b/lib/aethyr/core/commands/emotes/snicker.rb
index 55932f6a8ff62c904e4bb96b6070e72b5aa7b36b..19a93fdac7ce4845571c0fa098f8231843b56715 100644
--- a/lib/aethyr/core/commands/emotes/snicker.rb
+++ b/lib/aethyr/core/commands/emotes/snicker.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Snicker
         class SnickerHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "snicker"
+            see_also = nil
+            syntax_formats = ["SNICKER"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["snicker"])
+            super(player, ["snicker"], SnickerHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               snicker({:object => object, :post => post})
-            when /^help (snicker)$/i
-              action_help_snicker({})
             end
           end
 
           private
-          def action_help_snicker(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def snicker(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/uh.rb b/lib/aethyr/core/commands/emotes/uh.rb
index 32f314c47bc6b145a8c937d857b4b5c43cb8f004..3817845859674267e6a3227abbf42cf848726592 100644
--- a/lib/aethyr/core/commands/emotes/uh.rb
+++ b/lib/aethyr/core/commands/emotes/uh.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Uh
         class UhHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "uh"
+            see_also = nil
+            syntax_formats = ["UH"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["uh"])
+            super(player, ["uh"], UhHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               uh({:object => object, :post => post})
-            when /^help (uh)$/i
-              action_help_uh({})
             end
           end
 
           private
-          def action_help_uh(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def uh(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/wave.rb b/lib/aethyr/core/commands/emotes/wave.rb
index 8a4c5b6195f6f6ac3ab6ad6391fbc29eb337144c..fc921c966b1b7e83aff5121db0856047016aef60 100644
--- a/lib/aethyr/core/commands/emotes/wave.rb
+++ b/lib/aethyr/core/commands/emotes/wave.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Wave
         class WaveHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "wave"
+            see_also = nil
+            syntax_formats = ["WAVE"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["wave"])
+            super(player, ["wave"], WaveHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               wave({:object => object, :post => post})
-            when /^help (wave)$/i
-              action_help_wave({})
             end
           end
 
           private
-          def action_help_wave(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def wave(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/yawn.rb b/lib/aethyr/core/commands/emotes/yawn.rb
index c3dd414d6db27cb33a1b08964307a8757ae450fe..6fe2fdb36d1d8d4473ff1b0f671a853260be91d2 100644
--- a/lib/aethyr/core/commands/emotes/yawn.rb
+++ b/lib/aethyr/core/commands/emotes/yawn.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Yawn
         class YawnHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "yawn"
+            see_also = nil
+            syntax_formats = ["YAWN"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["yawn"])
+            super(player, ["yawn"], YawnHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               yawn({:object => object, :post => post})
-            when /^help (yawn)$/i
-              action_help_yawn({})
             end
           end
 
           private
-          def action_help_yawn(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def yawn(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/emotes/yes.rb b/lib/aethyr/core/commands/emotes/yes.rb
index 689bcddf56879b9eedee1fbe6581669f76d36c04..98b5ed60a3125d7b95fc989fd155069d01def9c9 100644
--- a/lib/aethyr/core/commands/emotes/yes.rb
+++ b/lib/aethyr/core/commands/emotes/yes.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Yes
         class YesHandler < Aethyr::Extend::EmoteHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "yes"
+            see_also = nil
+            syntax_formats = ["YES"]
+            aliases = nil
+            content =  <<'EOF'
+Please see help for emote instead.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["yes"])
+            super(player, ["yes"], YesHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,19 +38,10 @@ module Aethyr
               object = $3
               post = $5
               yes({:object => object, :post => post})
-            when /^help (yes)$/i
-              action_help_yes({})
             end
           end
 
           private
-          def action_help_yes(event)
-            @player.output <<'EOF'
-Please see help for emote instead.
-EOF
-          end
-
-
           def yes(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/gait.rb b/lib/aethyr/core/commands/gait.rb
index 75ef414c89572e31e9792060cc95fbad4dde14f8..ab88b59421e7a5718b22f6618dda4be8edf13b94 100644
--- a/lib/aethyr/core/commands/gait.rb
+++ b/lib/aethyr/core/commands/gait.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Gait
         class GaitHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "gait"
+            see_also = nil
+            syntax_formats = ["GAIT"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["gait"])
+            super(player, ["gait"], GaitHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -20,19 +37,10 @@ module Aethyr
             when /^gait(\s+(.*))?$/i
               phrase = $2 if $2
               gait({:phrase => phrase})
-            when /^help (gait)$/i
-              action_help_gait({})
             end
           end
 
           private
-          def action_help_gait(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def gait(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/generic.rb b/lib/aethyr/core/commands/generic.rb
index b89b055cbea4ef835ab2c80c6e54e61e9e1488b6..ea55ba4a9eede07aa05392833d0b18b356d3fc8c 100644
--- a/lib/aethyr/core/commands/generic.rb
+++ b/lib/aethyr/core/commands/generic.rb
@@ -7,8 +7,192 @@ module Aethyr
     module Commands
       module Generic
         class GenericHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "health"
+            see_also = ["STATUS", "HUNGER"]
+            syntax_formats = ["HEALTH"]
+            aliases = nil
+            content =  <<'EOF'
+Shows you how healthy you are.
+
+You can be:
+	at full health
+	a bit bruised
+	a little beat up
+	slightly injured
+	quite injured
+	slightly wounded
+	wounded in several places
+	heavily wounded
+	bleeding profusely and in serious pain
+	nearly dead
+	dead
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+
+
+            command = "satiety"
+            see_also = ["STAT", "HEALTH"]
+            syntax_formats = ["HUNGER", "SATIETY"]
+            aliases = nil
+            content =  <<'EOF'
+Shows you how hungry you are.
+
+You can be:
+	completely stuffed
+	full and happy
+	full and happy
+	satisfied
+	not hungry
+	slightly hungry
+	slightly hungry
+	peckish
+	hungry
+	very hungry
+	famished
+	starving
+	literally dying of hunger
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+
+
+            command = "status"
+            see_also = ["INVENTORY", "HUNGER", "HEALTH"]
+            syntax_formats = ["STATUS", "STAT", "ST"]
+            aliases = nil
+            content =  <<'EOF'
+Shows your current health, hunger/satiety, and position.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+
+
+            command = "fill"
+            see_also = nil
+            syntax_formats = ["FILL [container] FROM [source]"]
+            aliases = nil
+            content =  <<'EOF'
+Fill a container from a source
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+
+
+            command = "date_time"
+            see_also = nil
+            syntax_formats = ["DATE"]
+            aliases = nil
+            content =  <<'EOF'
+Date and Time
+
+        TIME
+
+Shows the current date and time in Aethyr. Not completely done yet, but it is a first step.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+
+
+            command = "who"
+            see_also = nil
+            syntax_formats = ["WHO"]
+            aliases = nil
+            content =  <<'EOF'
+This will list everyone else who is currently in Aethyr and where they happen to be at the moment.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+
+
+            command = "deleteme"
+            see_also = nil
+            syntax_formats = ["DELETE ME PLEASE"]
+            aliases = nil
+            content =  <<'EOF'
+Deleting Your Character
+
+In case you ever need to do so, you can remove your character from the game. Quite permanently. You will need to enter your password as confirmation and that's it. You will be wiped out of time and memory.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+
+
+            command = "write"
+            see_also = nil
+            syntax_formats = ["WRITE [target]"]
+            aliases = nil
+            content =  <<'EOF'
+Write something on the specified target.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+
+
+            command = "taste"
+            see_also = nil
+            syntax_formats = ["TASTE [target]"]
+            aliases = nil
+            content =  <<'EOF'
+Taste the specified target.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+
+
+            command = "smell"
+            see_also = nil
+            syntax_formats = ["SMELL [target]"]
+            aliases = nil
+            content =  <<'EOF'
+Smell the specified target.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+
+
+            command = "listen"
+            see_also = nil
+            syntax_formats = ["LISTEN [target]"]
+            aliases = nil
+            content =  <<'EOF'
+Listen to the specified target.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+
+
+            command = "feel"
+            see_also = nil
+            syntax_formats = ["FEEL [target]"]
+            aliases = nil
+            content =  <<'EOF'
+Feel the specified target.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ['date', 'delete', 'feel', 'taste', 'smell', 'sniff', 'lick', 'listen', 'health', 'hunger', 'satiety', 'shut', 'status', 'stat', 'st', 'time', 'typo', 'who', 'write'])
+            super(player, ['date', 'delete', 'feel', 'taste', 'smell', 'sniff', 'lick', 'listen', 'health', 'hunger', 'satiety', 'shut', 'status', 'stat', 'st', 'time', 'typo', 'who', 'write'], GenericHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -45,30 +229,6 @@ module Aethyr
               action_time({})
             when /^date$/i
               action_date({})
-            when /^help (delete|delete me please)$/i
-              action_help_deleteme({})
-            when /^help health$/i
-              action_help_health({})
-            when /^help (satiety|hunger)$/i
-              action_help_satiety({})
-            when /^help (st|stat|status)$/i
-              action_help_status({})
-            when /^help write/i
-              action_help_write({ :target => $1.strip})
-            when /^help listen$/i
-              action_help_listen({ :target => $3})
-            when /^help (smell|sniff)$/i
-              action_help_smell({ :target => $3})
-            when /^help (taste|lick)$/i
-              action_help_taste({ :target => $3})
-            when /^help feel$/i
-              action_help_feel({ :target => $3})
-            when /^help who$/i
-              action_help_who({})
-            when /^help (date|time)$/i
-              action_help_date_time({})
-            when /^help fill$/i
-              action_help_fill({})
             end
           end
 
@@ -77,86 +237,16 @@ module Aethyr
           def action_health(event)
             @player.output "You are #{@player.health}."
           end
-
-          def action_help_health(event)
-            @player.output <<'EOF'
-Command: Health
-Syntax: HEALTH
-
-Shows you how healthy you are.
-
-You can be:
-	at full health
-	a bit bruised
-	a little beat up
-	slightly injured
-	quite injured
-	slightly wounded
-	wounded in several places
-	heavily wounded
-	bleeding profusely and in serious pain
-	nearly dead
-	dead
-
-See also: STATUS, HUNGER
-
-EOF
-          end
-
           #Display hunger.
           def action_satiety(event)
             @player.output "You are #{@player.satiety}."
           end
-
-          def action_help_satiety(event)
-            @player.output <<'EOF'
-Command: Hunger (or Satiety)
-Syntax: HUNGER
-Syntax: SATIETY
-
-Shows you how hungry you are.
-
-You can be:
-	completely stuffed
-	full and happy
-	full and happy
-	satisfied
-	not hungry
-	slightly hungry
-	slightly hungry
-	peckish
-	hungry
-	very hungry
-	famished
-	starving
-	literally dying of hunger
-
-See also: STAT HEALTH
-
-EOF
-          end
-
           #Display status.
           def action_status(event)
             @player.output("You are #{@player.health}.")
             @player.output("You are feeling #{@player.satiety}.")
             @player.output "You are currently #{@player.pose || 'standing up'}."
           end
-
-          def action_help_status(event)
-            @player.output <<'EOF'
-Command: Status
-Syntax: STATUS
-Syntax: STAT
-Syntax: ST
-
-Shows your current health, hunger/satiety, and position.
-
-See also: INVENTORY, HUNGER, HEALTH
-
-EOF
-          end
-
           #Fill something.
           def action_fill(event)
             room = $manager.get_object(@player.container)
@@ -186,17 +276,6 @@ EOF
               return
             end
           end
-
-          def action_help_fill(event)
-            @player.output <<'EOF'
-Command: Fill
-Syntax: FILL [container] FROM [source]
-
-Fill a container from a source
-
-EOF
-          end
-
           #Display time.
           def action_time(event)
             @player.output $manager.time
@@ -206,19 +285,6 @@ EOF
           def action_date(event)
             @player.output $manager.date
           end
-
-          def action_help_date_time(event)
-            @player.output <<'EOF'
-Date and Time
-
-Syntax: DATE
-        TIME
-
-Shows the current date and time in Aethyr. Not completely done yet, but it is a first step.
-
-EOF
-          end
-
           #Show who is in the game.
           def action_who(event)
             players = $manager.find_all("class", Player)
@@ -230,17 +296,6 @@ EOF
 
             @player.output output
           end
-
-          def action_help_who(event)
-            @player.output <<'EOF'
-Command: Who
-Syntax: WHO
-
-This will list everyone else who is currently in Aethyr and where they happen to be at the moment.
-
-EOF
-          end
-
           #Delete your player.
           def action_deleteme(event)
             if event[:password]
@@ -261,18 +316,6 @@ EOF
               end
             end
           end
-
-          def action_help_deleteme(event)
-            @player.output <<'EOF'
-Deleting Your Character
-
-Syntax: DELETE ME PLEASE
-
-In case you ever need to do so, you can remove your character from the game. Quite permanently. You will need to enter your password as confirmation and that's it. You will be wiped out of time and memory.
-
-EOF
-          end
-
           #Write something.
           def action_write(event)
             object = @player.search_inv(event[:target])
@@ -296,17 +339,6 @@ EOF
               @player.output "You finish your writing."
             end
           end
-
-          def action_help_write(event)
-            @player.output <<'EOF'
-Command: Write
-Syntax: WRITE [target]
-
-Write something on the specified target.
-
-EOF
-          end
-
           def action_taste(event)
             room = $manager.get_object(@player.container)
             object = @player.search_inv(event[:target]) || room.find(event[:target])
@@ -330,17 +362,6 @@ EOF
             event[:to_other] = "#{@player.name} hesitantly sticks out #{@player.pronoun(:possessive)} tongue and licks #{object.name}."
             room.out_event event
           end
-
-          def action_help_taste(event)
-            @player.output <<'EOF'
-Command: Taste
-Syntax: TASTE [target]
-
-Taste the specified target.
-
-EOF
-          end
-
           def action_smell(event)
             room = $manager.get_object(@player.container)
             if event[:target].nil?
@@ -384,17 +405,6 @@ EOF
             event[:to_other] = "#{@player.name} thrusts #{@player.pronoun(:possessive)} nose at #{object.name} and sniffs."
             room.out_event event
           end
-
-          def action_help_smell(event)
-            @player.output <<'EOF'
-Command: Smell
-Syntax: SMELL [target]
-
-Smell the specified target.
-
-EOF
-          end
-
           def action_listen(event)
             room = $manager.get_object(@player.container)
             if event[:target].nil?
@@ -430,17 +440,6 @@ EOF
             event[:to_other] = "#{@player.name} bends #{@player.pronoun(:possessive)} head towards #{object.name} and listens."
             room.out_event event
           end
-
-          def action_help_listen(event)
-            @player.output <<'EOF'
-Command: Listen
-Syntax: LISTEN [target]
-
-Listen to the specified target.
-
-EOF
-          end
-
           def action_feel(event)
             room = $manager.get_object(@player.container)
             object = @player.search_inv(event[:target]) || room.find(event[:target])
@@ -464,16 +463,6 @@ EOF
             event[:to_other] = "#{@player.name} reaches out #{@player.pronoun(:possessive)} hand and touches #{object.name}."
             room.out_event event
           end
-
-          def action_help_feel(event)
-            @player.output <<'EOF'
-Command: Feel
-Syntax: FEEL [target]
-
-Feel the specified target.
-
-EOF
-          end
         end
 
         Aethyr::Extend::HandlerRegistry.register_handler(GenericHandler)
diff --git a/lib/aethyr/core/commands/get.rb b/lib/aethyr/core/commands/get.rb
index 85b2ddade335d5c78b6547ab0fcc8f7763189787..e8745ce11ada445ced00ffcba210f69549c50eb7 100644
--- a/lib/aethyr/core/commands/get.rb
+++ b/lib/aethyr/core/commands/get.rb
@@ -6,8 +6,26 @@ module Aethyr
     module Commands
       module Get
         class GetHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "get"
+            see_also = ["GIVE"]
+            syntax_formats = ["GET [object]", "GRAB [object'", "TAKE [object]"]
+            aliases = ["grab", "take"]
+            content =  <<'EOF'
+Pick up an object and put it in your inventory.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["get", "grab", "take"])
+            super(player, ["get", "grab", "take"], GetHandler.create_help_entries)
           end
           
           def self.object_added(data)
@@ -21,27 +39,10 @@ module Aethyr
               action({ :object => $2.strip, :from => $5 })
             when /^(get|grab|take)\s+(.*)$/i
               action({ :object => $2.strip })
-            when /^help (get|grab|take)$/i
-              action_help({})
             end
           end
           
           private
-          def action_help(event)
-            @player.output <<'EOF'
-Command: Get
-Command: Grab
-Command: Take
-Syntax: GET [object]
-Syntax: GRAB [object'
-Syntax: TAKE [object]
-
-Pick up an object and put it in your inventory.
-
-See also: GIVE
-
-EOF
-          end
           
           #Gets (or takes) an object and puts it in the player's inventory.
           def action(event)
diff --git a/lib/aethyr/core/commands/give.rb b/lib/aethyr/core/commands/give.rb
index 2a1adbf642135ccdaebd0982ffa46dd85e3c373e..a5321e54148f4d4ac57017c2a96e3ca7e9d1c115 100644
--- a/lib/aethyr/core/commands/give.rb
+++ b/lib/aethyr/core/commands/give.rb
@@ -6,8 +6,28 @@ module Aethyr
     module Commands
       module Give
         class GiveHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "give"
+            see_also = ["GET"]
+            syntax_formats = ["GIVE [object] TO [person]"]
+            aliases = nil
+            content =  <<'EOF'
+Give an object to someone else. Beware, though, they may not want to give it back.
+
+At the moment, the object must be in your inventory.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["give"])
+            super(player, ["give"], GiveHandler.create_help_entries)
           end
           
           def self.object_added(data)
@@ -19,25 +39,10 @@ module Aethyr
             case data[:input]
             when /^give\s+((\w+\s*)*)\s+to\s+(\w+)/i
               action({ :item => $2.strip, :to => $3 })
-            when /^help give$/i
-              action_help({})
             end
           end
           
           private
-          def action_help(event)
-            @player.output <<'EOF'
-Command: Give
-Syntax: GIVE [object] TO [person]
-
-Give an object to someone else. Beware, though, they may not want to give it back.
-
-At the moment, the object must be in your inventory.
-
-See also: GET
-
-EOF
-          end
           
           #Gives an item to someone else.
           def action(event)
diff --git a/lib/aethyr/core/commands/inventory.rb b/lib/aethyr/core/commands/inventory.rb
index 84d81ab0e53eff7b78bfa24a80b74dd8abe45a51..c1cbb021422b93080e6b417702cf7b2869e8bd94 100644
--- a/lib/aethyr/core/commands/inventory.rb
+++ b/lib/aethyr/core/commands/inventory.rb
@@ -6,8 +6,28 @@ module Aethyr
     module Commands
       module Inventory
         class InventoryHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "inventory"
+            see_also = ["TAKE", "DROP", "WEAR", "REMOVE"]
+            syntax_formats = ["INVENTORY"]
+            aliases = ["i", "inv"]
+            content =  <<'EOF'
+Displays what you are holding and wearing.
+
+'i' and 'inv' are shortcuts for inventory.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["i", "inv", "inventory"])
+            super(player, ["i", "inv", "inventory"], InventoryHandler.create_help_entries)
           end
           
           def self.object_added(data)
@@ -19,25 +39,10 @@ module Aethyr
             case data[:input]
             when /^(i|inv|inventory)$/i
               action({})
-            when /^help (i|inv|inventory)$/i
-              action_help({})
             end
           end
           
           private
-          def action_help(event)
-            player.output <<'EOF'
-Command: Inventory
-Syntax: INVENTORY
-
-Displays what you are holding and wearing.
-
-'i' and 'inv' are shortcuts for inventory.
-
-
-See also: TAKE, DROP, WEAR, REMOVE
-EOF
-          end
           
           #Shows the inventory of the player.
           def action(event)
diff --git a/lib/aethyr/core/commands/issue.rb b/lib/aethyr/core/commands/issue.rb
index 30ea3a33d26aadcb8110952ff3ac3d8f243fc3ce..a236431b60bd2a305ecee223e6b19c7fdf92a078 100644
--- a/lib/aethyr/core/commands/issue.rb
+++ b/lib/aethyr/core/commands/issue.rb
@@ -6,8 +6,38 @@ module Aethyr
     module Commands
       module Issue
         class IssueHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "issue"
+            see_also = nil
+            syntax_formats = ["[BUG|IDEA|TYPO] [issue]", "[BUG|IDEA|TYPO] [id number]", "[BUG|IDEA|TYPO] LIST", "[BUG|IDEA|TYPO] STATUS [id_number] [status]", "[BUG|IDEA|TYPO] [SHOW|ADD|DEL] [id_number]"]
+            aliases = ["bug", "typo", "idea"]
+            content =  <<'EOF'
+These commands allow players and administrators to report and manipulate feedback about the game. The commands are essentially identical, but should be used to report different things. For the rest of this description, BUG is used.
+
+Note that players can only see and edit their own feedback, while adminsitrators will see them all.
+
+BUG [issue] is used to make the initial report.
+BUG LIST will list all reports.
+BUG ADD can be used to append comments to a report.
+BUG STATUS can be used to change the status of a report to a different value (administrators only).
+
+Examples:
+bug When I hit a dwarf with my axe, it doesn't do any damage.
+bug list
+bug 1
+bug add 1 Actually, this only happens with battleaxes, not all axes.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["bug", "typo", "idea"])
+            super(player, ["bug", "typo", "idea"], IssueHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -27,40 +57,10 @@ module Aethyr
               action({ :itype => $1.downcase.to_sym, :option => $2.downcase, :value => $4 })
             when /^(bug|typo|idea)\s+(.*)$/i
               action({ :itype => $1.downcase.to_sym, :option => "new", :value => $2 })
-            when /^help (bug|typo|idea)$/i
-              action_help({})
             end
           end
 
           private
-          def action_help(event)
-            player.output <<'EOF'
-Command: Bug
-Command: Idea
-Command: Typo
-Syntax: [BUG|IDEA|TYPO] [issue]
-Syntax: [BUG|IDEA|TYPO] [id number]
-Syntax: [BUG|IDEA|TYPO] LIST
-Syntax: [BUG|IDEA|TYPO] STATUS [id_number] [status]
-Syntax: [BUG|IDEA|TYPO] [SHOW|ADD|DEL] [id_number]
-
-These commands allow players and administrators to report and manipulate feedback about the game. The commands are essentially identical, but should be used to report different things. For the rest of this description, BUG is used.
-
-Note that players can only see and edit their own feedback, while adminsitrators will see them all.
-
-BUG [issue] is used to make the initial report.
-BUG LIST will list all reports.
-BUG ADD can be used to append comments to a report.
-BUG STATUS can be used to change the status of a report to a different value (administrators only).
-
-Examples:
-bug When I hit a dwarf with my axe, it doesn't do any damage.
-bug list
-bug 1
-bug add 1 Actually, this only happens with battleaxes, not all axes.
-EOF
-          end
-
           def action(event)
             case event[:option]
             when "new"
diff --git a/lib/aethyr/core/commands/kick.rb b/lib/aethyr/core/commands/kick.rb
index c9a0653c66b46fbd3f65fcd9d1543cb02ae1621a..70fa36a0717c75c842a9f498f0beca6f1ce9ff52 100644
--- a/lib/aethyr/core/commands/kick.rb
+++ b/lib/aethyr/core/commands/kick.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Kick
         class KickHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "kick"
+            see_also = nil
+            syntax_formats = ["KICK"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["kick"])
+            super(player, ["kick"], KickHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -22,19 +39,10 @@ module Aethyr
             when /^kick\s+(.*)$/i
               target = $1
               kick({:target => target})
-            when /^help (kick)$/i
-              action_help_kick({})
             end
           end
 
           private
-          def action_help_kick(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def kick(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/locking.rb b/lib/aethyr/core/commands/locking.rb
index b777a55b314fa4769c9058a86043ed0934efd6ac..40d1179f811c7b7db3a89de782377325703d51d7 100644
--- a/lib/aethyr/core/commands/locking.rb
+++ b/lib/aethyr/core/commands/locking.rb
@@ -6,8 +6,28 @@ module Aethyr
     module Commands
       module Locking
         class LockingHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "locking"
+            see_also = ["OPEN", "CLOSE"]
+            syntax_formats = ["LOCK [object or direction]", "UNLOCK [object or direction]"]
+            aliases = ["lock", "unlock"]
+            content =  <<'EOF'
+Lock or unlock the given object, if you have a key for it.
+
+Note that you can lock a door while it is open, then close it.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["lock", "unlock"])
+            super(player, ["lock", "unlock"], LockingHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,28 +41,10 @@ module Aethyr
               action_lock({ :object => $1 })
             when /^unlock\s+(.*)$/i
               action_unlock({ :object => $1 })
-            when /^help (lock|unlock)$/i
-              action_help({})
             end
           end
 
           private
-          def action_help(event)
-            @player.output <<'EOF'
-Command: Lock
-Command: Unlock
-Syntax: LOCK [object or direction]
-Syntax: UNLOCK [object or direction]
-
-Lock or unlock the given object, if you have a key for it.
-
-Note that you can lock a door while it is open, then close it.
-
-See also: OPEN, CLOSE
-
-EOF
-          end
-
           def action_lock(event)
             room = $manager.get_object(@player.container)
             object = @player.search_inv(event[:object]) || room.find(event[:object])
diff --git a/lib/aethyr/core/commands/look.rb b/lib/aethyr/core/commands/look.rb
index 8ac3fc8171f6629ff327ac3d23f9a6db19abd68e..ccc760f39c8d9b88b9522e07a5657f53e4a90fb6 100644
--- a/lib/aethyr/core/commands/look.rb
+++ b/lib/aethyr/core/commands/look.rb
@@ -6,8 +6,31 @@ module Aethyr
     module Commands
       module Look
         class LookHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "look"
+            see_also = nil
+            syntax_formats = ["LOOK", "LOOK [object]", "LOOK IN [object]"]
+            aliases = ["l"]
+            content =  <<'EOF'
+Look by itself will show you your surroundings.
+
+Look followed by an object will look at that object.
+
+Look IN will look inside of a container (if it is open).
+
+'l' is a shortcut for look.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["l", "look"])
+            super(player, ["l", "look"], LookHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -23,29 +46,10 @@ module Aethyr
               action({ :in => $3 })
             when /^(l|look)\s+(.*)$/i
               action({ :at => $2 })
-            when /^help (l|look)$/i
-              action_help({})
             end
           end
 
           private
-          def action_help(event)
-            @player.output <<'EOF'
-Command: Look
-Syntax: LOOK
-Syntax: LOOK [object]
-Syntax: LOOK IN [object]
-
-Look by itself will show you your surroundings.
-
-Look followed by an object will look at that object.
-
-Look IN will look inside of a container (if it is open).
-
-'l' is a shortcut for look.
-EOF
-          end
-
           def action(event)
             room = $manager.get_object(@player.container)
             if @player.blind?
diff --git a/lib/aethyr/core/commands/map.rb b/lib/aethyr/core/commands/map.rb
index d493375e68a36785dabdedd9a32d7e919598e357..df6b7871a54e8789f8648e54cd1f8a15ef75d65a 100644
--- a/lib/aethyr/core/commands/map.rb
+++ b/lib/aethyr/core/commands/map.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Map
         class MapHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "map"
+            see_also = nil
+            syntax_formats = ["MAP"]
+            aliases = ["m"]
+            content =  <<'EOF'
+Displays a map of the area.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["m", "map"])
+            super(player, ["m", "map"], MapHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -19,21 +36,10 @@ module Aethyr
             case data[:input]
             when /^(m|map)$/i
               action({})
-            when /^help (m|map)$/i
-              action_help({})
             end
           end
 
           private
-          def action_help(event)
-            player.output <<'EOF'
-Command: Map
-Syntax: MAP
-
-Displays a map of the area.
-EOF
-          end
-
           def action(event)
             room = $manager.get_object(@player.container)
             player.output(room.area.render_map(player, room.area.position(room)))
diff --git a/lib/aethyr/core/commands/more.rb b/lib/aethyr/core/commands/more.rb
index 26ff0f9beebf375e810980c9e7a829c1c328a7b1..1366001503ccc6649d2f4833546e5e4b99433ba6 100644
--- a/lib/aethyr/core/commands/more.rb
+++ b/lib/aethyr/core/commands/more.rb
@@ -6,8 +6,28 @@ module Aethyr
     module Commands
       module More
         class MoreHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "more"
+            see_also = ["PAGELENGTH"]
+            syntax_formats = ["MORE"]
+            aliases = nil
+            content =  <<'EOF'
+When the output from the last command was too long to display you can issue this
+command to see the next page. If there are multiple pages then this command can
+be used multiple times.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["more"])
+            super(player, ["more"], MoreHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -19,8 +39,6 @@ module Aethyr
             case data[:input]
             when /^more/i
               action({})
-            when /^help more/i
-              action_help({})
             end
           end
           
@@ -28,19 +46,6 @@ module Aethyr
           def action(event)
             player.more
           end
-          
-          def action_help(event)
-            player.output <<'EOF'
-Command: More
-Syntax: MORE
-
-When the output from the last command was too long to display you can issue this
-command to see the next page. If there are multiple pages then this command can
-be used multiple times.
-
-See also: PAGELENGTH
-EOF
-          end
         end
 
         Aethyr::Extend::HandlerRegistry.register_handler(MoreHandler)
diff --git a/lib/aethyr/core/commands/move.rb b/lib/aethyr/core/commands/move.rb
index e26feabb609e7ce34cd8aec584ad12d3883b78a1..f2c4b6ce90f4138bf1b545157f716c48b8ebcdaf 100644
--- a/lib/aethyr/core/commands/move.rb
+++ b/lib/aethyr/core/commands/move.rb
@@ -8,10 +8,34 @@ module Aethyr
       module Move
         class MoveHandler < Aethyr::Extend::CommandHandler
 
+          def self.create_help_entries
+            help_entries = []
+
+            command = "move"
+            see_also = nil
+            syntax_formats = ["GO [direction or exit]"]
+            aliases = ["go", "east", "west", "northeast", "northwest", "north", "southeast", "southwest", "south", "e", "w", "nw", "ne", "sw", "se", "n", "s", "up", "down", "u", "d", "in", "out"]
+            content =  <<'EOF'
+Move in a particular direction or through a particular exit.
+
+Example:
+
+GO EAST
+
+Note that you can just use EAST, WEST, IN, OUT, UP, DOWN, etc. instead of GO.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
+
           include Aethyr::Direction
 
           def initialize(player)
-            super(player, ["go", "move", "east", "west", "northeast", "northwest", "north", "southeast", "southwest", "south", "e", "w", "nw", "ne", "sw", "se", "n", "s", "up", "down", "u", "d", "in", "out"])
+            super(player, ["go", "move", "east", "west", "northeast", "northwest", "north", "southeast", "southwest", "south", "e", "w", "nw", "ne", "sw", "se", "n", "s", "up", "down", "u", "d", "in", "out"], MoveHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -26,28 +50,10 @@ module Aethyr
             when /^(east|west|northeast|northwest|north|southeast|southwest|south|e|w|nw|ne|sw|se|n|s|up|down|u|d|in|out)(\s+\((.*)\))?$/i
               action({:direction => expand_direction($1),
               :pre => $3})
-            when /^help (go|move|east|west|northeast|northwest|north|southeast|southwest|south|e|w|nw|ne|sw|se|n|s|up|down|u|d|in|out)$/i
-              action_help({})
             end
           end
 
           private
-          def action_help(event)
-            @player.output <<'EOF'
-Command: Go
-Syntax: GO [direction or exit]
-
-Move in a particular direction or through a particular exit.
-
-Example:
-
-GO EAST
-
-Note that you can just use EAST, WEST, IN, OUT, UP, DOWN, etc. instead of GO.
-
-EOF
-          end
-
           def action(event)
             room = $manager.get_object(@player.container)
             exit = room.exit(event[:direction])
diff --git a/lib/aethyr/core/commands/news.rb b/lib/aethyr/core/commands/news.rb
index 197716a0352487025ff994d7404ba862176eb0e7..bda131e4f9d293edb9eb817a56bea61a501ba37c 100644
--- a/lib/aethyr/core/commands/news.rb
+++ b/lib/aethyr/core/commands/news.rb
@@ -6,45 +6,15 @@ module Aethyr
     module Commands
       module News
         class NewsHandler < Aethyr::Extend::CommandHandler
-          def initialize(player)
-            super(player, ["news"])
-          end
 
-          def self.object_added(data)
-            super(data, self)
-          end
+          def self.create_help_entries
+            help_entries = []
 
-          def player_input(data)
-            super(data)
-            case data[:input]
-            when "news"
-              latest_news({})
-            when /^news\s+(read\s+)?(\d+)$/i
-              post_id = $2
-              read_post({:post_id => post_id})
-            when /^news\s+reply(\s+to\s+)?\s+(\d+)$/i
-              reply_to = $2
-              write_post({:reply_to => reply_to})
-            when /^news\s+unread/i
-              list_unread({})
-            when /^news\s+last\s+(\d+)/i
-              limit = $1.to_i
-              latest_news({:limit => limit})
-            when /^news\s+delete\s+(\d+)/i
-              post_id = $1
-              delete_post({:post_id => post_id})
-            when /^news\s+write$/i
-              write_post({})
-            when /^news\s+all/i
-              all({})
-            when /^help (news)$/i
-              action_help_news({})
-            end
-          end
-
-          private
-          def action_help_news(event)
-            @player.output <<'EOF'
+            command = "news"
+            see_also = nil
+            syntax_formats = ["NEWS"]
+            aliases = nil
+            content =  <<'EOF'
 NEWS
 
 Scattered throughout Aethyr are objects on which one can post notes or read notes left by others. The appearance of these objects may vary from ledgers to large bulletin boards, but they all work the same way.
@@ -53,45 +23,68 @@ The news system is currently still being tinkered on, but here is what works cur
 
 -Reading posts
 
-Command: NEWS
-
 Lists the latest news. How many posts it lists is dependent on your pagelength.
 
-Command: NEWS LAST <number>
-
 Specify how many of the latest posts to show.
 
-Command: NEWS ALL
-
 Lists all the news postings. Might be really long.
 
-Command: NEWS READ <post id>
-Command: NEWS <post id>
-
 Shows the specified post.
 
 -Writing posts
 
-Command: NEWS WRITE
-
 First enter a subject for your post, then you will be taken to the editor to write the body of the post. If you decide not to write the post after all, then simply exit the editor without saving.
 
-Command: NEWS REPLY <post id>
-
 Write a reply to an existing post.
 
 -Deleting posts
 
-Command: NEWS DELETE <post id>
-
 For testing purposes only, you may delete your own posts. This is so you don't feel guilty about posting a bunch of nonsense to try things out.
 
 Note that this command isn't really well-supported, so it may cause some odd things to happen if there are replies to deleted posts.
 
 EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
+          def initialize(player)
+            super(player, ["news"], NewsHandler.create_help_entries)
           end
 
+          def self.object_added(data)
+            super(data, self)
+          end
 
+          def player_input(data)
+            super(data)
+            case data[:input]
+            when "news"
+              latest_news({})
+            when /^news\s+(read\s+)?(\d+)$/i
+              post_id = $2
+              read_post({:post_id => post_id})
+            when /^news\s+reply(\s+to\s+)?\s+(\d+)$/i
+              reply_to = $2
+              write_post({:reply_to => reply_to})
+            when /^news\s+unread/i
+              list_unread({})
+            when /^news\s+last\s+(\d+)/i
+              limit = $1.to_i
+              latest_news({:limit => limit})
+            when /^news\s+delete\s+(\d+)/i
+              post_id = $1
+              delete_post({:post_id => post_id})
+            when /^news\s+write$/i
+              write_post({})
+            when /^news\s+all/i
+              all({})
+            end
+          end
+
+          private
           def latest_news(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/open.rb b/lib/aethyr/core/commands/open.rb
index 72bc502929ad174093571be8ece47c286d0ba36f..dea95cb5e221bb0a78ace4d24e081bd225a8789f 100644
--- a/lib/aethyr/core/commands/open.rb
+++ b/lib/aethyr/core/commands/open.rb
@@ -7,10 +7,34 @@ module Aethyr
     module Commands
       module Open
         class OpenHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "open"
+            see_also = ["LOCK", "UNLOCK", "CLOSE"]
+            syntax_formats = ["OPEN [object or direction]"]
+            aliases = nil
+            content =  <<'EOF'
+Opens the object. For doors and such, it is more accurate to use the direction in which the object lies.
+
+For example:
+
+OPEN north
+
+OPEN door
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           include Aethyr::Direction
 
           def initialize(player)
-            super(player, ["open"])
+            super(player, ["open"], OpenHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -22,31 +46,10 @@ module Aethyr
             case data[:input]
             when /^open\s+(\w+)$/i
               action({ :object => $1 })
-            when /^help open$/i
-              action_help({})
             end
           end
 
           private
-          def action_help(event)
-            player.output <<'EOF'
-Command: Open
-Syntax: OPEN [object or direction]
-
-Opens the object. For doors and such, it is more accurate to use the direction in which the object lies.
-
-For example:
-
-OPEN north
-
-OPEN door
-
-
-See also: LOCK, UNLOCK, CLOSE
-
-EOF
-          end
-
           def action(event)
             room = $manager.get_object(@player.container)
             object = expand_direction(event[:object])
diff --git a/lib/aethyr/core/commands/portal.rb b/lib/aethyr/core/commands/portal.rb
index b384f20fc3585e8b4eee4dec5a7265c7ca43680b..fa061f8575ca2c84dd9a4193ed2aa93396d74b50 100644
--- a/lib/aethyr/core/commands/portal.rb
+++ b/lib/aethyr/core/commands/portal.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Portal
         class PortalHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "portal"
+            see_also = nil
+            syntax_formats = ["PORTAL [OBJECT] (ACTION|EXIT|ENTRANCE|PORTAL) [VALUE]"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["portal"])
+            super(player, ["portal"], PortalHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -22,19 +39,10 @@ module Aethyr
               setting = $2.downcase
               value = $3.strip
               portal({:object => object, :setting => setting, :value => value})
-            when /^help (portal)$/i
-              action_help_portal({})
             end
           end
 
           private
-          def action_help_portal(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def portal(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/pose.rb b/lib/aethyr/core/commands/pose.rb
index 71717e948ae0de236d4818a2629a19a401fb1e87..11b87f66f9e762c9519072740e6bf9d9e830add4 100644
--- a/lib/aethyr/core/commands/pose.rb
+++ b/lib/aethyr/core/commands/pose.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Pose
         class PoseHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "pose"
+            see_also = nil
+            syntax_formats = ["POSE"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["pose"])
+            super(player, ["pose"], PoseHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -20,19 +37,10 @@ module Aethyr
             when /^pose\s+(.*)$/i
               pose = $1.strip
               pose({:pose => pose})
-            when /^help (pose)$/i
-              action_help_pose({})
             end
           end
 
           private
-          def action_help_pose(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def pose(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/punch.rb b/lib/aethyr/core/commands/punch.rb
index dd90dd4c4ba5c91c36b9f95bceecdf44619fc0ba..eaf143e3c7e69576565585f232ace0609a5e8ad1 100644
--- a/lib/aethyr/core/commands/punch.rb
+++ b/lib/aethyr/core/commands/punch.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Punch
         class PunchHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "punch"
+            see_also = nil
+            syntax_formats = ["PUNCH"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["punch"])
+            super(player, ["punch"], PunchHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -22,19 +39,10 @@ module Aethyr
             when /^punch\s+(.*)$/i
               target = $1
               punch({:target => target})
-            when /^help (punch)$/i
-              action_help_punch({})
             end
           end
 
           private
-          def action_help_punch(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def punch(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/put.rb b/lib/aethyr/core/commands/put.rb
index d694c98294453ab21cf54c3b24cf8b93e3008833..caa79e9d199117c271dd68004b085fea2ea60681 100644
--- a/lib/aethyr/core/commands/put.rb
+++ b/lib/aethyr/core/commands/put.rb
@@ -6,8 +6,26 @@ module Aethyr
     module Commands
       module Put
         class PutHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "put"
+            see_also = ["LOOK", "TAKE", "OPEN"]
+            syntax_formats = ["PUT [object] IN [container]"]
+            aliases = nil
+            content =  <<'EOF'
+Puts an object in a container. The container must be open to do so.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["put"])
+            super(player, ["put"], PutHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,24 +39,10 @@ module Aethyr
               action({ :item => $4,
                 :count => $3.to_i,
                 :container => $5 })
-            when /^help put$/i
-              action_help({})
             end
           end
 
           private
-          def action_help(event)
-            @player.output <<'EOF'
-Command: Put
-Syntax: PUT [object] IN [container]
-
-Puts an object in a container. The container must be open to do so.
-
-See also: LOOK TAKE OPEN
-
-EOF
-          end
-
           def action(event)
             room = $manager.get_object(@player.container)
             item = @player.inventory.find(event[:item])
diff --git a/lib/aethyr/core/commands/quit.rb b/lib/aethyr/core/commands/quit.rb
index e24e6d8ab241af17757a23dbecfeb83fd971b65c..e2fb4bc5e0ef92a8cb1931d8c5c9fa2eee9bb7af 100644
--- a/lib/aethyr/core/commands/quit.rb
+++ b/lib/aethyr/core/commands/quit.rb
@@ -6,8 +6,28 @@ module Aethyr
     module Commands
       module Quit
         class QuitHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "quit"
+            see_also = nil
+            syntax_formats = ["QUIT"]
+            aliases = nil
+            content =  <<'EOF'
+Saves your character and logs you off from the game.
+
+You shouldn't need this too often.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["quit"])
+            super(player, ["quit"], QuitHandler.create_help_entries)
           end
           
           def self.object_added(data)
@@ -18,23 +38,10 @@ module Aethyr
             case data[:input]
             when /^quit$/i
               action({})
-            when /^help quit$/i
-              action_help({})
             end
           end
           
           private
-          def action_help(event)
-            player.output <<'EOF'
-Command: Quit
-Syntax: QUIT
-
-Saves your character and logs you off from the game.
-
-You shouldn't need this too often.
-
-EOF
-          end
           
           def action(event)
             $manager.drop_player player
diff --git a/lib/aethyr/core/commands/remove.rb b/lib/aethyr/core/commands/remove.rb
index 42070d6bf83a4e4bc3bf6dc12e47075ed7b99035..afbaaabd5ee75fb3d96200ccea201873cd76ca70 100644
--- a/lib/aethyr/core/commands/remove.rb
+++ b/lib/aethyr/core/commands/remove.rb
@@ -6,8 +6,26 @@ module Aethyr
     module Commands
       module Remove
         class RemoveHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "remove"
+            see_also = ["WEAR", "INVENTORY"]
+            syntax_formats = ["REMOVE <object>"]
+            aliases = nil
+            content =  <<'EOF'
+Remove an article of clothing or armor.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["remove"])
+            super(player, ["remove"], RemoveHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,25 +39,10 @@ module Aethyr
               object = $1
               position = $3
               remove({:object => object, :position => position})
-            when /^help (remove)$/i
-              action_help_remove({})
             end
           end
 
           private
-          def action_help_remove(event)
-            @player.output <<'EOF'
-Command: Remove
-Syntax: REMOVE <object>
-
-Remove an article of clothing or armor.
-
-See also: WEAR, INVENTORY
-
-EOF
-          end
-
-
           def remove(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/say.rb b/lib/aethyr/core/commands/say.rb
index f00b2a8c411f689c9a8e5c26da14c825905b3130..78fb50b0baa51c6b0788624c099746f3c272016f 100644
--- a/lib/aethyr/core/commands/say.rb
+++ b/lib/aethyr/core/commands/say.rb
@@ -6,34 +6,15 @@ module Aethyr
     module Commands
       module Say
         class SayHandler < Aethyr::Extend::CommandHandler
-          def initialize(player)
-            super(player, ["say", "sayto"])
-          end
-
-          def self.object_added(data)
-            super(data, self)
-          end
-
-          def player_input(data)
-            super(data)
-            case data[:input]
-            when /^say\s+(\((.*?)\)\s*)?(.*)$/i
-              action({ :phrase => $3, :pre => $2 })
-            when /^sayto\s+(\w+)\s+(\((.*?)\)\s*)?(.*)$/i
-              action({:target => $1, :phrase => $4, :pre => $3 })
-            when /^help (sayto)$/i
-              action_help_sayto({})
-            when /^help (say)$/i
-              action_help_say({})
-            end
-          end
 
-          private
-          def action_help_say(event)
-            @player.output <<'EOF'
-Command: Say
-Syntax: SAY [message]
+          def self.create_help_entries
+            help_entries = []
 
+            command = "say"
+            see_also = ["WHISPER", "SAYTO"]
+            syntax_formats = ["SAY [message]"]
+            aliases = nil
+            content =  <<'EOF'
 This is the basic command for communication.  Everyone in the room hears what you say.
 Some formatting is automatic, and a few emoticons are supported at the end of the command.
 
@@ -48,15 +29,16 @@ You can also specify a prefix in parentheses after the say command.
 Example: say (in trepidation) are you going to take my cheese?
 Output:  In trepidation, you ask, "Are you going to take my cheese?"
 
-See also: WHISPER, SAYTO
 EOF
-          end
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
 
-          def action_help_sayto(event)
-            @player.output <<'EOF'
-Command: Say to
-Syntax: SAYTO [name] [message]
 
+
+            command = "sayto"
+            see_also = ["WHISPER", "SAY"]
+            syntax_formats = ["SAYTO [name] [message]"]
+            aliases = nil
+            content =  <<'EOF'
 Say something to someone in particular, who is in the same room:
 
 Example:
@@ -69,10 +51,33 @@ You say to Bob, "I like cheese."
 
 Also supports the same variations as the SAY command.
 
-See also: WHISPER, SAY
 EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
           end
 
+
+          def initialize(player)
+            super(player, ["say", "sayto"], SayHandler.create_help_entries)
+          end
+
+          def self.object_added(data)
+            super(data, self)
+          end
+
+          def player_input(data)
+            super(data)
+            case data[:input]
+            when /^say\s+(\((.*?)\)\s*)?(.*)$/i
+              action({ :phrase => $3, :pre => $2 })
+            when /^sayto\s+(\w+)\s+(\((.*?)\)\s*)?(.*)$/i
+              action({:target => $1, :phrase => $4, :pre => $3 })
+            end
+          end
+
+          private
+
           #Says something to the room or to a specific player.
           def action(event)
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/set.rb b/lib/aethyr/core/commands/set.rb
index cbecf028716c881a0741efd331d7e4faf6c2d73c..b0b58c65ce5276277cd5048792c0009389fe69b7 100644
--- a/lib/aethyr/core/commands/set.rb
+++ b/lib/aethyr/core/commands/set.rb
@@ -6,8 +6,37 @@ module Aethyr
     module Commands
       module Set
         class SetHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "set"
+            see_also = ["WORDWRAP", "PAGELENGTH", "DESCRIPTION", "COLORS"]
+            syntax_formats = ["SET <option> [value]"]
+            aliases = nil
+            content =  <<'EOF'
+There are several settings available to you. To see them all, simply use SET.
+To see the values available for a certain setting, use SET <option> without a value.
+
+Example:
+
+To see your color settings, use
+
+SET COLOR
+
+To turn off word wrap, use
+
+SET WORDWRAP OFF
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["set"])
+            super(player, ["set"], SetHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -32,35 +61,10 @@ module Aethyr
               setcolor({:option => option, :color => color})
             when /^set\s+password$/i
               setpassword({})
-            when /^help (set)$/i
-              action_help_set({})
             end
           end
 
           private
-          def action_help_set(event)
-            @player.output <<'EOF'
-Syntax: SET <option> [value]
-
-There are several settings available to you. To see them all, simply use SET.
-To see the values available for a certain setting, use SET <option> without a value.
-
-Example:
-
-To see your color settings, use
-
-SET COLOR
-
-To turn off word wrap, use
-
-SET WORDWRAP OFF
-
-See also: WORDWRAP, PAGELENGTH, DESCRIPTION, COLORS
-
-EOF
-          end
-
-
           def setcolor(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/sit.rb b/lib/aethyr/core/commands/sit.rb
index a64a425ac1e1d4acae708b476ded9bef4aa26361..1a6f048c5ac80bf4b61d76a3322a3ab7678515d1 100644
--- a/lib/aethyr/core/commands/sit.rb
+++ b/lib/aethyr/core/commands/sit.rb
@@ -6,8 +6,32 @@ module Aethyr
     module Commands
       module Sit
         class SitHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "sit"
+            see_also = ["STAND"]
+            syntax_formats = ["SIT", "SIT ON <object>"]
+            aliases = nil
+            content =  <<'EOF'
+Using this command, you can sit on things like chairs and benches. When used without an object, you will sit down on the ground.
+
+Note that you must stand up before you can move anywhere.
+
+Example:
+
+SIT ON stool
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["sit"])
+            super(player, ["sit"], SitHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -20,33 +44,10 @@ module Aethyr
             when /^sit\s+on\s+(.*)$/i, /^sit\s+(.*)$/i, /^sit$/i
               object = $1.strip if $1
               sit({:object => object})
-            when /^help (sit)$/i
-              action_help_sit({})
             end
           end
 
           private
-          def action_help_sit(event)
-            @player.output <<'EOF'
-Command: Sit
-Syntax: SIT
-Syntax: SIT ON <object>
-
-Using this command, you can sit on things like chairs and benches. When used without an object, you will sit down on the ground.
-
-Note that you must stand up before you can move anywhere.
-
-Example:
-
-SIT ON stool
-
-
-See also: STAND
-
-EOF
-          end
-
-
           def sit(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/skills.rb b/lib/aethyr/core/commands/skills.rb
index 6704dacaececfd07425234ff98242da3da36782b..acd583605be692f3263bbb5aacfcf20e75135500 100644
--- a/lib/aethyr/core/commands/skills.rb
+++ b/lib/aethyr/core/commands/skills.rb
@@ -8,8 +8,25 @@ module Aethyr
     module Commands
       module Skills
         class SkillsHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "skills"
+            see_also = nil
+            syntax_formats = ["SKILLS"]
+            aliases = nil
+            content =  <<'EOF'
+List all your currently known skills, their level, and level up info.
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["skills"])
+            super(player, ["skills"], SkillsHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,8 +38,6 @@ module Aethyr
             case data[:input]
             when /^skills$/i
               action({})
-            when /^help (skills)$/i
-              action_help({})
             end
           end
           
@@ -72,16 +87,6 @@ module Aethyr
             end
             @player.output(output)
           end
-
-          def action_help(event)
-            player.output <<'EOF'
-Command: Skills
-Syntax: SKILLS
-
-List all your currently known skills, their level, and level up info.
-EOF
-          end
-
           def self.generate_progress(width, percentage, style = :vertical_smooth)
             if (style.eql? :horizontal_smooth) or (style.eql? :vertical_smooth)
               working_space = width - 7
diff --git a/lib/aethyr/core/commands/slash.rb b/lib/aethyr/core/commands/slash.rb
index 54550a49448f661ba90b730a6eff05028b38b0e2..cc60bdad07204b6eb524b3907b46d2992b37552d 100644
--- a/lib/aethyr/core/commands/slash.rb
+++ b/lib/aethyr/core/commands/slash.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Slash
         class SlashHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "slash"
+            see_also = nil
+            syntax_formats = ["SLASH"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["slash"])
+            super(player, ["slash"], SlashHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -22,19 +39,10 @@ module Aethyr
             when /^slash\s+(.*)$/i
               target = $1
               slash({:target => target})
-            when /^help (slash)$/i
-              action_help_slash({})
             end
           end
 
           private
-          def action_help_slash(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def slash(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/stand.rb b/lib/aethyr/core/commands/stand.rb
index 2dc08af99a9b12621689e04eac4e93449b61b745..fefba169b6374d7f53ba914a6785562dbea431e2 100644
--- a/lib/aethyr/core/commands/stand.rb
+++ b/lib/aethyr/core/commands/stand.rb
@@ -6,8 +6,26 @@ module Aethyr
     module Commands
       module Stand
         class StandHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "stand"
+            see_also = ["SIT"]
+            syntax_formats = ["STAND"]
+            aliases = nil
+            content =  <<'EOF'
+Stand up if you are sitting down.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["stand"])
+            super(player, ["stand"], StandHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -19,26 +37,10 @@ module Aethyr
             case data[:input]
             when /^stand$/i
               stand({})
-            when /^help (stand)$/i
-              action_help_stand({})
             end
           end
 
           private
-          def action_help_stand(event)
-            @player.output <<'EOF'
-Command: Stand
-Syntax: STAND
-
-Stand up if you are sitting down.
-
-
-See also: SIT
-
-EOF
-          end
-
-
           def stand(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/tell.rb b/lib/aethyr/core/commands/tell.rb
index 2dfe9902e5c7914eb9aa04fc8f220b644bf75953..0b13d2d5bae828bd95a5bd0bd018585aec8d230f 100644
--- a/lib/aethyr/core/commands/tell.rb
+++ b/lib/aethyr/core/commands/tell.rb
@@ -6,8 +6,41 @@ module Aethyr
     module Commands
       module Tell
         class TellHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "tell"
+            see_also = ["SAY", "SAYTO", "WHISPER", "REPLY"]
+            syntax_formats = ["TELL [player] [message]"]
+            aliases = nil
+            content =  <<'EOF'
+All inhabitants of Aethyr have the ability to communicate privately with each other over long distances. This is done through the TELL command. Those who investigate these kinds of things claim there is some kind of latent telepathy in all of us. However, while no one knows for certain how it works, everyone knows it does.
+
+Example:
+TELL Justin Hey, how's it going?
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+
+
+            command = "reply"
+            see_also = ["TELL"]
+            syntax_formats = ["REPLY [message]"]
+            aliases = nil
+            content =  <<'EOF'
+Reply is a shortcut to send a tell to the last person who sent you a tell.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["tell", "reply"])
+            super(player, ["tell", "reply"], TellHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,39 +54,10 @@ module Aethyr
               action_tell({:target => $1, :message => $2 })
             when /^reply\s+(.*)$/i
               action_reply({:message => $1 })
-            when /^help (tell)$/i
-              action_help_tell({})
-            when /^help (reply)$/i
-              action_help_reply({})
             end
           end
 
           private
-          def action_help_tell(event)
-            @player.output <<'EOF'
-Command: Tell
-Syntax: TELL [player] [message]
-
-All inhabitants of Aethyr have the ability to communicate privately with each other over long distances. This is done through the TELL command. Those who investigate these kinds of things claim there is some kind of latent telepathy in all of us. However, while no one knows for certain how it works, everyone knows it does.
-
-Example:
-TELL Justin Hey, how's it going?
-
-
-See also: SAY, SAYTO, WHISPER, REPLY
-EOF
-          end
-
-          def action_help_reply(event)
-            @player.output <<'EOF'
-Command: Reply
-Syntax: REPLY [message]
-
-Reply is a shortcut to send a tell to the last person who sent you a tell.
-
-See also: TELL
-EOF
-          end
 
           #Tells someone something.
           def action_tell(event)
diff --git a/lib/aethyr/core/commands/unwield.rb b/lib/aethyr/core/commands/unwield.rb
index 50203253f26b0aced38fbf7ac3ce2146138ace7b..ac1da5760545a70b6c1e9028174a4e155cc38ffa 100644
--- a/lib/aethyr/core/commands/unwield.rb
+++ b/lib/aethyr/core/commands/unwield.rb
@@ -6,8 +6,31 @@ module Aethyr
     module Commands
       module Unwield
         class UnwieldHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "unwield"
+            see_also = ["WIELD"]
+            syntax_formats = ["UNWIELD", "UNWIELD <weapon>", "UNWIELD <left|right>"]
+            aliases = nil
+            content =  <<'EOF'
+This command will cause you to unwield a weapon and place it in your inventory. If you do not specify which weapon or which hand you are using to hold the weapon, it will favor your right hand.
+
+Example:
+
+UNWIELD halberd
+UNWIELD left
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["unwield"])
+            super(player, ["unwield"], UnwieldHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -20,33 +43,10 @@ module Aethyr
             when /^unwield(\s+(.*))?$/i
               weapon = $2
               unwield({:weapon => weapon})
-            when /^help (unwield)$/i
-              action_help_unwield({})
             end
           end
 
           private
-          def action_help_unwield(event)
-            @player.output <<'EOF'
-Command: Unwield weapon
-Syntax: UNWIELD
-Syntax: UNWIELD <weapon>
-Syntax: UNWIELD <left|right>
-
-This command will cause you to unwield a weapon and place it in your inventory. If you do not specify which weapon or which hand you are using to hold the weapon, it will favor your right hand.
-
-Example:
-
-UNWIELD halberd
-UNWIELD left
-
-
-See also: WIELD
-
-EOF
-          end
-
-
           def unwield(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/wear.rb b/lib/aethyr/core/commands/wear.rb
index 258623d9337ecbbb946e469e5e09ab77168bde85..eee694311ee449cf0989203e32920fb98a62aa0b 100644
--- a/lib/aethyr/core/commands/wear.rb
+++ b/lib/aethyr/core/commands/wear.rb
@@ -6,8 +6,28 @@ module Aethyr
     module Commands
       module Wear
         class WearHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "wear"
+            see_also = ["REMOVE", "INVENTORY"]
+            syntax_formats = ["WEAR <object>"]
+            aliases = nil
+            content =  <<'EOF'
+Sytnax: WEAR <object> ON <body part>
+
+Wear an object. Objects usually have specific places they may be worn.
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["wear"])
+            super(player, ["wear"], WearHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,27 +41,10 @@ module Aethyr
               object = $1
               position = $3
               wear({:object => object, :position => position})
-            when /^help (wear)$/i
-              action_help_wear({})
             end
           end
 
           private
-          def action_help_wear(event)
-            @player.output <<'EOF'
-Command: Wear
-Syntax: WEAR <object>
-Sytnax: WEAR <object> ON <body part>
-
-Wear an object. Objects usually have specific places they may be worn.
-
-
-See also: REMOVE, INVENTORY
-
-EOF
-          end
-
-
           def wear(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/whereis.rb b/lib/aethyr/core/commands/whereis.rb
index 2ae0c438aaa8a5047fc27c5c02134cf177f25299..230b5e5529918c0f21d878b6ff74a8dedb5759c4 100644
--- a/lib/aethyr/core/commands/whereis.rb
+++ b/lib/aethyr/core/commands/whereis.rb
@@ -6,8 +6,25 @@ module Aethyr
     module Commands
       module Whereis
         class WhereisHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "whereis"
+            see_also = nil
+            syntax_formats = ["WHEREIS"]
+            aliases = nil
+            content =  <<'EOF'
+Sorry no help has been written for this command yet
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["whereis"])
+            super(player, ["whereis"], WhereisHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -20,19 +37,10 @@ module Aethyr
             when /^whereis\s(.*)$/
               object = $1
               whereis({:object => object})
-            when /^help (whereis)$/i
-              action_help_whereis({})
             end
           end
 
           private
-          def action_help_whereis(event)
-            @player.output <<'EOF'
-Sorry no help has been written for this command yet
-EOF
-          end
-
-
           def whereis(event)
 
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/whisper.rb b/lib/aethyr/core/commands/whisper.rb
index 027fac792c3f633013643c00db403981f045fa7e..16adcbf3b4e1d61a98b1deca78287ac5641a9a13 100644
--- a/lib/aethyr/core/commands/whisper.rb
+++ b/lib/aethyr/core/commands/whisper.rb
@@ -6,8 +6,34 @@ module Aethyr
     module Commands
       module Whisper
         class WhisperHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "whisper"
+            see_also = ["SAY"]
+            syntax_formats = ["WHISPER [person] [message]"]
+            aliases = nil
+            content =  <<'EOF'
+To communicate with someone in the same room, but privately, use this command.
+
+Example:
+
+whisper justin that dog needs a bath
+
+Output:
+
+You whisper to Justin, "That dog needs a bath."
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["whisper"])
+            super(player, ["whisper"], WhisperHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -19,32 +45,10 @@ module Aethyr
             case data[:input]
             when /^whisper\s+(\w+)\s+(\((.*?)\)\s*)?(.*)$/i
               action({ :to => $1, :phrase => $4, :pre => $3 })
-            when /^help (whisper)$/i
-              action_help({})
             end
           end
 
           private
-          def action_help(event)
-            @player.output <<'EOF'
-Command: Whisper
-Syntax: WHISPER [person] [message]
-
-To communicate with someone in the same room, but privately, use this command.
-
-Example:
-
-whisper justin that dog needs a bath
-
-Output:
-
-You whisper to Justin, "That dog needs a bath."
-
-
-See also: SAY
-EOF
-          end
-
           #Whispers to another thing.
           def action(event)
             room = $manager.get_object(@player.container)
diff --git a/lib/aethyr/core/commands/wield.rb b/lib/aethyr/core/commands/wield.rb
index 0b3b119330773f9986e73c0fc1fbf258eaf08481..37ddd602b9dfb2b2bee415cb665e4013fc726aa0 100644
--- a/lib/aethyr/core/commands/wield.rb
+++ b/lib/aethyr/core/commands/wield.rb
@@ -6,8 +6,32 @@ module Aethyr
     module Commands
       module Wield
         class WieldHandler < Aethyr::Extend::CommandHandler
+
+          def self.create_help_entries
+            help_entries = []
+
+            command = "wield"
+            see_also = ["UNWIELD"]
+            syntax_formats = ["WIELD <item>", "WIELD <item> <left|right>"]
+            aliases = nil
+            content =  <<'EOF'
+This command causes you to wield an item. The item must be wieldable and be present in your inventory.
+
+You can also specify which hand with which to wield the weapon. If you do not, it will favor your right hand.
+
+Example:
+
+WIELD sword left
+
+EOF
+            help_entries.push(Aethyr::Core::Help::HelpEntry.new(command, content: content, syntax_formats: syntax_formats, see_also: see_also, aliases: aliases))
+
+            return help_entries
+          end
+
+
           def initialize(player)
-            super(player, ["wield"])
+            super(player, ["wield"], WieldHandler.create_help_entries)
           end
 
           def self.object_added(data)
@@ -21,33 +45,10 @@ module Aethyr
               weapon = $1
               side = $3
               wield({:weapon => weapon, :side => side})
-            when /^help (wield)$/i
-              action_help_wield({})
             end
           end
 
           private
-          def action_help_wield(event)
-            @player.output <<'EOF'
-Command: Wield item
-Syntax: WIELD <item>
-Syntax: WIELD <item> <left|right>
-
-This command causes you to wield an item. The item must be wieldable and be present in your inventory.
-
-You can also specify which hand with which to wield the weapon. If you do not, it will favor your right hand.
-
-Example:
-
-WIELD sword left
-
-
-See also: UNWIELD
-
-EOF
-          end
-
-
           def wield(event)
 
             room = $manager.get_object(@player.container)