diff --git a/ckMseed/LibTrace.py b/ckMseed/LibTrace.py
index 16a3a2089295b0d604f1532f557cfa70838cde43..bfb488364873d129047e18f0deeb8d44aa174a5a 100644
--- a/ckMseed/LibTrace.py
+++ b/ckMseed/LibTrace.py
@@ -4,36 +4,36 @@
 # LibTrace
 #
 # classes for Segy & Mseed
-#   identify file types
-#   read mseed headers
+#    identify file types
+#    read mseed headers
 #
 # author: bcb
-#
+
 # Notes 2004.101
-#
+
 # SEED
 # build a writer
-#
+
 # SEGY
 # SEGY needs to be expanded
 # build a writer
-#
+
 ##########################
 # 2004.141
 # Modification
 # Author: bcb
 #
 # MSEED
-#   created UbytetoStr to decompose Ubyte to bit fields
-#   modified blks 200, 201, 300, 310, 320, 390 and fixhdr to utilize
-#
+#    created UbytetoStr to decompose Ubyte to bit fields
+#    modified blks 200, 201, 300, 310, 320, 390 and fixhdr to utilize
+
 ##########################
 # 2004.295
 # Modification
 # Author: bcb
 #
 # corrected bug in mseed.calcrate
-#
+
 ##########################
 # 2005.026
 # Modification
@@ -44,7 +44,7 @@
 #    as a tuple within the blk list
 # changed unpack formats to use native byte order with standard size &
 # alignment
-#
+
 ##########################
 # 2005.035
 # Modification
@@ -53,10 +53,9 @@
 # added check for endianess in Mseed & Segy classes, self.ByteOrder
 # changed all unpack formats to reflect above change in Mseed & Segy classes
 # NOTE: for mseed it is possible to have mixed endianess (e.g. little-endian
-#       headers and big-endian data). At this time, this library does not
-#       handle data and makes the determination of endianess based soley on
-#       the header.
-#
+# headers and big-endian data). At this time, this library does not handle data
+# and makes the determination of endianess based soley on the header.
+
 ##########################
 # 2005.138
 # Modification
@@ -66,7 +65,6 @@
 # Mseed.Pad, Mseed.FlagStrtoInt, Mseed.WriteFixedHdr and all of
 # Mseed.Writeblk???
 # fixed improper casting of Time Correction in Mseed.fixedhdr to signed long
-#
 ##########################
 # 2006.179
 # bug fix
@@ -74,7 +72,6 @@
 #
 # text for little endian in class Segy:ByteOrder had an error such that
 # little endian files would never be found
-#
 ##########################
 # 2006.271
 # bug fix
@@ -82,7 +79,6 @@
 #
 # index error in Mseed:tracelength that caused trace length calculation
 # to be 1 sample too long.
-#
 ##########################
 # 2006.335
 # bug fix
@@ -92,7 +88,6 @@
 # fixed oversight in handling flags in blk100 reads (forgot to
 #    implement UbyteToStr
 # fixed improper handling of res fields in blk100, blk201 and blk400
-#
 ##########################
 # 2007.342
 # cleanup
@@ -100,14 +95,12 @@
 #
 # Re-organized WriteFixedHdr to pack all packets prior to any writes. Avoids
 #    partially written fixed header
-#
 ##########################
 # 2008.038
 #
 # Author: bcb
 #
 # added GetBlk, PutBlk
-#
 ##########################
 # 2008.179
 #
@@ -116,7 +109,6 @@
 # minimized file reads
 # introduced FixedHeader class
 # maintained old functionality for now.
-#
 ##########################
 # 2008.204
 #
@@ -124,39 +116,24 @@
 #
 # corrected typo from DHQaul to DHQual
 # added local variables to class Mseed
+################################################################
 #
-##########################
 # modification
 # version: 2019.025
 # author: Lan Dam
 # convert to py3
 # Bug fix: In Writeblk200/201/300/310/320/390/395/500 when unpack inblk to
 #   variables with time (Year, Day, Hour, Min, Sec, junk, Micro)
-#
-##########################
-# modification
-# version: 2020.211
-# author: Maeva Pourpoint
-#
-# Fixed issue with exec and variable scope (see GetBlk() and PutBlk())
-#
-##########################
-# modification
-# version: 2022.1.0.0
-# author: Omid Hosseini
-#
-# Change the versioning scheme
-#
-##########################
 
 import os
-import string
 import struct
 import sys
 import time
 
 SPACE = " "
 
