diff --git a/ViennaRNAParser.cabal b/ViennaRNAParser.cabal
--- a/ViennaRNAParser.cabal
+++ b/ViennaRNAParser.cabal
@@ -5,7 +5,7 @@
 -- PVP summary:      +-+------- breaking API changes
 --                   | | +----- non-breaking API additions
 --                   | | | +--- code changes with no API change
-version:             1.2.1
+version:             1.2.2
 synopsis:            Libary for parsing ViennaRNA package output
 description:         Currently contains parsers and datatypes for: RNAalifold, RNAdistance, RNAcofold, RNAfold, RNAplex, RNAup, RNAz.
 		     .
@@ -30,12 +30,13 @@
 
 source-repository this
   type:     git
-  location: https://github.com/eggzilla/ViennaRNAParser/tree/1.2.1
-  tag:      1.2.1
+  location: https://github.com/eggzilla/ViennaRNAParser/tree/1.2.2
+  tag:      1.2.2
 
 library
   -- Modules exported by the library.
   exposed-modules:   Bio.ViennaRNAParser
+                     Bio.ViennaRNAParserLibrary
                      Bio.RNAcofoldData
                      Bio.RNAcofoldParser
                      Bio.RNAfoldData
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,4 +1,8 @@
 -*-change-log-*-
+1.2.2 Florian Eggenhofer <florian.eggenhofer@univie.ac.at> 4. July 2015
+        * Added a new module for shared functions between modules
+	* Sequence and alignment entry parsing is now in line with IUPAC
+	letter code
 1.2.1 Florian Eggenhofer <florian.eggenhofer@univie.ac.at> 3. July 2015
         * Included parsing of warning field in RNAz output
 1.2.0 Florian Eggenhofer <florian.eggenhofer@univie.ac.at> 1. July 2015
diff --git a/src/Bio/RNAalifoldParser.hs b/src/Bio/RNAalifoldParser.hs
--- a/src/Bio/RNAalifoldParser.hs
+++ b/src/Bio/RNAalifoldParser.hs
@@ -1,5 +1,5 @@
 -- | Parse RNAalifold output
---   For more information on RNAalifold consult: <>
+--   For more information on RNAalifold consult: <<http://www.tbi.univie.ac.at/RNA/RNAalifold.html>
 
 module Bio.RNAalifoldParser (
                        systemRNAalifold,
@@ -9,13 +9,11 @@
                       ) where
 
 import Bio.RNAalifoldData
+import Bio.ViennaRNAParserLibrary
 import Text.ParserCombinators.Parsec
 import System.Process
 import System.Exit
 import qualified Control.Exception.Base as CE
-
-readDouble :: String -> Double
-readDouble = read              
 
 --- | Run external RNAalifold command and read the output into the corresponding datatype
 systemRNAalifold :: String -> String -> String -> IO ExitCode
diff --git a/src/Bio/RNAcofoldParser.hs b/src/Bio/RNAcofoldParser.hs
--- a/src/Bio/RNAcofoldParser.hs
+++ b/src/Bio/RNAcofoldParser.hs
@@ -9,6 +9,7 @@
                       ) where
 
 import Bio.RNAcofoldData
+import Bio.ViennaRNAParserLibrary
 import Text.ParserCombinators.Parsec
 import System.Process 
 import System.Exit
@@ -17,9 +18,6 @@
 -- | Run external RNAcofold command 
 systemRNAcofold :: String -> String -> IO ExitCode
 systemRNAcofold inputFilePath outputFilePath = system ("RNAcofold  <" ++ inputFilePath  ++ " >" ++ outputFilePath)
-
-readDouble :: String -> Double
-readDouble = read              
 
 -- | Parse the consenus of RNAcofold results         
 genParserRNAcofold :: GenParser Char st RNAcofold
diff --git a/src/Bio/RNAdistanceParser.hs b/src/Bio/RNAdistanceParser.hs
--- a/src/Bio/RNAdistanceParser.hs
+++ b/src/Bio/RNAdistanceParser.hs
@@ -1,5 +1,5 @@
 -- | Parse RNAdistance output
---   For more information on RNAdistance consult: <>
+--   For more information on RNAdistance consult: <<http://www.tbi.univie.ac.at/RNA/RNAdistance.html>
 
 module Bio.RNAdistanceParser (
                        parseRNAdistance,
@@ -8,10 +8,8 @@
                       ) where
 
 import Bio.RNAdistanceData
+import Bio.ViennaRNAParserLibrary
 import Text.ParserCombinators.Parsec     
-
-readInt :: String -> Int
-readInt = read
 
 -- | Parse the consenus of RNAz results         
 genParserRNAdistance :: GenParser Char st RNAdistance
diff --git a/src/Bio/RNAfoldParser.hs b/src/Bio/RNAfoldParser.hs
--- a/src/Bio/RNAfoldParser.hs
+++ b/src/Bio/RNAfoldParser.hs
@@ -10,6 +10,7 @@
 
 import Bio.RNAfoldData
 import Text.ParserCombinators.Parsec
+import Bio.ViennaRNAParserLibrary
 import System.Process 
 import System.Exit
 import qualified Control.Exception.Base as CE
@@ -17,9 +18,6 @@
 -- | Run external RNAfold command and read the output into the corresponding datatype
 systemRNAfold :: String -> String -> IO ExitCode
 systemRNAfold inputFilePath outputFilePath = system ("RNAfold --noPS  <" ++ inputFilePath  ++ " >" ++ outputFilePath)
