diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -64,3 +64,11 @@
 ## 0.5.0.3 -- 2023-09-01
 
 * Added homepage and bug-reports fields to cabal file.
+
+## 0.5.0.4 -- 2023-09-01
+
+* Added small initial test suite.
+
+## 0.6.0.0 -- 2023-09-04
+
+* Removed tag section of headers and changed those affected from data to newtypes.
diff --git a/hs-samtools.cabal b/hs-samtools.cabal
--- a/hs-samtools.cabal
+++ b/hs-samtools.cabal
@@ -20,7 +20,7 @@
 -- PVP summary:     +-+------- breaking API changes
 --                  | | +----- non-breaking API additions
 --                  | | | +--- code changes with no API change
-version:            0.5.0.3
+version:            0.6.0.0
 
 -- A short (one-line) description of the package.
 synopsis: Read and write SAM, BAM, and CRAM files.
@@ -176,4 +176,5 @@
     -- Test dependencies.
     build-depends:
         base ^>=4.17.1.0,
+        hspec == 2.11.4,
         hs-samtools
diff --git a/src/Data/SAM/Version1_6/Alignment/BOPT.hs b/src/Data/SAM/Version1_6/Alignment/BOPT.hs
--- a/src/Data/SAM/Version1_6/Alignment/BOPT.hs
+++ b/src/Data/SAM/Version1_6/Alignment/BOPT.hs
@@ -269,10 +269,10 @@
                                       value
        ) =
     "SAM_V1_6_Alignment_BOPT_Float { " ++
-    "tag  = "                           ++
-    (show tag)                          ++
-    " , type = "                        ++
-    (show bopttype)                     ++
-    " , value = "                       ++
-    (show value)                        ++
+    "tag  = "                          ++
+    (show tag)                         ++
+    " , type = "                       ++
+    (show bopttype)                    ++
+    " , value = "                      ++
+    (show value)                       ++
     " }"
diff --git a/src/Data/SAM/Version1_6/Header/CO.hs b/src/Data/SAM/Version1_6/Header/CO.hs
--- a/src/Data/SAM/Version1_6/Header/CO.hs
+++ b/src/Data/SAM/Version1_6/Header/CO.hs
@@ -33,8 +33,8 @@
 -- | Custom SAM (version 1.6) @"SAM_V1_6_One_Line_Comment"@ data type.
 --
 -- See section 1.3 of the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
-data SAM_V1_6_One_Line_Comment = SAM_V1_6_One_Line_Comment { sam_v1_6_one_line_comment_value :: ByteString
-                                                           }
+newtype SAM_V1_6_One_Line_Comment = SAM_V1_6_One_Line_Comment { sam_v1_6_one_line_comment_value :: ByteString
+                                                              }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_One_Line_Comment where
@@ -42,6 +42,6 @@
 
 instance Show SAM_V1_6_One_Line_Comment where
   show (SAM_V1_6_One_Line_Comment value) = "SAM_V1_6_One_Line_Comment { " ++
-                                               "value = "                     ++
-                                               (show value)                   ++
-                                               " }"
+                                           "value = "                     ++
+                                           (show value)                   ++
+                                           " }"
diff --git a/src/Data/SAM/Version1_6/Header/HD.hs b/src/Data/SAM/Version1_6/Header/HD.hs
--- a/src/Data/SAM/Version1_6/Header/HD.hs
+++ b/src/Data/SAM/Version1_6/Header/HD.hs
@@ -33,8 +33,6 @@
 
 import Data.ByteString
 import Data.Data
-import Data.Sequence
-import Data.Word
 import Generics.Deriving.Base
 
 -- | Custom SAM (version 1.6) @"SAM_V1_6_File_Level_Metadata"@ data type.
@@ -61,73 +59,61 @@
     " }" 
 
 -- | VN tag for @"SAM_V1_6_File_Level_Metadata"@.
-data SAM_V1_6_File_Level_Metadata_Format_Version = SAM_V1_6_File_Level_Metadata_Format_Version { sam_v1_6_file_level_metadata_format_version_tag   :: Seq Word8
-                                                                                               , sam_v1_6_file_level_metadata_format_version_value :: ByteString
-                                                                                               }
+newtype SAM_V1_6_File_Level_Metadata_Format_Version = SAM_V1_6_File_Level_Metadata_Format_Version { sam_v1_6_file_level_metadata_format_version_value :: ByteString
+                                                                                                  }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_File_Level_Metadata_Format_Version where
-  SAM_V1_6_File_Level_Metadata_Format_Version sam_v1_6_file_level_metadata_format_version_tag1 sam_v1_6_file_level_metadata_format_version_value1 == SAM_V1_6_File_Level_Metadata_Format_Version sam_v1_6_file_level_metadata_format_version_tag2 sam_v1_6_file_level_metadata_format_version_value2 = sam_v1_6_file_level_metadata_format_version_tag1 == sam_v1_6_file_level_metadata_format_version_tag2 && sam_v1_6_file_level_metadata_format_version_value1 == sam_v1_6_file_level_metadata_format_version_value2
+  SAM_V1_6_File_Level_Metadata_Format_Version sam_v1_6_file_level_metadata_format_version_value1 == SAM_V1_6_File_Level_Metadata_Format_Version sam_v1_6_file_level_metadata_format_version_value2 = sam_v1_6_file_level_metadata_format_version_value1 == sam_v1_6_file_level_metadata_format_version_value2
 
 instance Show SAM_V1_6_File_Level_Metadata_Format_Version where
-  show (SAM_V1_6_File_Level_Metadata_Format_Version tag value) =
+  show (SAM_V1_6_File_Level_Metadata_Format_Version value) =
     "SAM_V1_6_File_Level_Metadata_Format_Version { " ++
-    "tag = "                                         ++
-    (show tag)                                       ++
-    " , value = "                                    ++
+    "value = "                                       ++
     (show value)                                     ++
     " }"
 
 -- | SO tag for @"SAM_V1_6_File_Level_Metadata"@.
-data SAM_V1_6_File_Level_Metadata_Sorting_Order = SAM_V1_6_File_Level_Metadata_Sorting_Order { sam_v1_6_file_level_metadata_sorting_order_tag   :: Seq Word8
-                                                                                             , sam_v1_6_file_level_metadata_sorting_order_value :: ByteString
-                                                                                             }
+newtype SAM_V1_6_File_Level_Metadata_Sorting_Order = SAM_V1_6_File_Level_Metadata_Sorting_Order { sam_v1_6_file_level_metadata_sorting_order_value :: ByteString
+                                                                                                }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_File_Level_Metadata_Sorting_Order where
-  SAM_V1_6_File_Level_Metadata_Sorting_Order sam_v1_6_file_level_metadata_sorting_order_tag1 sam_v1_6_file_level_metadata_sorting_order_value1 == SAM_V1_6_File_Level_Metadata_Sorting_Order sam_v1_6_file_level_metadata_sorting_order_tag2 sam_v1_6_file_level_metadata_sorting_order_value2 = sam_v1_6_file_level_metadata_sorting_order_tag1 == sam_v1_6_file_level_metadata_sorting_order_tag2 && sam_v1_6_file_level_metadata_sorting_order_value1 == sam_v1_6_file_level_metadata_sorting_order_value2
+  SAM_V1_6_File_Level_Metadata_Sorting_Order sam_v1_6_file_level_metadata_sorting_order_value1 == SAM_V1_6_File_Level_Metadata_Sorting_Order sam_v1_6_file_level_metadata_sorting_order_value2 = sam_v1_6_file_level_metadata_sorting_order_value1 == sam_v1_6_file_level_metadata_sorting_order_value2
 
 instance Show SAM_V1_6_File_Level_Metadata_Sorting_Order where
-  show (SAM_V1_6_File_Level_Metadata_Sorting_Order tag value) =
+  show (SAM_V1_6_File_Level_Metadata_Sorting_Order value) =
     "SAM_V1_6_File_Level_Metadata_Sorting_Order { " ++
-    "tag = "                                        ++
-    (show tag)                                      ++
-    " , value = "                                   ++
+    "value = "                                      ++
     (show value)                                    ++
     " }"
 
 -- | GO tag for @"SAM_V1_6_File_Level_Metadata"@.
-data SAM_V1_6_File_Level_Metadata_Alignment_Grouping = SAM_V1_6_File_Level_Metadata_Alignment_Grouping { sam_v1_6_file_level_metadata_alignment_grouping_tag   :: Seq Word8
-                                                                                                       , sam_v1_6_file_level_metadata_alignment_grouping_value :: ByteString
-                                                                                                       }
+newtype SAM_V1_6_File_Level_Metadata_Alignment_Grouping = SAM_V1_6_File_Level_Metadata_Alignment_Grouping { sam_v1_6_file_level_metadata_alignment_grouping_value :: ByteString
+                                                                                                          }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_File_Level_Metadata_Alignment_Grouping where
-  SAM_V1_6_File_Level_Metadata_Alignment_Grouping sam_v1_6_file_level_metadata_alignment_grouping_tag1 sam_v1_6_file_level_metadata_alignment_grouping_value1 == SAM_V1_6_File_Level_Metadata_Alignment_Grouping sam_v1_6_file_level_metadata_alignment_grouping_tag2 sam_v1_6_file_level_metadata_alignment_grouping_value2 = sam_v1_6_file_level_metadata_alignment_grouping_tag1 == sam_v1_6_file_level_metadata_alignment_grouping_tag2 && sam_v1_6_file_level_metadata_alignment_grouping_value1 == sam_v1_6_file_level_metadata_alignment_grouping_value2
+  SAM_V1_6_File_Level_Metadata_Alignment_Grouping sam_v1_6_file_level_metadata_alignment_grouping_value1 == SAM_V1_6_File_Level_Metadata_Alignment_Grouping sam_v1_6_file_level_metadata_alignment_grouping_value2 = sam_v1_6_file_level_metadata_alignment_grouping_value1 == sam_v1_6_file_level_metadata_alignment_grouping_value2
 
 instance Show SAM_V1_6_File_Level_Metadata_Alignment_Grouping where
-  show (SAM_V1_6_File_Level_Metadata_Alignment_Grouping tag value) =
+  show (SAM_V1_6_File_Level_Metadata_Alignment_Grouping value) =
     "SAM_V1_6_File_Level_Metadata_Alignment_Grouping { " ++
-    "tag = "                                             ++
-    (show tag)                                           ++
-    " , value = "                                        ++
+    "value = "                                           ++
     (show value)                                         ++
     " }"
 
 -- | SS tag for @"SAM_V1_6_File_Level_Metadata"@.
-data SAM_V1_6_File_Level_Metadata_SubSorting_Order = SAM_V1_6_File_Level_Metadata_SubSorting_Order { sam_v1_6_file_level_metadata_subsorting_order_tag   :: Seq Word8
-                                                                                                   , sam_v1_6_file_level_metadata_subsorting_order_value :: ByteString
-                                                                                                   }
+newtype SAM_V1_6_File_Level_Metadata_SubSorting_Order = SAM_V1_6_File_Level_Metadata_SubSorting_Order { sam_v1_6_file_level_metadata_subsorting_order_value :: ByteString
+                                                                                                      }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_File_Level_Metadata_SubSorting_Order where
-  SAM_V1_6_File_Level_Metadata_SubSorting_Order sam_v1_6_file_level_metadata_subsorting_order_tag1 sam_v1_6_file_level_metadata_subsorting_order_value1 == SAM_V1_6_File_Level_Metadata_SubSorting_Order sam_v1_6_file_level_metadata_subsorting_order_tag2 sam_v1_6_file_level_metadata_subsorting_order_value2 = sam_v1_6_file_level_metadata_subsorting_order_tag1 == sam_v1_6_file_level_metadata_subsorting_order_tag2 && sam_v1_6_file_level_metadata_subsorting_order_value1 == sam_v1_6_file_level_metadata_subsorting_order_value2
+  SAM_V1_6_File_Level_Metadata_SubSorting_Order sam_v1_6_file_level_metadata_subsorting_order_value1 == SAM_V1_6_File_Level_Metadata_SubSorting_Order sam_v1_6_file_level_metadata_subsorting_order_value2 = sam_v1_6_file_level_metadata_subsorting_order_value1 == sam_v1_6_file_level_metadata_subsorting_order_value2
 
 instance Show SAM_V1_6_File_Level_Metadata_SubSorting_Order where
-  show (SAM_V1_6_File_Level_Metadata_SubSorting_Order tag value) =
+  show (SAM_V1_6_File_Level_Metadata_SubSorting_Order value) =
     "SAM_V1_6_File_Level_Metadata_SubSorting_Order { " ++
-    "tag = "                                           ++
-    (show tag)                                         ++
-    " , value = "                                      ++
+    "value = "                                         ++
     (show value)                                       ++
     " }"
diff --git a/src/Data/SAM/Version1_6/Header/PG.hs b/src/Data/SAM/Version1_6/Header/PG.hs
--- a/src/Data/SAM/Version1_6/Header/PG.hs
+++ b/src/Data/SAM/Version1_6/Header/PG.hs
@@ -35,8 +35,6 @@
 
 import Data.ByteString
 import Data.Data
-import Data.Sequence
-import Data.Word
 import Generics.Deriving.Base
 
 -- | Custom SAM (version 1.6) @"SAM_V1_6_Program"@ data type.
@@ -69,109 +67,91 @@
     " }"
 
 -- | ID tag for @"SAM_V1_6_Program"@.
-data SAM_V1_6_Program_Record_Identifier = SAM_V1_6_Program_Record_Identifier { sam_v1_6_program_record_identifier_tag   :: Seq Word8
-                                                                             , sam_v1_6_program_record_identifier_value :: ByteString
-                                                                             }
+newtype SAM_V1_6_Program_Record_Identifier = SAM_V1_6_Program_Record_Identifier { sam_v1_6_program_record_identifier_value :: ByteString
+                                                                                }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Program_Record_Identifier where
-  SAM_V1_6_Program_Record_Identifier sam_v1_6_program_record_identifier_tag1 sam_v1_6_program_record_identifier_value1 == SAM_V1_6_Program_Record_Identifier sam_v1_6_program_record_identifier_tag2 sam_v1_6_program_record_identifier_value2 = sam_v1_6_program_record_identifier_tag1 == sam_v1_6_program_record_identifier_tag2 && sam_v1_6_program_record_identifier_value1 == sam_v1_6_program_record_identifier_value2
+  SAM_V1_6_Program_Record_Identifier sam_v1_6_program_record_identifier_value1 == SAM_V1_6_Program_Record_Identifier sam_v1_6_program_record_identifier_value2 = sam_v1_6_program_record_identifier_value1 == sam_v1_6_program_record_identifier_value2
 
 instance Show SAM_V1_6_Program_Record_Identifier where
-  show (SAM_V1_6_Program_Record_Identifier tag value) =
+  show (SAM_V1_6_Program_Record_Identifier value) =
     "SAM_V1_6_Program_Record_Identifier { " ++
-    "tag = "                                ++
-    (show tag)                              ++
-    " , value = "                           ++
+    "value = "                              ++
     (show value)                            ++
     " }"
 
 -- | PN tag for @"SAM_V1_6_Program"@.