+# VERSION = "2019.025"
+
 
 class futils:
     """
@@ -224,15 +201,9 @@ class Mseed(futils):
                 if odd_size:
                     pass
                 # starttime of trace
-                # self.time = string.join(list(map(str, (self.FH.Year,
-                #                                        self.FH.Day,
-                #                                        self.FH.Hour,
-                #                                        self.FH.Min,
-                #                                        self.FH.Sec))), ":")
-                templist = list(map(str, (self.FH.Year, self.FH.Day,
-                                          self.FH.Hour, self.FH.Min,
-                                          self.FH.Sec)))
-                self.time = ":".join(templist)
+                self.time = ":".join(map(str, (self.FH.Year, self.FH.Day,
+                                               self.FH.Hour, self.FH.Min,
+                                               self.FH.Sec)))
         except Exception:
             pass
 
@@ -309,12 +280,8 @@ class Mseed(futils):
         """
         try:
             hdrs = self.fixedhdr(seekval)
-            # time = string.join(list(map(str, (self.FH.Year, self.FH.Day,
-            #                                   self.FH.Hour,self.FH.Min,
-            #                                   self.FH.Sec))), ":")
-            templist = list(map(str, (self.FH.Year, self.FH.Day, self.FH.Hour,
+            time = ":".join(map(str, (self.FH.Year, self.FH.Day, self.FH.Hour,
                                       self.FH.Min, self.FH.Sec)))
-            time = ":".join(templist)
             return time
         except Exception:
             pass
@@ -328,6 +295,7 @@ class Mseed(futils):
         """
         try:
             hdrs = self.fixedhdr(seekval)
+
             return (self.FH.Stat, self.FH.Chan, self.FH.Loc, self.FH.Net,
                     self.rate, self.FH.Year, self.FH.Day, self.FH.Hour,
                     self.FH.Min, self.FH.Sec, self.FH.Micro)
@@ -363,7 +331,6 @@ class Mseed(futils):
         else:
             rate = sampFact
         return rate
-
 #########################################################
 
     def ByteOrder(self, seekval=20):
@@ -380,7 +347,7 @@ class Mseed(futils):
             # timeblock=self.TraceBuffer[seekval:seekval+10]
 
             # assume big endian
-            (Year, Day, Hour, Min, Sec, junk, Micro) =\
+            (Year, Day, Hour, Min, Sec, junk, Micro) = \
                 self.sunpack('>HHBBBBH', timeblock)
             # test if big endian read makes sense
             if 1950 <= Year <= 2050 and \
@@ -476,25 +443,25 @@ class Mseed(futils):
 # for blockette descriptions below
 # from SEED manual
 #
-# Field     nbits   Description
-# UBYTE     8       Unsigned quantity
-# BYTE      8       Two's complement signed quantity
-# UWORD     16      Unsigned quantity
-# WORD      16      Two's complement signed quantity
-# ULONG     32      Unsigned quantity
-# LONG      32      Two's complement signed quantity
-# CHAR*n        n*8     n characters, each 8 bit and each with
-#                       a 7-bit ASCII character (high bit always 0)
-# FLOAT     32      IEEE Floating point number
+# Field        nbits    Description
+# UBYTE        8        Unsigned quantity
+# BYTE        8        Two's complement signed quantity
+# UWORD        16        Unsigned quantity
+# WORD        16        Two's complement signed quantity
+# ULONG        32        Unsigned quantity
+# LONG        32        Two's complement signed quantity
+# CHAR*n        n*8        n characters, each 8 bit and each with
+#                         a 7-bit ASCII character (high bit always 0)
+# FLOAT        32        IEEE Floating point number
 #
 # BTIME
-#   UWORD   16  Year (e.g. 1987)
-#   UWORD   16  J-Day
-#   UBYTE   8   Hours of day (0-23)
-#   UBYTE   8   Minutes of hour (0-59)
-#   UBYTE   8   Seconds of minute (0-59, 60 for leap seconds)
-#   UBYTE   8   Unused for data (required for alignment)(
-#   UWORD   16  .0001 seconds (0-9999)
+#    UWORD    16    Year (e.g. 1987)
+#    UWORD    16    J-Day
+#    UBYTE    8    Hours of day (0-23)
+#    UBYTE    8    Minutes of hour (0-59)
+#    UBYTE    8    Seconds of minute (0-59, 60 for leap seconds)
+#    UBYTE    8    Unused for data (required for alignment)(
+#    UWORD    16    .0001 seconds (0-9999)
 #########################################################
 
     def fixedhdr(self, seekval=0):
@@ -531,10 +498,10 @@ class Mseed(futils):
                 Offset to beginning of next blockette (UWORD, 2)
         """
         # local variable
-#       self.sunpack=self.sunpack
+        # self.sunpack=self.sunpack
         try:
             del self.FH
-        except Exception:
+        except Exception as e:
             pass
         self.FH = FixedHeader()
         try:
@@ -560,10 +527,10 @@ class Mseed(futils):
                 self.FH.miscblk = self.UbytetoStr(tmpblk, i)
                 tmpblk = self.FH.miscblk  # recast tmpblk as list
 
-            (self.FH.Serial, self.FH.DHQual, res, self.FH.Stat, self.FH.Loc, self.FH.Chan, self.FH.Net)\
-                = self.FH.textblk  # noqa: E501
-            (self.FH.Year, self.FH.Day, self.FH.Hour, self.FH.Min, self.FH.Sec, junk, self.FH.Micro)\
-                = self.FH.timeblk  # noqa: E501
+            (self.FH.Serial, self.FH.DHQual, res, self.FH.Stat, self.FH.Loc,
+             self.FH.Chan, self.FH.Net) = self.FH.textblk
+            (self.FH.Year, self.FH.Day, self.FH.Hour, self.FH.Min,
+             self.FH.Sec, junk, self.FH.Micro) = self.FH.timeblk
             (self.FH.NumSamp, self.FH.SampFact, self.FH.SampMult)\
                 = self.FH.sampblk
             self.rate = self.calcrate()
@@ -571,6 +538,7 @@ class Mseed(futils):
             return (self.FH.textblk, self.FH.timeblk, self.FH.sampblk,
                     self.FH.miscblk)
             # return textblk,timeblk,sampblk,miscblk
+
         except Exception:
             print("error reading fixed header")
             pass
@@ -618,8 +586,8 @@ class Mseed(futils):
 
             # misc info
             # fmtstr3 = fmtorderstr + "BBBBlHH"
-            (actFlags, ioFlags, dqFlags, numblk, timecor,
-             offsetData, offsetBlktt) = hdrlist[3]
+            (actFlags, ioFlags, dqFlags, numblk, timecor, offsetData,
+             offsetBlktt) = hdrlist[3]
             # convert flag string to integer
             actFlags = self.FlagStrtoInt(actFlags)
             ioFlags = self.FlagStrtoInt(ioFlags)
@@ -627,6 +595,7 @@ class Mseed(futils):
 
             # pack fields
             fmtstr = fmtorderstr + "6scc5s2s3s2sHHBBBBHHhhBBBBlHH"
+
             pack_hdr = self.spack(fmtstr, SeqNum, DQual, Res, Stat, Loc, Chan,
                                   Net, Year, Day, Hour, Min, Sec, junk, Micro,
                                   NumSamp, SampFact, SampMult, actFlags,
@@ -649,9 +618,10 @@ class Mseed(futils):
         if blknum not in ValidBlk:
             return 0
         else:
-            blk = locals()
-            callcmd = "blk=self.blk" + str(blknum) + "(" + str(seekval) + ")"
-            exec(callcmd, {}, blk)
+            callcmd = "global blk; blk=self.blk%s(%s)" \
+                % (str(blknum), str(seekval))
+
+            exec(callcmd)
             return blk
 
 #########################################################
@@ -665,10 +635,11 @@ class Mseed(futils):
         if blknum not in ValidBlk:
             return 0
         else:
-            bytes_written = locals()
-            callcmd = "bytes_written=self.Writeblk" + \
-                str(blknum) + "(indata" + "," + str(seekval) + ", endian)"
-            exec(callcmd, {}, bytes_written)
+            callcmd = "global bytes_written; "\
+                "bytes_written=self.Writeblk%s(indata, %s, endian)"\
+                % (str(blknum), str(seekval))
+
+            exec(callcmd)
             return bytes_written
 
 #########################################################
@@ -693,12 +664,11 @@ class Mseed(futils):
         return blk
 
 #########################################################
-
     def Writeblk100(self, inblk, seekval=0, endianess=""):
         """
         writes Sample Rate Blockette 100 (12 bytes)
         requires tuple inblk=(blkette, nextblk, actrate, flags, res0, res1,
-        res2)
+                              res2)
         """
 
         try:
@@ -707,8 +677,9 @@ class Mseed(futils):
             fmtstr = fmtorderstr + "HHfb3B"
             (blkette, nextblk, actrate, flags, res0, res1, res2) = inblk
             flags = self.FlagStrtoInt(flags)
-            pack_blk = self.spack(fmtstr, blkette, nextblk,
-                                  actrate, flags, res0, res1, res2)
+
+            pack_blk = self.spack(fmtstr, blkette, nextblk, actrate, flags,
+                                  res0, res1, res2)
             self.infilewrite(pack_blk)
             return 12
         except Exception:
@@ -756,8 +727,8 @@ class Mseed(futils):
         """
         writes Generic Event Detection Blockette 200 (52 bytes)
         requires tuple inblk
-        inblk=(blkette, nextblk, amp, period, bg, flags, Year, Day, Hour, Min,
-        Sec, junk, Micro, charstr)
+        inblk=(blkette, nextblk, amp, period, bg, flags,
+               Year, Day, Hour, Min, Sec, junk, Micro, charstr)
         """
 
         try:
@@ -768,11 +739,14 @@ class Mseed(futils):
             (blkette, nextblk, amp, period, bg, flags,
              (Year, Day, Hour, Min, Sec, junk, Micro), charstr) = inblk
             flags = FlagsStrtoInt(flags)
-            pack_blk = self.spack(fmtstr, blkette, nextblk, amp, period, bg,
-                                  flags, Year, Day, Hour, Min, Sec, junk,
-                                  Micro, charstr)
+
+            pack_blk = self.spack(
+                fmtstr, blkette, nextblk, amp, period, bg, flags,
+                Year, Day, Hour, Min, Sec, junk, Micro, charstr)
+
             self.infilewrite(pack_blk)
             return 52
+
         except Exception:
             print("error writing blockette 200")
             return 0
@@ -785,8 +759,8 @@ class Mseed(futils):
         Returns tuple
                 blk
         Blockette type (UWORD, 2)
-        Next blockette's byte offset relative to fixed section of header
-                (UWORD, 2)
+        Next blockette's byte offset relative to fixed section of
+          header (UWORD, 2)
         Signal amplitude (FLOAT, 4)
         Signal period (FLOAT,4)
         Background estimate (FLOAT,4)
@@ -821,9 +795,9 @@ class Mseed(futils):
         """
         writes Murdock Event Detection Blockette 201 (60 bytes)
         requires tuple inblk
-        inblk=(blkette, nextblk, amp, period, bg, flags, res, Year, Day, Hour,
-               Min, Sec, junk, Micro, SN0, SN1, SN2, SN3, SN4, SN5, loop, algo,
-               Name)
+        inblk=(blkette, nextblk, amp, period, bg, flags, res,
+               Year, Day, Hour, Min, Sec, junk, Micro,
+               SN0, SN1, SN2, SN3, SN4, SN5, loop, algo, Name)
         """
 
         try:
@@ -831,16 +805,20 @@ class Mseed(futils):
             fmtorderstr = self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHfffBBHHBBBBH6BBB24s"
 
-            (blkette, nextblk, amp, period, bg, flags, res, (Year, Day, Hour,
-             Min, Sec, junk, Micro), SN0, SN1, SN2, SN3, SN4, SN5, loop, algo,
-             Name) = inblk
+            (blkette, nextblk, amp, period, bg, flags, res,
+             (Year, Day, Hour, Min, Sec, junk, Micro),
+             SN0, SN1, SN2, SN3, SN4, SN5, loop, algo, Name) = inblk
+
             flags = self.FlagStrtoInt(flags)
+
             pack_blk = self.spack(fmtstr, blkette, nextblk, amp, period, bg,
                                   flags, res, Year, Day, Hour, Min, Sec, junk,
                                   Micro, SN0, SN1, SN2, SN3, SN4, SN5, loop,
                                   algo, Name)
+
             self.infilewrite(pack_blk)
             return 60
+
         except Exception:
             print("error writing blockette 201")
             return 0
@@ -891,7 +869,7 @@ class Mseed(futils):
         writes Step Calibration Blockette 300 (60 bytes)
         requires tuples inblk
         inblk=(blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro,
-            numst, flags, dur, interv, amp, chan, res, ref, couple, rolloff)
+               numst, flags, dur, interv, amp, chan, res, ref, couple, rolloff)
         """
 
         try:
@@ -899,15 +877,20 @@ class Mseed(futils):
             fmtorderstr = self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHHHBBBBHBBIIf3sBI12s12s"
 
-            (blkette, nextblk, (Year, Day, Hour, Min, Sec, junk, Micro), numst,
-             flags, dur, interv, amp, chan, res, ref, couple,
-             rolloff) = inblk
+            (blkette, nextblk, (Year, Day, Hour, Min, Sec, junk, Micro),
+             numst, flags, dur, interv, amp, chan, res, ref,
+             couple, rolloff) = inblk
             flags = self.FlagStrtoInt(flags)
-            pack_blk = self.spack(fmtstr, blkette, nextblk, Year, Day, Hour,
-                                  Min, Sec, junk, Micro, numst, flags, dur,
-                                  interv, amp, chan, res, ref, couple, rolloff)
+
+            pack_blk = self.spack(
+                fmtstr, blkette, nextblk,
+                Year, Day, Hour, Min, Sec, junk, Micro,
+                numst, flags, dur, interv, amp, chan,
+                res, ref, couple, rolloff)
+
             self.infilewrite(pack_blk)
             return 60
+
         except Exception:
             print("error writing blockette 300")
             return 0
@@ -957,8 +940,8 @@ class Mseed(futils):
         """
         writes Sine Calibration Blockette 310 (60 bytes)
         requires tuples inblk
-        inblk=(blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro, res,
-               flags, dura,per,ampsig,chan, res2,refamp,coup,rolloff)
+        inblk=(blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro,
+               res, flags, dura,per,ampsig,chan, res2,refamp,coup,rolloff)
         """
 
         try:
@@ -967,14 +950,17 @@ class Mseed(futils):
             fmtstr = fmtorderstr + "HHHHBBBBHBBIff3sBI12s12s"
 
             (blkette, nextblk, (Year, Day, Hour, Min, Sec, junk, Micro),
-             res, flags, dura, per, ampsig, chan, res2, refamp, coup,
-             rolloff) = inblk
+             res, flags, dura, per, ampsig, chan, res2,
+             refamp, coup, rolloff) = inblk
             flags = self.FlagStrtoInt(flags)
+
             pack_blk = self.spack(fmtstr, blkette, nextblk, Year, Day, Hour,
                                   Min, Sec, junk, Micro, res, flags, dura, per,
                                   ampsig, chan, res2, refamp, coup, rolloff)
+
             self.infilewrite(pack_blk)
             return 60
+
         except Exception:
             print("error writing blockette 310")
             return 0
@@ -1025,7 +1011,7 @@ class Mseed(futils):
         writes Pseudo-random Calibraton Blockette 320 (64 bytes)
         requires tuples inblk
         inblk=(blkette, nextblk, Year, Day, Hour, Min, Sec, junk, Micro,
-            res, flags, dura,ptop,chan, res2,refamp,coup,rolloff,noise)
+               res, flags, dura,ptop,chan, res2,refamp,coup,rolloff,noise)
         """
 
         try:
@@ -1033,16 +1019,19 @@ class Mseed(futils):
             fmtorderstr = self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHHHBBBBHBBIf3sBI12s12s8s"
 
-            (blkette, nextblk, (Year, Day, Hour, Min, Sec, junk, Micro),
-             res, flags, dura, ptop, chan, res2, refamp, coup, rolloff,
+            (blkette, nextblk, (Year, Day, Hour, Min, Sec, junk, Micro), res,
+             flags, dura, ptop, chan, res2, refamp, coup, rolloff,
              noise) = inblk
+
             flags = self.FlagStrtoInt(flags)
             pack_blk = self.spack(fmtstr, blkette, nextblk, Year, Day, Hour,
                                   Min, Sec, junk, Micro, res, flags, dura,
                                   ptop, chan, res2, refamp, coup, rolloff,
                                   noise)
+
             self.infilewrite(pack_blk)
             return 64
+
         except Exception:
             print("error writing blockette 320")
             return 0
@@ -1097,14 +1086,18 @@ class Mseed(futils):
             fmtorderstr = self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHHHBBBBHBBIf3sB"
 
-            (blkette, nextblk, (Year, Day, Hour, Min, Sec, junk, Micro), res,
-             flags, dura, amp, chan, res2) = inblk
+            (blkette, nextblk, (Year, Day, Hour, Min, Sec, junk, Micro),
+             res, flags, dura, amp, chan, res2) = inblk
             flags = self.FlagStrtoInt(flags)
-            pack_blk = self.spack(fmtstr, blkette, nextblk, Year, Day, Hour,
-                                  Min, Sec, junk, Micro, res, flags, dura,
-                                  amp, chan, res2)
+
+            pack_blk = self.spack(
+                fmtstr, blkette, nextblk,
+                Year, Day, Hour, Min, Sec, junk, Micro,
+                res, flags, dura, amp, chan, res2)
+
             self.infilewrite(pack_blk)
             return 28
+
         except Exception:
             print("error writing blockette 390")
             return 0
@@ -1143,10 +1136,13 @@ class Mseed(futils):
 
             (blkette, nextblk, (Year, Day, Hour, Min, Sec, junk, Micro),
              res) = inblk
+
             pack_blk = self.spack(fmtstr, blkette, nextblk, Year, Day, Hour,
                                   Min, Sec, junk, Micro, res)
+
             self.infilewrite(pack_blk)
             return 16
+
         except Exception:
             print("error writing blockette 395")
             return 0
@@ -1186,10 +1182,13 @@ class Mseed(futils):
             fmtstr = fmtorderstr + "HHffH2B"
 
             (blkette, nextblk, baz, bslw, bconf, res0, res1) = inblk
+
             pack_blk = self.spack(fmtstr, blkette, nextblk, baz, bslw, bconf,
                                   res0, res1)
+
             self.infilewrite(pack_blk)
             return 16
+
         except Exception:
             print("error writing blockette 400")
             return 0
@@ -1226,9 +1225,12 @@ class Mseed(futils):
             fmtstr = fmtorderstr + "HHH"
 
             (blkette, nextblk, delay) = inblk
+
             pack_blk = self.spack(fmtstr, blkette, nextblk, delay)
+
             self.infilewrite(pack_blk)
             return 6
+
         except Exception:
             print("error writing blockette 405")
             return 0
@@ -1282,13 +1284,18 @@ class Mseed(futils):
             fmtorderstr = self.setEndian(endianess)
             fmtstr = fmtorderstr + "HHfHHBBBBHBBI16s32s128s"
 
-            (blkette, nextblk, vcocorr, (Year, Day, Hour, Min, Sec, junk,
-             Micro), Micro2, qual, cnt, type, mod, stat) = inblk
-            pack_blk = self.spack(fmtstr, blkette, nextblk, vcocorr, Year, Day,
-                                  Hour, Min, Sec, junk, Micro, Micro2, qual,
-                                  cnt, type, mod, stat)
+            (blkette, nextblk, vcocorr,
+             (Year, Day, Hour, Min, Sec, junk, Micro), Micro2,
+             qual, cnt, type, mod, stat) = inblk
+
+            pack_blk = self.spack(
+                fmtstr, blkette, nextblk, vcocorr,
+                Year, Day, Hour, Min, Sec, junk, Micro, Micro2,
+                qual, cnt, type, mod, stat)
+
             self.infilewrite(pack_blk)
             return 200
+
         except Exception:
             print("error writing blockette 500")
             return 0
@@ -1301,8 +1308,8 @@ class Mseed(futils):
         Returns tuple
                 blk
         Blockette type (UWORD, 2)
-        Next blockette's byte offset relative to fixed section of header
-                (UWORD, 2)
+        Next blockette's byte offset relative to fixed section of
+            header (UWORD, 2)
         Encoding Format (BYTE, 1)
         Word Order (UBYTE, 1)
         Data Record Length (UBYTE, 1)
@@ -1310,6 +1317,7 @@ class Mseed(futils):
         """
         self.infileseek(seekval)
         fmtstr = self.fmt_order + "HHbBBB"
+
         blk = self.sunpack(fmtstr, self.infileread(8))
         return list(blk)
 
@@ -1328,10 +1336,13 @@ class Mseed(futils):
             fmtstr = fmtorderstr + "HHbBBB"
 
             (blkette, nextblk, fmt, order, length, res) = inblk
-            pack_blk = self.spack(fmtstr, blkette, nextblk, fmt, order,
-                                  length, res)
+
+            pack_blk = self.spack(
+                fmtstr, blkette, nextblk, fmt, order, length, res)
+
             self.infilewrite(pack_blk)
             return 8
+
         except Exception:
             print("error writing blockette 1000")
             return 0
@@ -1344,8 +1355,8 @@ class Mseed(futils):
         Returns tuple
                 blk
         Blockette type (UWORD, 2)
-        Next blockette's byte offset relative to fixed section of header
-                (UWORD, 2)
+        Next blockette's byte offset relative to fixed section of
+            header (UWORD, 2)
         Timing Quality (UBYTE, 1)
         microsec (UBYTE, 1)
         Reserved (UBYTE, 1)
@@ -1371,10 +1382,13 @@ class Mseed(futils):
             fmtstr = fmtorderstr + "HHBBBB"
 
             (blkette, nextblk, tqual, micro, res, fcnt) = inblk
-            pack_blk = self.spack(fmtstr, blkette, nextblk,
-                                  tqual, micro, res, fcnt)
+
+            pack_blk = self.spack(fmtstr, blkette, nextblk, tqual, micro,
+                                  res, fcnt)
+
             self.infilewrite(pack_blk)
             return 8
+
         except Exception:
             print("error writing blockette 1001")
             return 0
@@ -1385,52 +1399,53 @@ class Mseed(futils):
         """
         Variable Length Opaque Data Blockette
         Returns two tuples
-                blk, opaque
-        Blockette type (UWORD, 2)
-        Next blockette's byte offset relative to fixed section of header.
-        Use 0 if no more blockettes will follow. (UWORD, 2)
-        Total Blockette length kin Bytes (UWORD, 2)
-        Offset to Opaque Data (UWORD, 2)
-        Record number (ULONG, 4)
-        Data Word order (UBYTE, 1)
-            0 = little endian (VAX or 80x86 byte order).
-            1 = big endian (68000 or SPARC byte order).
-        Opaque Data flags (UBYTE, 1)
-            [bit 0] Opaque blockette orientation.
+          blk, opaque
+            Blockette type (UWORD, 2)
+            Next blockette's byte offset relative to fixed section of header.
+              Use 0 if no more blockettes will follow.(UWORD, 2)
+            Total Blockette length kin Bytes (UWORD, 2)
+            Offset to Opaque Data (UWORD, 2)
+            Record number (ULONG, 4)
+            Data Word order (UBYTE, 1)
+              0 = little endian (VAX or 80x86 byte order).
+              1 = big endian (68000 or SPARC byte order).
+            Opaque Data flags (UBYTE, 1)
+              [bit 0] Opaque blockette orientation.
                 0 = record oriented.
                 1 = stream oriented.
-            [bit 1] Packaging bit.
+              [bit 1] Packaging bit.
                 0 = Blockette 2000s from multiple SEED data records with
-                different timetags may be packaged into a single SEED data
-                record. The exact original timetag in each SEED Fixed Data
-                Header is not required for each blockette 2000.
+                  different timetags may be packaged into a single SEED data
+                  record. The exact original timetag in each SEED Fixed Data
+                  Header is not required for each blockette 2000.
                 1= Blockette 2000s from multiple SEED data records with
-                differing timetags may NOT be repackaged into a single SEED
-                data record. Set this bit if the timetag in the SEED Fixed
-                Data Header is required to properly interpret the opaque data.
-            [bits 2-3] Opaque blockette fragmentation flags.
+                  differing timetags may NOT be repackaged into a single SEED
+                  data record. Set this bit if the timetag in the SEED Fixed
+                  Data Header is required to properly interpret the opaque
+                  data.
+              [bits 2-3] Opaque blockette fragmentation flags.
                 00 = opaque record identified by record number is completely
-                contained in this opaque blockette.
+                  contained in this opaque blockette.
                 01 = first opaque blockette for record spanning multiple
-                blockettes.
+                  blockettes.
                 11 = continuation blockette 2...N-1 of record spanning N
-                blockettes.
+                  blockettes.
                 10 = final blockette for record spanning N blockettes.
-            [bits 4-5] File blockette information.
+              [bits 4-5] File blockette information.
                 00 = not file oriented.
                 01 = first blockette of file.
                 10 = continuation of file.
                 11 = last blockette of file.
-        Number of Opaque Header fields (UBYTE, 1)
-        Opaque Data Header fields (VAR)
-            a Record type
-            b Vendor type
-            c Model type
-            d Software
-            e Firmware
-        Opaque Data Opaque - bytes of opaque data. Total length of opaque data
-            in bytes is blockette_length-15-length (opaque_data_header_string)
-            (Opaque)
+            Number of Opaque Header fields (UBYTE, 1)
+            Opaque Data Header fields (VAR)
+              a Record type
+              b Vendor type
+              c Model type
+              d Software
+              e Firmware
+            Opaque Data Opaque - bytes of opaque data. Total length of opaque
+              data in bytes is blockette_length-15-length
+              (opaque_data_header_string) (Opaque)
         """
         self.infileseek(seekval)
         fmtstr = self.fmt_order + "HHHHIBBB"
@@ -1459,9 +1474,7 @@ class Mseed(futils):
         # rdbyte = int(tmpblk[2]) - 15 - length_data_string
         # fmt = "=%ds" % rdbyte
         # opaque=self.sunpack(fmt, self.infileread(rdbyte))
-        #
         # print(opaque)
-        #
         return blk
 
 #########################################################
@@ -1530,8 +1543,8 @@ class Segy(futils):
         #    "little"
         #    or "unknown"
         self.byteorder = self.ByteOrder()
-        # self.fmt_order: companion to self.byteorder. Format string for
-        # stuct.pack
+        # self.fmt_order: companion to self.byteorder.
+        # Format string for struct.pack
         #    ">" big endian
         #    "<" little endian
 
@@ -1549,8 +1562,8 @@ class Segy(futils):
         (Sserial, Schan, Srate, Syear, Sday, Shour, Smin, Ssec) = self.idread()
         # we have already tested for a valid time in self.ByteOrder, this test
         # is to ensure that we were able to read a complete idhdr header
-        if (Sserial == Schan == Srate == Syear == Sday == Shour ==
-                Smin == Ssec is None):
+        if Sserial == Schan == Srate == Syear == Sday == Shour == \
+           Smin == Ssec is None:
             return 0
         # if we're this far it must be segy
         self.type = "segy"
@@ -1558,10 +1571,7 @@ class Segy(futils):
             self.serial = Sserial
         else:
             self.serial = self.to_hex(Sserial)
-        # self.time = string.join(list(map(str, (Syear, Sday, Shour, Smin,
-        #                                        Ssec))), ":")
-        templist = list(map(str, (Syear, Sday, Shour, Smin, Ssec)))
-        self.time = ":".join(templist)
+        self.time = ":".join(map(str, (Syear, Sday, Shour, Smin, Ssec)))
         self.chan = Schan
         self.rate = Srate
         return 1
@@ -1623,6 +1633,7 @@ class Segy(futils):
             return None, None, None, None, None, None, None, None
 
 #########################################################
+
     def ByteOrder(self, seekval=156):
         """
         read file as if it is segy just pulling time info
@@ -1639,8 +1650,11 @@ class Segy(futils):
             (Year, Day, Hour, Min, Sec) =\
                 struct.unpack('>HHHHH', timeblock)
             # test if big endian read makes sense
-            if (1950 <= Year <= 2050 and 1 <= Day <= 366 and
-                    0 <= Hour <= 23 and 0 <= Min <= 59 and 0 <= Sec <= 59):
+            if 1950 <= Year <= 2050 and \
+               1 <= Day <= 366 and \
+               0 <= Hour <= 23 and \
+               0 <= Min <= 59 and \
+               0 <= Sec <= 59:
                 Order = "big"
                 self.fmt_order = ">"
             else:
@@ -1648,8 +1662,11 @@ class Segy(futils):
                 (Year, Day, Hour, Min, Sec) =\
                     struct.unpack('<HHHHH', timeblock)
                 # test if little endian read makes sense
-                if (1950 <= Year <= 2050 and 1 <= Day <= 366 and
-                        0 <= Hour <= 23 and 0 <= Min <= 59 and 0 <= Sec <= 59):
+                if 1950 <= Year <= 2050 and \
+                   1 <= Day <= 366 and \
+                   0 <= Hour <= 23 and \
+                   0 <= Min <= 59 and \
+                   0 <= Sec <= 59:
                     Order = "little"
                     self.fmt_order = "<"
         except Exception:
@@ -1670,7 +1687,7 @@ class Segy(futils):
         input_length = len(hexnum)
         for i in range(input_length):
             for index in range(len(HEXCHAR)):
-                if string.upper(hexnum[i]) == HEXCHAR[index]:
+                if hexnum[i].upper() == HEXCHAR[index]:
                     retval = retval + index * (16**(input_length - (1 + i)))
         return retval
 
@@ -1690,7 +1707,7 @@ class Segy(futils):
 #########################################################
 if __name__ == "__main__":
 
-    VERSION = "2022.1.0.0"
+    VERSION = "2008.204"
     filecnt = 0
     # based on traverse routine in "python standard library", Lundh pg 34
 
@@ -1706,8 +1723,8 @@ if __name__ == "__main__":
         while stack:
             directory = stack.pop()
             if not os.path.isdir(directory):
-                print("\n***WARNING*** Directory \"%s\" not found.\n" %
-                      directory)
+                print("\n***WARNING*** Directory \"%s\" not found.\n"
+                      % directory)
                 continue
             # else :
             for file in os.listdir(directory):
@@ -1740,34 +1757,34 @@ if __name__ == "__main__":
                                     # file
                                     filesize = newfile.filesize
                                     blksize = newfile.blksize
-                                    (numblocks, odd_size) = divmod(
-                                        filesize, blksize)
+                                    (numblocks, odd_size) = \
+                                        divmod(filesize, blksize)
                                     if odd_size:
                                         rwError += 1
                                         continue
-                                except Exception:
+                                except Exception as e:
                                     rwError += 1
                                     continue
 
                                 type = newfile.type
-                                serial = string.strip(newfile.FH.Stat)
-                                chan = string.strip(newfile.FH.Chan)
-                                loc = string.strip(newfile.FH.Loc)
-                                net = string.strip(newfile.FH.Net)
+                                serial = newfile.FH.Stat.strip()
+                                chan = newfile.FH.Chan.strip()
+                                loc = newfile.FH.Loc.strip()
+                                net = newfile.FH.Net.strip()
                                 time = newfile.time
                                 rate = newfile.rate
                                 length = newfile.tracelength()
                                 # length = "NULL"
-                                file_list[fullname] = (type, serial, chan,
-                                                       time, rate, length,
-                                                       newfile.ByteOrder())
+                                file_list[fullname] = (
+                                    type, serial, chan, time, rate, length,
+                                    newfile.ByteOrder())
                                 newfile.close()
-                        except Exception:
+                        except Exception as e:
                             rwError += 1
                             pass
-                # if os.path.isdir(fullname) and not os.path.islink(fullname) :
-                if (os.path.isdir(fullname) or (os.path.islink(fullname) and
-                                                not os.path.isfile(fullname))):
+                # if os.path.isdir(fullname) and not os.path.islink(fullname):
+                if os.path.isdir(fullname) or (os.path.islink(fullname) and
+                                               not os.path.isfile(fullname)):
                     stack.append(fullname)
         return file_list, rwError
 
@@ -1787,7 +1804,7 @@ if __name__ == "__main__":
     Dirs.append(".")
     # Dirs.append("/Users/bruce/data/uniq")
     (file_list, rwError) = GetTrace(Dirs)
-    for file in list(file_list.keys()):
+    for file in file_list:
         file_type = file_list[file][0]
         if file_type == "segy":
             segynum += 1
@@ -1796,17 +1813,18 @@ if __name__ == "__main__":
             #       file_list[file][3], file_list[file][4], file_list[file][5],
             #       file_list[file][6])
         elif file_type == "mseed":
-            # if file_type == "mseed":
+            # if file_type == "mseed" :
             mseednum += 1
             # print("\n MSEED \n")
             # print("mseed: ", file_list[file][1], file_list[file][2],
             #       file_list[file][3], file_list[file][4], file_list[file][5],
             #       file_list[file][6])
+
         # else :
-            # unknownnum += 1
-            # print("\n Format Not Recognized \n")
+        #     unknownnum += 1
+        #     print("\n Format Not Recognized \n")
     print("\nTotal Files Found = %i " % filecnt)
-    print("SEGY Files Processed = %i \nMSEED Files Processed = %i" %
-          (segynum, mseednum))
+    print("SEGY Files Processed = %i \nMSEED Files Processed = %i"
+          % (segynum, mseednum))
     print("Total RWErrors = %i " % rwError)
     print("Total Files Identified = %i" % len(file_list))