diff --git a/serial/tools/miniterm.py b/serial/tools/miniterm.py
index e6af966..3e66504 100644
--- a/serial/tools/miniterm.py
+++ b/serial/tools/miniterm.py
@@ -14,13 +14,9 @@
 import os
 import sys
 import threading
-try:
-    from serial.tools.list_ports import comports
-except ImportError:
-    comports = None
 
 import serial
-
+from serial.tools.list_ports import comports
 
 try:
     raw_input
@@ -28,13 +24,6 @@
     raw_input = input   # in python3 it's "raw"
     unichr = chr
 
-# globals: can be used to override then call .main() to customize from an other
-# script
-DEFAULT_PORT = None
-DEFAULT_BAUDRATE = 9600
-DEFAULT_RTS = None
-DEFAULT_DTR = None
-
 
 def key_description(character):
     """generate a readable description for a key"""
@@ -287,8 +276,8 @@
         """Start reader thread"""
         self._reader_alive = True
         # start serial->console thread
-        self.receiver_thread = threading.Thread(target=self.reader)
-        self.receiver_thread.setDaemon(True)
+        self.receiver_thread = threading.Thread(target=self.reader, name='rx')
+        self.receiver_thread.daemon = True
         self.receiver_thread.start()
 
     def _stop_reader(self):
@@ -301,8 +290,8 @@
         self.alive = True
         self._start_reader()
         # enter console->serial loop
-        self.transmitter_thread = threading.Thread(target=self.writer)
-        self.transmitter_thread.setDaemon(True)
+        self.transmitter_thread = threading.Thread(target=self.writer, name='tx')
+        self.transmitter_thread.daemon = True
         self.transmitter_thread.start()
         self.console.setup()
 
@@ -328,7 +317,7 @@
                     ('active' if self.serial.getRI() else 'inactive'),
                     ('active' if self.serial.getCD() else 'inactive')))
         except serial.SerialException:
-            # on RFC 2217 ports, it can happen to no modem state notification was
+            # on RFC 2217 ports, it can happen if no modem state notification was
             # yet received. ignore this error.
             pass
         sys.stderr.write('--- software flow control: {}\n'.format('active' if self.serial.xonxoff else 'inactive'))
@@ -404,7 +393,8 @@
 
     def handle_menu_key(self, c):
         """Implement a simple menu / settings"""
-        if c == self.menu_character or c == self.exit_character: # Menu character again/exit char -> send itself
+        if c == self.menu_character or c == self.exit_character:
+            # Menu/exit character again -> send itself
             b = codecs.encode(
                     c,
                     self.output_encoding,
@@ -539,8 +529,7 @@
             sys.stderr.write('--- unknown menu character {} --\n'.format(key_description(c)))
 
     def get_help_text(self):
-        # help text, starts with blank line! it's a function so that the current values
-        # for the shortcut keys is used and not the value at program start
+        # help text, starts with blank line!
         return """
 --- pySerial ({version}) - miniterm - help
 ---
@@ -555,7 +544,7 @@
 ---    {rts:7} RTS          {echo:7} local echo
 ---    {dtr:7} DTR          {brk:7} BREAK
 ---
---- Port settings {menu} followed by the following):
+--- Port settings ({menu} followed by the following):
 ---    p          change port
 ---    7 8        set data bits
 ---    N E O S M  change parity (None, Even, Odd, Space, Mark)
@@ -577,7 +566,9 @@
 
 
 
-def main():
+# default args can be used to override when calling main() from an other script
+# e.g to create a miniterm-my-device.py
+def main(default_port=None, default_baudrate=9600, default_rts=None, default_dtr=None):
     import argparse
 
     parser = argparse.ArgumentParser(
@@ -586,13 +577,13 @@
     parser.add_argument("port",
             nargs='?',
             help="serial port name",
-            default=DEFAULT_PORT)
+            default=default_port)
 
     parser.add_argument("baudrate",
             nargs='?',
             type=int,
             help="set baud rate, default: %(default)s",
-            default=DEFAULT_BAUDRATE)
+            default=default_baudrate)
 
     group = parser.add_argument_group("port settings")
 
@@ -615,12 +606,12 @@
     group.add_argument("--rts",
             type=int,
             help="set initial RTS line state (possible values: 0, 1)",
-            default=DEFAULT_RTS)
+            default=default_rts)
 
     group.add_argument("--dtr",
             type=int,
             help="set initial DTR line state (possible values: 0, 1)",
-            default=DEFAULT_DTR)
+            default=default_dtr)
 
     group = parser.add_argument_group("data handling")
 
@@ -657,13 +648,15 @@
 
     group.add_argument("--exit-char",
             type=int,
-            help="Unicode of special character that is used to exit the application",
+            metavar='NUM',
+            help="Unicode of special character that is used to exit the application, default: %(default)s",
             default=0x1d  # GS/CTRL+]
             )
 
     group.add_argument("--menu-char",
             type=int,
-            help="Unicode code of special character that is used to control miniterm (menu)",
+            metavar='NUM',
+            help="Unicode code of special character that is used to control miniterm (menu), default: %(default)s",
             default=0x14  # Menu: CTRL+T
             )
 
