diff --git a/CHANGELOG.md b/CHANGELOG.md
index acb29c93..12478a29 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 1.3.7 (August 27, 2020)
+* Bug Fixes
+    * Fixes an issue introduced in 1.3.0 with processing command strings containing terminator/separator 
+      character(s) that are manually passed to a command that uses argparse.
+
 ## 1.3.6 (August 27, 2020)
 * Breaking changes
     * The functions cmd2 adds to Namespaces (`get_statement()` and `get_handler()`) are now 
diff --git a/cmd2/decorators.py b/cmd2/decorators.py
index c2689102..4ee61754 100644
--- a/cmd2/decorators.py
+++ b/cmd2/decorators.py
@@ -35,7 +35,7 @@ def with_category(category: str) -> Callable:
     return cat_decorator
 
 ##########################
-# The _parse_positionals and _swap_args decorators allow for additional positional args to be preserved
+# The _parse_positionals and _arg_swap functions allow for additional positional args to be preserved
 # in cmd2 command functions/callables. As long as the 2-ple of arguments we expect to be there can be
 # found we can swap out the statement with each decorator's specific parameters
 ##########################
@@ -276,9 +276,9 @@ def with_argparser(parser: argparse.ArgumentParser, *,
             :return: return value of command function
             :raises: Cmd2ArgparseError if argparse has error parsing command line
             """
-            cmd2_app, statement = _parse_positionals(args)
+            cmd2_app, statement_arg = _parse_positionals(args)
             statement, parsed_arglist = cmd2_app.statement_parser.get_command_arg_list(command_name,
-                                                                                       statement,
+                                                                                       statement_arg,
                                                                                        preserve_quotes)
 
             if ns_provider is None:
@@ -314,7 +314,7 @@ def with_argparser(parser: argparse.ArgumentParser, *,
                 if hasattr(ns, constants.NS_ATTR_SUBCMD_HANDLER):
                     delattr(ns, constants.NS_ATTR_SUBCMD_HANDLER)
 
-                args_list = _arg_swap(args, statement, *new_args)
+                args_list = _arg_swap(args, statement_arg, *new_args)
                 return func(*args_list, **kwargs)
 
         # argparser defaults the program name to sys.argv[0], but we want it to be the name of our command

diff --git a/tests/test_cmd2.py b/tests/test_cmd2.py
index 8688e124..3b240e4e 100755
--- a/tests/test_cmd2.py
+++ b/tests/test_cmd2.py
@@ -217,6 +217,23 @@ def test_shell_last_result(base_app):
     run_cmd(base_app, 'shell fake')
     assert base_app.last_result is not None
 
+
+def test_shell_manual_call(base_app):
+    # Verifies crash from Issue #986 doesn't happen
+    cmds = [
+        'echo "hi"',
+        'echo "there"',
+        'echo "cmd2!"'
+    ]
+    cmd = ';'.join(cmds)
+
+    base_app.do_shell(cmd)
+
+    cmd = '&&'.join(cmds)
+
+    base_app.do_shell(cmd)
+
+
 def test_base_py(base_app):
     # Make sure py can't edit Cmd.py_locals. It used to be that cmd2 was passing its py_locals
     # dictionary to the py environment instead of a shallow copy.

The do_shell() is not working correctly with multiple commands
When I call do_shell() with multiple commands using 

* ";".join(commands) - it only executes the first command
* "&&".join(commands) - it throws an exception

Given the following script (which has all of the details), you can see the behavior I'm seeing.

```python

#!/usr/bin/env python

"""A simple cmd2 application."""
import cmd2


class App(cmd2.Cmd):
    """
    A simple cmd2 application.  Copied from "Basic Commands" in the manual.

    I had a LOT of Cmd apps/scripts that I was using and then converted most
    of them to use Cmd2 and all was working fine with this type of formatting,
    (i.e. multiple commands in a string).
    
    At some point, after updating to different versions of cmd2, many of my 
    commands started breaking like this one does.  
    
    I can run SINGLE commands, but not multiple ones -- especially when I just
    "join" them from multiple lines to one line.  Note though, in the "works"
    command, I use just a string passed into *do_shell* and it works, which 
    surprised me.  If I try that with a ";" as the seperator, it does not work,
    which is what happens in the "fail1" and "fail2" commands.
    
    I haven't dived into the why, but was able to replicate it quite easily in 
    something that is pretty small (the comments and me explaining it are 
    probably going to be much longer than the actual code).

    Both failures should work just fine, as they are commands that will work
    from:
    
        * the bash prompt 
        * the Cmd2 shell prompt (i.e. using !<command>)
        * the Cmd.do_shell() function (using Cmd, not Cmd2)
        
    I use commands like this all the time.  Cmd's do_shell() handles
    this as expected.  Even Cmd2's command prompt handles the exact same 
    commands just fine.

    If I type something like the following commands, FROM the Cmd2/App command 
    prompt, they work as expected, so ...

        - !echo "hi";echo "there";echo "cmd2"
        - !echo "hi"&&echo "there"
        - !ls && echo "-----done-----"
        
    I'm not sure where a regression came in at.  If needed, I can go back to
    the different versions that I'm pretty sure it was working and give it a
    try.

    This used to work in Cmd2 as well, until a little while ago.  I've not
    narrowed down the exact date, but I think it's sometime around the new 
    addition of the CommandSet changes (which I was surprised to find and 
    wanted to use).  
    
    It was around that time (after CommandSet introduction to the code base), 
    so pretty sure it's after v1.2.1.  It's probably after v1.3.0 or v1.3.1, as 
    I had it working and didn't see any problems with it.  Multiple commands 
    doing just this were added at around that time as well.
    
    I THINK was after v1.3.1, around the time that the CommandSet stuff broke 
    backward compatibility with itself (as I remember thinking I didn't realize
    I was working on such the cutting edge! ;-) ) and I skipped at least one 
    version if not more, so can't say when, for sure, it broke this functionality.
    
    It was definitely broken after v1.3.4.  I upgraded to v1.3.5 today 
    (2020-08-27) to see if it had been fixed.  I wasn't terribly surprised that
    it still was broken.
    
    Now for some system information:
    
        OS:     macOS Catalina v10.15.5
        Python: v3.8.0
        Cmd2:   v1.3.5
    """

    # common commands to show problem
    cmds = [
        'echo "hi"',
        'echo "there"',
        'echo "cmd2!"'
    ]

    def __init__(self):
        super().__init__()
        self.debug = True

    def _printMessage(self, cmd):
        print(f"\n\n-----cmd=[{cmd}]-----")
        print("this fails in 'self.do_shell(cmd)'")
        print(f"BUT, it works if you do [!{cmd}] from the (Cmd) prompt\n\n")

    def do_fail1(self, statementObj):
        # this should work (and used to work),
        # but ONLY executes the FIRST command - ignores the rest
        cmd = ';'.join(self.cmds)

        self._printMessage(cmd)
        self.do_shell(cmd)

    def do_fail2(self, statementObj):
        # this should also work - better bash 'best practice' anyway
        # this just fails though
        cmd = '&&'.join(self.cmds)

        self._printMessage(cmd)
        self.do_shell(cmd)

    def do_works(self, statementObj):
        print("\n")
        self.do_shell('echo "this works just fine!"')
        print("\nas does this! \n")
        self.do_shell('ls -la')
        print("\nthis surprisingly DOES work -- not sure why :-( \n")
        self.do_shell('ls&&echo "-----done-----"')
        print("\n")

if __name__ == '__main__':
    import sys
    c = App()
    sys.exit(c.cmdloop())
```

Thanks!
Mike
tests/test_cmd2.py::test_shell_manual_call
tests/test_cmd2.py::test_version tests/test_cmd2.py::test_empty_statement tests/test_cmd2.py::test_base_help tests/test_cmd2.py::test_base_help_verbose tests/test_cmd2.py::test_base_argparse_help tests/test_cmd2.py::test_base_invalid_option tests/test_cmd2.py::test_base_shortcuts tests/test_cmd2.py::test_command_starts_with_shortcut tests/test_cmd2.py::test_base_show tests/test_cmd2.py::test_base_show_long tests/test_cmd2.py::test_set tests/test_cmd2.py::test_set_val_empty tests/test_cmd2.py::test_set_val_is_flag tests/test_cmd2.py::test_set_not_supported tests/test_cmd2.py::test_set_no_settables tests/test_cmd2.py::test_set_allow_style[Never-True-Never] tests/test_cmd2.py::test_set_allow_style[neVeR-True-Never] tests/test_cmd2.py::test_set_allow_style[Terminal-True-Terminal] tests/test_cmd2.py::test_set_allow_style[TeRMInal-True-Terminal] tests/test_cmd2.py::test_set_allow_style[Always-True-Always] tests/test_cmd2.py::test_set_allow_style[AlWaYs-True-Always] tests/test_cmd2.py::test_set_allow_style[invalid-False-Terminal] tests/test_cmd2.py::test_set_onchange_hook tests/test_cmd2.py::test_base_shell tests/test_cmd2.py::test_shell_last_result tests/test_cmd2.py::test_base_py tests/test_cmd2.py::test_base_error tests/test_cmd2.py::test_run_script tests/test_cmd2.py::test_run_script_with_empty_args tests/test_cmd2.py::test_run_script_with_nonexistent_file tests/test_cmd2.py::test_run_script_with_directory tests/test_cmd2.py::test_run_script_with_empty_file tests/test_cmd2.py::test_run_script_with_binary_file tests/test_cmd2.py::test_run_script_with_python_file tests/test_cmd2.py::test_run_script_with_utf8_file tests/test_cmd2.py::test_run_script_nested_run_scripts tests/test_cmd2.py::test_runcmds_plus_hooks tests/test_cmd2.py::test_runcmds_plus_hooks_ctrl_c tests/test_cmd2.py::test_relative_run_script tests/test_cmd2.py::test_relative_run_script_with_odd_file_names[nothingweird] tests/test_cmd2.py::test_relative_run_script_with_odd_file_names[has tests/test_cmd2.py::test_relative_run_script_with_odd_file_names["is_double_quoted"] tests/test_cmd2.py::test_relative_run_script_with_odd_file_names['is_single_quoted'] tests/test_cmd2.py::test_relative_run_script_requires_an_argument tests/test_cmd2.py::test_in_script tests/test_cmd2.py::test_system_exit_in_command tests/test_cmd2.py::test_output_redirection tests/test_cmd2.py::test_output_redirection_to_nonexistent_directory tests/test_cmd2.py::test_output_redirection_to_too_long_filename tests/test_cmd2.py::test_feedback_to_output_true tests/test_cmd2.py::test_feedback_to_output_false tests/test_cmd2.py::test_disallow_redirection tests/test_cmd2.py::test_pipe_to_shell tests/test_cmd2.py::test_pipe_to_shell_and_redirect tests/test_cmd2.py::test_pipe_to_shell_error tests/test_cmd2.py::test_base_timing tests/test_cmd2.py::test_base_debug tests/test_cmd2.py::test_debug_not_settable tests/test_cmd2.py::test_remove_settable_keyerror tests/test_cmd2.py::test_edit_file tests/test_cmd2.py::test_edit_file_with_odd_file_names[nothingweird] tests/test_cmd2.py::test_edit_file_with_odd_file_names[has tests/test_cmd2.py::test_edit_file_with_odd_file_names["is_double_quoted"] tests/test_cmd2.py::test_edit_file_with_odd_file_names['is_single_quoted'] tests/test_cmd2.py::test_edit_file_with_spaces tests/test_cmd2.py::test_edit_blank tests/test_cmd2.py::test_base_py_interactive tests/test_cmd2.py::test_base_cmdloop_with_startup_commands tests/test_cmd2.py::test_base_cmdloop_without_startup_commands tests/test_cmd2.py::test_cmdloop_without_rawinput tests/test_cmd2.py::test_stty_sane tests/test_cmd2.py::test_precmd_hook_success tests/test_cmd2.py::test_precmd_hook_failure tests/test_cmd2.py::test_interrupt_quit tests/test_cmd2.py::test_interrupt_noquit tests/test_cmd2.py::test_default_to_shell tests/test_cmd2.py::test_ansi_prompt_not_esacped tests/test_cmd2.py::test_ansi_prompt_escaped tests/test_cmd2.py::test_custom_command_help tests/test_cmd2.py::test_custom_help_menu tests/test_cmd2.py::test_help_undocumented tests/test_cmd2.py::test_help_overridden_method tests/test_cmd2.py::test_help_cat_base tests/test_cmd2.py::test_help_cat_verbose tests/test_cmd2.py::test_select_options tests/test_cmd2.py::test_select_invalid_option_too_big tests/test_cmd2.py::test_select_invalid_option_too_small tests/test_cmd2.py::test_select_list_of_strings tests/test_cmd2.py::test_select_list_of_tuples tests/test_cmd2.py::test_select_uneven_list_of_tuples tests/test_cmd2.py::test_select_eof tests/test_cmd2.py::test_select_ctrl_c tests/test_cmd2.py::test_help_with_no_docstring tests/test_cmd2.py::test_which_editor_good tests/test_cmd2.py::test_which_editor_bad tests/test_cmd2.py::test_multiline_complete_empty_statement_raises_exception tests/test_cmd2.py::test_multiline_complete_statement_without_terminator tests/test_cmd2.py::test_multiline_complete_statement_with_unclosed_quotes tests/test_cmd2.py::test_multiline_input_line_to_statement tests/test_cmd2.py::test_clipboard_failure tests/test_cmd2.py::test_commandresult_truthy tests/test_cmd2.py::test_commandresult_falsy tests/test_cmd2.py::test_is_text_file_bad_input tests/test_cmd2.py::test_eof tests/test_cmd2.py::test_echo tests/test_cmd2.py::test_read_input_rawinput_true tests/test_cmd2.py::test_read_input_rawinput_false tests/test_cmd2.py::test_read_command_line_eof tests/test_cmd2.py::test_poutput_string tests/test_cmd2.py::test_poutput_zero tests/test_cmd2.py::test_poutput_empty_string tests/test_cmd2.py::test_poutput_none tests/test_cmd2.py::test_poutput_ansi_always tests/test_cmd2.py::test_poutput_ansi_never tests/test_cmd2.py::test_get_alias_completion_items tests/test_cmd2.py::test_get_macro_completion_items tests/test_cmd2.py::test_get_settable_completion_items tests/test_cmd2.py::test_alias_no_subcommand tests/test_cmd2.py::test_alias_create tests/test_cmd2.py::test_alias_create_with_quoted_value tests/test_cmd2.py::test_alias_create_invalid_name[""] tests/test_cmd2.py::test_alias_create_invalid_name[#] tests/test_cmd2.py::test_alias_create_invalid_name[!no_shortcut] tests/test_cmd2.py::test_alias_create_invalid_name[">"] tests/test_cmd2.py::test_alias_create_invalid_name["no>pe"] tests/test_cmd2.py::test_alias_create_invalid_name["no tests/test_cmd2.py::test_alias_create_invalid_name["nopipe|"] tests/test_cmd2.py::test_alias_create_invalid_name["noterm;"] tests/test_cmd2.py::test_alias_create_invalid_name[noembedded"quotes] tests/test_cmd2.py::test_alias_create_with_command_name tests/test_cmd2.py::test_alias_create_with_macro_name tests/test_cmd2.py::test_alias_that_resolves_into_comment tests/test_cmd2.py::test_alias_list_invalid_alias tests/test_cmd2.py::test_alias_delete tests/test_cmd2.py::test_alias_delete_all tests/test_cmd2.py::test_alias_delete_non_existing tests/test_cmd2.py::test_alias_delete_no_name tests/test_cmd2.py::test_multiple_aliases tests/test_cmd2.py::test_macro_no_subcommand tests/test_cmd2.py::test_macro_create tests/test_cmd2.py::test_macro_create_with_quoted_value tests/test_cmd2.py::test_macro_create_invalid_name[""] tests/test_cmd2.py::test_macro_create_invalid_name[#] tests/test_cmd2.py::test_macro_create_invalid_name[!no_shortcut] tests/test_cmd2.py::test_macro_create_invalid_name[">"] tests/test_cmd2.py::test_macro_create_invalid_name["no>pe"] tests/test_cmd2.py::test_macro_create_invalid_name["no tests/test_cmd2.py::test_macro_create_invalid_name["nopipe|"] tests/test_cmd2.py::test_macro_create_invalid_name["noterm;"] tests/test_cmd2.py::test_macro_create_invalid_name[noembedded"quotes] tests/test_cmd2.py::test_macro_create_with_command_name tests/test_cmd2.py::test_macro_create_with_alias_name tests/test_cmd2.py::test_macro_create_with_args tests/test_cmd2.py::test_macro_create_with_escaped_args tests/test_cmd2.py::test_macro_usage_with_missing_args tests/test_cmd2.py::test_macro_usage_with_exta_args tests/test_cmd2.py::test_macro_create_with_missing_arg_nums tests/test_cmd2.py::test_macro_create_with_invalid_arg_num tests/test_cmd2.py::test_macro_create_with_unicode_numbered_arg tests/test_cmd2.py::test_macro_create_with_missing_unicode_arg_nums tests/test_cmd2.py::test_macro_that_resolves_into_comment tests/test_cmd2.py::test_macro_list_invalid_macro tests/test_cmd2.py::test_macro_delete tests/test_cmd2.py::test_macro_delete_all tests/test_cmd2.py::test_macro_delete_non_existing tests/test_cmd2.py::test_macro_delete_no_name tests/test_cmd2.py::test_multiple_macros tests/test_cmd2.py::test_nonexistent_macro tests/test_cmd2.py::test_perror_style tests/test_cmd2.py::test_perror_no_style tests/test_cmd2.py::test_pwarning_style tests/test_cmd2.py::test_pwarning_no_style tests/test_cmd2.py::test_ppaged tests/test_cmd2.py::test_ppaged_blank tests/test_cmd2.py::test_ppaged_none tests/test_cmd2.py::test_ppaged_strips_ansi_when_redirecting tests/test_cmd2.py::test_ppaged_strips_ansi_when_redirecting_if_always tests/test_cmd2.py::test_parseline_empty tests/test_cmd2.py::test_parseline tests/test_cmd2.py::test_onecmd_raw_str_continue tests/test_cmd2.py::test_onecmd_raw_str_quit tests/test_cmd2.py::test_onecmd_add_to_history tests/test_cmd2.py::test_get_all_commands tests/test_cmd2.py::test_get_help_topics tests/test_cmd2.py::test_get_help_topics_hidden tests/test_cmd2.py::test_exit_code_default tests/test_cmd2.py::test_exit_code_nonzero tests/test_cmd2.py::test_ansi_pouterr_always_tty tests/test_cmd2.py::test_ansi_pouterr_always_notty tests/test_cmd2.py::test_ansi_terminal_tty tests/test_cmd2.py::test_ansi_terminal_notty tests/test_cmd2.py::test_ansi_never_tty tests/test_cmd2.py::test_ansi_never_notty tests/test_cmd2.py::test_disable_and_enable_category tests/test_cmd2.py::test_enable_enabled_command tests/test_cmd2.py::test_disable_fake_command tests/test_cmd2.py::test_disable_command_twice tests/test_cmd2.py::test_disabled_command_not_in_history tests/test_cmd2.py::test_disabled_message_command_name tests/test_cmd2.py::test_startup_script tests/test_cmd2.py::test_startup_script_with_odd_file_names[nothingweird] tests/test_cmd2.py::test_startup_script_with_odd_file_names[has tests/test_cmd2.py::test_startup_script_with_odd_file_names["is_double_quoted"] tests/test_cmd2.py::test_startup_script_with_odd_file_names['is_single_quoted'] tests/test_cmd2.py::test_transcripts_at_init