diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -38,6 +38,8 @@
                        , legacyFlag               :: Bool
                        , clipFastaFlag            :: Bool
                        , convertToAminoAcidsFlag  :: Bool
+                       , complementFlag           :: Bool
+                       , reverseComplementFlag    :: Bool
                        , inputCodonTable          :: CodonTable
                        , inputFillIn              :: FillInValue
                        , inputStart               :: Maybe Int
@@ -104,6 +106,14 @@
          <> short 'C'
          <> help "Whether to convert the filtered sequences to amino acids\
                  \ in the output. Applied last, even after add length." )
+      <*> switch
+          ( long "complement"
+         <> short 'b'
+         <> help "Whether to find the complement of the sequence." )
+      <*> switch
+          ( long "reverse-complement"
+         <> short 'B'
+         <> help "Whether to to find the reverse complement of the sequence." )
       <*> option auto
           ( long "codon-table"
          <> metavar "[(CODON, AA)]"
@@ -396,8 +406,8 @@
             if trimFrame opts
                 then trimFasta
                     genUnit
-                    ((read . T.unpack . flip getField fs) <$> inputInFrame opts)
-                    ((read . T.unpack . flip getField fs) <$> inputOutFrame opts)
+                    ((\x -> read . T.unpack . getField x '|' $ fs) <$> inputInFrame opts)
+                    ((\x -> read . T.unpack . getField x '|' $ fs) <$> inputOutFrame opts)
                     fs
                 else fs
 
@@ -414,7 +424,17 @@
                     (-1, -1, 'X') -> id
                     (f, s, c)     -> fillInSequence f s c
 
+        -- Find the complement
+        complement = if complementFlag opts
+                        then compl
+                        else id
+
         -- Convert to amino acids
+        reverseComplement = if reverseComplementFlag opts
+                                then revCompl
+                                else id
+
+        -- Convert to amino acids
         ntToaa = if convertToAminoAcidsFlag opts
                     then convertToAminoAcidsFastaSequence (inputCodonTable opts)
                     else id
@@ -452,6 +472,8 @@
         transformOrder     = includeLength
                            . includeMutations
                            . ntToaa
+                           . reverseComplement
+                           . complement
                            . changeHeader
                            . removeUnknown
                            . trim
@@ -464,6 +486,8 @@
         transformGermline  = includeLength
                            . includeMutations
                            . ntToaa
+                           . reverseComplement
+                           . complement
                            . removeUnknown
                            . trim
                            . noNs
@@ -660,7 +684,8 @@
                  \ Order of transformation goes: seqInFrame -> customFilter\
                  \ -> noStops -> removeHighMutations -> getMutations ->\
                  \ getFrequentMutations -> cutSequence -> fillIn -> noNs\
-                 \ -> changeHeader -> ntToaa -> includeLength,\
+                 \ -> changeHeader -> complement -> reverseComplement ->\
+                 \ ntToaa -> includeLength,\
                  \ so if you require a different\
                  \ order (which can change results dramatically), then do\
                  \ so one at a time through the wonderful world of piping."
diff --git a/modify-fasta.cabal b/modify-fasta.cabal
--- a/modify-fasta.cabal
+++ b/modify-fasta.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                modify-fasta
-version:             0.8.2.0
+version:             0.8.2.1
 synopsis:            Modify fasta (and CLIP) files in several optional ways
 -- description:         
 homepage:            https://github.com/GregorySchwartz/modify-fasta
diff --git a/src/Print.hs b/src/Print.hs
--- a/src/Print.hs
+++ b/src/Print.hs
@@ -80,10 +80,8 @@
                    $ geneAlleleList
     alleleMap      = M.fromListWith (+) geneAlleleList
     geneAlleleList = map (countProp clip) . M.toAscList $ s
-    countProp True ((_, x), y)  = (getField idx x, length y)
-    countProp False ((_, _), y) = (getField idx . head $ y, 1)
-    getField f h   = splitHeader h !! (f - 1)
-    splitHeader    = T.splitOn "|" . fastaHeader
+    countProp True ((_, x), y)  = (getField idx '|' x, length y)
+    countProp False ((_, _), y) = (getField idx '|' . head $ y, 1)
 
 -- | Takes a clone entry and returns a formatted text with or without
 -- germline
diff --git a/src/Utility.hs b/src/Utility.hs
--- a/src/Utility.hs
+++ b/src/Utility.hs
@@ -9,7 +9,6 @@
                , addMutationsHeader
                , addFillerGermlines
                , replaceChars
-               , getField
                , fromEither
                ) where
 
@@ -45,7 +44,8 @@
          }
   where
     germline = if aaFlag then fromEither (translate 1 otherSeq) else otherSeq
-    otherSeq = FastaSequence {fastaHeader = "", fastaSeq = getField field fSeq}
+    otherSeq =
+        FastaSequence { fastaHeader = "", fastaSeq = getField field '|' fSeq }
 
 -- | Print the mutations
 printMutations :: [(Position, (Char, Char))] -> T.Text
@@ -100,10 +100,6 @@
     changeChar a b = if a == c && (not . T.isInfixOf (T.singleton b)) ".-"
                         then b
                         else a
-
--- | Get the field of a fasta sequence, 1 indexed split by "|"
-getField :: Int -> FastaSequence -> T.Text
-getField f fs = (T.splitOn "|" . fastaHeader $ fs) !! (f - 1)
 
 -- | Error for left
 fromEither :: Either T.Text b -> b
