diff --git a/source/Commands/CommandObjectApropos.cpp b/source/Commands/CommandObjectApropos.cpp
index 59621af..3649470 100644
--- a/source/Commands/CommandObjectApropos.cpp
+++ b/source/Commands/CommandObjectApropos.cpp
@@ -28,7 +28,7 @@
 
 CommandObjectApropos::CommandObjectApropos () :
     CommandObject ("apropos",
-                     "Finds a list of debugger commands related to a particular word/subject.",
+                     "Find a list of debugger commands related to a particular word/subject.",
                      "apropos <search-word>")
 {
 }
diff --git a/source/Commands/CommandObjectBreakpoint.cpp b/source/Commands/CommandObjectBreakpoint.cpp
index 3cc721a..6bfd753 100644
--- a/source/Commands/CommandObjectBreakpoint.cpp
+++ b/source/Commands/CommandObjectBreakpoint.cpp
@@ -504,7 +504,7 @@
 
 CommandObjectMultiwordBreakpoint::CommandObjectMultiwordBreakpoint (CommandInterpreter &interpreter) :
     CommandObjectMultiword ("breakpoint",
-                              "A set of commands for operating on breakpoints.",
+                              "A set of commands for operating on breakpoints. Also see regexp-break.",
                               "breakpoint <command> [<command-options>]")
 {
     bool status;
diff --git a/source/Commands/CommandObjectCommands.cpp b/source/Commands/CommandObjectCommands.cpp
index b8b4be9..b48f8ae 100644
--- a/source/Commands/CommandObjectCommands.cpp
+++ b/source/Commands/CommandObjectCommands.cpp
@@ -424,7 +424,7 @@
 
 CommandObjectMultiwordCommands::CommandObjectMultiwordCommands (CommandInterpreter &interpreter) :
     CommandObjectMultiword ("commands",
-                            "Commands for managing the command interpreters commands",
+                            "A set of commands for managing or customizing the debugger commands.",
                             "commands <subcommand> [<subcommand-options>]")
 {
     LoadSubCommand (interpreter, "source",   CommandObjectSP (new CommandObjectCommandsSource ()));
diff --git a/source/Commands/CommandObjectDisassemble.cpp b/source/Commands/CommandObjectDisassemble.cpp
index 7304a9b..49a5677 100644
--- a/source/Commands/CommandObjectDisassemble.cpp
+++ b/source/Commands/CommandObjectDisassemble.cpp
@@ -143,7 +143,7 @@
 
 CommandObjectDisassemble::CommandObjectDisassemble () :
     CommandObject ("disassemble",
-                     "Disassemble bytes in the current function or anywhere in the inferior program.",
+                     "Disassemble bytes in the current function, or elsewhere in the executable program as specified by the user.",
                      "disassemble [<cmd-options>]")
 {
 }
diff --git a/source/Commands/CommandObjectExpression.cpp b/source/Commands/CommandObjectExpression.cpp
index 4c29eec..67745ee 100644
--- a/source/Commands/CommandObjectExpression.cpp
+++ b/source/Commands/CommandObjectExpression.cpp
@@ -55,12 +55,12 @@
 
     switch (short_option)
     {
-    case 'l':
-        if (language.SetLanguageFromCString (option_arg) == false)
-        {
-            error.SetErrorStringWithFormat("Invalid language option argument '%s'.\n", option_arg);
-        }
-        break;
+      //case 'l':
+      //if (language.SetLanguageFromCString (option_arg) == false)
+      //{
+      //    error.SetErrorStringWithFormat("Invalid language option argument '%s'.\n", option_arg);
+      //}
+      //break;
 
     case 'g':
         debug = true;
@@ -82,7 +82,7 @@
 CommandObjectExpression::CommandOptions::ResetOptionValues ()
 {
     Options::ResetOptionValues();
-    language.Clear();
+    //language.Clear();
     debug = false;
     format = eFormatDefault;
     show_types = true;
@@ -98,7 +98,7 @@
 CommandObjectExpression::CommandObjectExpression () :
     CommandObject (
             "expression",
-            "Evaluate a C expression in the current program context, using variables currently in scope.",
+            "Evaluate an Objective-C++ expression in the current program context, using variables currently in scope.",
             "expression [<cmd-options>] <expr>"),
     m_expr_line_count (0),
     m_expr_lines ()
@@ -347,7 +347,7 @@
 lldb::OptionDefinition
 CommandObjectExpression::CommandOptions::g_option_table[] =
 {
-{ LLDB_OPT_SET_ALL, false, "language",   'l', required_argument, NULL, 0, "[c|c++|objc|objc++]",          "Sets the language to use when parsing the expression."},
+  //{ LLDB_OPT_SET_ALL, false, "language",   'l', required_argument, NULL, 0, "[c|c++|objc|objc++]",          "Sets the language to use when parsing the expression."},
 { LLDB_OPT_SET_ALL, false, "format",     'f', required_argument, NULL, 0, "[ [bool|b] | [bin] | [char|c] | [oct|o] | [dec|i|d|u] | [hex|x] | [float|f] | [cstr|s] ]",  "Specify the format that the expression output should use."},
 { LLDB_OPT_SET_ALL, false, "debug",      'g', no_argument,       NULL, 0, NULL,                           "Enable verbose debug logging of the expression parsing and evaluation."},
 { LLDB_OPT_SET_ALL, false, "use-ir",     'i', no_argument,       NULL, 0, NULL,                           "[Temporary] Instructs the expression evaluator to use IR instead of ASTs."},
diff --git a/source/Commands/CommandObjectExpression.h b/source/Commands/CommandObjectExpression.h
index a466167..f480563 100644
--- a/source/Commands/CommandObjectExpression.h
+++ b/source/Commands/CommandObjectExpression.h
@@ -46,7 +46,7 @@
         // Options table: Required for subclasses of Options.
 
         static lldb::OptionDefinition g_option_table[];
-        Language  language;
+        //Language  language;
         lldb::Encoding  encoding;
         lldb::Format    format;
         bool        debug;
diff --git a/source/Commands/CommandObjectFile.cpp b/source/Commands/CommandObjectFile.cpp
index 1ce8930..ac34c86 100644
--- a/source/Commands/CommandObjectFile.cpp
+++ b/source/Commands/CommandObjectFile.cpp
@@ -87,7 +87,7 @@
 
 CommandObjectFile::CommandObjectFile() :
     CommandObject ("file",
-                   "Sets the file to be used as the main executable by the debugger.",
+                   "Set the file to be used as the main executable by the debugger.",
                    "file [<cmd-options>] <filename>")
 {
 }
@@ -175,4 +175,4 @@
                                                              matches);
         return matches.GetSize();
     
-}
\ No newline at end of file
+}
diff --git a/source/Commands/CommandObjectHelp.cpp b/source/Commands/CommandObjectHelp.cpp
index cf80cd4..a2959af 100644
--- a/source/Commands/CommandObjectHelp.cpp
+++ b/source/Commands/CommandObjectHelp.cpp
@@ -27,7 +27,7 @@
 
 CommandObjectHelp::CommandObjectHelp () :
     CommandObject ("help",
-                   "Shows a list of all debugger commands, or give details about specific commands.",
+                   "Show a list of all debugger commands, or give details about specific commands.",
                    "help [<cmd-name>]")
 {
 }
diff --git a/source/Commands/CommandObjectImage.cpp b/source/Commands/CommandObjectImage.cpp
index 1b3c226..e17dd57 100644
--- a/source/Commands/CommandObjectImage.cpp
+++ b/source/Commands/CommandObjectImage.cpp
@@ -1554,8 +1554,8 @@
 //----------------------------------------------------------------------
 CommandObjectImage::CommandObjectImage(CommandInterpreter &interpreter) :
     CommandObjectMultiword ("image",
-                            "Access information for one or more executable images.",
-                            "image [dump|list] ...")
+                            "A set of commands for accessing information for one or more executable images.",
+                            "image <sub-command> ...")
 {
     LoadSubCommand (interpreter, "dump",    CommandObjectSP (new CommandObjectImageDump (interpreter)));
     LoadSubCommand (interpreter, "list",    CommandObjectSP (new CommandObjectImageList ()));
diff --git a/source/Commands/CommandObjectMemory.cpp b/source/Commands/CommandObjectMemory.cpp
index 936ce20..63879d8 100644
--- a/source/Commands/CommandObjectMemory.cpp
+++ b/source/Commands/CommandObjectMemory.cpp
@@ -678,7 +678,7 @@
 
 CommandObjectMemory::CommandObjectMemory (CommandInterpreter &interpreter) :
     CommandObjectMultiword ("memory",
-                            "A set of commands for operating on a memory.",
+                            "A set of commands for operating on memory.",
                             "memory <subcommand> [<subcommand-options>]")
 {
     LoadSubCommand (interpreter, "read",  CommandObjectSP (new CommandObjectMemoryRead ()));
diff --git a/source/Commands/CommandObjectQuit.cpp b/source/Commands/CommandObjectQuit.cpp
index 1d85555..f1d3236 100644
--- a/source/Commands/CommandObjectQuit.cpp
+++ b/source/Commands/CommandObjectQuit.cpp
@@ -24,7 +24,7 @@
 //-------------------------------------------------------------------------
 
 CommandObjectQuit::CommandObjectQuit () :
-    CommandObject ("quit", "Quits out of the LLDB debugger.", "quit")
+    CommandObject ("quit", "Quit out of the LLDB debugger.", "quit")
 {
 }
 
diff --git a/source/Commands/CommandObjectRegister.cpp b/source/Commands/CommandObjectRegister.cpp
index 2aded26..da1d150 100644
--- a/source/Commands/CommandObjectRegister.cpp
+++ b/source/Commands/CommandObjectRegister.cpp
@@ -220,7 +220,7 @@
 //----------------------------------------------------------------------
 CommandObjectRegister::CommandObjectRegister(CommandInterpreter &interpreter) :
     CommandObjectMultiword ("register",
-                            "Access thread registers.",
+                            "A set of commands to access thread registers.",
                             "register [read|write] ...")
 {
     LoadSubCommand (interpreter, "read",  CommandObjectSP (new CommandObjectRegisterRead ()));
diff --git a/source/Commands/CommandObjectSource.cpp b/source/Commands/CommandObjectSource.cpp
index 6f83e2b..937e624 100644
--- a/source/Commands/CommandObjectSource.cpp
+++ b/source/Commands/CommandObjectSource.cpp
@@ -575,7 +575,7 @@
 
 CommandObjectMultiwordSource::CommandObjectMultiwordSource (CommandInterpreter &interpreter) :
     CommandObjectMultiword ("source",
-                            "Commands for accessing source file information",
+                            "A set of commands for accessing source file information",
                             "source <subcommand> [<subcommand-options>]")
 {
     LoadSubCommand (interpreter, "info",   CommandObjectSP (new CommandObjectSourceInfo ()));
diff --git a/source/Commands/CommandObjectThread.cpp b/source/Commands/CommandObjectThread.cpp
index 5bc9989..28520bb 100644
--- a/source/Commands/CommandObjectThread.cpp
+++ b/source/Commands/CommandObjectThread.cpp
@@ -332,7 +332,7 @@
 
     CommandObjectThreadBacktrace () :
         CommandObject ("thread backtrace",
-                       "Shows the stack for one or more threads.  If no threads are specified, shows the currently selected thread.  \nUse the thread-index \"all\" to see all threads.",
+                       "Shows the stack for one or more threads.  If no threads are specified, shows the currently selected thread.  Use the thread-index \"all\" to see all threads.",
                        "thread backtrace [<thread-index>] ...",
                        eFlagProcessMustBeLaunched | eFlagProcessMustBePaused),
         m_options()
@@ -1378,7 +1378,7 @@
 
 CommandObjectMultiwordThread::CommandObjectMultiwordThread (CommandInterpreter &interpreter) :
     CommandObjectMultiword ("thread",
-                            "A set of commands for operating on one or more thread within a running process.",
+                            "A set of commands for operating on one or more threads within a running process.",
                             "thread <subcommand> [<subcommand-options>]")
 {
     LoadSubCommand (interpreter, "backtrace",  CommandObjectSP (new CommandObjectThreadBacktrace ()));
diff --git a/source/Interpreter/CommandInterpreter.cpp b/source/Interpreter/CommandInterpreter.cpp
index 3c9a748..e7b3a1e 100644
--- a/source/Interpreter/CommandInterpreter.cpp
+++ b/source/Interpreter/CommandInterpreter.cpp
@@ -167,7 +167,7 @@
 
     std::auto_ptr<CommandObjectRegexCommand>
     break_regex_cmd_ap(new CommandObjectRegexCommand ("regexp-break",
-                                                      "Smart breakpoint command (using regular expressions).",
+                                                      "Set a breakpoint using a regular expression to specify the location.",
                                                       "regexp-break [<file>:<line>]\nregexp-break [<address>]\nregexp-break <...>", 2));
     if (break_regex_cmd_ap.get())
     {
diff --git a/source/Interpreter/CommandObjectScript.cpp b/source/Interpreter/CommandObjectScript.cpp
index 1494065..a9d9afc 100644
--- a/source/Interpreter/CommandObjectScript.cpp
+++ b/source/Interpreter/CommandObjectScript.cpp
@@ -29,8 +29,8 @@
 
 CommandObjectScript::CommandObjectScript (ScriptLanguage script_lang) :
     CommandObject ("script",
-                   "Passes an expression to the script interpreter for evaluation and returns the results. Drops user into the interactive interpreter if no expressions are given.",
-                   "script [<script-expressions-for-evaluation>]"),
+                   "Pass an expression to the script interpreter for evaluation and return the results. Drop into the interactive interpreter if no expression is given.",
+                   "script [<script-expression-for-evaluation>]"),
     m_script_lang (script_lang),
     m_interpreter_ap ()
 {
