diff --git a/source/Commands/CommandObjectBreakpoint.cpp b/source/Commands/CommandObjectBreakpoint.cpp
index 9b53d6a..4028482 100644
--- a/source/Commands/CommandObjectBreakpoint.cpp
+++ b/source/Commands/CommandObjectBreakpoint.cpp
@@ -1209,7 +1209,7 @@
 
 CommandObjectBreakpointModify::CommandObjectBreakpointModify () :
     CommandObject ("breakpoint modify", "Modify the options on a breakpoint or set of breakpoints in the executable.", 
-                   "breakpoint modify <cmd-options> break-id [break-id ...]")
+                   "breakpoint modify <cmd-options> <breakpoint-id> [<breakpoint-id> ...]")
 {
 }
 
diff --git a/source/Commands/CommandObjectCommands.cpp b/source/Commands/CommandObjectCommands.cpp
index 7f9d151..0012355 100644
--- a/source/Commands/CommandObjectCommands.cpp
+++ b/source/Commands/CommandObjectCommands.cpp
@@ -146,21 +146,21 @@
     "'alias' allows the user to create a short-cut or abbreviation for long \n\
     commands, multi-word commands, and commands that take particular options. \n\
     Below are some simple examples of how one might use the 'alias' command: \n\
-    \n    'command alias sc script'           // Creates the abbreviation 'sc' for the 'script' \n\
-                                        // command. \n\
-    'command alias bp breakpoint'       // Creates the abbreviation 'bp' for the 'breakpoint' \n\
-                                        // command.  Since breakpoint commands are two-word \n\
-                                        // commands, the user will still need to enter the \n\
-                                        // second word after 'bp', e.g. 'bp enable' or \n\
-                                        // 'bp delete'. \n\
-    'command alias bpi breakpoint list' // Creates the abbreviation 'bpi' for the \n\
-                                        // two-word command 'breakpoint list'. \n\
+    \n    'commands alias sc script'           // Creates the abbreviation 'sc' for the 'script' \n\
+                                         // command. \n\
+    'commands alias bp breakpoint'       // Creates the abbreviation 'bp' for the 'breakpoint' \n\
+                                         // command.  Since breakpoint commands are two-word \n\
+                                         // commands, the user will still need to enter the \n\
+                                         // second word after 'bp', e.g. 'bp enable' or \n\
+                                         // 'bp delete'. \n\
+    'commands alias bpl breakpoint list' // Creates the abbreviation 'bpl' for the \n\
+                                         // two-word command 'breakpoint list'. \n\
     \nAn alias can include some options for the command, with the values either \n\
     filled in at the time the alias is created, or specified as positional \n\
     arguments, to be filled in when the alias is invoked.  The following example \n\
     shows how to create aliases with options: \n\
     \n\
-    'command alias bfl breakpoint set -f %1 -l %2' \n\
+    'commands alias bfl breakpoint set -f %1 -l %2' \n\
     \nThis creates the abbreviation 'bfl' (for break-file-line), with the -f and -l \n\
     options already part of the alias.  So if the user wants to set a breakpoint \n\
     by file and line without explicitly having to use the -f and -l options, the \n\
@@ -175,14 +175,14 @@
     filled in with the first argument following 'bfl' and the actual line number \n\
     value will be filled in with the second argument.  The user would use this \n\
     alias as follows: \n\
-    \n    (dbg)  commands alias bfl breakpoint set -f %1 -l %2 \n\
+    \n    (lldb)  commands alias bfl breakpoint set -f %1 -l %2 \n\
     <... some time later ...> \n\
-    (dbg)  bfl my-file.c 137 \n\
+    (lldb)  bfl my-file.c 137 \n\
     \nThis would be the same as if the user had entered \n\
     'breakpoint set -f my-file.c -l 137'. \n\
     \nAnother example: \n\
-    \n    (dbg)  commands alias pltty  process launch -s -o %1 -e %1 \n\
-    (dbg)  pltty /dev/tty0 \n\
+    \n    (lldb)  commands alias pltty  process launch -s -o %1 -e %1 \n\
+    (lldb)  pltty /dev/tty0 \n\
            // becomes 'process launch -s -o /dev/tty0 -e /dev/tty0' \n\
     \nIf the user always wanted to pass the same value to a particular option, the \n\
     alias could be defined with that value directly in the alias as a constant, \n\
diff --git a/source/Commands/CommandObjectFile.cpp b/source/Commands/CommandObjectFile.cpp
index ac34c86..9db40b0 100644
--- a/source/Commands/CommandObjectFile.cpp
+++ b/source/Commands/CommandObjectFile.cpp
@@ -38,7 +38,7 @@
 lldb::OptionDefinition
 CommandObjectFile::CommandOptions::g_option_table[] =
 {
-    { LLDB_OPT_SET_1, false, "arch", 'a', required_argument, NULL, 0, "<arch>", "Specify the architecture to launch."},
+    { LLDB_OPT_SET_1, false, "arch", 'a', required_argument, NULL, 0, "<arch>", "Specify the architecture to be used when the process is launched."},
     { 0, false, NULL, 0, 0, NULL, 0, NULL, NULL }
 };
 