-data SAM_V1_6_Program_Name = SAM_V1_6_Program_Name { sam_v1_6_program_name_tag   :: Seq Word8
-                                                   , sam_v1_6_program_name_value :: ByteString
-                                                   }
+newtype SAM_V1_6_Program_Name = SAM_V1_6_Program_Name { sam_v1_6_program_name_value :: ByteString
+                                                      }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Program_Name where
-  SAM_V1_6_Program_Name sam_v1_6_program_name_tag1 sam_v1_6_program_name_value1 == SAM_V1_6_Program_Name sam_v1_6_program_name_tag2 sam_v1_6_program_name_value2 = sam_v1_6_program_name_tag1 == sam_v1_6_program_name_tag2 && sam_v1_6_program_name_value1 == sam_v1_6_program_name_value2
+  SAM_V1_6_Program_Name sam_v1_6_program_name_value1 == SAM_V1_6_Program_Name sam_v1_6_program_name_value2 = sam_v1_6_program_name_value1 == sam_v1_6_program_name_value2
 
 instance Show SAM_V1_6_Program_Name where
-  show (SAM_V1_6_Program_Name tag value) =
+  show (SAM_V1_6_Program_Name value) =
     "SAM_V1_6_Program_Name { " ++
-    "tag = "                   ++
-    (show tag)                 ++
-    " , value = "              ++
+    "value = "                 ++
     (show value)               ++
     " }"
 
 -- | CL tag for @"SAM_V1_6_Program"@.
-data SAM_V1_6_Program_Command_Line = SAM_V1_6_Program_Command_Line { sam_v1_6_program_command_line_tag   :: Seq Word8
-                                                                   , sam_v1_6_program_command_line_value :: ByteString
-                                                                   }
+newtype SAM_V1_6_Program_Command_Line = SAM_V1_6_Program_Command_Line { sam_v1_6_program_command_line_value :: ByteString
+                                                                      }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Program_Command_Line where
-  SAM_V1_6_Program_Command_Line sam_v1_6_program_command_line_tag1 sam_v1_6_program_command_line_value1 == SAM_V1_6_Program_Command_Line sam_v1_6_program_command_line_tag2 sam_v1_6_program_command_line_value2 = sam_v1_6_program_command_line_tag1 == sam_v1_6_program_command_line_tag2 && sam_v1_6_program_command_line_value1 == sam_v1_6_program_command_line_value2
+  SAM_V1_6_Program_Command_Line sam_v1_6_program_command_line_value1 == SAM_V1_6_Program_Command_Line sam_v1_6_program_command_line_value2 = sam_v1_6_program_command_line_value1 == sam_v1_6_program_command_line_value2
 
 instance Show SAM_V1_6_Program_Command_Line where
-  show (SAM_V1_6_Program_Command_Line tag value) =
+  show (SAM_V1_6_Program_Command_Line value) =
     "SAM_V1_6_Program_Command_Line { " ++
-    "tag = "                           ++
-    (show tag)                         ++
-    " , value = "                      ++
+    "value = "                         ++
     (show value)                       ++
     " }"
 
 -- | PP tag for @"SAM_V1_6_Program"@.
-data SAM_V1_6_Program_Previous_PG_ID = SAM_V1_6_Program_Previous_PG_ID { sam_v1_6_program_previous_pg_id_tag   :: Seq Word8
-                                                                       , sam_v1_6_program_previous_pg_id_value :: ByteString
-                                                                       }
+newtype SAM_V1_6_Program_Previous_PG_ID = SAM_V1_6_Program_Previous_PG_ID { sam_v1_6_program_previous_pg_id_value :: ByteString
+                                                                          }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Program_Previous_PG_ID where
-  SAM_V1_6_Program_Previous_PG_ID sam_v1_6_program_previous_pg_id_tag1 sam_v1_6_program_previous_pg_id_value1 == SAM_V1_6_Program_Previous_PG_ID sam_v1_6_program_previous_pg_id_tag2 sam_v1_6_program_previous_pg_id_value2 = sam_v1_6_program_previous_pg_id_tag1 == sam_v1_6_program_previous_pg_id_tag2 && sam_v1_6_program_previous_pg_id_value1 == sam_v1_6_program_previous_pg_id_value2
+  SAM_V1_6_Program_Previous_PG_ID sam_v1_6_program_previous_pg_id_value1 == SAM_V1_6_Program_Previous_PG_ID sam_v1_6_program_previous_pg_id_value2 = sam_v1_6_program_previous_pg_id_value1 == sam_v1_6_program_previous_pg_id_value2
 
 instance Show SAM_V1_6_Program_Previous_PG_ID where
-  show (SAM_V1_6_Program_Previous_PG_ID tag value) =
+  show (SAM_V1_6_Program_Previous_PG_ID value) =
     "SAM_V1_6_Program_Previous_PG_ID { " ++
-    "tag = "                             ++
-    (show tag)                           ++
-    " , value = "                        ++
+    "value = "                           ++
     (show value)                         ++
     " }"
 
 -- | DS tag for @"SAM_V1_6_Program"@.
-data SAM_V1_6_Program_Description = SAM_V1_6_Program_Description { sam_v1_6_program_description_tag   :: Seq Word8
-                                                                 , sam_v1_6_program_description_value :: ByteString
-                                                                 }
+newtype SAM_V1_6_Program_Description = SAM_V1_6_Program_Description { sam_v1_6_program_description_value :: ByteString
+                                                                    }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Program_Description where
-  SAM_V1_6_Program_Description sam_v1_6_program_description_tag1 sam_v1_6_program_description_value1 == SAM_V1_6_Program_Description sam_v1_6_program_description_tag2 sam_v1_6_program_description_value2 = sam_v1_6_program_description_tag1 == sam_v1_6_program_description_tag2 && sam_v1_6_program_description_value1 == sam_v1_6_program_description_value2
+  SAM_V1_6_Program_Description sam_v1_6_program_description_value1 == SAM_V1_6_Program_Description sam_v1_6_program_description_value2 = sam_v1_6_program_description_value1 == sam_v1_6_program_description_value2
 
 instance Show SAM_V1_6_Program_Description where
-  show (SAM_V1_6_Program_Description tag value) =
+  show (SAM_V1_6_Program_Description value) =
     "SAM_V1_6_Program_Description { " ++
-    "tag = "                          ++
-    (show tag)                        ++
-    " , value = "                     ++
+    "value = "                        ++
     (show value)                      ++
     " }"
 
 -- | VN tag for @"SAM_V1_6_Program"@.
-data SAM_V1_6_Program_Version = SAM_V1_6_Program_Version { sam_v1_6_program_version_tag   :: Seq Word8
-                                                         , sam_v1_6_program_version_value :: ByteString
-                                                         }
+newtype SAM_V1_6_Program_Version = SAM_V1_6_Program_Version { sam_v1_6_program_version_value :: ByteString
+                                                            }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Program_Version where
-  SAM_V1_6_Program_Version sam_v1_6_program_version_tag1 sam_v1_6_program_version_value1 == SAM_V1_6_Program_Version sam_v1_6_program_version_tag2 sam_v1_6_program_version_value2 = sam_v1_6_program_version_tag1 == sam_v1_6_program_version_tag2 && sam_v1_6_program_version_value1 == sam_v1_6_program_version_value2
+  SAM_V1_6_Program_Version sam_v1_6_program_version_value1 == SAM_V1_6_Program_Version sam_v1_6_program_version_value2 = sam_v1_6_program_version_value1 == sam_v1_6_program_version_value2
 
 instance Show SAM_V1_6_Program_Version where
-  show (SAM_V1_6_Program_Version tag value) =
+  show (SAM_V1_6_Program_Version value) =
     "SAM_V1_6_Program_Version { " ++
-    "tag = "                      ++
-    (show tag)                    ++
-    " , value = "                 ++
+    "value = "                    ++
     (show value)                  ++
     " }"
diff --git a/src/Data/SAM/Version1_6/Header/RG.hs b/src/Data/SAM/Version1_6/Header/RG.hs
--- a/src/Data/SAM/Version1_6/Header/RG.hs
+++ b/src/Data/SAM/Version1_6/Header/RG.hs
@@ -43,8 +43,6 @@
 
 import Data.ByteString
 import Data.Data
-import Data.Sequence
-import Data.Word
 import Generics.Deriving.Base
 
 -- | Custom SAM (version 1.6) @"SAM_V1_6_Read_Group"@ data type.
@@ -114,253 +112,211 @@
     " }"
 
 -- | ID tag for @"SAM_V1_6_Read_Group"@.
-data SAM_V1_6_Read_Group_Identifier = SAM_V1_6_Read_Group_Identifier { sam_v1_6_read_group_identifier_tag   :: Seq Word8
-                                                                     , sam_v1_6_read_group_identifier_value :: ByteString
-                                                                     }
+newtype SAM_V1_6_Read_Group_Identifier = SAM_V1_6_Read_Group_Identifier { sam_v1_6_read_group_identifier_value :: ByteString
+                                                                        }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Read_Group_Identifier where
-  SAM_V1_6_Read_Group_Identifier sam_v1_6_read_group_identifier_tag1 sam_v1_6_read_group_identifier_value1 == SAM_V1_6_Read_Group_Identifier sam_v1_6_read_group_identifier_tag2 sam_v1_6_read_group_identifier_value2 = sam_v1_6_read_group_identifier_tag1 == sam_v1_6_read_group_identifier_tag2 && sam_v1_6_read_group_identifier_value1 == sam_v1_6_read_group_identifier_value2
+  SAM_V1_6_Read_Group_Identifier sam_v1_6_read_group_identifier_value1 == SAM_V1_6_Read_Group_Identifier sam_v1_6_read_group_identifier_value2 = sam_v1_6_read_group_identifier_value1 == sam_v1_6_read_group_identifier_value2
 
 instance Show SAM_V1_6_Read_Group_Identifier where
-  show (SAM_V1_6_Read_Group_Identifier tag value) =
+  show (SAM_V1_6_Read_Group_Identifier value) =
     "SAM_V1_6_Read_Group_Identifier { " ++
-    "tag = "                            ++
-    (show tag)                          ++
-    " , value = "                       ++
+    "value = "                          ++
     (show value)                        ++
     " }"
 
 -- | BC tag for @"SAM_V1_6_Read_Group"@.
-data SAM_V1_6_Read_Group_Barcode_Sequence = SAM_V1_6_Read_Group_Barcode_Sequence { sam_v1_6_read_group_barcode_sequence_tag   :: Seq Word8
-                                                                                 , sam_v1_6_read_group_barcode_sequence_value :: ByteString
-                                                                                 }
+newtype SAM_V1_6_Read_Group_Barcode_Sequence = SAM_V1_6_Read_Group_Barcode_Sequence { sam_v1_6_read_group_barcode_sequence_value :: ByteString
+                                                                                    }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Read_Group_Barcode_Sequence where
-  SAM_V1_6_Read_Group_Barcode_Sequence sam_v1_6_read_group_barcode_sequence_tag1 sam_v1_6_read_group_barcode_sequence_value1 == SAM_V1_6_Read_Group_Barcode_Sequence sam_v1_6_read_group_barcode_sequence_tag2 sam_v1_6_read_group_barcode_sequence_value2 = sam_v1_6_read_group_barcode_sequence_tag1 == sam_v1_6_read_group_barcode_sequence_tag2 && sam_v1_6_read_group_barcode_sequence_value1 == sam_v1_6_read_group_barcode_sequence_value2
+  SAM_V1_6_Read_Group_Barcode_Sequence sam_v1_6_read_group_barcode_sequence_value1 == SAM_V1_6_Read_Group_Barcode_Sequence sam_v1_6_read_group_barcode_sequence_value2 = sam_v1_6_read_group_barcode_sequence_value1 == sam_v1_6_read_group_barcode_sequence_value2
 
 instance Show SAM_V1_6_Read_Group_Barcode_Sequence where
-  show (SAM_V1_6_Read_Group_Barcode_Sequence tag value) =
+  show (SAM_V1_6_Read_Group_Barcode_Sequence value) =
     "SAM_V1_6_Read_Group_Barcode_Sequence { " ++
-    "tag = "                                  ++
-    (show tag)                                ++
-    " , value = "                             ++
+    "value = "                                ++
     (show value)                              ++
     " }"
 
 -- | CN tag for @"SAM_V1_6_Read_Group"@.
-data SAM_V1_6_Read_Group_Sequencing_Center = SAM_V1_6_Read_Group_Sequencing_Center { sam_v1_6_read_group_sequencing_center_tag   :: Seq Word8
-                                                                                   , sam_v1_6_read_group_sequencing_center_value :: ByteString
-                                                                                   }
+newtype SAM_V1_6_Read_Group_Sequencing_Center = SAM_V1_6_Read_Group_Sequencing_Center { sam_v1_6_read_group_sequencing_center_value :: ByteString
+                                                                                      }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Read_Group_Sequencing_Center where
-  SAM_V1_6_Read_Group_Sequencing_Center sam_v1_6_read_group_sequencing_center_tag1 sam_v1_6_read_group_sequencing_center_value1 == SAM_V1_6_Read_Group_Sequencing_Center sam_v1_6_read_group_sequencing_center_tag2 sam_v1_6_read_group_sequencing_center_value2 = sam_v1_6_read_group_sequencing_center_tag1 == sam_v1_6_read_group_sequencing_center_tag2 && sam_v1_6_read_group_sequencing_center_value1 == sam_v1_6_read_group_sequencing_center_value2
+  SAM_V1_6_Read_Group_Sequencing_Center sam_v1_6_read_group_sequencing_center_value1 == SAM_V1_6_Read_Group_Sequencing_Center sam_v1_6_read_group_sequencing_center_value2 = sam_v1_6_read_group_sequencing_center_value1 == sam_v1_6_read_group_sequencing_center_value2
 
 instance Show SAM_V1_6_Read_Group_Sequencing_Center where
-  show (SAM_V1_6_Read_Group_Sequencing_Center tag value) =
+  show (SAM_V1_6_Read_Group_Sequencing_Center value) =
     "SAM_V1_6_Read_Group_Sequencing_Center { " ++
-    "tag = "                                   ++
-    (show tag)                                 ++
-    " , value = "                              ++
+    "value = "                                 ++
     (show value)                               ++
     " }"
 
 -- | DS tag for @"SAM_V1_6_Read_Group"@.
-data SAM_V1_6_Read_Group_Description = SAM_V1_6_Read_Group_Description { sam_v1_6_read_group_description_tag   :: Seq Word8
-                                                                       , sam_v1_6_read_group_description_value :: ByteString
-                                                                       }
+newtype SAM_V1_6_Read_Group_Description = SAM_V1_6_Read_Group_Description { sam_v1_6_read_group_description_value :: ByteString
+                                                                          }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Read_Group_Description where
-  SAM_V1_6_Read_Group_Description sam_v1_6_read_group_description_tag1 sam_v1_6_read_group_description_value1 == SAM_V1_6_Read_Group_Description sam_v1_6_read_group_description_tag2 sam_v1_6_read_group_description_value2 = sam_v1_6_read_group_description_tag1 == sam_v1_6_read_group_description_tag2 && sam_v1_6_read_group_description_value1 == sam_v1_6_read_group_description_value2
+  SAM_V1_6_Read_Group_Description sam_v1_6_read_group_description_value1 == SAM_V1_6_Read_Group_Description sam_v1_6_read_group_description_value2 = sam_v1_6_read_group_description_value1 == sam_v1_6_read_group_description_value2
 
 instance Show SAM_V1_6_Read_Group_Description where
-  show (SAM_V1_6_Read_Group_Description tag value) =
+  show (SAM_V1_6_Read_Group_Description value) =
     "SAM_V1_6_Read_Group_Description { " ++
