diff --git a/HISTORY.rst b/HISTORY.rst
index 9e7f643bcf64b904c0dc908588b5e21fb195876b..6047cf9b1566ee135fa4ddf527ccee8b8b9e31e5 100644
--- a/HISTORY.rst
+++ b/HISTORY.rst
@@ -36,3 +36,11 @@ History
      bline.py 5555 -b
   to get a list of the warnings. 5555 may be any number for this test.
 * Fixed up the long version of the Help a bit.
+
+2019.289 (2019-10-16)
+* Added the -A command that will combine all of the offloaded files
+  into a .ALL file.
+* Added the -G command that will combine all of the files for a
+  channel into one file. The file names are close to the miniseed
+  file names produced by sdrsplit.
+* Changed the command line switch for a couple commands.
diff --git a/bline/__init__.py b/bline/__init__.py
index 711d13e65134b22cc03940982c6729341d454804..2bc3b91597f9489a758e79f5a86a2a8d9b307af0 100644
--- a/bline/__init__.py
+++ b/bline/__init__.py
@@ -4,4 +4,4 @@
 
 __author__ = """IRIS PASSCAL"""
 __email__ = 'software-support@passcal.nmt.edu'
-__version__ = '2018.135'
+__version__ = '2019.289'
diff --git a/bline/bline.py b/bline/bline.py
index 671f672074a5abfb7beb833ad19a12f4bbfbb44b..3c9ca4331f698cef306a46edc67be20f6a307b59 100755
--- a/bline/bline.py
+++ b/bline/bline.py
@@ -10,7 +10,7 @@ from sys import argv, exit, platform, stdout
 PROGSystem = platform[:3].lower()
 PROG_NAME = "BLINE"
 PROG_NAMELC = "bline"
-PROG_VERSION = "2019.269"
+PROG_VERSION = "2019.289"
 PROG_LONGNAME = "Command Line Baler Control Program"
 PROG_SETUPSVERS = "A"
 
@@ -661,10 +661,10 @@ def checkRPFiltersOff(Dev):
 
 
 
-############################################
-# BEGIN: badBlocks(MSGspec, SDRspec, IFiles)
-# FUNC:badBlocks():2019.235
-def badBlocks(MSGspec, SDRspec, IFiles):
+####################################################
+# BEGIN: badBlocks(MSGspec, SDRspec, IFiles, Filter)
+# FUNC:badBlocks():2019.289
+def badBlocks(MSGspec, SDRspec, IFiles, Filter):
     CLFiles = deepcopy(IFiles)
     CCFiles = listdir(SDRspec)
     CCFiles.sort()
@@ -691,6 +691,11 @@ def badBlocks(MSGspec, SDRspec, IFiles):
 # Probably macOS.
         if CCFile.startswith("."):
             continue
+# Don't process files that don't look like they came from a baler (like .ALL
+# or .<chan> files).
+        if Filter == True:
+            if basename(CCFile).find("__.") == -1:
+                continue
         Matches = False
         for CLFile in CLFiles:
             if fnmatch(CCFile, CLFile) == True:
@@ -704,7 +709,9 @@ def badBlocks(MSGspec, SDRspec, IFiles):
         if isdir(CCFilespec):
             continue
         FilesChecked += 1