@@ -111,7 +111,7 @@
 )
 {
     const char *file_path = command.GetArgumentAtIndex(0);
-    Timer scoped_timer(__PRETTY_FUNCTION__, "(dbg) file '%s'", file_path);
+    Timer scoped_timer(__PRETTY_FUNCTION__, "(lldb) file '%s'", file_path);
     const int argc = command.GetArgumentCount();
     if (argc == 1)
     {
diff --git a/source/Commands/CommandObjectRegister.cpp b/source/Commands/CommandObjectRegister.cpp
index da1d150..be7b5f1 100644
--- a/source/Commands/CommandObjectRegister.cpp
+++ b/source/Commands/CommandObjectRegister.cpp
@@ -33,7 +33,7 @@
 public:
     CommandObjectRegisterRead () :
         CommandObject ("register read",
-                       "Dump the one or more register values from the current frame.",
+                       "Dump the contents of one or more register values from the current frame.",
                        "register read [<reg-name1> [<reg-name2> [...]]]",
                        eFlagProcessMustBeLaunched | eFlagProcessMustBePaused)
     {
diff --git a/source/Commands/CommandObjectThread.cpp b/source/Commands/CommandObjectThread.cpp
index 5fa54ed..7532886 100644
--- a/source/Commands/CommandObjectThread.cpp
+++ b/source/Commands/CommandObjectThread.cpp
@@ -332,7 +332,7 @@
 
     CommandObjectThreadBacktrace () :
         CommandObject ("thread backtrace",
-                       "Show 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.",
+                       "Show the stack for one or more threads.  If no threads are specified, show the currently selected thread.  Use the thread-index \"all\" to see all threads.",
                        "thread backtrace [<thread-index>] ...",
                        eFlagProcessMustBeLaunched | eFlagProcessMustBePaused),
         m_options()
@@ -472,7 +472,7 @@
 CommandObjectThreadBacktrace::CommandOptions::g_option_table[] =
 {
 { LLDB_OPT_SET_1, false, "count", 'c', required_argument, NULL,               0, "<count>", "How many frames to display (-1 for all)"},
-{ LLDB_OPT_SET_1, false, "start",       's', required_argument, NULL, 0, "<start>",       "Where to start the backtrace"},
+{ LLDB_OPT_SET_1, false, "start",       's', required_argument, NULL, 0, "<start>",       "Frame in which to start the backtrace"},
 { 0, false, NULL, 0, 0, NULL, 0, NULL, NULL }
 };
 
@@ -1235,7 +1235,7 @@
 
     CommandObjectThreadSelect () :
         CommandObject ("thread select",
-                         "Select a threads as the currently active thread.",
+                         "Select a thread as the currently active thread.",
                          "thread select <thread-index>",
                          eFlagProcessMustBeLaunched | eFlagProcessMustBePaused)
     {
@@ -1388,21 +1388,21 @@
     LoadSubCommand (interpreter, "until",      CommandObjectSP (new CommandObjectThreadUntil ()));
     LoadSubCommand (interpreter, "step-in",    CommandObjectSP (new CommandObjectThreadStepWithTypeAndScope (
                                                     "thread step-in",
-                                                     "Source level single step in in specified thread (current thread, if none specified).",
+                                                     "Source level single step in specified thread (current thread, if none specified).",
                                                      "thread step-in [<thread-id>]",
                                                      eFlagProcessMustBeLaunched | eFlagProcessMustBePaused,
                                                      eStepTypeInto,
                                                      eStepScopeSource)));
     
     LoadSubCommand (interpreter, "step-out",    CommandObjectSP (new CommandObjectThreadStepWithTypeAndScope ("thread step-out",
-                                                                                      "Source level single step out in specified thread (current thread, if none specified).",
+                                                                                      "Finish executing the current fucntion and return to its call site in specified thread (current thread, if none specified).",
                                                                                       "thread step-out [<thread-id>]",
                                                                                       eFlagProcessMustBeLaunched | eFlagProcessMustBePaused,
                                                                                       eStepTypeOut,
                                                                                       eStepScopeSource)));
 
     LoadSubCommand (interpreter, "step-over",   CommandObjectSP (new CommandObjectThreadStepWithTypeAndScope ("thread step-over",
-                                                                                      "Source level single step over in specified thread (current thread, if none specified).",
+                                                                                      "Source level single step in specified thread (current thread, if none specified), stepping over calls.",
                                                                                       "thread step-over [<thread-id>]",
                                                                                       eFlagProcessMustBeLaunched | eFlagProcessMustBePaused,
                                                                                       eStepTypeOver,