-    "tag = "                             ++
-    (show tag)                           ++
-    " , value = "                        ++
+    "value = "                           ++
     (show value)                         ++
     " }"
 
 -- | DT tag for @"SAM_V1_6_Read_Group"@.
-data SAM_V1_6_Read_Group_Run_Date = SAM_V1_6_Read_Group_Run_Date { sam_v1_6_read_group_run_date_tag   :: Seq Word8
-                                                                 , sam_v1_6_read_group_run_date_value :: ByteString
-                                                                 }
+newtype SAM_V1_6_Read_Group_Run_Date = SAM_V1_6_Read_Group_Run_Date { sam_v1_6_read_group_run_date_value :: ByteString
+                                                                    }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Read_Group_Run_Date where
-  SAM_V1_6_Read_Group_Run_Date sam_v1_6_read_group_run_date_tag1 sam_v1_6_read_group_run_date_value1 == SAM_V1_6_Read_Group_Run_Date sam_v1_6_read_group_run_date_tag2 sam_v1_6_read_group_run_date_value2 = sam_v1_6_read_group_run_date_tag1 == sam_v1_6_read_group_run_date_tag2 && sam_v1_6_read_group_run_date_value1 == sam_v1_6_read_group_run_date_value2
+  SAM_V1_6_Read_Group_Run_Date sam_v1_6_read_group_run_date_value1 == SAM_V1_6_Read_Group_Run_Date sam_v1_6_read_group_run_date_value2 = sam_v1_6_read_group_run_date_value1 == sam_v1_6_read_group_run_date_value2
 
 instance Show SAM_V1_6_Read_Group_Run_Date where
-  show (SAM_V1_6_Read_Group_Run_Date tag value) =
+  show (SAM_V1_6_Read_Group_Run_Date value) =
     "SAM_V1_6_Read_Group_Run_Date { " ++
-    "tag = "                          ++
-    (show tag)                        ++
-    " , value = "                     ++
+    "value = "                        ++
     (show value)                      ++
     " }"
 
 -- | FO tag for @"SAM_V1_6_Read_Group"@.
-data SAM_V1_6_Read_Group_Flow_Order = SAM_V1_6_Read_Group_Flow_Order { sam_v1_6_read_group_flow_order_tag :: Seq Word8
-                                                                     , sam_v1_6_read_group_flow_order_value :: ByteString
-                                                                     }
+newtype SAM_V1_6_Read_Group_Flow_Order = SAM_V1_6_Read_Group_Flow_Order { sam_v1_6_read_group_flow_order_value :: ByteString
+                                                                        }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Read_Group_Flow_Order where
-  SAM_V1_6_Read_Group_Flow_Order sam_v1_6_read_group_flow_order_tag1 sam_v1_6_one_line_comment_value1 == SAM_V1_6_Read_Group_Flow_Order sam_v1_6_read_group_flow_order_tag2 sam_v1_6_read_group_flow_order_value2 = sam_v1_6_read_group_flow_order_tag1 == sam_v1_6_read_group_flow_order_tag2 && sam_v1_6_one_line_comment_value1 == sam_v1_6_read_group_flow_order_value2
+  SAM_V1_6_Read_Group_Flow_Order sam_v1_6_one_line_comment_value1 == SAM_V1_6_Read_Group_Flow_Order sam_v1_6_read_group_flow_order_value2 = sam_v1_6_one_line_comment_value1 == sam_v1_6_read_group_flow_order_value2
 
 instance Show SAM_V1_6_Read_Group_Flow_Order where
-  show (SAM_V1_6_Read_Group_Flow_Order tag value) =
+  show (SAM_V1_6_Read_Group_Flow_Order value) =
     "SAM_V1_6_Read_Group_Flow_Order { " ++
-    "tag = "                            ++
-    (show tag)                          ++
-    " , value = "                       ++
+    "value = "                          ++
     (show value)                        ++
     " }"
 
 -- | KS tag for @"SAM_V1_6_Read_Group"@.
-data SAM_V1_6_Read_Group_Key_Sequence = SAM_V1_6_Read_Group_Key_Sequence { sam_v1_6_read_group_key_sequence_tag   :: Seq Word8
-                                                                         , sam_v1_6_read_group_key_sequence_value :: ByteString
-                                                                         }
+newtype SAM_V1_6_Read_Group_Key_Sequence = SAM_V1_6_Read_Group_Key_Sequence { sam_v1_6_read_group_key_sequence_value :: ByteString
+                                                                            }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Read_Group_Key_Sequence where
-  SAM_V1_6_Read_Group_Key_Sequence sam_v1_6_read_group_key_sequence_tag1 sam_v1_6_read_group_key_sequence_value1 == SAM_V1_6_Read_Group_Key_Sequence sam_v1_6_read_group_key_sequence_tag2 sam_v1_6_read_group_key_sequence_value2 = sam_v1_6_read_group_key_sequence_tag1 == sam_v1_6_read_group_key_sequence_tag2 && sam_v1_6_read_group_key_sequence_value1 == sam_v1_6_read_group_key_sequence_value2
+  SAM_V1_6_Read_Group_Key_Sequence sam_v1_6_read_group_key_sequence_value1 == SAM_V1_6_Read_Group_Key_Sequence sam_v1_6_read_group_key_sequence_value2 = sam_v1_6_read_group_key_sequence_value1 == sam_v1_6_read_group_key_sequence_value2
 
 instance Show SAM_V1_6_Read_Group_Key_Sequence where
-  show (SAM_V1_6_Read_Group_Key_Sequence tag value) =
+  show (SAM_V1_6_Read_Group_Key_Sequence value) =
     "SAM_V1_6_Read_Group_Key_Sequence { " ++
-    "tag = "                              ++
-    (show tag)                            ++
-    " , value = "                         ++
+    "value = "                            ++
     (show value)                          ++
     " }"
 
 -- | LB tag for @"SAM_V1_6_Read_Group"@.
-data SAM_V1_6_Read_Group_Library = SAM_V1_6_Read_Group_Library { sam_v1_6_read_group_library_tag   :: Seq Word8
-                                                               , sam_v1_6_read_group_library_value :: ByteString
-                                                               }
+newtype SAM_V1_6_Read_Group_Library = SAM_V1_6_Read_Group_Library { sam_v1_6_read_group_library_value :: ByteString
+                                                                  }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Read_Group_Library where
-  SAM_V1_6_Read_Group_Library sam_v1_6_read_group_library_tag1 sam_v1_6_read_group_library_value1 == SAM_V1_6_Read_Group_Library sam_v1_6_read_group_library_tag2 sam_v1_6_read_group_library_value2 = sam_v1_6_read_group_library_tag1 == sam_v1_6_read_group_library_tag2 && sam_v1_6_read_group_library_value1 == sam_v1_6_read_group_library_value2
+  SAM_V1_6_Read_Group_Library sam_v1_6_read_group_library_value1 == SAM_V1_6_Read_Group_Library sam_v1_6_read_group_library_value2 = sam_v1_6_read_group_library_value1 == sam_v1_6_read_group_library_value2
 
 instance Show SAM_V1_6_Read_Group_Library where
-  show (SAM_V1_6_Read_Group_Library tag value) =
+  show (SAM_V1_6_Read_Group_Library value) =
     "SAM_V1_6_Read_Group_Library { " ++
-    "tag = "                         ++
-    (show tag)                       ++
-    " , value = "                    ++
+    "value = "                       ++
     (show value)                     ++
     " }"
 
 -- | PG tag for @"SAM_V1_6_Read_Group"@.
-data SAM_V1_6_Read_Group_Programs = SAM_V1_6_Read_Group_Programs { sam_v1_6_read_group_programs_tag   :: Seq Word8
-                                                                 , sam_v1_6_read_group_programs_value :: ByteString
-                                                                 }
+newtype SAM_V1_6_Read_Group_Programs = SAM_V1_6_Read_Group_Programs { sam_v1_6_read_group_programs_value :: ByteString
+                                                                    }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Read_Group_Programs where
-  SAM_V1_6_Read_Group_Programs sam_v1_6_read_group_programs_tag1 sam_v1_6_read_group_programs_value1 == SAM_V1_6_Read_Group_Programs sam_v1_6_read_group_programs_tag2 sam_v1_6_read_group_programs_value2 = sam_v1_6_read_group_programs_tag1 == sam_v1_6_read_group_programs_tag2 && sam_v1_6_read_group_programs_value1 == sam_v1_6_read_group_programs_value2
+  SAM_V1_6_Read_Group_Programs sam_v1_6_read_group_programs_value1 == SAM_V1_6_Read_Group_Programs sam_v1_6_read_group_programs_value2 = sam_v1_6_read_group_programs_value1 == sam_v1_6_read_group_programs_value2
 
 instance Show SAM_V1_6_Read_Group_Programs where
-  show (SAM_V1_6_Read_Group_Programs tag value) =
+  show (SAM_V1_6_Read_Group_Programs value) =
     "SAM_V1_6_Read_Group_Programs { " ++
-    "tag = "                          ++
-    (show tag)                        ++
-    " , value = "                     ++
+    "value = "                        ++
     (show value)                      ++
     " }"
 
 -- | PI tag for @"SAM_V1_6_Read_Group"@.
-data SAM_V1_6_Read_Group_Predicted_Median_Insert_Size = SAM_V1_6_Read_Group_Predicted_Median_Insert_Size { sam_v1_6_read_group_predicted_median_insert_size_tag   :: Seq Word8
-                                                                                                         , sam_v1_6_read_group_predicted_median_insert_size_value :: ByteString
-                                                                                                         }
+newtype SAM_V1_6_Read_Group_Predicted_Median_Insert_Size = SAM_V1_6_Read_Group_Predicted_Median_Insert_Size { sam_v1_6_read_group_predicted_median_insert_size_value :: ByteString
+                                                                                                            }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Read_Group_Predicted_Median_Insert_Size where
-  SAM_V1_6_Read_Group_Predicted_Median_Insert_Size sam_v1_6_read_group_predicted_median_insert_size_tag1 sam_v1_6_one_line_comment_value1 == SAM_V1_6_Read_Group_Predicted_Median_Insert_Size sam_v1_6_read_group_predicted_median_insert_size_tag2 sam_v1_6_read_group_predicted_median_insert_size_value2 = sam_v1_6_read_group_predicted_median_insert_size_tag1 == sam_v1_6_read_group_predicted_median_insert_size_tag2 && sam_v1_6_one_line_comment_value1 == sam_v1_6_read_group_predicted_median_insert_size_value2
+  SAM_V1_6_Read_Group_Predicted_Median_Insert_Size sam_v1_6_read_group_predicted_median_insert_size_value1 == SAM_V1_6_Read_Group_Predicted_Median_Insert_Size sam_v1_6_read_group_predicted_median_insert_size_value2 = sam_v1_6_read_group_predicted_median_insert_size_value1 == sam_v1_6_read_group_predicted_median_insert_size_value2
 
 instance Show SAM_V1_6_Read_Group_Predicted_Median_Insert_Size where
-  show (SAM_V1_6_Read_Group_Predicted_Median_Insert_Size tag value) =
+  show (SAM_V1_6_Read_Group_Predicted_Median_Insert_Size value) =
     "SAM_V1_6_Read_Group_Predicted_Median_Insert_Size { " ++
-    "tag = "                                              ++
-    (show tag)                                            ++
-    " , value = "                                         ++
+    "value = "                                            ++
     (show value)                                          ++
     " }"
 
 -- | PL tag for @"SAM_V1_6_Read_Group"@.
-data SAM_V1_6_Read_Group_Platform = SAM_V1_6_Read_Group_Platform { sam_v1_6_read_group_platform_tag   :: Seq Word8
-                                                                 , sam_v1_6_read_group_platform_value :: ByteString
-                                                                 }
+newtype SAM_V1_6_Read_Group_Platform = SAM_V1_6_Read_Group_Platform { sam_v1_6_read_group_platform_value :: ByteString
+                                                                    }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Read_Group_Platform where
-  SAM_V1_6_Read_Group_Platform sam_v1_6_read_group_platform_tag1 sam_v1_6_read_group_platform_value1 == SAM_V1_6_Read_Group_Platform sam_v1_6_read_group_platform_tag2 sam_v1_6_read_group_platform_value2 = sam_v1_6_read_group_platform_tag1 == sam_v1_6_read_group_platform_tag2 && sam_v1_6_read_group_platform_value1 == sam_v1_6_read_group_platform_value2
+  SAM_V1_6_Read_Group_Platform sam_v1_6_read_group_platform_value1 == SAM_V1_6_Read_Group_Platform sam_v1_6_read_group_platform_value2 = sam_v1_6_read_group_platform_value1 == sam_v1_6_read_group_platform_value2
 
 instance Show SAM_V1_6_Read_Group_Platform where
-  show (SAM_V1_6_Read_Group_Platform tag value) =
+  show (SAM_V1_6_Read_Group_Platform value) =
     "SAM_V1_6_Read_Group_Platform { " ++
-    "tag = "                          ++
-    (show tag)                        ++
-    " , value = "                     ++
+    "value = "                        ++
     (show value)                      ++
     " }"
 
 -- | PM tag for @"SAM_V1_6_Read_Group"@.
-data SAM_V1_6_Read_Group_Platform_Model = SAM_V1_6_Read_Group_Platform_Model { sam_v1_6_read_group_platform_model_tag   :: Seq Word8
-                                                                             , sam_v1_6_read_group_platform_model_value :: ByteString
-                                                                             }
+newtype SAM_V1_6_Read_Group_Platform_Model = SAM_V1_6_Read_Group_Platform_Model { sam_v1_6_read_group_platform_model_value :: ByteString
+                                                                                }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Read_Group_Platform_Model where
-  SAM_V1_6_Read_Group_Platform_Model sam_v1_6_read_group_platform_model_tag1 sam_v1_6_read_group_platform_model_value1 == SAM_V1_6_Read_Group_Platform_Model sam_v1_6_read_group_platform_model_tag2 sam_v1_6_read_group_platform_model_value2 = sam_v1_6_read_group_platform_model_tag1 == sam_v1_6_read_group_platform_model_tag2 && sam_v1_6_read_group_platform_model_value1 == sam_v1_6_read_group_platform_model_value2
+  SAM_V1_6_Read_Group_Platform_Model sam_v1_6_read_group_platform_model_value1 == SAM_V1_6_Read_Group_Platform_Model sam_v1_6_read_group_platform_model_value2 = sam_v1_6_read_group_platform_model_value1 == sam_v1_6_read_group_platform_model_value2
 
 instance Show SAM_V1_6_Read_Group_Platform_Model where
-  show (SAM_V1_6_Read_Group_Platform_Model tag value) =
+  show (SAM_V1_6_Read_Group_Platform_Model value) =
     "SAM_V1_6_Read_Group_Platform_Model { " ++
-    "tag = "                                ++
-    (show tag)                              ++
-    " , value = "                           ++
+    "value = "                              ++
     (show value)                            ++
     " }"
 
 -- | PU tag for @"SAM_V1_6_Read_Group"@.