-        logIt(MSGspec, "   %d. Checking %s..."%(FilesChecked, CCFilespec), \
+        CCFSize = getsize(CCFilespec)
+        logIt(MSGspec, "   %d. Checking %s... (%s %s)"%(FilesChecked, \
+                CCFilespec, fmti(CCFSize), sP(CCFSize, ("byte", "bytes"))), \
                 False)
         Ret = checkDTFile(CCFilespec, "      ")
         logIt(MSGspec, Ret[2], False)
@@ -717,7 +724,7 @@ def badBlocks(MSGspec, SDRspec, IFiles):
             LastFilesTime = LastTime
         if Ret[0] == 0:
             FilesOK += 1
-            FilesOKSize += getsize(CCFilespec)
+            FilesOKSize += CCFSize
         elif Ret[0] == 1:
             FilesOpenErrors1.append(CCFile)
         elif Ret[0] == 2:
@@ -734,6 +741,9 @@ def badBlocks(MSGspec, SDRspec, IFiles):
             FilesMultChans7.append(CCFile)
         elif Ret[0] == 8:
             FilesIsDir8.append(CCFile)
+    if FilesChecked == 0:
+        logIt(MSGspec, "There were no files to check.")
+        return
     logIt(MSGspec, "   Summary:", False)
     logIt(MSGspec, "   Overall date range: %s to %s"%(FirstFilesTime, \
             LastFilesTime), False)
@@ -741,45 +751,45 @@ def badBlocks(MSGspec, SDRspec, IFiles):
     logIt(MSGspec, "             Files OK: %d (%s %s)"%(FilesOK, \
             fmti(FilesOKSize), sP(FilesOKSize, ("byte", "bytes"))), False)
     if len(FilesOpenErrors1) != 0:
-        logIt(MSGspec, "   File opening errors: %d"%len(FilesOpenErrors1), \
+        logIt(MSGspec, "   File opening errors: %d:"%len(FilesOpenErrors1), \
                 False)
         Count = 0
         for File in FilesOpenErrors1:
             Count += 1
             logIt(MSGspec, "       %d. %s"%(Count, File), False)
     if len(FilesTooSmall2) != 0:
-        logIt(MSGspec, "   Files too small: %d"%len(FilesTooSmall2), False)
+        logIt(MSGspec, "   Files too small: %d:"%len(FilesTooSmall2), False)
         Count = 0
         for File in FilesTooSmall2:
             Count += 1
             logIt(MSGspec, "       %d. %s"%(Count, File), False)
     if len(Files256Size3) != 0:
-        logIt(MSGspec, "   Size not /256 bytes: %d"%len(Files256Size3), False)
+        logIt(MSGspec, "   Size not /256 bytes: %d:"%len(Files256Size3), False)
         Count = 0
         for File in Files256Size3:
             Count += 1
             logIt(MSGspec, "       %d. %s (%s bytes)"%(Count, File, \
                     fmti(getsize(SDRspec+File))), False)
     if len(FilesEndEmpty4) != 0:
-        logIt(MSGspec, "   Ending empty: %d"%len(FilesEndEmpty4), False)
+        logIt(MSGspec, "   Ending empty: %d:"%len(FilesEndEmpty4), False)
         Count = 0
         for File in FilesEndEmpty4:
             Count += 1
             logIt(MSGspec, "       %d. %s"%(Count, File), False)
     if len(FilesNoData5) != 0:
-        logIt(MSGspec, "   No data: %d"%len(FilesNoData5), False)
+        logIt(MSGspec, "   No data: %d:"%len(FilesNoData5), False)
         Count = 0
         for File in FilesNoData5:
             Count += 1
             logIt(MSGspec, "       %d. %s"%(Count, File), False)
     if len(FilesMultStas6) != 0:
-        logIt(MSGspec, "   Multiple stations: %d"%len(FilesMultStas6), False)
+        logIt(MSGspec, "   Multiple stations: %d:"%len(FilesMultStas6), False)
         Count = 0
         for File in FilesMultStas6:
             Count += 1
             logIt(MSGspec, "       %d. %s"%(Count, File), False)
     if len(FilesMultChans7) != 0:
-        logIt(MSGspec, "   Multiple channels: %d"%len(FilesMultChans7), False)
+        logIt(MSGspec, "   Multiple channels: %d:"%len(FilesMultChans7), False)
         Count = 0
         for File in FilesMultChans7:
             Count += 1
@@ -1397,7 +1407,7 @@ def getGMT(Format):
 
 ######################################################################
 # BEGIN: getSetSettings(SETspec, Cmd, Ieth = "", Iip = "", Iport = "")
-# FUNC:getSetSettings():2019.267
+# FUNC:getSetSettings():2019.289
 #   The settings file contains the Ethernet port, IP address and port number
 #   for a baler. The file is usually <tagid>.set and the format is:
 #       Ethernet device; IP address; port number
@@ -1408,6 +1418,9 @@ def getGMT(Format):
 def getSetSettings(SETspec, Cmd, Ieth = "", Iip = "", Iport = ""):
     if Cmd == "get":
         try:
+            if exists(SETspec) == False:
+                return (1, "RW", "There is no settings file %s"% \
+                        basename(SETspec))
             Ret = readFileLinesRB(SETspec, True)
             if Ret[0] != 0:
                 return (1, "MW", "Error reading settings file.")
@@ -1442,7 +1455,7 @@ def getSetSettings(SETspec, Cmd, Ieth = "", Iip = "", Iport = ""):
 
 ###################
 # BEGIN: helpLong()
-# FUNC:helpLong():2019.267
+# FUNC:helpLong():2019.289
 def helpLong():
     HELPText = "USING BLINE.PY\n\
 --------------\n\
@@ -1550,7 +1563,7 @@ GENERAL OPERATIONS\n\
 INSTALLING AND RUNNING BLINE\n\
 ----------------------------\n\
 BLINE is a single Python program file, so you need Python 2 or 3 installed\n\
-to run it. The advanced commands (-b -c -n -s -X) require packages and\n\
+to run it. The advanced commands (-b -c -n -s -x) require packages and\n\
 modules that may not normally be installed in a standard Python\n\
 installation. These can usually be installed using 'pip' or 'pip3' (\"Pip\n\
 Installs Packages\"). Using any of the above commands will cause BLINE to\n\
@@ -1609,7 +1622,7 @@ If, or once pip is installed the usual command for installing modules is\n\
 Known extra modules that may be needed. These may not all be required on\n\
 all systems or for every command, but to use any of the commands you will\n\
 need to install all of them:\n\
-   -b -c -n -s -X commands:\n\
+   -b -c -n -s -x commands:\n\
       psutil\n\
       subprocess32 (for Python2)\n\
       ipaddress\n\
@@ -1763,7 +1776,7 @@ versions of the command line:\n\
     bline.py <tagid> <command>\n\
     bline.py <tagid> <command> [<files>]\n\
     bline.py <tagid> <command> <files>\n\
-    bline.py <tagid> -m <message>\n\
+    bline.py <tagid> -M <message>\n\
     bline.py <tagid> -b [<ipaddr> | <ethdev>]\n\
 \n\
 See the -h help for the command line items that are required or optional\n\
@@ -1836,6 +1849,11 @@ the new version.\n\
 \n\
 bline.py <tagid> <command>\n\
 --------------------------\n\
+-A\n\
+Combines all of the offloaded data file into the file <tagid>.ALL. This\n\
+command may try to create a file larger than the operating system can\n\
+handle, so be careful.\n\
+\n\
 -b\n\
 This command, without any options after the -b, obtains the IP address of\n\
 the control computer and sets the IP address of a baler to a compatible\n\
@@ -1844,7 +1862,7 @@ address after its ATTN button has been pressed and it finishes booting.\n\
 Assigning the IP address to the baler this way records the Ethernet device\n\
 name, IP address used, and the port number to the file <tagid>.set. The\n\
 device name and port number are required for the version of the -c command\n\
-described below, as well as the -s and -X commands. All other commands\n\
+described below, as well as the -s and -x commands. All other commands\n\
 only need the IP address from the .set file (see the '-b <ipaddr>' command\n\
 description below).\n\
 \n\
@@ -1854,6 +1872,12 @@ device on the control computer that the baler was detected on and returns\n\
 the IP address of that device. The -b command must have been used to set\n\
 the address of the baler for this command to function.\n\
 \n\
+-G\n\
+This reads the offloaded baler files and concatenates all of the file for\n\
+a channel into one channel file. Depending on the operating system this\n\
+may try to create a file larger than the OS can handle, but those days\n\
+are mostly gone. The original files are left in the .sdr directory.\n\
+\n\
 -i\n\
 This command simply establishes a connection with the spcified baler and\n\
 displays the basic version and usage information from the baler.\n\
@@ -1867,7 +1891,7 @@ internal disk, and displays the list and saves the list to the file\n\
 This list is also saved every time BLINE is commanded to offload data\n\
 files from a baler.\n\
 \n\
--ls (ell sss)\n\
+-L\n\
 This lists the files that are in the <tagid>.sdr directory that have\n\
 presumably been offloaded from the baler.\n\
 \n\
@@ -1876,7 +1900,7 @@ This command shuts down the baler. It's usually easier to just use the ATTN\n\
 button. The -b command must have been used to set the baler's IP address\n\
 for this command to work.\n\
 \n\
--X\n\
+-x\n\
 This command cleans the baler and clears the Q330 association. You will\n\
 get one chance to cancel the operation before it starts. While the baler\n\
 is busy \"Waiting...\" will be displayed every 20 seconds. The -b command\n\
@@ -1975,13 +1999,13 @@ would offload the first file of each channel, which would also include a\n\
 little bit of the high sample rate data, but only the first 16MB file.\n\
 \n\
 \n\
-bline.py <tagid> -m <message>\n\
+bline.py <tagid> -M <message>\n\
 -----------------------------\n\
--m\n\
-Follow the -m with a message that will be displayed and also written to\n\
+-M\n\
+Follow the -M with a message that will be displayed and also written to\n\
 the .msg file for the baler. The text may need to be enclosed in quotes:\n\
 \n\
-    bline.py -m \"Baler 5549 is station NUUK\"\n\
+    bline.py -M \"Baler 5549 is station NUUK\"\n\
 \n\
 on some systems.\n\
 \n\
@@ -2010,7 +2034,7 @@ END\n"
 
 ####################
 # BEGIN: helpShort()
-# FUNC:helpShort():2019.268
+# FUNC:helpShort():2019.289
 def helpShort():
     HELPshort = "bline.py <command>\n\
     -h = This help.\n\
@@ -2025,13 +2049,16 @@ def helpShort():
    -UD = Downloads most recent version from PASSCAL (try -U first).\n\
 \n\
 bline.py <tagid> <command>\n\
+    -A = Copies all of the offloaded files into <tagid>.ALL\n\
     -c = This is a second version of -c which uses the actual Ethernet\n\
          device that the -b command found for the <tagid> baler.\n\
+    -G = Copies all of the offloaded files for each channel into a file\n\
+         <tagid>.<chan>.\n\
     -i = Gets basic information from the baler.\n\
     -l = (ell) Displays and saves the list of files on the baler.\n\
-   -ls = (ell sss) Displays the list of files in the baler's .sdr directory.\n\
+    -L = Displays the list of files in the baler's .sdr directory.\n\
     -s = Shuts down the baler.\n\
-    -X = Cleans the baler and clears any Q330 association.\n\
+    -x = Cleans the baler and clears any Q330 association.\n\
 \n\
 bline.py <tagid> <command> [<files>]\n\
     -O = (big oh) Offloads all data files that have not been offloaded.\n\
@@ -2052,7 +2079,7 @@ bline.py <tagid> <command> <files>\n\
     -F = Offloads only the specified file(s).\n\
 \n\
 bline.py <tagid> <command> <message>\n\
-    -m = Follow the -m with a text message.\n\
+    -M = Follow the -M with a text message.\n\
 \n\
 bline.py <tagid> <command> [<ipaddr> | <ethdev>]\n\
     -b = Watch for the specified baler and assign it an IP address. To\n\
@@ -2083,15 +2110,15 @@ Always leave a space after the command line switches:\n\
 
 #####################
 # BEGIN: helpVShort()
-# FUNC:helpVShort():2019.268
+# FUNC:helpVShort():2019.289
 def helpVShort():
     logIt("", "%s %s\nPython %s"%(PROG_NAME, PROG_VERSION, PROG_PYVERSION), \
             False)
     HELPVshort = "bline.py [ -h | -H | -c | -n | -U | -UD ]\n\
-bline.py <tagid> [ -c | -i | -l | -ls | -s | -X ]\n\
+bline.py <tagid> [ -A | -c | -G | -i | -l | -L | -s | -x ]\n\
 bline.py <tagid> [ -o | -O | -v | -vl | -V ] [<files>]\n\
 bline.py <tagid> [ -e | -E | -F ] <files>\n\
-bline.py <tagid> -m <message>\n\
+bline.py <tagid> -M <message>\n\
 bline.py <tagid> -b [<ipaddr> | <ethdev>]\n"
     logIt("", HELPVshort, False)
     return
@@ -2131,6 +2158,23 @@ def intt(In):
 
 
 
+#####################
+# BEGIN: isHigh(File)
+# FUNC:isHigh(File):2019.288
+#   Returns True if the channel name says the file is a high sample rate file.
+#   This is according to the PASSCAL channel naming rules.
+def isHigh(File):
+    if File.find("_.F") == -1 and File.find("_.G") == -1 and \
+            File.find("_.C") == -1 and File.find("_.D") == -1 and \
+            File.find("_.H") == -1 and File.find("_.E") == -1 and \
+            File.find("_.B") == -1 and File.find("_.S") == -1:
+        return False
+    return True
+# END: isHigh
+
+
+
+
 ###########################
 # BEGIN: isIPV4Addr(IPAddr)
 # FUNC:isIPAddr(IPV4Addr):2019.224
@@ -2484,7 +2528,7 @@ def logHeader(MSGspec, Which, Time = True):
 
 ###############
 # BEGIN: main()
-# FUNC:main():2019.269
+# FUNC:main():2019.288
 # These lovely items are brought to you by Microsoft. Python 3 was keeping
 # ' -#' for arguments, "" as an argument, or not passing command line
 # arguments at all. It's related to the registry value
@@ -2516,7 +2560,7 @@ FIPAddr = ""
 FPNumber = 0
 CLTagID = ""
 
-# At least say SOMETHING!
+# At least say something!
 if len(argv) == 1:
     helpVShort()
     exit(0)
@@ -2526,7 +2570,7 @@ if len(argv) == 1:
 # that are not installed for any of these commands, or just go ahead and
 # import them. The 'IP supplied' version of the -b command, and the -c command
 # throw a bit of a monkey wrench into keeping this simple.
-if "-b" in argv or "-c" in argv or "-s" in argv or "-X" in argv:
+if "-b" in argv or "-c" in argv or "-s" in argv or "-x" in argv:
     if len(argv) == 4 and argv[2] == "-b" and isIPV4Addr(argv[3]) == True:
         pass
     elif len(argv) == 2 and argv[1] == "-c":
@@ -2570,7 +2614,7 @@ if "-b" in argv or "-c" in argv or "-s" in argv or "-X" in argv:
             logIt("", "", False)
             exit(1)
 # I'm repeating this check for -n, because this may be useful without using
-# -b,-c,-s,-X in the BaleAddr mode. There's no need to make the user install
+# -b,-c,-s,-x in the BaleAddr mode. There's no need to make the user install
 # all of those other modules.
 if "-n" in argv:
     try:
@@ -2666,8 +2710,57 @@ SETspec = CWDspec+CLTagID+".set"
 TXTFspec = CWDspec+CLTagID+"files.txt"
 
 # These commands just take care of themselves and then quit.
+#===== bline.py <tagid> -A =====#
 #===== bline.py <tagid> -c =====#
-#===== bline.py <tagid> -m <message> =====#
+#===== bline.py <tagid> -G =====#
+#===== bline.py <tagid> -M <message> =====#
+
+if argv[2] == "-A":
+    logHeader(MSGspec, "")
+    Files = glob("%s*__.*"%SDRspec)
+    if len(Files) == 0:
+        logIt(MSGspec, "No offloaded files found.")
+        logIt(MSGspec, "Are you in the directory above the .sdr directory?\n")
+        exit(0)
+    logIt(MSGspec, "Files to copy: %d"%len(Files))
+# Get the list of channels from the offloded files.
+    Chans = []
+    for File in Files:
+        Chan = File[-4:]
+        if Chan not in Chans:
+            Chans.append(Chan)
+    Chans.sort()
+    Files.sort()
+    from shutil import copyfileobj
+    Count = 0
+    try:
+        OutFile = "%s%s.ALL"%(SDRspec, CLTagID)
+        FpA = open(OutFile, "wb")
+        logIt(MSGspec, "Copying files to %s..."%OutFile)
+        for Chan in Chans:
+            for File in Files:
+                if File.endswith(Chan):
+                    Count += 1
+                    logIt(MSGspec, "   %d. Copying file %s..."%(Count, \
+                            basename(File)), False)
+                    Fp = open(File, "rb")
+                    copyfileobj(Fp, FpA, -1)
+                    Fp.close()
+        FpA.close()
+    except KeyboardInterrupt:
+        try:
+            Fp.close()
+        except:
+            pass
+        try:
+            FpA.close()
+        except:
+            pass
+        logIt(MSGspec, "Stopped by user.")
+        exit(0)
+    logIt(MSGspec, "Finished.")
+    exit(0)
+
 
 # This is a second form of the -c command that will use the actual Ethernet
 # device for the entered baler if BLINE's -b command was used to set the baler
@@ -2695,14 +2788,85 @@ if argv[2] == "-c":
     logIt(MSGspec, "Control computer netmask: %s\n"%bitsToNetmask(Mask))
     exit(0)
 
+if argv[2] == "-G":
+    logHeader(MSGspec, "")
+# We'll be kinda specific so we don't have to keep filtering below.
+    Files = glob("%s*__.*"%SDRspec)
+    if len(Files) == 0:
+        logIt(MSGspec, "No offloaded files found.")
+        logIt(MSGspec, "Are you in the directory above the .sdr directory?\n")
+        exit(0)
+# Get the list of channels from the offloded files.
+    Chans = []
+    for File in Files:
+        Chan = File[-4:]
+        if Chan not in Chans:
+            Chans.append(Chan)
+    logIt(MSGspec, "Channels to group: %d"%len(Chans))
+    Chans.sort()
+    Files.sort()
+    from shutil import copyfileobj
+    from struct import unpack
+    Count = 0
+    try:
+        for Chan in Chans:
+# We need to go through the channel files, find the first one, open it and
+# extract the station name, net code, etc. for the file name. If this set of
+# data files has multiple of any of the file name items then all bets are off.
+# This only reads the first header. 
+            for File in Files:
+                if File.endswith(Chan):
+                    Fp = open(File, "rb")
+                    Header = Fp.read(128)
+                    Fp.close()
+                    if PROG_PYVERS == 2:
+                        Qual = Header[6]
+                    elif PROG_PYVERS == 3:
+                        Qual = chr(Header[6])
+                    StaID = Header[8:13].strip().decode("latin-1")
+                    LocID = Header[13:15].strip().decode("latin-1")
+                    ChanID = Header[15:18].strip().decode("latin-1")
+                    NetCode = Header[18:20].strip().decode("latin-1")
+                    Year, Doy, Hour, Mins, Secs, Tttt= unpack(">HHBBBxH", \
+                            Header[20:30])
+                    STime = "%s.%03d.%02d%02d%02d"%(Year, Doy, Hour, Mins, \
+                            Secs)
+# This is [another] one of many versions of file names.
+                    OutFile = "%s%s.%s.%s.%s.%s.%s"%(SDRspec, StaID, NetCode, \
+                            LocID, ChanID, Qual, STime)
+                    FpG = open(OutFile, "wb")
+                    break
+            Count += 1
+            logIt(MSGspec, "   %d. Copying files to %s"%(Count, OutFile), \
+                    False)
+            for File in Files:
+                if File.endswith(Chan):
+                    Fp = open(File, "rb")
+                    copyfileobj(Fp, FpG, -1)
+                    Fp.close()
+        FpG.close()
+    except KeyboardInterrupt:
+        try:
+            Fp.close()
+        except:
+            pass
+        try:
+            FpG.close()
+        except:
+            pass
+        logIt(MSGspec, "Stopped by user.")
+        exit(0)
+    logIt(MSGspec, "Finished.")
+    exit(0)
+
 # The user may want to put a message into the .msg file for the baler before
 # doing anything else (service run info, site ID, etc.), so check for this
 # command before the exists() checks below. This will get the .msg file
 # created if it does not exist.
-if argv[2] == "-m":
+if argv[2] == "-M":
     CLMessage = args2SL("s", 3)
     if CLMessage == "":
-        logIt("", "No -m message entered.\a\n", False)
+        logIt("", "No -M message entered.\a\n", False)
         beep()
         exit(1)
     logIt(MSGspec, "\n%s\n"%CLMessage)
@@ -2725,7 +2889,7 @@ if argv[2] in ("-v", "-vl", "-V"):
         exit(0)
 
 # The commands that need a simple header before the other prep stuff below.
-if argv[2] in ("-ls", "-s", "-X"):
+if argv[2] in ("-L", "-s", "-x"):
     logHeader(MSGspec, "")
 
 # The commands that need a little more header info.
@@ -2734,7 +2898,7 @@ if argv[2] in ("-e", "-E", "-F", "-i", "-l", "-o", "-O", "-v", "-vl", "-V"):
 
 # Get what should be the baler's comm info for these commands.
 if argv[2] in ("-e", "-E", "-F", "-i", "-l", "-o", "-O", "-s", "-v", "-vl", \
-        "-X"):
+        "-x"):
     Ret = getSetSettings(SETspec, "get")
     if Ret[0] != 0:
         logIt(MSGspec, "%s\n"%Ret[2])
@@ -2744,7 +2908,7 @@ if argv[2] in ("-e", "-E", "-F", "-i", "-l", "-o", "-O", "-s", "-v", "-vl", \
     FPNumber = intt(Ret[3])
 
 # Throw this check in here, since there will be no reason to continue.
-    if argv[2] in ("-s", "-X"):
+    if argv[2] in ("-s", "-x"):
         if FDev == "" or FPNumber == 0:
             logIt(MSGspec, \
                     "%s.set file does not contain the Ethernet device/port"% \
@@ -2752,7 +2916,7 @@ if argv[2] in ("-e", "-E", "-F", "-i", "-l", "-o", "-O", "-s", "-v", "-vl", \
             logIt(MSGspec, "information required for this command.\n")
             exit(0)
 
-# The commands that are going to use a list of command line files even just *.
+# The commands that might use a list of command line files even just *.
 if argv[2] in ("-o", "-O", "-v", "-vl", "-V"):
     IFiles = args2SL("l", argv[2])
     if len(IFiles) == 0:
@@ -2783,8 +2947,9 @@ if argv[2] in ("-e", "-E", "-F", "-i", "-l", "-o", "-O", "-v", "-vl"):
     BInfo = Ret[1]
     logIt(MSGspec, "Got baler info.")
 
-# A simpler verification check than above. This gets done in getBalerInfoHtm().
-if argv[2] in ("-s", "-X"):
+# A simpler verification check than above. This also gets done by using
+# getBalerInfoHtm() above, so you don't need to call this too.
+if argv[2] in ("-s", "-x"):
     try:
         Ret = checkTagID(CLTagID, FIPAddr)
         if Ret[0] != 0:
@@ -2828,8 +2993,7 @@ if argv[2] in ("-e", "-o"):
     for Index in arange(0, len(BFiles)):
         try:
             BName = BFiles[Index][B_NAME]
-            if BName.find(".H") != -1 or BName.find(".B") != -1 or \
-                    BName.find(".S") != -1:
+            if isHigh(BName) == True:
 #                print("Removed from download list: %s"%BName)
                 BFiles[Index] = []
         except IndexError:
@@ -2875,7 +3039,7 @@ if argv[2] in ("-e", "-E"):
 # If the <ipaddr> is provided this will create/update the <tagid>.set file
 # with the provided IP address for the rest of the HTML-based functions to
 # use. There will be no Ethernet device or port number with the address, so
-# the commands that need those (like -X) will not function. Use this if the
+# the commands that need those (like -x) will not function. Use this if the
 # IP address was set using something like BaleAddr.
 # If the <ethdev> is supplied the address-assigning routine will be run, but
 # only watching that device. Python 2, Windows, etc. do not have the
@@ -2929,11 +3093,11 @@ if argv[2] == "-b":
             logIt(MSGspec, "")
             exit(0)
 
-#===== bline.py <tagid> -X =====#
+#===== bline.py <tagid> -x =====#
 
 # Sends the clean baler command.
-if argv[2] == "-X":
-    logIt("", ">>> -X command will erase all data on the baler. <<<", False)
+if argv[2] == "-x":
+    logIt("", ">>> -x command will erase all data on the baler. <<<", False)
 # Keep the original 'yes' answer for the log entry.
     OAnswer = aninput("Continue to clean? (yes/no) ")
     Answer = OAnswer.lower()
@@ -2980,10 +3144,10 @@ if argv[2] == "-l":
     logIt(MSGspec, "")
     exit(0)
 
-#===== bline.py <tagid> -ls =====#
+#===== bline.py <tagid> -L =====#
 
 # Just lists in the <tagid>.sdr directory.
-if argv[2] == "-ls":
+if argv[2] == "-L":
     logIt(MSGspec, "Offloaded files in directory %s:"%SDRspec, False)
     if exists(SDRspec) == False:
         logIt(MSGspec, "   Directory %s does not exist."%SDRspec, False)
@@ -3027,7 +3191,7 @@ if argv[2] == "-V":
     Files = args2SL("l", "-V")
     if len(Files) == 0:
         Files.append("*")
-    badBlocks(MSGspec, SDRspec, Files)
+    badBlocks(MSGspec, SDRspec, Files, True)
     logIt(MSGspec, "")
     exit(0)
 
diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml
index 8786e9ca43da00716476fcd8d1aab17d3a3fb889..f9acfd290199b3b4fd37fb86aeb603f0b7bc2c9e 100644
--- a/conda.recipe/meta.yaml
+++ b/conda.recipe/meta.yaml
@@ -1,6 +1,6 @@
 package:
   name: bline
-  version: 2019.269
+  version: 2019.289
 
 source:
   path: ..
diff --git a/setup.cfg b/setup.cfg
index 55c19b5c60b6583aed99edac02d455ab1b3c61f6..c0a890efb78501f268d0f9c3d39d3f1c507b3c81 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 2019.269
+current_version = 2019.289
 commit = True
 tag = True
 
diff --git a/setup.py b/setup.py
index 167b81374221687da48e4d2b77c50111f0f4dd74..ea0c35d55c115b61e44a1cde04ae9d39b7deeeaa 100644
--- a/setup.py
+++ b/setup.py
@@ -53,6 +53,6 @@ setup(
     packages=find_packages(include=['bline']),
     test_suite='tests',
     url='https://git.passcal.nmt.edu/passoft/bline',
-    version='2019.269',
+    version='2019.289',
     zip_safe=False,
 )