diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 ViennaRNAParser [![Hackage](https://img.shields.io/hackage/v/ViennaRNAParser.svg)](https://hackage.haskell.org/package/ViennaRNAParser) [![Build Status](https://travis-ci.org/eggzilla/ViennaRNAParser.svg)](https://travis-ci.org/eggzilla/ViennaRNAParser)
 =============
 
-Currently contains parsers and datatypes for: RNAalifold, RNAdistance, RNAcofold, RNAfold, RNAplex, RNAup, RNAz.
+Currently contains parsers and datatypes for: RNAalifold, RNAcode ,RNAdistance, RNAcofold, RNAfold, RNAplex, RNAup, RNAz.
 
 For more information on the ViennaRNA package refer to <http://www.tbi.univie.ac.at/RNA/>. 
 
diff --git a/ViennaRNAParser.cabal b/ViennaRNAParser.cabal
--- a/ViennaRNAParser.cabal
+++ b/ViennaRNAParser.cabal
@@ -5,9 +5,9 @@
 -- PVP summary:      +-+------- breaking API changes
 --                   | | +----- non-breaking API additions
 --                   | | | +--- code changes with no API change
-version:             1.2.6
+version:             1.2.7
 synopsis:            Libary for parsing ViennaRNA package output
-description:         Currently contains parsers and datatypes for: RNAalifold, RNAdistance, RNAcofold, RNAfold, RNAplex, RNAup, RNAz.
+description:         Currently contains parsers and datatypes for: RNAalifold, RNAcode, RNAdistance, RNAcofold, RNAfold, RNAplex, RNAup, RNAz.
 		     .
 		     For more information on the ViennaRNA package refer to <http://www.tbi.univie.ac.at/RNA/>.
 		     .
@@ -30,13 +30,15 @@
 
 source-repository this
   type:     git
-  location: https://github.com/eggzilla/ViennaRNAParser/tree/1.2.6
-  tag:      1.2.6
+  location: https://github.com/eggzilla/ViennaRNAParser/tree/1.2.7
+  tag:      1.2.7
 
 library
   -- Modules exported by the library.
   exposed-modules:   Bio.ViennaRNAParser
                      Bio.ViennaRNAParserLibrary
+                     Bio.RNAcodeData
+                     Bio.RNAcodeParser
                      Bio.RNAcofoldData
                      Bio.RNAcofoldParser
                      Bio.RNAfoldData
@@ -56,7 +58,7 @@
   ghc-options:         -Wall -O2 -fno-warn-unused-do-bind
 
   -- Other library packages from which modules are imported.
-  build-depends:       base >=4.5 && <5, parsec>=3.1.9, process
+  build-depends:       base >=4.5 && <5, parsec>=3.1.9, process, transformers
   
   -- Directories containing source files.
   hs-source-dirs:      src
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,7 +1,9 @@
 -*-change-log-*-
-
+1.2.7 Florian Eggenhofer <florian.eggenhofer@univie.ac.at> 4. January 2016
+	* Added RNAcode parser
+	* Added stackage yaml file
 1.2.6 Florian Eggenhofer <florian.eggenhofer@univie.ac.at> 7. September 2015
-        * Added a options argument to RNAz systemcall function
+	* Added options to RNAz syscall function
 1.2.5 Florian Eggenhofer <florian.eggenhofer@univie.ac.at> 9. July 2015
         * Fixed parsing of multiple warning fields and optional whitespaces in
 	RNAz consensus energy
diff --git a/src/Bio/RNAcodeData.hs b/src/Bio/RNAcodeData.hs
new file mode 100644
--- /dev/null
+++ b/src/Bio/RNAcodeData.hs
@@ -0,0 +1,35 @@
+-- | This module contains a hierarchical data structure for
+--   RNAcode output
+--   For more information on RNAcode consult: <http://wash.github.io/rnacode/>
+
+module Bio.RNAcodeData where
+    
+-- | All elements of RNAcode output are contained in this datatype 
+data RNAcode = RNAcode
+  { 
+    rnacodeHits :: [RNAcodeHit],
+    rcAlignmentNumber :: Maybe Int,
+    rcTime :: Maybe Double,
+    rcSampleNumber :: Maybe Int,
+    rcDelta :: Maybe Double,
+    rcBigOmega :: Maybe Double,
+    rcSmallOmega :: Maybe Double,
+    rcStopPenalty :: Maybe Double
+  }
+  deriving (Show, Eq)
+
+-- | RNAcode Hit
+data RNAcodeHit = RNAcodeHit
+  { 
+    hss :: Int,
+    frame :: Double,
+    length :: Int,
+    from :: Int,
+    to :: Int,
+    name :: String,
+    start :: Int,
+    end :: Int,
+    score :: Double,
+    pvalue :: Double
+  }
+  deriving (Show, Eq)
diff --git a/src/Bio/RNAcodeParser.hs b/src/Bio/RNAcodeParser.hs
new file mode 100644
--- /dev/null
+++ b/src/Bio/RNAcodeParser.hs
@@ -0,0 +1,112 @@
+-- | Parse RNAcode output
+--   For more information on RNAcode consult: <http://wash.github.io/rnacode/>
+
+
+module Bio.RNAcodeParser (
+                       systemRNAcode,
+                       parseRNAcode,
+                       readRNAcode,
+                       parseRNAcodeTabular,
+                       readRNAcodeTabular,
+                       module Bio.RNAcodeData
+                      ) where
+import Data.Functor.Identity
+import Bio.RNAcodeData
+import Text.ParserCombinators.Parsec
+import System.Process
+import System.Exit
+import Text.Parsec.Token
+import qualified Control.Exception.Base as CE
+import Text.Parsec.Language (haskell)
+import Control.Applicative ((<*>),(<$>),(<$),pure)
+
+-- | Run external RNAcode command and read the output into the corresponding datatype
+systemRNAcode :: String -> String -> String -> IO ExitCode
+systemRNAcode options inputFilePath outputFilePath = system ("RNAcode " ++ options ++ " " ++ inputFilePath ++ " >" ++ outputFilePath)
+
+-- | Parse the tabular input as RNAcode datatype
+genParseRNAcodeTabular :: GenParser Char st RNAcode
+genParseRNAcodeTabular = do
+  _rnacodeHits <- many1 genParseRNAcodeTabularHit
+  return $ RNAcode _rnacodeHits Nothing Nothing Nothing Nothing Nothing Nothing Nothing
+
+-- | Parse the input as RNAcodeHit
+genParseRNAcodeTabularHit :: GenParser Char st RNAcodeHit
+genParseRNAcodeTabularHit = do
+  _hss <- natural haskell
+  _frame <- integer haskell
+  _length <- natural haskell
+  _from <- natural haskell
+  _to <- natural haskell
+  _name <- identifier haskell
+  _start <- natural haskell
+  _end <- natural haskell
+  _score <- float haskell
+  _pvalue <- float haskell
+  return $ RNAcodeHit (fromInteger _hss) (fromInteger _frame) (fromInteger _length) (fromInteger _from) (fromInteger _to) _name (fromInteger _start) (fromInteger _end) _score _pvalue 
+
+
+-- | Parse the input as RNAcode datatype
+genParseRNAcode :: GenParser Char st RNAcode
+genParseRNAcode = do
+  many1 (oneOf " \n")
+  string "HSS # Frame Length  From    To        Name       Start         End    Score        P"
+  newline
+  string "======================================================================================"
+  newline
+  _rnacodeHits <- many1 (try genParseRNAcodeHit)
+  newline
+  _alignmentnumber <- natural haskell
+  string "alignment(s) scored in "
+  _time <- float haskell
+  string "seconds. Parameters used:"
+  newline
+  string "N="
+  _samples <- natural haskell
+  string ", Delta="
+  --_delta <- float haskell
+  _delta <- (try (negate <$ char '-') <|> pure id) <*> float haskell
+  string ", Omega="
+  _bigomega <- (try (negate <$ char '-') <|> pure id) <*> float haskell
+  string ", omega="
+  _smallomega <- (try (negate <$ char '-') <|> pure id) <*> float haskell
+  string ", stop penalty="
+  _stopPenalty <- (try (negate <$ char '-') <|> pure id) <*> float haskell
+  return $ RNAcode _rnacodeHits (Just (fromInteger _alignmentnumber)) (Just _time) (Just (fromInteger _samples)) (Just _delta) (Just _bigomega) (Just _smallomega) (Just _stopPenalty)
+
+-- | Parse the input as RNAcodeHit
+genParseRNAcodeHit :: GenParser Char st RNAcodeHit
+genParseRNAcodeHit = do
+  many (char ' ')
+  _hss <- natural haskell
+  _frame <- integer haskell
+  _length <- natural haskell
+  _from <- natural haskell
+  _to <- natural haskell
+  _name <- identifier haskell
+  _start <- natural haskell
+  _end <- natural haskell
+  _score <- float haskell
+  _pvalue <- many1 (try (choice [digit,char '.']))
+  newline
+  return $ RNAcodeHit (fromInteger _hss) (fromInteger _frame) (fromInteger _length) (fromInteger _from) (fromInteger _to) _name (fromInteger _start) (fromInteger _end) _score (read _pvalue :: Double)
+
+-- | parse RNAcode from input string
+parseRNAcode :: String -> Either ParseError RNAcode
+parseRNAcode = parse genParseRNAcode "parseRNAcode"
+
+-- | parse RNAcode from input filePath                      
+readRNAcode :: String -> IO (Either ParseError RNAcode)                  
+readRNAcode filePath = do 
+  parsedFile <- parseFromFile genParseRNAcode filePath
+  CE.evaluate parsedFile
+
+-- | parse RNAcode from input string
+parseRNAcodeTabular :: String -> Either ParseError RNAcode
+parseRNAcodeTabular = parse genParseRNAcodeTabular "parseRNAcode" 
+
+-- | parse RNAcode from input filePath                      
+readRNAcodeTabular :: String -> IO (Either ParseError RNAcode)                  
+readRNAcodeTabular filePath = do 
+  parsedFile <- parseFromFile genParseRNAcodeTabular filePath
+  CE.evaluate parsedFile
diff --git a/src/Bio/ViennaRNAParser.hs b/src/Bio/ViennaRNAParser.hs
--- a/src/Bio/ViennaRNAParser.hs
+++ b/src/Bio/ViennaRNAParser.hs
@@ -3,7 +3,9 @@
 -- For more information on the Vienna RNAPackage consult: <http://www.tbi.univie.ac.at/~ivo/RNA/>
 -- or the homepage of the current maintainer: <http://www.tbi.univie.ac.at/~ronny/RNA/index.html>
 
-module Bio.ViennaRNAParser ( 
+module Bio.ViennaRNAParser (
+                       module Bio.RNAcodeData,
+                       module Bio.RNAcodeParser,
                        module Bio.RNAcofoldData,
                        module Bio.RNAcofoldParser,                           
                        module Bio.RNAplexData,
@@ -19,6 +21,8 @@
                        module Bio.RNAupData,
                        module Bio.RNAupParser
                       ) where
+import Bio.RNAcodeData
+import Bio.RNAcodeParser
 import Bio.RNAcofoldData
 import Bio.RNAcofoldParser
 import Bio.RNAplexData