-data SAM_V1_6_Read_Group_Platform_Unit = SAM_V1_6_Read_Group_Platform_Unit { sam_v1_6_read_group_platform_unit_tag   :: Seq Word8
-                                                                           , sam_v1_6_read_group_platform_unit_value :: ByteString
-                                                                           }
+newtype SAM_V1_6_Read_Group_Platform_Unit = SAM_V1_6_Read_Group_Platform_Unit { sam_v1_6_read_group_platform_unit_value :: ByteString
+                                                                              }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Read_Group_Platform_Unit where
-  SAM_V1_6_Read_Group_Platform_Unit sam_v1_6_read_group_platform_unit_tag1 sam_v1_6_read_group_platform_unit_value1 == SAM_V1_6_Read_Group_Platform_Unit sam_v1_6_read_group_platform_unit_tag2 sam_v1_6_read_group_platform_unit_value2 = sam_v1_6_read_group_platform_unit_tag1 == sam_v1_6_read_group_platform_unit_tag2 && sam_v1_6_read_group_platform_unit_value1 == sam_v1_6_read_group_platform_unit_value2
+  SAM_V1_6_Read_Group_Platform_Unit sam_v1_6_read_group_platform_unit_value1 == SAM_V1_6_Read_Group_Platform_Unit sam_v1_6_read_group_platform_unit_value2 = sam_v1_6_read_group_platform_unit_value1 == sam_v1_6_read_group_platform_unit_value2
 
 instance Show SAM_V1_6_Read_Group_Platform_Unit where
-  show (SAM_V1_6_Read_Group_Platform_Unit tag value) =
+  show (SAM_V1_6_Read_Group_Platform_Unit value) =
     "SAM_V1_6_Read_Group_Platform_Unit { " ++
-    "tag = "                               ++
-    (show tag)                             ++
-    " , value = "                          ++
+    "value = "                             ++
     (show value)                           ++
     " }"
 
 -- | SM tag for @"SAM_V1_6_Read_Group"@.
-data SAM_V1_6_Read_Group_Sample = SAM_V1_6_Read_Group_Sample { sam_v1_6_read_group_sample_tag   :: Seq Word8
-                                                             , sam_v1_6_read_group_sample_value :: ByteString
-                                                             }
+newtype SAM_V1_6_Read_Group_Sample = SAM_V1_6_Read_Group_Sample { sam_v1_6_read_group_sample_value :: ByteString
+                                                                }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Read_Group_Sample where
-  SAM_V1_6_Read_Group_Sample sam_v1_6_read_group_sample_tag1 sam_v1_6_read_group_sample_value1 == SAM_V1_6_Read_Group_Sample sam_v1_6_read_group_sample_tag2 sam_v1_6_read_group_sample_value2 = sam_v1_6_read_group_sample_tag1 == sam_v1_6_read_group_sample_tag2 && sam_v1_6_read_group_sample_value1 == sam_v1_6_read_group_sample_value2
+  SAM_V1_6_Read_Group_Sample sam_v1_6_read_group_sample_value1 == SAM_V1_6_Read_Group_Sample sam_v1_6_read_group_sample_value2 = sam_v1_6_read_group_sample_value1 == sam_v1_6_read_group_sample_value2
 
 instance Show SAM_V1_6_Read_Group_Sample where
-  show (SAM_V1_6_Read_Group_Sample tag value) =
+  show (SAM_V1_6_Read_Group_Sample value) =
     "SAM_V1_6_Read_Group_Sample { " ++
-    "tag = "                        ++
-    (show tag)                      ++
-    " , value = "                   ++
+    "value = "                      ++
     (show value)                    ++
     " }"
diff --git a/src/Data/SAM/Version1_6/Header/SQ.hs b/src/Data/SAM/Version1_6/Header/SQ.hs
--- a/src/Data/SAM/Version1_6/Header/SQ.hs
+++ b/src/Data/SAM/Version1_6/Header/SQ.hs
@@ -39,8 +39,6 @@
 
 import Data.ByteString
 import Data.Data
-import Data.Sequence
-import Data.Word
 import Generics.Deriving.Base
 
 -- | Custom SAM (version 1.6) @"SAM_V1_6_Reference_Sequence_Dictionary"@ data type.
@@ -95,177 +93,151 @@
     " }"
 
 -- | SN tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.
-data SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name { sam_v1_6_reference_sequence_dictionary_reference_sequence_name_tag   :: Seq Word8
-                                                                                                                                     , sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value :: ByteString 
-                         }
+newtype SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name { sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value :: ByteString 
+                                                                                                                                        }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name where
-  SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name sam_v1_6_reference_sequence_dictionary_reference_sequence_name_tag1 sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name sam_v1_6_reference_sequence_dictionary_reference_sequence_name_tag2 sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value2 = sam_v1_6_reference_sequence_dictionary_reference_sequence_name_tag1   == sam_v1_6_reference_sequence_dictionary_reference_sequence_name_tag2 && sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value1 == sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value2  
+  SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value2 = sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value1 == sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value2  
 
 instance Show SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name where
-  show (SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name tag value) =
+  show (SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name value) =
     "SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name { " ++
-    "tag = "                                                            ++
-    (show tag)                                                          ++
-    " , value = "                                                       ++
+    "value = "                                                          ++
     (show value)                                                        ++
     " }"
 
 -- | LN tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.
-data SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length { sam_v1_6_reference_sequence_dictionary_reference_sequence_length_tag   :: Seq Word8
-                                                                                                                                         , sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value :: ByteString
-                             }
+newtype SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length { sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value :: ByteString
+                                                                                                                                            }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length where
-  SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length sam_v1_6_reference_sequence_dictionary_reference_sequence_length_tag1 sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length sam_v1_6_reference_sequence_dictionary_reference_sequence_length_tag2 sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value2 = sam_v1_6_reference_sequence_dictionary_reference_sequence_length_tag1 == sam_v1_6_reference_sequence_dictionary_reference_sequence_length_tag2 && sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value1 == sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value2
+  SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value2 = sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value1 == sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value2
 
 instance Show SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length where
-  show (SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length tag value) =
+  show (SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length value) =
     "SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length { " ++
-    "tag = "                                                              ++
-    (show tag)                                                            ++
-    " , value = "                                                         ++
+    "value = "                                                            ++
     (show value)                                                          ++
     " }"
 
 -- | AH tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.
-data SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus = SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus { sam_v1_6_reference_sequence_dictionary_alternative_locus_tag   :: Seq Word8
-                                                                                                                         , sam_v1_6_reference_sequence_dictionary_alternative_locus_value :: ByteString
-             }
+newtype SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus = SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus { sam_v1_6_reference_sequence_dictionary_alternative_locus_value :: ByteString
+                                                                                                                            }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus where
-  SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus sam_v1_6_reference_sequence_dictionary_alternative_locus_tag1 sam_v1_6_reference_sequence_dictionary_alternative_locus_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus sam_v1_6_reference_sequence_dictionary_alternative_locus_tag2 sam_v1_6_reference_sequence_dictionary_alternative_locus_value2 = sam_v1_6_reference_sequence_dictionary_alternative_locus_tag1 == sam_v1_6_reference_sequence_dictionary_alternative_locus_tag2 && sam_v1_6_reference_sequence_dictionary_alternative_locus_value1 == sam_v1_6_reference_sequence_dictionary_alternative_locus_value2
+  SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus sam_v1_6_reference_sequence_dictionary_alternative_locus_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus sam_v1_6_reference_sequence_dictionary_alternative_locus_value2 = sam_v1_6_reference_sequence_dictionary_alternative_locus_value1 == sam_v1_6_reference_sequence_dictionary_alternative_locus_value2
 
 instance Show SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus where
-  show (SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus tag value) =
+  show (SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus value) =
     "SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus { " ++
-    "tag = "                                                      ++
-    (show tag)                                                    ++
-    " , value = "                                                 ++
+    "value = "                                                    ++
     (show value)                                                  ++
     " }"
 
 -- | AN tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.
-data SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names = SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names { sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_tag   :: Seq Word8
-                                                                                                                                                               , sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value :: ByteString
-                                                                                                                                                               }
+newtype SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names = SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names { sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value :: ByteString
+                                                                                                                                                                  }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names where
-  SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_tag1 sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_tag2 sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value2 = sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_tag1 == sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_tag2 && sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value1 == sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value2
+  SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value2 = sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value1 == sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value2
 
 instance Show SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names where
-  show (SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names tag value) = "SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names { " ++
-                                                                                                 "tag = "                                                                         ++
-                                                                                                 (show tag)                                                                       ++
-                                                                                                 " , value = "                                                                    ++
-                                                                                                 (show value)                                                                     ++
-                                                                                                 " }"
+  show (SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names value) =
+    "SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names { " ++
+    "value = "                                                                       ++
+    (show value)                                                                     ++
+    " }"
 
 -- | AS tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.
-data SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier = SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier { sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_tag   :: Seq Word8
-                                                                                                                                           , sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value :: ByteString
-                                                                                                                                           }
+newtype SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier = SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier { sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value :: ByteString
+                                                                                                                                              }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier where
-  SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_tag1 sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_tag2 sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value2 = sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_tag1 == sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_tag2 && sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value1 == sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value2
+  SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value2 = sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value1 == sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value2
 
 instance Show SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier where
-  show (SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier tag value) = "SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier { " ++
-                                                                                       "tag = "                                                               ++
-                                                                                       (show tag)                                                             ++
-                                                                                       " , value = "                                                          ++
-                                                                                       (show value)                                                           ++
-                                                                                       " }"
+  show (SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier value) =
+    "SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier { " ++
+    "value = "                                                             ++
+    (show value)                                                           ++
+    " }"
 
 -- | DS tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.
-data SAM_V1_6_Reference_Sequence_Dictionary_Description = SAM_V1_6_Reference_Sequence_Dictionary_Description { sam_v1_6_reference_sequence_dictionary_description_tag   :: Seq Word8
-                                                                                                             , sam_v1_6_reference_sequence_dictionary_description_value :: ByteString
-                                                                                                             }
+newtype SAM_V1_6_Reference_Sequence_Dictionary_Description = SAM_V1_6_Reference_Sequence_Dictionary_Description { sam_v1_6_reference_sequence_dictionary_description_value :: ByteString
+                                                                                                                }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Description where
-  SAM_V1_6_Reference_Sequence_Dictionary_Description sam_v1_6_reference_sequence_dictionary_description_tag1 sam_v1_6_reference_sequence_dictionary_description_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Description sam_v1_6_reference_sequence_dictionary_description_tag2 sam_v1_6_reference_sequence_dictionary_description_value2 = sam_v1_6_reference_sequence_dictionary_description_tag1 == sam_v1_6_reference_sequence_dictionary_description_tag2 && sam_v1_6_reference_sequence_dictionary_description_value1 == sam_v1_6_reference_sequence_dictionary_description_value2
+  SAM_V1_6_Reference_Sequence_Dictionary_Description sam_v1_6_reference_sequence_dictionary_description_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Description sam_v1_6_reference_sequence_dictionary_description_value2 = sam_v1_6_reference_sequence_dictionary_description_value1 == sam_v1_6_reference_sequence_dictionary_description_value2
 
 instance Show SAM_V1_6_Reference_Sequence_Dictionary_Description where
-  show (SAM_V1_6_Reference_Sequence_Dictionary_Description tag value) = "SAM_V1_6_Reference_Sequence_Dictionary_Description { " ++
-                                                                        "tag = "                                                ++
-                                                                        (show tag)                                              ++
-                                                                        " , value = "                                           ++
-                                                                        (show value)                                            ++
-                                                                        " }"
+  show (SAM_V1_6_Reference_Sequence_Dictionary_Description value) =
+    "SAM_V1_6_Reference_Sequence_Dictionary_Description { " ++
+    "value = "                                              ++
+    (show value)                                            ++
+    " }"
 
 -- | M5 tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.
-data SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum = SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum { sam_v1_6_reference_sequence_dictionary_md5_checksum_tag   :: Seq Word8
-                                                                                                               , sam_v1_6_reference_sequence_dictionary_md5_checksum_value :: ByteString
-                                                                                                               }
+newtype SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum = SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum { sam_v1_6_reference_sequence_dictionary_md5_checksum_value :: ByteString
+                                                                                                                  }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum where
-  SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum sam_v1_6_reference_sequence_dictionary_md5_checksum_tag1 sam_v1_6_reference_sequence_dictionary_md5_checksum_value1 == SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum sam_v1_6_reference_sequence_dictionary_md5_checksum_tag2 sam_v1_6_reference_sequence_dictionary_md5_checksum_value2 = sam_v1_6_reference_sequence_dictionary_md5_checksum_tag1 == sam_v1_6_reference_sequence_dictionary_md5_checksum_tag2 && sam_v1_6_reference_sequence_dictionary_md5_checksum_value1 == sam_v1_6_reference_sequence_dictionary_md5_checksum_value2
+  SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum sam_v1_6_reference_sequence_dictionary_md5_checksum_value1 == SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum sam_v1_6_reference_sequence_dictionary_md5_checksum_value2 = sam_v1_6_reference_sequence_dictionary_md5_checksum_value1 == sam_v1_6_reference_sequence_dictionary_md5_checksum_value2
 
 instance Show SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum where
-  show (SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum tag value) = "SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum { " ++
-                                                                         "tag = "                                                 ++
-                                                                         (show tag)                                               ++
-                                                                         " , value = "                                            ++
-                                                                         (show value)                                             ++
-                                                                         " }"
+  show (SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum value) =
+    "SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum { " ++
+    "value = "                                               ++
+    (show value)                                             ++
+    " }"
 
 -- | SP tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.
-data SAM_V1_6_Reference_Sequence_Dictionary_Species = SAM_V1_6_Reference_Sequence_Dictionary_Species { sam_v1_6_reference_sequence_dictionary_species_tag   :: Seq Word8
-                                                                                                     , sam_v1_6_reference_sequence_dictionary_species_value :: ByteString
-                                                                                                     }
+newtype SAM_V1_6_Reference_Sequence_Dictionary_Species = SAM_V1_6_Reference_Sequence_Dictionary_Species { sam_v1_6_reference_sequence_dictionary_species_value :: ByteString
+                                                                                                        }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Species where
-  SAM_V1_6_Reference_Sequence_Dictionary_Species sam_v1_6_reference_sequence_dictionary_species_tag1 sam_v1_6_reference_sequence_dictionary_species_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Species sam_v1_6_reference_sequence_dictionary_species_tag2 sam_v1_6_reference_sequence_dictionary_species_value2 = sam_v1_6_reference_sequence_dictionary_species_tag1 == sam_v1_6_reference_sequence_dictionary_species_tag2 && sam_v1_6_reference_sequence_dictionary_species_value1 == sam_v1_6_reference_sequence_dictionary_species_value2
+  SAM_V1_6_Reference_Sequence_Dictionary_Species sam_v1_6_reference_sequence_dictionary_species_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Species sam_v1_6_reference_sequence_dictionary_species_value2 = sam_v1_6_reference_sequence_dictionary_species_value1 == sam_v1_6_reference_sequence_dictionary_species_value2
 
 instance Show SAM_V1_6_Reference_Sequence_Dictionary_Species where
-  show (SAM_V1_6_Reference_Sequence_Dictionary_Species tag value) =
+  show (SAM_V1_6_Reference_Sequence_Dictionary_Species value) =
     "SAM_V1_6_Reference_Sequence_Dictionary_Species { " ++
-    "tag = "                                            ++
-    (show tag)                                          ++
-    " , value = "                                       ++
+    "value = "                                          ++
     (show value)                                        ++
     " }"
 
 -- | TP tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.