-
-readDouble :: String -> Double
-readDouble = read              
 
 -- | Parse the consenus of RNAz results         
 genParserRNAfold :: GenParser Char st RNAfold
diff --git a/src/Bio/RNAplexParser.hs b/src/Bio/RNAplexParser.hs
--- a/src/Bio/RNAplexParser.hs
+++ b/src/Bio/RNAplexParser.hs
@@ -8,14 +8,9 @@
                       ) where
 
 import Bio.RNAplexData
+import Bio.ViennaRNAParserLibrary
 import Text.ParserCombinators.Parsec    
 import Control.Monad
-
-readDouble :: String -> Double
-readDouble = read              
-
-readInt :: String -> Int
-readInt = read
 
 -- | Parse the input as list of RNAplexInteraction datatype
 parseRNAplexOutput :: GenParser Char st [RNAplexInteraction]
diff --git a/src/Bio/RNAupParser.hs b/src/Bio/RNAupParser.hs
--- a/src/Bio/RNAupParser.hs
+++ b/src/Bio/RNAupParser.hs
@@ -8,14 +8,9 @@
                       ) where
 
 import Bio.RNAupData
+import Bio.ViennaRNAParserLibrary
 import Text.ParserCombinators.Parsec    
 import Control.Monad
-
-readDouble :: String -> Double
-readDouble = read              
-
-readInt :: String -> Int
-readInt = read
 
 -- | Parse the input as list of RNAupInteraction datatype
 parseRNAupOutput :: GenParser Char st [RNAupInteraction]
diff --git a/src/Bio/RNAzParser.hs b/src/Bio/RNAzParser.hs
--- a/src/Bio/RNAzParser.hs
+++ b/src/Bio/RNAzParser.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE Arrows #-}
-
 -- | Parse RNAz output
 --   For more information on RNAz consult: <http://www.tbi.univie.ac.at/~wash/RNAz
 module Bio.RNAzParser (
@@ -10,17 +8,12 @@
                       ) where
 
 import Bio.RNAzData
+import Bio.ViennaRNAParserLibrary
 import Text.ParserCombinators.Parsec
 import System.Process
 import System.Exit
 import qualified Control.Exception.Base as CE
 
-readDouble :: String -> Double
-readDouble = read              
-
-readInt :: String -> Int
-readInt = read
-
 -- | Run external RNAz command and read the output into the corresponding datatype
 systemRNAz :: String -> String -> IO ExitCode
 systemRNAz inputFilePath outputFilePath = system ("RNAz " ++ inputFilePath ++ " >" ++ outputFilePath)
@@ -102,7 +95,7 @@
   _header <- many1 (noneOf "\n")
   newline 
   notFollowedBy (string (">consensus"))
-  _resultSequence <- many1 (oneOf "~_-.NATUGCatugc")         
+  _resultSequence <- parseNucleotideAlignmentEntry
   newline        
   _dotBracket <- many1 (oneOf "-().,")
   space
@@ -128,7 +121,7 @@
 parseRNAzConsensus = do
   string (">consensus")
   newline
-  _consensusSequence <- many1 (oneOf "~_-.NATUGCatugc")                 
+  _consensusSequence <- parseNucleotideAlignmentEntry
   newline          
   _dotBracket <- many1 (oneOf "().,")
   space
diff --git a/src/Bio/ViennaRNAParserLibrary.hs b/src/Bio/ViennaRNAParserLibrary.hs
new file mode 100644
--- /dev/null
+++ b/src/Bio/ViennaRNAParserLibrary.hs
@@ -0,0 +1,41 @@
+-- | Library with auxiliary functions needed in multiple other modules.
+module Bio.ViennaRNAParserLibrary (
+                      parseNucleotideSequence,
+                      parseNucleotideAlignmentEntry,
+                      parseProteinSequence,
+                      parseProteinAlignmentEntry,
+                      readInt,
+                      readDouble
+                      ) where
+
+import Text.ParserCombinators.Parsec
+
+readDouble :: String -> Double
+readDouble = read              
+
+readInt :: String -> Int
+readInt = read
+
+-- | Parse nucleotide sequence. Allowed letters according to IUPAC
+parseNucleotideSequence :: GenParser Char st String
+parseNucleotideSequence = do
+  nucleotideSequence <- many1 (oneOf "RYSWKMBDHVNATUGCatugc") 
+  return $ nucleotideSequence
+
+-- | Parse nucleotide alignment entry. Allowed letters according to IUPAC and commonly used gap characters
+parseNucleotideAlignmentEntry :: GenParser Char st String
+parseNucleotideAlignmentEntry = do
+  entry <- many1 (oneOf "~_-.RYSWKMBDHVNATUGCatugc") 
+  return $ entry
+
+-- | Parse protein amino acid code sequence. Allowed letters according to IUPAC
+parseProteinSequence :: GenParser Char st String
+parseProteinSequence = do
+  proteinSequence <- many1 (oneOf "ABCDEFGHIKLMNPQRSTVWXYZabcdefghiklmnpqrstvwxyz") 
+  return $ proteinSequence
+
+-- | Parse protein amino acid code alignment entry. Allowed letters according to IUPAC and commonly used gap characters
+parseProteinAlignmentEntry :: GenParser Char st String
+parseProteinAlignmentEntry = do
+  entry <- many1 (oneOf "~_-.ABCDEFGHIKLMNPQRSTVWXYZabcdefghiklmnpqrstvwxyz") 
+  return $ entry