-data SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology = SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology { sam_v1_6_reference_sequence_dictionary_molecule_topology_tag   :: Seq Word8
-                                                                                                                         , sam_v1_6_reference_sequence_dictionary_molecule_topology_value :: ByteString
-                                                                                                                         }
+newtype SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology = SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology { sam_v1_6_reference_sequence_dictionary_molecule_topology_value :: ByteString
+                                                                                                                            }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology where
-  SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology sam_v1_6_reference_sequence_dictionary_molecule_topology_tag1 sam_v1_6_reference_sequence_dictionary_molecule_topology_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology sam_v1_6_reference_sequence_dictionary_molecule_topology_tag2 sam_v1_6_reference_sequence_dictionary_molecule_topology_value2 = sam_v1_6_reference_sequence_dictionary_molecule_topology_tag1 == sam_v1_6_reference_sequence_dictionary_molecule_topology_tag2 && sam_v1_6_reference_sequence_dictionary_molecule_topology_value1 == sam_v1_6_reference_sequence_dictionary_molecule_topology_value2
+  SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology sam_v1_6_reference_sequence_dictionary_molecule_topology_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology sam_v1_6_reference_sequence_dictionary_molecule_topology_value2 = sam_v1_6_reference_sequence_dictionary_molecule_topology_value1 == sam_v1_6_reference_sequence_dictionary_molecule_topology_value2
 
 instance Show SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology where
-  show (SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology tag value) =
+  show (SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology value) =
     "SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology { " ++
-    "tag = "                                                      ++
-    (show tag)                                                    ++
-    " , value = "                                                 ++
+    "value = "                                                    ++
     (show value)                                                  ++
     " }"
 
 -- | UR tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.
-data SAM_V1_6_Reference_Sequence_Dictionary_URI = SAM_V1_6_Reference_Sequence_Dictionary_URI { sam_v1_6_reference_sequence_dictionary_uri_tag   :: Seq Word8
-                                                                                             , sam_v1_6_reference_sequence_dictionary_uri_value :: ByteString
-                                                                                             }
+newtype SAM_V1_6_Reference_Sequence_Dictionary_URI = SAM_V1_6_Reference_Sequence_Dictionary_URI { sam_v1_6_reference_sequence_dictionary_uri_value :: ByteString
+                                                                                                }
   deriving (Generic,Typeable)
 
 instance Eq SAM_V1_6_Reference_Sequence_Dictionary_URI where
-  SAM_V1_6_Reference_Sequence_Dictionary_URI sam_v1_6_reference_sequence_dictionary_uri_tag1 sam_v1_6_reference_sequence_dictionary_uri_value1 == SAM_V1_6_Reference_Sequence_Dictionary_URI sam_v1_6_reference_sequence_dictionary_uri_tag2 sam_v1_6_reference_sequence_dictionary_uri_value2 = sam_v1_6_reference_sequence_dictionary_uri_tag1 == sam_v1_6_reference_sequence_dictionary_uri_tag2 && sam_v1_6_reference_sequence_dictionary_uri_value1 == sam_v1_6_reference_sequence_dictionary_uri_value2
+  SAM_V1_6_Reference_Sequence_Dictionary_URI sam_v1_6_reference_sequence_dictionary_uri_value1 == SAM_V1_6_Reference_Sequence_Dictionary_URI sam_v1_6_reference_sequence_dictionary_uri_value2 = sam_v1_6_reference_sequence_dictionary_uri_value1 == sam_v1_6_reference_sequence_dictionary_uri_value2
 
 instance Show SAM_V1_6_Reference_Sequence_Dictionary_URI where
-  show (SAM_V1_6_Reference_Sequence_Dictionary_URI tag value) =
+  show (SAM_V1_6_Reference_Sequence_Dictionary_URI value) =
     "SAM_V1_6_Reference_Sequence_Dictionary_URI { " ++
-    "tag = "                                        ++
-    (show tag)                                      ++
-    " , value = "                                   ++
+    "value = "                                      ++
     (show value)                                    ++
     " }"
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Alignment/Base.hs b/src/Data/SAM/Version1_6/Read/Parser/Alignment/Base.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Alignment/Base.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Alignment/Base.hs
@@ -141,7 +141,7 @@
   _ <- word8 09
   qual <- do qualp <- DABL.takeTill (== 09)
              -- Parse QUAL field of the alignment section.
-             case (qualp =~ [re|[!-~]+|]) of
+             case (qualp =~ [re|[!-~?]+|\*|]) of
                False -> fail $ show SAM_V1_6_Error_Alignment_QUAL_Incorrect_Format
                True  -> -- QUAL is in the accepted format.
                         return qualp
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/HD/GO.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/HD/GO.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/HD/GO.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/HD/GO.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the GO tag of the @HD tag section of the SAM v1.6 file format.
@@ -57,12 +55,12 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_File_Level_Metadata_GO :: Parser SAM_V1_6_File_Level_Metadata_Alignment_Grouping
 parse_SAM_V1_6_File_Level_Metadata_GO = do
-  hdheaderalignmentgroupingtag <- do hdheaderalignmentgroupingtagp <- DABL.takeTill (== 58)
-                                     -- Parse GO tag of the header section.
-                                     case (hdheaderalignmentgroupingtagp =~ [re|[G][O]|]) of
-                                       False -> fail $ show SAM_V1_6_Error_File_Level_Metadata_Grouping_Of_Alignments_Tag_Incorrect_Format
-                                       True  -> -- GO tag is in the accepted format.
-                                                return hdheaderalignmentgroupingtagp
+  _ <- do hdheaderalignmentgroupingtagp <- DABL.takeTill (== 58)
+          -- Parse GO tag of the header section.
+          case (hdheaderalignmentgroupingtagp =~ [re|[G][O]|]) of
+            False -> fail $ show SAM_V1_6_Error_File_Level_Metadata_Grouping_Of_Alignments_Tag_Incorrect_Format
+            True  -> -- GO tag is in the accepted format.
+                     return hdheaderalignmentgroupingtagp
   _ <- word8 58
   hdheaderalignmentgroupingvalue <- do hdheaderalignmentgroupingvaluep <- DABL.takeTill (== 09)
                                        -- Parse GO value of the header section.
@@ -70,6 +68,5 @@
                                          False -> fail $ show SAM_V1_6_Error_File_Level_Metadata_Grouping_Of_Alignments_Invalid_Value
                                          True  -> -- GO value is in the accepted format.
                                                   return hdheaderalignmentgroupingvaluep
-  return SAM_V1_6_File_Level_Metadata_Alignment_Grouping { sam_v1_6_file_level_metadata_alignment_grouping_tag   = DSeq.fromList $ DB.unpack hdheaderalignmentgroupingtag
-                                                         , sam_v1_6_file_level_metadata_alignment_grouping_value = hdheaderalignmentgroupingvalue
+  return SAM_V1_6_File_Level_Metadata_Alignment_Grouping { sam_v1_6_file_level_metadata_alignment_grouping_value = hdheaderalignmentgroupingvalue
                                                          }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/HD/SO.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/HD/SO.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/HD/SO.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/HD/SO.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the SO tag of the @HD tag section of the SAM v1.6 file format.
@@ -57,12 +55,12 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_File_Level_Metadata_SO :: Parser SAM_V1_6_File_Level_Metadata_Sorting_Order
 parse_SAM_V1_6_File_Level_Metadata_SO = do
-  hdheadersortingordertag <- do hdheadersortingordertagp <- DABL.takeTill (== 58)
-                                -- Parse SO tag of the header section.
-                                case (hdheadersortingordertagp =~ [re|[S][O]|]) of
-                                  False -> fail $ show SAM_V1_6_Error_File_Level_Metadata_Sorting_Order_Tag_Incorrect_Format
-                                  True  -> -- SO tag is in the accepted format.
-                                           return hdheadersortingordertagp
+  _ <- do hdheadersortingordertagp <- DABL.takeTill (== 58)
+          -- Parse SO tag of the header section.
+          case (hdheadersortingordertagp =~ [re|[S][O]|]) of
+            False -> fail $ show SAM_V1_6_Error_File_Level_Metadata_Sorting_Order_Tag_Incorrect_Format
+            True  -> -- SO tag is in the accepted format.
+                     return hdheadersortingordertagp
   _ <- word8 58
   hdheadersortingordervalue <- do hdheadersortingordervaluep <- DABL.takeTill (== 09)
                                   -- Parse SO value of the header section.
@@ -70,6 +68,5 @@
                                     False -> fail $ show SAM_V1_6_Error_File_Level_Metadata_Sorting_Order_Invalid_Value
                                     True  -> -- SO value is in the accepted format.
                                              return hdheadersortingordervaluep  
-  return SAM_V1_6_File_Level_Metadata_Sorting_Order { sam_v1_6_file_level_metadata_sorting_order_tag   = DSeq.fromList $ DB.unpack hdheadersortingordertag
-                                                    , sam_v1_6_file_level_metadata_sorting_order_value = hdheadersortingordervalue
+  return SAM_V1_6_File_Level_Metadata_Sorting_Order { sam_v1_6_file_level_metadata_sorting_order_value = hdheadersortingordervalue
                                                     }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/HD/SS.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/HD/SS.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/HD/SS.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/HD/SS.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the SS tag of the @HD tag section of the SAM v1.6 file format.
@@ -57,12 +55,12 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_File_Level_Metadata_SS :: Parser SAM_V1_6_File_Level_Metadata_SubSorting_Order
 parse_SAM_V1_6_File_Level_Metadata_SS = do
-  hdheadersubsortingordertag <- do hdheadersubsortingordertagp <- DABL.takeTill (== 58)
-                                   -- Parse SS tag of the header section.
-                                   case (hdheadersubsortingordertagp =~ [re|[S][S]|]) of
-                                     False -> fail $ show SAM_V1_6_Error_File_Level_Metadata_Subsorting_Order_Tag_Incorrect_Format
-                                     True  -> -- SS tag is in the accepted format.
-                                              return hdheadersubsortingordertagp
+  _ <- do hdheadersubsortingordertagp <- DABL.takeTill (== 58)
+          -- Parse SS tag of the header section.
+          case (hdheadersubsortingordertagp =~ [re|[S][S]|]) of
+            False -> fail $ show SAM_V1_6_Error_File_Level_Metadata_Subsorting_Order_Tag_Incorrect_Format
+            True  -> -- SS tag is in the accepted format.
+                     return hdheadersubsortingordertagp
   _ <- word8 58
   hdheadersubsortingordervalue <- do hdheadersubsortingordervaluep <- DABL.takeTill (== 09)
                                      -- Parse SS value of the header section.
@@ -70,6 +68,5 @@
                                        False -> fail $ show SAM_V1_6_Error_File_Level_Metadata_Subsorting_Order_Incorrect_Format 
                                        True  -> -- SS value is in the accepted format.
                                                 return hdheadersubsortingordervaluep 
-  return SAM_V1_6_File_Level_Metadata_SubSorting_Order { sam_v1_6_file_level_metadata_subsorting_order_tag   = DSeq.fromList $ DB.unpack hdheadersubsortingordertag
-                                                       , sam_v1_6_file_level_metadata_subsorting_order_value = hdheadersubsortingordervalue
+  return SAM_V1_6_File_Level_Metadata_SubSorting_Order { sam_v1_6_file_level_metadata_subsorting_order_value = hdheadersubsortingordervalue
                                                        }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/HD/VN.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/HD/VN.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/HD/VN.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/HD/VN.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the VN tag of the @HD tag section of the SAM v1.6 file format.
@@ -57,12 +55,12 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_File_Level_Metadata_VN :: Parser SAM_V1_6_File_Level_Metadata_Format_Version
 parse_SAM_V1_6_File_Level_Metadata_VN = do
-  hdheaderversiontag <- do hdheaderversiontagp <- DABL.takeTill (== 58)
-                           -- Parse VN tag of the header section.
-                           case (hdheaderversiontagp =~ [re|[V][N]|]) of
-                             False -> fail $ show SAM_V1_6_Error_File_Level_Metadata_Format_Version_Tag_Incorrect_Format
-                             True  -> -- VN tag is in the accepted format. 
-                                      return hdheaderversiontagp
+  _ <- do hdheaderversiontagp <- DABL.takeTill (== 58)
+          -- Parse VN tag of the header section.
+          case (hdheaderversiontagp =~ [re|[V][N]|]) of
+            False -> fail $ show SAM_V1_6_Error_File_Level_Metadata_Format_Version_Tag_Incorrect_Format
+            True  -> -- VN tag is in the accepted format. 
+                     return hdheaderversiontagp
   _ <- word8 58
   hdheaderversionvalue <- do hdheaderversionvaluep <- DABL.takeTill (== 09)
                              -- Parse VN value of the header section.
@@ -70,6 +68,5 @@
                                False -> fail $ show SAM_V1_6_Error_File_Level_Metadata_Format_Version_Value_Incorrect_Format
                                True  -> -- VN value is in the accepted format.
                                         return hdheaderversionvaluep  
-  return SAM_V1_6_File_Level_Metadata_Format_Version { sam_v1_6_file_level_metadata_format_version_tag   = DSeq.fromList $ DB.unpack hdheaderversiontag
-                                                     , sam_v1_6_file_level_metadata_format_version_value = hdheaderversionvalue
+  return SAM_V1_6_File_Level_Metadata_Format_Version { sam_v1_6_file_level_metadata_format_version_value = hdheaderversionvalue
                                                      }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/PG/CL.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/PG/CL.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/PG/CL.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/PG/CL.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the CL tag of the @PG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Program_CL :: Parser SAM_V1_6_Program_Command_Line
 parse_SAM_V1_6_SAM_V1_6_Program_CL = do
-  pgheadercommandlinetag <- do pgheadercommandlinetagp <- DABL.takeTill (== 58)
-                               -- Parse CL tag of the header section.
-                               case (pgheadercommandlinetagp =~ [re|[C][L]|]) of
-                                 False -> fail $ show SAM_V1_6_Error_Program_Command_Line_Incorrect_Format 
-                                 True  -> -- CL tag is in the accepted format. 
-                                          return pgheadercommandlinetagp
+  _ <- do pgheadercommandlinetagp <- DABL.takeTill (== 58)
+          -- Parse CL tag of the header section.
+          case (pgheadercommandlinetagp =~ [re|[C][L]|]) of
+            False -> fail $ show SAM_V1_6_Error_Program_Command_Line_Incorrect_Format 
+            True  -> -- CL tag is in the accepted format. 
+                     return pgheadercommandlinetagp
   _ <- word8 58
   pgheadercommandlinevalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Program_Command_Line { sam_v1_6_program_command_line_tag   = DSeq.fromList $ DB.unpack pgheadercommandlinetag
-                                       , sam_v1_6_program_command_line_value = pgheadercommandlinevalue
+  return SAM_V1_6_Program_Command_Line { sam_v1_6_program_command_line_value = pgheadercommandlinevalue
                                        }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/PG/DS.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/PG/DS.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/PG/DS.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/PG/DS.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the DS tag of the @PG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Program_DS :: Parser SAM_V1_6_Program_Description
 parse_SAM_V1_6_SAM_V1_6_Program_DS = do
-  pgheaderdescriptiontag <- do pgheaderdescriptiontagp <- DABL.takeTill (== 58)
-                               -- Parse DS tag of the header section.
-                               case (pgheaderdescriptiontagp =~ [re|[D][S]|]) of
-                                 False -> fail $ show SAM_V1_6_Error_Program_Description_Incorrect_Format 
-                                 True  -> -- DS tag is in the accepted format. 
-                                          return pgheaderdescriptiontagp
+  _ <- do pgheaderdescriptiontagp <- DABL.takeTill (== 58)
+          -- Parse DS tag of the header section.
+          case (pgheaderdescriptiontagp =~ [re|[D][S]|]) of
+            False -> fail $ show SAM_V1_6_Error_Program_Description_Incorrect_Format 
+            True  -> -- DS tag is in the accepted format. 
+                     return pgheaderdescriptiontagp
   _ <- word8 58
   pgheaderdescriptionvalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Program_Description { sam_v1_6_program_description_tag   = DSeq.fromList $ DB.unpack pgheaderdescriptiontag
-                                      , sam_v1_6_program_description_value = pgheaderdescriptionvalue
+  return SAM_V1_6_Program_Description { sam_v1_6_program_description_value = pgheaderdescriptionvalue
                                       }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/PG/ID.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/PG/ID.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/PG/ID.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/PG/ID.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the ID tag of the @PG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Program_ID :: Parser SAM_V1_6_Program_Record_Identifier
 parse_SAM_V1_6_SAM_V1_6_Program_ID = do
-  pgheaderidentifiertag <- do pgheaderidentifiertagp <- DABL.takeTill (== 58)
-                              -- Parse ID tag of the header section.
-                              case (pgheaderidentifiertagp =~ [re|[I][D]|]) of
-                                False -> fail $ show SAM_V1_6_Error_Program_Identifier_Incorrect_Format 
-                                True  -> -- ID tag is in the accepted format. 
-                                         return pgheaderidentifiertagp
+  _ <- do pgheaderidentifiertagp <- DABL.takeTill (== 58)
+          -- Parse ID tag of the header section.
+          case (pgheaderidentifiertagp =~ [re|[I][D]|]) of
+            False -> fail $ show SAM_V1_6_Error_Program_Identifier_Incorrect_Format 
+            True  -> -- ID tag is in the accepted format. 
+                     return pgheaderidentifiertagp
   _ <- word8 58
   pgheaderidentifiervalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Program_Record_Identifier { sam_v1_6_program_record_identifier_tag   = DSeq.fromList $ DB.unpack pgheaderidentifiertag
-                                            , sam_v1_6_program_record_identifier_value = pgheaderidentifiervalue
+  return SAM_V1_6_Program_Record_Identifier { sam_v1_6_program_record_identifier_value = pgheaderidentifiervalue
                                             }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/PG/PN.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/PG/PN.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/PG/PN.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/PG/PN.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the PN tag of the @PG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Program_PN :: Parser SAM_V1_6_Program_Name
 parse_SAM_V1_6_SAM_V1_6_Program_PN = do
-  pgheadernametag <- do pgheadernametagp <- DABL.takeTill (== 58)
-                        -- Parse PN tag of the header section.
-                        case (pgheadernametagp =~ [re|[P][N]|]) of
-                          False -> fail $ show SAM_V1_6_Error_Program_Name_Incorrect_Format 
-                          True  -> -- PN tag is in the accepted format. 
-                                   return pgheadernametagp
+  _ <- do pgheadernametagp <- DABL.takeTill (== 58)
+          -- Parse PN tag of the header section.
+          case (pgheadernametagp =~ [re|[P][N]|]) of
+            False -> fail $ show SAM_V1_6_Error_Program_Name_Incorrect_Format 
+            True  -> -- PN tag is in the accepted format. 
+                     return pgheadernametagp
   _ <- word8 58
   pgheadernamevalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Program_Name { sam_v1_6_program_name_tag   = DSeq.fromList $ DB.unpack pgheadernametag
-                               , sam_v1_6_program_name_value = pgheadernamevalue
+  return SAM_V1_6_Program_Name { sam_v1_6_program_name_value = pgheadernamevalue
                                }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/PG/PP.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/PG/PP.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/PG/PP.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/PG/PP.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the PP tag of the @PG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Program_PP :: Parser SAM_V1_6_Program_Previous_PG_ID
 parse_SAM_V1_6_SAM_V1_6_Program_PP = do
-  pgheaderpreviouspgidtag <- do pgheaderpreviouspgidtagp <- DABL.takeTill (== 58)
-                                -- Parse PP tag of the header section.
-                                case (pgheaderpreviouspgidtagp =~ [re|[P][P]|]) of
-                                  False -> fail $ show SAM_V1_6_Error_Program_Previous_PG_ID_Incorrect_Format 
-                                  True  -> -- PP tag is in the accepted format. 
-                                           return pgheaderpreviouspgidtagp
+  _ <- do pgheaderpreviouspgidtagp <- DABL.takeTill (== 58)
+          -- Parse PP tag of the header section.
+          case (pgheaderpreviouspgidtagp =~ [re|[P][P]|]) of
+            False -> fail $ show SAM_V1_6_Error_Program_Previous_PG_ID_Incorrect_Format 
+            True  -> -- PP tag is in the accepted format. 
+                     return pgheaderpreviouspgidtagp
   _ <- word8 58
   pgheaderpreviouspgidvalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Program_Previous_PG_ID { sam_v1_6_program_previous_pg_id_tag   = DSeq.fromList $ DB.unpack pgheaderpreviouspgidtag
-                                         , sam_v1_6_program_previous_pg_id_value = pgheaderpreviouspgidvalue
+  return SAM_V1_6_Program_Previous_PG_ID { sam_v1_6_program_previous_pg_id_value = pgheaderpreviouspgidvalue
                                          }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/PG/VN.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/PG/VN.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/PG/VN.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/PG/VN.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the VN tag of the @PG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Program_VN :: Parser SAM_V1_6_Program_Version
 parse_SAM_V1_6_SAM_V1_6_Program_VN = do
-  pgheaderversiontag <- do pgheaderversiontagp <- DABL.takeTill (== 58)
-                           -- Parse VN tag of the header section.
-                           case (pgheaderversiontagp =~ [re|[V][N]|]) of
-                             False -> fail $ show SAM_V1_6_Error_Program_Version_Incorrect_Format 
-                             True  -> -- VN tag is in the accepted format. 
-                                      return pgheaderversiontagp
+  _ <- do pgheaderversiontagp <- DABL.takeTill (== 58)
+          -- Parse VN tag of the header section.
+          case (pgheaderversiontagp =~ [re|[V][N]|]) of
+            False -> fail $ show SAM_V1_6_Error_Program_Version_Incorrect_Format 
+            True  -> -- VN tag is in the accepted format. 
+                     return pgheaderversiontagp
   _ <- word8 58
   pgheaderversionvalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Program_Version { sam_v1_6_program_version_tag   = DSeq.fromList $ DB.unpack pgheaderversiontag
-                                  , sam_v1_6_program_version_value = pgheaderversionvalue
+  return SAM_V1_6_Program_Version { sam_v1_6_program_version_value = pgheaderversionvalue
                                   }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/BC.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/BC.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/BC.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/BC.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the BC tag of the @RG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Read_Group_BC :: Parser SAM_V1_6_Read_Group_Barcode_Sequence 
 parse_SAM_V1_6_SAM_V1_6_Read_Group_BC = do
-  rgheaderbarcodesequencetag <- do rgheaderbarcodesequencetagp <- DABL.takeTill (== 58)
-                                   -- Parse BC tag of the header section.
-                                   case (rgheaderbarcodesequencetagp =~ [re|[B][C]|]) of
-                                     False -> fail $ show SAM_V1_6_Error_Read_Group_Barcode_Sequence_Incorrect_Format 
-                                     True  -> -- BC tag is in the accepted format. 
-                                              return rgheaderbarcodesequencetagp
+  _ <- do rgheaderbarcodesequencetagp <- DABL.takeTill (== 58)
+          -- Parse BC tag of the header section.
+          case (rgheaderbarcodesequencetagp =~ [re|[B][C]|]) of
+            False -> fail $ show SAM_V1_6_Error_Read_Group_Barcode_Sequence_Incorrect_Format 
+            True  -> -- BC tag is in the accepted format. 
+                     return rgheaderbarcodesequencetagp
   _ <- word8 58
   rgheaderbarcodesequencevalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Read_Group_Barcode_Sequence { sam_v1_6_read_group_barcode_sequence_tag   = DSeq.fromList $ DB.unpack rgheaderbarcodesequencetag
-                                              , sam_v1_6_read_group_barcode_sequence_value = rgheaderbarcodesequencevalue
+  return SAM_V1_6_Read_Group_Barcode_Sequence { sam_v1_6_read_group_barcode_sequence_value = rgheaderbarcodesequencevalue
                                               }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/CN.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/CN.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/CN.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/CN.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the CN tag of the @RG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Read_Group_CN :: Parser SAM_V1_6_Read_Group_Sequencing_Center 
 parse_SAM_V1_6_SAM_V1_6_Read_Group_CN = do
-  rgheadersequencingcentertag <- do rgheadersequencingcentertagp <- DABL.takeTill (== 58)
-                                    -- Parse CN tag of the header section.
-                                    case (rgheadersequencingcentertagp =~ [re|[C][N]|]) of
-                                      False -> fail $ show SAM_V1_6_Error_Read_Group_Sequencing_Center_Incorrect_Format 
-                                      True  -> -- CN tag is in the accepted format. 
-                                               return rgheadersequencingcentertagp
+  _ <- do rgheadersequencingcentertagp <- DABL.takeTill (== 58)
+          -- Parse CN tag of the header section.
+          case (rgheadersequencingcentertagp =~ [re|[C][N]|]) of
+            False -> fail $ show SAM_V1_6_Error_Read_Group_Sequencing_Center_Incorrect_Format 
+            True  -> -- CN tag is in the accepted format. 
+                     return rgheadersequencingcentertagp
   _ <- word8 58
   rgheadersequencingcentervalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Read_Group_Sequencing_Center { sam_v1_6_read_group_sequencing_center_tag   = DSeq.fromList $ DB.unpack rgheadersequencingcentertag
-                                               , sam_v1_6_read_group_sequencing_center_value = rgheadersequencingcentervalue
+  return SAM_V1_6_Read_Group_Sequencing_Center { sam_v1_6_read_group_sequencing_center_value = rgheadersequencingcentervalue
                                                }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/DS.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/DS.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/DS.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/DS.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the DS tag of the @RG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Read_Group_DS :: Parser SAM_V1_6_Read_Group_Description 
 parse_SAM_V1_6_SAM_V1_6_Read_Group_DS = do
-  rgheaderdescriptiontag <- do rgheaderdescriptiontagp <- DABL.takeTill (== 58)
-                               -- Parse DS tag of the header section.
-                               case (rgheaderdescriptiontagp =~ [re|[D][S]|]) of
-                                 False -> fail $ show SAM_V1_6_Error_Read_Group_Description_Incorrect_Format 
-                                 True  -> -- DS tag is in the accepted format. 
-                                          return rgheaderdescriptiontagp
+  _ <- do rgheaderdescriptiontagp <- DABL.takeTill (== 58)
+          -- Parse DS tag of the header section.
+          case (rgheaderdescriptiontagp =~ [re|[D][S]|]) of
+            False -> fail $ show SAM_V1_6_Error_Read_Group_Description_Incorrect_Format 
+            True  -> -- DS tag is in the accepted format. 
+                     return rgheaderdescriptiontagp
   _ <- word8 58
   rgheaderdescriptionvalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Read_Group_Description { sam_v1_6_read_group_description_tag   = DSeq.fromList $ DB.unpack rgheaderdescriptiontag
-                                         , sam_v1_6_read_group_description_value = rgheaderdescriptionvalue
+  return SAM_V1_6_Read_Group_Description { sam_v1_6_read_group_description_value = rgheaderdescriptionvalue
                                          }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/DT.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/DT.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/DT.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/DT.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DTeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the DT tag of the @RG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Read_Group_DT :: Parser SAM_V1_6_Read_Group_Run_Date 
 parse_SAM_V1_6_SAM_V1_6_Read_Group_DT = do
-  rgheaderrundatetag <- do rgheaderrundatetagp <- DABL.takeTill (== 58)
-                           -- Parse DT tag of the header section.
-                           case (rgheaderrundatetagp =~ [re|[D][T]|]) of
-                             False -> fail $ show SAM_V1_6_Error_Read_Group_Date_Run_Produced_Incorrect_Format
-                             True  -> -- DT tag is in the accepted format. 
-                                      return rgheaderrundatetagp
+  _ <- do rgheaderrundatetagp <- DABL.takeTill (== 58)
+          -- Parse DT tag of the header section.
+          case (rgheaderrundatetagp =~ [re|[D][T]|]) of
+            False -> fail $ show SAM_V1_6_Error_Read_Group_Date_Run_Produced_Incorrect_Format
+            True  -> -- DT tag is in the accepted format. 
+                     return rgheaderrundatetagp
   _ <- word8 58
   rgheaderrundatevalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Read_Group_Run_Date { sam_v1_6_read_group_run_date_tag   = DTeq.fromList $ DB.unpack rgheaderrundatetag
-                                      , sam_v1_6_read_group_run_date_value = rgheaderrundatevalue
+  return SAM_V1_6_Read_Group_Run_Date { sam_v1_6_read_group_run_date_value = rgheaderrundatevalue
                                       }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/FO.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/FO.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/FO.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/FO.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the FO tag of the @RG tag section of the SAM v1.6 file format.
@@ -57,12 +55,12 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Read_Group_FO :: Parser SAM_V1_6_Read_Group_Flow_Order 
 parse_SAM_V1_6_SAM_V1_6_Read_Group_FO = do
-  rgheaderflowordertag <- do rgheaderflowordertagp <- DABL.takeTill (== 58)
-                             -- Parse FO tag of the header section.
-                             case (rgheaderflowordertagp =~ [re|[F][O]|]) of
-                               False -> fail $ show SAM_V1_6_Error_Read_Group_Flow_Order_Incorrect_Format
-                               True  -> -- FO tag is in the accepted format. 
-                                        return rgheaderflowordertagp
+  _ <- do rgheaderflowordertagp <- DABL.takeTill (== 58)
+          -- Parse FO tag of the header section.
+          case (rgheaderflowordertagp =~ [re|[F][O]|]) of
+            False -> fail $ show SAM_V1_6_Error_Read_Group_Flow_Order_Incorrect_Format
+            True  -> -- FO tag is in the accepted format. 
+                     return rgheaderflowordertagp
   _ <- word8 58
   rgheaderflowordervalue <- do rgheaderflowordervaluep <- DABL.takeTill (== 09)
                                -- Parse FO value of the header section.
@@ -70,6 +68,5 @@
                                  False -> fail $ show SAM_V1_6_Error_Read_Group_Flow_Order_Incorrect_Format
                                  True  -> -- FO value is in the accepted format.
                                           return rgheaderflowordervaluep
-  return SAM_V1_6_Read_Group_Flow_Order { sam_v1_6_read_group_flow_order_tag   = DSeq.fromList $ DB.unpack rgheaderflowordertag
-                                        , sam_v1_6_read_group_flow_order_value = rgheaderflowordervalue
+  return SAM_V1_6_Read_Group_Flow_Order { sam_v1_6_read_group_flow_order_value = rgheaderflowordervalue
                                         }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/ID.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/ID.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/ID.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/ID.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the ID tag of the @RG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Read_Group_ID :: Parser SAM_V1_6_Read_Group_Identifier 
 parse_SAM_V1_6_SAM_V1_6_Read_Group_ID = do
-  rgheaderreadgroupidentifiertag <- do rgheaderreadgroupidentifiertagp <- DABL.takeTill (== 58)
-                                       -- Parse ID tag of the header section.
-                                       case (rgheaderreadgroupidentifiertagp =~ [re|[I][D]|]) of
-                                         False -> fail $ show SAM_V1_6_Error_Read_Group_Read_Group_Identifier_Incorrect_Format
-                                         True  -> -- ID tag is in the accepted format. 
-                                                  return rgheaderreadgroupidentifiertagp
+  _ <- do rgheaderreadgroupidentifiertagp <- DABL.takeTill (== 58)
+          -- Parse ID tag of the header section.
+          case (rgheaderreadgroupidentifiertagp =~ [re|[I][D]|]) of
+            False -> fail $ show SAM_V1_6_Error_Read_Group_Read_Group_Identifier_Incorrect_Format
+            True  -> -- ID tag is in the accepted format. 
+                     return rgheaderreadgroupidentifiertagp
   _ <- word8 58
   rgheaderreadgroupidentifiervalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Read_Group_Identifier { sam_v1_6_read_group_identifier_tag   = DSeq.fromList $ DB.unpack rgheaderreadgroupidentifiertag
-                                        , sam_v1_6_read_group_identifier_value = rgheaderreadgroupidentifiervalue
+  return SAM_V1_6_Read_Group_Identifier { sam_v1_6_read_group_identifier_value = rgheaderreadgroupidentifiervalue
                                         }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/KS.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/KS.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/KS.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/KS.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the KS tag of the @RG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Read_Group_KS :: Parser SAM_V1_6_Read_Group_Key_Sequence 
 parse_SAM_V1_6_SAM_V1_6_Read_Group_KS = do
-  rgheaderkeysequencetag <- do rgheaderkeysequencetagp <- DABL.takeTill (== 58)
-                               -- Parse KS tag of the header section.
-                               case (rgheaderkeysequencetagp =~ [re|[K][S]|]) of
-                                 False -> fail $ show SAM_V1_6_Error_Read_Group_Key_Sequence_Incorrect_Format
-                                 True  -> -- KS tag is in the accepted format. 
-                                          return rgheaderkeysequencetagp
+  _ <- do rgheaderkeysequencetagp <- DABL.takeTill (== 58)
+          -- Parse KS tag of the header section.
+          case (rgheaderkeysequencetagp =~ [re|[K][S]|]) of
+            False -> fail $ show SAM_V1_6_Error_Read_Group_Key_Sequence_Incorrect_Format
+            True  -> -- KS tag is in the accepted format. 
+                     return rgheaderkeysequencetagp
   _ <- word8 58
   rgheaderkeysequencevalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Read_Group_Key_Sequence { sam_v1_6_read_group_key_sequence_tag   = DSeq.fromList $ DB.unpack rgheaderkeysequencetag
-                                          , sam_v1_6_read_group_key_sequence_value = rgheaderkeysequencevalue
+  return SAM_V1_6_Read_Group_Key_Sequence { sam_v1_6_read_group_key_sequence_value = rgheaderkeysequencevalue
                                           }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/LB.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/LB.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/LB.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/LB.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the LB tag of the @RG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Read_Group_LB :: Parser SAM_V1_6_Read_Group_Library 
 parse_SAM_V1_6_SAM_V1_6_Read_Group_LB = do
-  rgheaderlibrarytag <- do rgheaderlibrarytagp <- DABL.takeTill (== 58)
-                           -- Parse LB tag of the header section.
-                           case (rgheaderlibrarytagp =~ [re|[L][B]|]) of
-                             False -> fail $ show SAM_V1_6_Error_Read_Group_Library_Incorrect_Format
-                             True  -> -- LB tag is in the accepted format. 
-                                      return rgheaderlibrarytagp
+  _ <- do rgheaderlibrarytagp <- DABL.takeTill (== 58)
+          -- Parse LB tag of the header section.
+          case (rgheaderlibrarytagp =~ [re|[L][B]|]) of
+            False -> fail $ show SAM_V1_6_Error_Read_Group_Library_Incorrect_Format
+            True  -> -- LB tag is in the accepted format. 
+                     return rgheaderlibrarytagp
   _ <- word8 58
   rgheaderlibraryvalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Read_Group_Library { sam_v1_6_read_group_library_tag   = DSeq.fromList $ DB.unpack rgheaderlibrarytag
-                                     , sam_v1_6_read_group_library_value = rgheaderlibraryvalue
+  return SAM_V1_6_Read_Group_Library { sam_v1_6_read_group_library_value = rgheaderlibraryvalue
                                      }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PG.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PG.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PG.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PG.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the PG tag of the @RG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Read_Group_PG :: Parser SAM_V1_6_Read_Group_Programs 
 parse_SAM_V1_6_SAM_V1_6_Read_Group_PG = do
-  rgheaderprogramstag <- do rgheaderprogramstagp <- DABL.takeTill (== 58)
-                            -- Parse PG tag of the header section.
-                            case (rgheaderprogramstagp =~ [re|[P][G]|]) of
-                              False -> fail $ show SAM_V1_6_Error_Read_Group_Programs_Incorrect_Format
-                              True  -> -- PG tag is in the accepted format. 
-                                       return rgheaderprogramstagp
+  _ <- do rgheaderprogramstagp <- DABL.takeTill (== 58)
+          -- Parse PG tag of the header section.
+          case (rgheaderprogramstagp =~ [re|[P][G]|]) of
+            False -> fail $ show SAM_V1_6_Error_Read_Group_Programs_Incorrect_Format
+            True  -> -- PG tag is in the accepted format. 
+                     return rgheaderprogramstagp
   _ <- word8 58
   rgheaderprogramsvalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Read_Group_Programs { sam_v1_6_read_group_programs_tag   = DSeq.fromList $ DB.unpack rgheaderprogramstag
-                                      , sam_v1_6_read_group_programs_value = rgheaderprogramsvalue
+  return SAM_V1_6_Read_Group_Programs { sam_v1_6_read_group_programs_value = rgheaderprogramsvalue
                                       }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PI.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PI.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PI.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PI.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the PI tag of the @RG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Read_Group_PI :: Parser SAM_V1_6_Read_Group_Predicted_Median_Insert_Size 
 parse_SAM_V1_6_SAM_V1_6_Read_Group_PI = do
-  rgheaderpredictedmedianinsertsizetag <- do rgheaderpredictedmedianinsertsizetagp <- DABL.takeTill (== 58)
-                                             -- Parse PI tag of the header section.
-                                             case (rgheaderpredictedmedianinsertsizetagp =~ [re|[P][I]|]) of
-                                               False -> fail $ show SAM_V1_6_Error_Read_Group_Predicted_Median_Insert_Size_Incorrect_Format
-                                               True  -> -- PI tag is in the accepted format. 
-                                                        return rgheaderpredictedmedianinsertsizetagp
+  _ <- do rgheaderpredictedmedianinsertsizetagp <- DABL.takeTill (== 58)
+          -- Parse PI tag of the header section.
+          case (rgheaderpredictedmedianinsertsizetagp =~ [re|[P][I]|]) of
+            False -> fail $ show SAM_V1_6_Error_Read_Group_Predicted_Median_Insert_Size_Incorrect_Format
+            True  -> -- PI tag is in the accepted format. 
+                     return rgheaderpredictedmedianinsertsizetagp
   _ <- word8 58
   rgheaderpredictedmedianinsertsizevalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Read_Group_Predicted_Median_Insert_Size { sam_v1_6_read_group_predicted_median_insert_size_tag   = DSeq.fromList $ DB.unpack rgheaderpredictedmedianinsertsizetag
-                                                          , sam_v1_6_read_group_predicted_median_insert_size_value = rgheaderpredictedmedianinsertsizevalue
+  return SAM_V1_6_Read_Group_Predicted_Median_Insert_Size { sam_v1_6_read_group_predicted_median_insert_size_value = rgheaderpredictedmedianinsertsizevalue
                                                           }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PL.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PL.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PL.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PL.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the PL tag of the @RG tag section of the SAM v1.6 file format.
@@ -57,12 +55,12 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Read_Group_PL :: Parser SAM_V1_6_Read_Group_Platform 
 parse_SAM_V1_6_SAM_V1_6_Read_Group_PL = do
-  rgheaderplatformtag <- do rgheaderplatformtagp <- DABL.takeTill (== 58)
-                            -- Parse PL tag of the header section.
-                            case (rgheaderplatformtagp =~ [re|[P][L]|]) of
-                              False -> fail $ show SAM_V1_6_Error_Read_Group_Platform_Incorrect_Format
-                              True  -> -- PL tag is in the accepted format. 
-                                       return rgheaderplatformtagp
+  _ <- do rgheaderplatformtagp <- DABL.takeTill (== 58)
+          -- Parse PL tag of the header section.
+          case (rgheaderplatformtagp =~ [re|[P][L]|]) of
+            False -> fail $ show SAM_V1_6_Error_Read_Group_Platform_Incorrect_Format
+            True  -> -- PL tag is in the accepted format. 
+                     return rgheaderplatformtagp
   _ <- word8 58
   rgheaderplatformvalue <- do rgheaderplatformvaluep <- DABL.takeTill (== 09)
                               -- Parse PL value of the header section.
@@ -70,6 +68,5 @@
                                 False -> fail $ show SAM_V1_6_Error_Read_Group_Platform_Incorrect_Format
                                 True  -> -- PL value is in the accepted format.
                                          return rgheaderplatformvaluep
-  return SAM_V1_6_Read_Group_Platform { sam_v1_6_read_group_platform_tag   = DSeq.fromList $ DB.unpack rgheaderplatformtag
-                                      , sam_v1_6_read_group_platform_value = rgheaderplatformvalue
+  return SAM_V1_6_Read_Group_Platform { sam_v1_6_read_group_platform_value = rgheaderplatformvalue
                                       }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PM.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PM.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PM.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PM.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the PM tag of the @RG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Read_Group_PM :: Parser SAM_V1_6_Read_Group_Platform_Model 
 parse_SAM_V1_6_SAM_V1_6_Read_Group_PM = do
-  rgheaderplatformmodeltag <- do rgheaderplatformmodeltagp <- DABL.takeTill (== 58)
-                                 -- Parse PM tag of the header section.
-                                 case (rgheaderplatformmodeltagp =~ [re|[P][M]|]) of
-                                   False -> fail $ show SAM_V1_6_Error_Read_Group_Platform_Model_Incorrect_Format
-                                   True  -> -- PM tag is in the accepted format. 
-                                            return rgheaderplatformmodeltagp
+  _ <- do rgheaderplatformmodeltagp <- DABL.takeTill (== 58)
+          -- Parse PM tag of the header section.
+          case (rgheaderplatformmodeltagp =~ [re|[P][M]|]) of
+            False -> fail $ show SAM_V1_6_Error_Read_Group_Platform_Model_Incorrect_Format
+            True  -> -- PM tag is in the accepted format. 
+                     return rgheaderplatformmodeltagp
   _ <- word8 58
   rgheaderplatformmodelvalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Read_Group_Platform_Model { sam_v1_6_read_group_platform_model_tag   = DSeq.fromList $ DB.unpack rgheaderplatformmodeltag
-                                            , sam_v1_6_read_group_platform_model_value = rgheaderplatformmodelvalue
+  return SAM_V1_6_Read_Group_Platform_Model { sam_v1_6_read_group_platform_model_value = rgheaderplatformmodelvalue
                                             }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PU.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PU.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PU.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/PU.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the PU tag of the @RG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Read_Group_PU :: Parser SAM_V1_6_Read_Group_Platform_Unit 
 parse_SAM_V1_6_SAM_V1_6_Read_Group_PU = do
-  rgheaderplatformunittag <- do rgheaderplatformunittagp <- DABL.takeTill (== 58)
-                                -- Parse PU tag of the header section.
-                                case (rgheaderplatformunittagp =~ [re|[P][U]|]) of
-                                  False -> fail $ show SAM_V1_6_Error_Read_Group_Platform_Unit_Incorrect_Format 
-                                  True  -> -- PU tag is in the accepted format. 
-                                           return rgheaderplatformunittagp
+  _ <- do rgheaderplatformunittagp <- DABL.takeTill (== 58)
+          -- Parse PU tag of the header section.
+          case (rgheaderplatformunittagp =~ [re|[P][U]|]) of
+            False -> fail $ show SAM_V1_6_Error_Read_Group_Platform_Unit_Incorrect_Format 
+            True  -> -- PU tag is in the accepted format. 
+                     return rgheaderplatformunittagp
   _ <- word8 58
   rgheaderplatformunitvalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Read_Group_Platform_Unit { sam_v1_6_read_group_platform_unit_tag   = DSeq.fromList $ DB.unpack rgheaderplatformunittag
-                                           , sam_v1_6_read_group_platform_unit_value = rgheaderplatformunitvalue
+  return SAM_V1_6_Read_Group_Platform_Unit { sam_v1_6_read_group_platform_unit_value = rgheaderplatformunitvalue
                                            }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/SM.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/SM.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/RG/SM.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/RG/SM.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the SM tag of the @RG tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Read_Group_SM :: Parser SAM_V1_6_Read_Group_Sample 
 parse_SAM_V1_6_SAM_V1_6_Read_Group_SM = do
-  rgheadersampletag <- do rgheadersampletagp <- DABL.takeTill (== 58)
-                          -- Parse SM tag of the header section.
-                          case (rgheadersampletagp =~ [re|[S][M]|]) of
-                            False -> fail $ show SAM_V1_6_Error_Read_Group_Sample_Incorrect_Format
-                            True  -> -- SM tag is in the accepted format. 
-                                     return rgheadersampletagp
+  _ <- do rgheadersampletagp <- DABL.takeTill (== 58)
+          -- Parse SM tag of the header section.
+          case (rgheadersampletagp =~ [re|[S][M]|]) of
+            False -> fail $ show SAM_V1_6_Error_Read_Group_Sample_Incorrect_Format
+            True  -> -- SM tag is in the accepted format. 
+                     return rgheadersampletagp
   _ <- word8 58
   rgheadersamplevalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Read_Group_Sample { sam_v1_6_read_group_sample_tag   = DSeq.fromList $ DB.unpack rgheadersampletag
-                                    , sam_v1_6_read_group_sample_value = rgheadersamplevalue
+  return SAM_V1_6_Read_Group_Sample { sam_v1_6_read_group_sample_value = rgheadersamplevalue
                                     }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/AH.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/AH.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/AH.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/AH.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the AH tag of the @SQ tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_AH :: Parser SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_AH = do
-  sqheaderalternativelocustag <- do sqheaderalternativelocustagp <- DABL.takeTill (== 58)
-                                    -- Parse AH tag of the header section.
-                                    case (sqheaderalternativelocustagp =~ [re|[A][H]|]) of
-                                      False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Alternative_Locus_Incorrect_Format
-                                      True  -> -- AH tag is in the accepted format.
-                                               return sqheaderalternativelocustagp
+  _ <- do sqheaderalternativelocustagp <- DABL.takeTill (== 58)
+          -- Parse AH tag of the header section.
+          case (sqheaderalternativelocustagp =~ [re|[A][H]|]) of
+            False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Alternative_Locus_Incorrect_Format
+            True  -> -- AH tag is in the accepted format.
+                     return sqheaderalternativelocustagp
   _ <- word8 58
   sqheaderalternativelocusvalue <- DABL.takeTill (== 09) 
-  return SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus { sam_v1_6_reference_sequence_dictionary_alternative_locus_tag   = DSeq.fromList $ DB.unpack sqheaderalternativelocustag
-                                                                  , sam_v1_6_reference_sequence_dictionary_alternative_locus_value = sqheaderalternativelocusvalue
+  return SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus { sam_v1_6_reference_sequence_dictionary_alternative_locus_value = sqheaderalternativelocusvalue
                                                                   }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/AN.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/AN.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/AN.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/AN.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the AN tag of the @SQ tag section of the SAM v1.6 file format.
@@ -57,12 +55,12 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_AN :: Parser SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_AN = do
-  sqheaderalternativereferencesequencenamestag <- do sqheaderalternativereferencesequencenamestagp <- DABL.takeTill (== 58)
-                                                     -- Parse AN tag of the header section.
-                                                     case (sqheaderalternativereferencesequencenamestagp =~ [re|[A][N]|]) of
-                                                       False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names_Incorrect_Format
-                                                       True  -> -- AN tag is in the accepted format.
-                                                                return sqheaderalternativereferencesequencenamestagp
+  _ <- do sqheaderalternativereferencesequencenamestagp <- DABL.takeTill (== 58)
+          -- Parse AN tag of the header section.
+          case (sqheaderalternativereferencesequencenamestagp =~ [re|[A][N]|]) of
+            False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names_Incorrect_Format
+            True  -> -- AN tag is in the accepted format.
+                     return sqheaderalternativereferencesequencenamestagp
   _ <- word8 58
   sqheaderalternativereferencesequencenamesvalue <- do sqheaderalternativereferencesequencenamesvaluep <- DABL.takeTill (== 09)
                                                        -- Parse AN value of the header section.
@@ -70,6 +68,5 @@
                                                          False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names_Invalid_Value
                                                          True  -> -- AN value is in the accepted format.
                                                                   return sqheaderalternativereferencesequencenamesvaluep
-  return SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names { sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_tag   = DSeq.fromList $ DB.unpack sqheaderalternativereferencesequencenamestag
-                                                                                     , sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value = sqheaderalternativereferencesequencenamesvalue
+  return SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names { sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value = sqheaderalternativereferencesequencenamesvalue
                                                                                      }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/AS.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/AS.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/AS.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/AS.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the AS tag of the @SQ tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_AS :: Parser SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_AS = do
-  sqheadergenomeassemblyidentifiertag <- do sqheadergenomeassemblyidentifiertagp <- DABL.takeTill (== 58)
-                                            -- Parse AS tag of the header section.
-                                            case (sqheadergenomeassemblyidentifiertagp =~ [re|[A][S]|]) of
-                                              False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Genome_Assembly_Identifier_Incorrect_Format
-                                              True  -> -- AS tag is in the accepted format.
-                                                       return sqheadergenomeassemblyidentifiertagp
+  _ <- do sqheadergenomeassemblyidentifiertagp <- DABL.takeTill (== 58)
+          -- Parse AS tag of the header section.
+          case (sqheadergenomeassemblyidentifiertagp =~ [re|[A][S]|]) of
+            False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Genome_Assembly_Identifier_Incorrect_Format
+            True  -> -- AS tag is in the accepted format.
+                     return sqheadergenomeassemblyidentifiertagp
   _ <- word8 58
   sqheadergenomeassemblyidentifiervalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier { sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_tag   = DSeq.fromList $ DB.unpack sqheadergenomeassemblyidentifiertag
-                                                                           , sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value = sqheadergenomeassemblyidentifiervalue
+  return SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier { sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value = sqheadergenomeassemblyidentifiervalue
                                                                            }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/DS.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/DS.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/DS.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/DS.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the DS tag of the @SQ tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_DS :: Parser SAM_V1_6_Reference_Sequence_Dictionary_Description
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_DS = do
-  sqheaderdescriptiontag <- do sqheaderdescriptiontagp <- DABL.takeTill (== 58)
-                               -- Parse DS tag of the header section.
-                               case (sqheaderdescriptiontagp =~ [re|[D][S]|]) of
-                                 False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Description_Incorrect_Format 
-                                 True  -> -- DS tag is in the accepted format.
-                                          return sqheaderdescriptiontagp
+  _ <- do sqheaderdescriptiontagp <- DABL.takeTill (== 58)
+          -- Parse DS tag of the header section.
+          case (sqheaderdescriptiontagp =~ [re|[D][S]|]) of
+            False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Description_Incorrect_Format 
+            True  -> -- DS tag is in the accepted format.
+                     return sqheaderdescriptiontagp
   _ <- word8 58
   sqheaderdescriptionvalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Reference_Sequence_Dictionary_Description { sam_v1_6_reference_sequence_dictionary_description_tag   = DSeq.fromList $ DB.unpack sqheaderdescriptiontag
-                                                            , sam_v1_6_reference_sequence_dictionary_description_value = sqheaderdescriptionvalue
+  return SAM_V1_6_Reference_Sequence_Dictionary_Description { sam_v1_6_reference_sequence_dictionary_description_value = sqheaderdescriptionvalue
                                                             }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/LN.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/LN.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/LN.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/LN.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the LN tag of the @SQ tag section of the SAM v1.6 file format.
@@ -57,12 +55,12 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_LN :: Parser SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_LN = do
-  sqheadersequencelengthtag <- do sqheadersequencelengthtagp <- DABL.takeTill (== 58)
-                                  -- Parse LN tag of the header section.
-                                  case (sqheadersequencelengthtagp =~ [re|[L][N]|]) of
-                                    False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Reference_Sequence_Length_Incorrect_Format
-                                    True  -> -- LN tag is in the accepted format.
-                                             return sqheadersequencelengthtagp
+  _ <- do sqheadersequencelengthtagp <- DABL.takeTill (== 58)
+          -- Parse LN tag of the header section.
+          case (sqheadersequencelengthtagp =~ [re|[L][N]|]) of
+            False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Reference_Sequence_Length_Incorrect_Format
+            True  -> -- LN tag is in the accepted format.
+                     return sqheadersequencelengthtagp
   _ <- word8 58
   sqheadersequencelengthvalue <- do sqheadersequencelengthvaluep <- DABL.takeTill (== 09)
                                     -- Parse LN value of the header section.
@@ -70,6 +68,5 @@
                                       False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Reference_Sequence_Length_Invalid_Value
                                       True  -> -- LN value is in the accepted format.
                                                return sqheadersequencelengthvaluep
-  return SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length { sam_v1_6_reference_sequence_dictionary_reference_sequence_length_tag   = DSeq.fromList $ DB.unpack sqheadersequencelengthtag
-                                                                          , sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value = sqheadersequencelengthvalue
+  return SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length { sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value = sqheadersequencelengthvalue
                                                                           }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/M5.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/M5.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/M5.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/M5.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the M5 tag of the @SQ tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_M5 :: Parser SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_M5 = do
-  sqheadermd5checksumtag <- do sqheadermd5checksumtagp <- DABL.takeTill (== 58)
-                               -- Parse M5 tag of the header section.
-                               case (sqheadermd5checksumtagp =~ [re|[M][5]|]) of
-                                 False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_MD5_Checksum_Incorrect_Format 
-                                 True  -> -- M5 tag is in the accepted format.
-                                          return sqheadermd5checksumtagp
+  _ <- do sqheadermd5checksumtagp <- DABL.takeTill (== 58)
+          -- Parse M5 tag of the header section.
+          case (sqheadermd5checksumtagp =~ [re|[M][5]|]) of
+            False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_MD5_Checksum_Incorrect_Format 
+            True  -> -- M5 tag is in the accepted format.
+                     return sqheadermd5checksumtagp
   _ <- word8 58
   sqheadermd5checksumvalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum { sam_v1_6_reference_sequence_dictionary_md5_checksum_tag   = DSeq.fromList $ DB.unpack sqheadermd5checksumtag
-                                                             , sam_v1_6_reference_sequence_dictionary_md5_checksum_value = sqheadermd5checksumvalue
+  return SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum { sam_v1_6_reference_sequence_dictionary_md5_checksum_value = sqheadermd5checksumvalue
                                                              }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/SN.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/SN.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/SN.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/SN.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the SN tag of the @SQ tag section of the SAM v1.6 file format.
@@ -57,12 +55,12 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_SN :: Parser SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_SN = do
-  sqheadersequencenametag <- do sqheadersequencenametagp <- DABL.takeTill (== 58)
-                                -- Parse SN tag of the header section.
-                                case (sqheadersequencenametagp =~ [re|[S][N]|]) of
-                                  False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Reference_Sequence_Name_Incorrect_Format
-                                  True  -> -- SN tag is in the accepted format. 
-                                           return sqheadersequencenametagp
+  _ <- do sqheadersequencenametagp <- DABL.takeTill (== 58)
+          -- Parse SN tag of the header section.
+          case (sqheadersequencenametagp =~ [re|[S][N]|]) of
+            False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Reference_Sequence_Name_Incorrect_Format
+            True  -> -- SN tag is in the accepted format. 
+                     return sqheadersequencenametagp
   _ <- word8 58
   sqheadersequencenamevalue <- do sqheadersequencenamevaluep <- DABL.takeTill (== 09)
                                   -- Parse SN value of the header section.
@@ -70,6 +68,5 @@
                                     False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Reference_Sequence_Name_Invalid_Value
                                     True  -> -- SN value is in the accepted format.
                                              return sqheadersequencenamevaluep  
-  return SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name { sam_v1_6_reference_sequence_dictionary_reference_sequence_name_tag   = DSeq.fromList $ DB.unpack sqheadersequencenametag
-                                                                        , sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value = sqheadersequencenamevalue
+  return SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name { sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value = sqheadersequencenamevalue
                                                                         }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/SP.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/SP.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/SP.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/SP.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the SP tag of the @SQ tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_SP :: Parser SAM_V1_6_Reference_Sequence_Dictionary_Species
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_SP = do
-  sqheaderspeciestag <- do sqheaderspeciestagp <- DABL.takeTill (== 58)
-                           -- Parse SP tag of the header section.
-                           case (sqheaderspeciestagp =~ [re|[S][P]|]) of
-                             False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Species_Incorrect_Format
-                             True  -> -- SP tag is in the accepted format.
-                                      return sqheaderspeciestagp
+  _ <- do sqheaderspeciestagp <- DABL.takeTill (== 58)
+          -- Parse SP tag of the header section.
+          case (sqheaderspeciestagp =~ [re|[S][P]|]) of
+            False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Species_Incorrect_Format
+            True  -> -- SP tag is in the accepted format.
+                     return sqheaderspeciestagp
   _ <- word8 58
   sqheaderspeciesvalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Reference_Sequence_Dictionary_Species { sam_v1_6_reference_sequence_dictionary_species_tag   = DSeq.fromList $ DB.unpack sqheaderspeciestag
-                                                        , sam_v1_6_reference_sequence_dictionary_species_value = sqheaderspeciesvalue
+  return SAM_V1_6_Reference_Sequence_Dictionary_Species { sam_v1_6_reference_sequence_dictionary_species_value = sqheaderspeciesvalue
                                                         }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/TP.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/TP.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/TP.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/TP.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the TP tag of the @SQ tag section of the SAM v1.6 file format.
@@ -57,12 +55,12 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_TP :: Parser SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_TP = do
-  sqheadermoleculetopologytag <- do sqheadermoleculetopologytagp <- DABL.takeTill (== 58)
-                                    -- Parse TP tag of the header section.
-                                    case (sqheadermoleculetopologytagp =~ [re|[T][P]|]) of
-                                      False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Molecule_Topology_Incorrect_Format
-                                      True  -> -- TP tag is in the accepted format. 
-                                               return sqheadermoleculetopologytagp
+  _ <- do sqheadermoleculetopologytagp <- DABL.takeTill (== 58)
+          -- Parse TP tag of the header section.
+          case (sqheadermoleculetopologytagp =~ [re|[T][P]|]) of
+            False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Molecule_Topology_Incorrect_Format
+            True  -> -- TP tag is in the accepted format. 
+                     return sqheadermoleculetopologytagp
   _ <- word8 58
   sqheadermoleculetopologyvalue <- do sqheadermoleculetopologyvaluep <- DABL.takeTill (== 09)
                                       -- Parse TP value of the header section.
@@ -70,6 +68,5 @@
                                         False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_Molecule_Topology_Invalid_Value
                                         True  -> -- TP value is in the accepted format.
                                                  return sqheadermoleculetopologyvaluep  
-  return SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology { sam_v1_6_reference_sequence_dictionary_molecule_topology_tag   = DSeq.fromList $ DB.unpack sqheadermoleculetopologytag
-                                                                  , sam_v1_6_reference_sequence_dictionary_molecule_topology_value = sqheadermoleculetopologyvalue
+  return SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology { sam_v1_6_reference_sequence_dictionary_molecule_topology_value = sqheadermoleculetopologyvalue
                                                                   }
diff --git a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/UR.hs b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/UR.hs
--- a/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/UR.hs
+++ b/src/Data/SAM/Version1_6/Read/Parser/Header/SQ/UR.hs
@@ -48,8 +48,6 @@
 import Data.SAM.Version1_6.Read.Error
 
 import           Data.Attoparsec.ByteString.Lazy   as DABL
-import qualified Data.ByteString                   as DB   (unpack)
-import           Data.Sequence                     as DSeq
 import           Text.Regex.PCRE.Heavy
 
 -- | Defines a parser for the UR tag of the @SQ tag section of the SAM v1.6 file format.
@@ -57,14 +55,13 @@
 -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_UR :: Parser SAM_V1_6_Reference_Sequence_Dictionary_URI
 parse_SAM_V1_6_SAM_V1_6_Reference_Sequence_Dictionary_UR = do
-  sqheaderuritag <- do sqheaderuritagp <- DABL.takeTill (== 58)
-                       -- Parse UR tag of the header section.
-                       case (sqheaderuritagp =~ [re|[U][R]|]) of
-                         False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_URI_Incorrect_Format
-                         True  -> -- UR tag is in the accepted format.
-                                  return sqheaderuritagp
+  _ <- do sqheaderuritagp <- DABL.takeTill (== 58)
+          -- Parse UR tag of the header section.
+          case (sqheaderuritagp =~ [re|[U][R]|]) of
+            False -> fail $ show SAM_V1_6_Error_Reference_Sequence_Dictionary_URI_Incorrect_Format
+            True  -> -- UR tag is in the accepted format.
+                     return sqheaderuritagp
   _ <- word8 58
   sqheaderurivalue <- DABL.takeTill (== 09)
-  return SAM_V1_6_Reference_Sequence_Dictionary_URI { sam_v1_6_reference_sequence_dictionary_uri_tag   = DSeq.fromList $ DB.unpack sqheaderuritag
-                                                    , sam_v1_6_reference_sequence_dictionary_uri_value = sqheaderurivalue
+  return SAM_V1_6_Reference_Sequence_Dictionary_URI { sam_v1_6_reference_sequence_dictionary_uri_value = sqheaderurivalue
                                                     }
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -1,4 +1,14 @@
 module Main (main) where
 
+import Data.SAM.Version1_6.Read.Base
+
+import Test.Hspec
+
 main :: IO ()
-main = putStrLn "Test suite not yet implemented."
+main = do --hspec $ do
+ -- describe "Data.SAM.Version1_6.Read.Base" $ do
+ --   describe "readSAM_V1_6" $ do
+ --     describe "toy1.sam" $ do
+ --       it "Ensures that readSAM_V1_6 can read and parse: toy1.sam" $ do
+ toy1sam <- readSAM_V1_6 "test/examples/toy4.sam"
+ print toy1sam 
