diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,31 +1,38 @@
 # haskell-conll
 
 [![Build Status](https://travis-ci.com/mgajda/haskell-conll.svg?token=DtSUtnf37TUDy1p4x6fT&branch=master)](https://travis-ci.com/mgajda/haskell-conll)
+![Hackage](https://img.shields.io/hackage/v/api-monobank.svg)
 
-Set of Basic Types and Primitives that are used for NLP software such as 
-- CoreNLP
-- SyntaxNet
+This library package provides set of foundational types and primitives that can be used in NLP software.
+Such as:
 
-and can be extended for usage with other software. 
+- [CoreNLP](https://github.com/mgajda/syntaxnet-haskell)
+- [SyntaxNet](https://ai.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html)
 
+and can be extended for usage with other software.
+
 If you're working on custom solutions you can use it also.
 
-# TreeBanks
+# Treebank
 
-Library supports
+Library provides support for
 
-- [Penn Treebank Tag-set](http://www.comp.leeds.ac.uk/amalgam/tagsets/upenn.html)
-- [Universal Dependencies](http://universaldependencies.org/en/dep/)
+- English / [Penn Treebank Tag-set](http://www.comp.leeds.ac.uk/amalgam/tagsets/upenn.html)
+- English / [Universal Dependencies](http://universaldependencies.org/en/dep/)
 
 # Used
 
-This library is used in 
+This library is used in
 
 - [SyntaxNet Haskell bindings](https://github.com/mgajda/syntaxnet-haskell/)
-- [CoreNLP Haskell bindings](https://github.com/mgajda/corenlp-haskell/) 
+- [CoreNLP Haskell bindings](https://github.com/mgajda/corenlp-haskell/)
 
+# Maintainer
+
+[Sergey Bushnyak](https://github.com/sigrlami)
+
 # Acknowledgements
 
-- [Michał J. Gajda](https://github.com/mgajda)
+- [Michał J. Gajda](https://github.com/mgajda)  - initial idea
+- [Sergey Bushnyak](https://github.com/sigrlami) - core maintainer
 - [Alejandro Duran Pallares](https://github.com/vwwv)
-- [Sergey Bushnyak](https://github.com/sigrlami)
diff --git a/haskell-conll.cabal b/haskell-conll.cabal
--- a/haskell-conll.cabal
+++ b/haskell-conll.cabal
@@ -1,74 +1,55 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.31.2.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: b21428dd633a54dcad8df997e5dd388761faf2c2fb045e8f4e85db3fec48f6ca
+
 name:                haskell-conll
-version:             0.1.0.1
+version:             0.1.0.2
 synopsis:            Core Types for NLP
 description:         Provides core types to work with CoreNLP, SyntaxNet. Handling CoNLL format and Syntax Trees.
-homepage:            https://github.com/mgajda/haskell-conll#readme
-license:             BSD3
+homepage:            https://github.com/sigrlami/haskell-conll#readme
+bug-reports:         https://github.com/sigrlami/haskell-conll/issues
+license:             MIT
 license-file:        LICENSE
-author:              Sergey Bushnyak, Alejandro Duran-Pallares, Michal Gajda
+author:              Michal Gajda,
+                     Sergey Bushnyak,
+                     Alejandro Duran-Pallares
 maintainer:          sergey.bushnyak@sigrlami.eu
-copyright:           Copyright: (c) 2017 Sergey Bushnyak, Michal Gajda, Alejandro Duran-Pallares
+copyright:           Copyright: (c) 2017-2019 Michal Gajda,
+                     Sergey Bushnyak,
+                     Alejandro Duran-Pallares
 category:            Text
 build-type:          Simple
-extra-source-files:  README.md
-cabal-version:       >=1.10
-
-library
-  hs-source-dirs:      src
-  exposed-modules:     Data.ConllToken
-                 ,     Data.ParsedSentence
-                 ,     Data.SyntaxTree
-                 ,     Data.TagLabel
-                 ,     Model.NerCoreNlp
-                 ,     Model.PennTreebank
-                 ,     Model.UniversalTreebank
-
-  build-depends:       base >= 4.7 && < 5
-                     , containers
-                     , lens
-                     , pretty-show
-                     , protolude
-                     , split
-                     , text
-
-  default-language:    Haskell2010
-
-  default-extensions:          NoImplicitPrelude
-                             , BangPatterns
-                             , BinaryLiterals
-                             , ConstraintKinds
-                             , DataKinds
-                             , DefaultSignatures
-                             , DeriveFunctor
-                             , DeriveGeneric
-                             , DisambiguateRecordFields
-                             , DuplicateRecordFields
-                             , EmptyDataDecls
-                             , FlexibleContexts
-                             , FlexibleInstances
-                             , FunctionalDependencies
-                             , GADTs
-                             , GeneralizedNewtypeDeriving
-                             , LambdaCase
-                             , MonadComprehensions
-                             , MultiParamTypeClasses
-                             , MultiWayIf
-                             , OverloadedStrings
-                             , PartialTypeSignatures
-                             , PatternSynonyms
-                             , RankNTypes
-                             , RecordWildCards
-                             , RecursiveDo
-                             , ScopedTypeVariables
-                             , StandaloneDeriving
-                             , TemplateHaskell
-                             , TupleSections
-                             , TypeFamilies
-                             , TypeInType
-                             , TypeOperators
-                             , TypeSynonymInstances
-
+extra-source-files:
+    README.md
 
 source-repository head
-  type:     git
+  type: git
   location: https://github.com/sigrlami/haskell-conll
+
+library
+  hs-source-dirs:
+      src
+  exposed-modules:
+      Data.ConllToken
+      Data.ParsedSentence
+      Data.SyntaxTree
+      Data.TagLabel
+      Model.NerCoreNlp
+      Model.PennTreebank
+      Model.UniversalTreebank
+  other-modules:
+      Paths_haskell_conll
+  build-depends:
+      base >=4.7 && <5
+    , containers
+    , lens
+    , pretty-show
+    , protolude
+    , split
+    , text
+  default-language: Haskell2010
+  default-extensions: NoImplicitPrelude DefaultSignatures OverloadedStrings TemplateHaskell TypeOperators
diff --git a/src/Data/ConllToken.hs b/src/Data/ConllToken.hs
--- a/src/Data/ConllToken.hs
+++ b/src/Data/ConllToken.hs
@@ -1,3 +1,6 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DeriveFunctor #-}
+
 module Data.ConllToken where
 
 import           Protolude
@@ -6,31 +9,33 @@
 --------------------------------------------------------------------------------
 
 -- | Basic data type to work witn CoNLL data format
--- 
+--
 data ConllToken cpos fpos ger feats lemma =
   ConllToken
-    { _tnId        :: Int     -- ^ Index number
-    , _tnWord      :: Text    -- ^ Parsed word or punctuation symbol
-    , _tnLemma     :: lemma   -- ^ Lemma or stem
-    , _tnPosCG     :: cpos    -- ^ Part-of-Speech (POS) coarse-grained (PRON, VERB, DET, NOUN, etc) 
-    , _tnPosFG     :: fpos    -- ^ Part-of-Speech (POS) fine-grained   (PRP, VBD, DT, NN etc.) 
-    , _tnFeats     :: feats   -- ^ Unordered set of syntactic and/or morphological features.
-    , _tnHead      :: Int     -- ^ Head of the current token, which is either a value of ID or '0'.
-    , _tnRel       :: ger     -- ^ grammatical relationships between different words in the sentence, alined with Head
-    , _tnHeadProj  :: Text    -- ^ Projective head of current token.
-    , _tnRelProj   :: Text    -- ^ Dependency relation to the PHEAD.     
+    { _tnId       :: Int   -- ^ Index number
+    , _tnWord     :: Text  -- ^ Parsed word or punctuation symbol
+    , _tnLemma    :: lemma -- ^ Lemma or stem
+    , _tnPosCG    :: cpos  -- ^ Part-of-Speech (POS) coarse-grained (PRON, VERB, DET, NOUN, etc)
+    , _tnPosFG    :: fpos  -- ^ Part-of-Speech (POS) fine-grained   (PRP, VBD, DT, NN etc.)
+    , _tnFeats    :: feats -- ^ Unordered set of syntactic and/or morphological features.
+    , _tnHead     :: Int   -- ^ Head of the current token, which is either a value of ID or '0'.
+    , _tnRel      :: ger   -- ^ grammatical relationships between different words in the sentence, alined with Head
+    , _tnHeadProj :: Text  -- ^ Projective head of current token.
+    , _tnRelProj  :: Text  -- ^ Dependency relation to the PHEAD.
     } deriving (Show, Read, Eq, Ord, Generic, Functor)
 
 -- | Describes typical errors when parsing CoNLL from text data
 --   Contains next filelds:  Reason, LineNumber, Culprit
-data SyntaxErrorCoNLL = UnkonwnPosTag                 Int       Text 
-                      | UnkwownRelTag                 Int       Text 
-                      | CoulNotParseInteger           Int       Text 
-                      | InvalidNumberOfElementsOnLine Int       Text 
-                      | TheresNoRoot
-                      deriving(Show,Read,Eq,Ord)
+data SyntaxErrorCoNLL =
+    UnkonwnPosTag                 Int       Text
+  | UnkwownRelTag                 Int       Text
+  | CoulNotParseInteger           Int       Text
+  | InvalidNumberOfElementsOnLine Int       Text
+  | TheresNoRoot
+  deriving(Show, Read, Eq, Ord)
 
-$(makeLenses ''ConllToken      )
-$(makePrisms ''SyntaxErrorCoNLL)
+-- There are multiple conll formats CoNLL, CoNLL-X, CoNLL-U, CoNLL-ST
 
 
+$(makeLenses ''ConllToken      )
+$(makePrisms ''SyntaxErrorCoNLL)
diff --git a/src/Data/ParsedSentence.hs b/src/Data/ParsedSentence.hs
--- a/src/Data/ParsedSentence.hs
+++ b/src/Data/ParsedSentence.hs
@@ -1,22 +1,24 @@
+{-# LANGUAGE DeriveGeneric   #-}
+{-# LANGUAGE RecordWildCards #-}
+
 module Data.ParsedSentence
   ( module Data.ParsedSentence
   , module Data.SyntaxTree
   ) where
 
-import           Protolude
-import           Data.SyntaxTree
 import           Data.Map
+import           Data.SyntaxTree
+import           Protolude
 
 --------------------------------------------------------------------------------
 
--- | 
+-- |  All relations having as "head" the given index
 data ParsedSentence cpos fpos ger feats lemma =
   ParsedSentence
   { _rootNode    :: SyntaxtTree cpos fpos ger feats lemma
   , _indexToNode :: Map Int (SyntaxtTree cpos fpos ger feats lemma)
-  , _headToNode  :: Map Int [SyntaxtTree cpos fpos ger feats lemma] 
-                    -- ^ All relations having as "head" the given index  
-  } deriving(Show,Read,Eq,Generic)
+  , _headToNode  :: Map Int [SyntaxtTree cpos fpos ger feats lemma]
+  } deriving(Show, Read, Eq, Generic)
 
 -- |
 sentenceFromRootNode :: SyntaxtTree cpos fpos ger feats lemma
@@ -24,7 +26,7 @@
 sentenceFromRootNode _rootNode =
   ParsedSentence{..}
     where
-      _indexToNode = fromList          [ (_tnId   $ rootLabel node, node ) | node <- everyNode]    
+      _indexToNode = fromList          [ (_tnId   $ rootLabel node, node ) | node <- everyNode]
       _headToNode  = fromListWith (++) [ (_tnHead $ rootLabel node,[node]) | node <- everyNode]
       everyNode    = everyNodeFrom _rootNode
       everyNodeFrom node@(Node _ children) = node:( everyNodeFrom =<< children)
diff --git a/src/Data/SyntaxTree.hs b/src/Data/SyntaxTree.hs
--- a/src/Data/SyntaxTree.hs
+++ b/src/Data/SyntaxTree.hs
@@ -11,27 +11,27 @@
 
 --------------------------------------------------------------------------------
 
--- |
+-- | Wrapper for the tree to describe syntax tree
+--   as a structure of connected ConllTokens
 type SyntaxtTree cpos fpos ger feats lemma =
   Tree (ConllToken cpos fpos ger feats lemma)
 
 -- |
-createSyntaxTree :: [ConllToken cpos fpos ger feats lemma] 
+createSyntaxTree :: [ConllToken cpos fpos ger feats lemma]
                  -> Either SyntaxErrorCoNLL (SyntaxtTree cpos fpos ger feats lemma)
 createSyntaxTree conllLines =
   note TheresNoRoot $ listToMaybe (treeFrom 0)
     where
-
-    indexToNode = fromList [ (_tnId l,l) | l <- conllLines]
-
-    headToNode  = fromListWith (++) [ (_tnHead node,[node]) 
-                                    | node <- conllLines
-                                    ]
-
-    treeFrom n = let relations = fromMaybe [] $ lookup n headToNode                            
-                  in [ Node{ rootLabel = node
-                           , subForest = treeFrom (_tnId node)
-                           }
-                     | node <- relations
-                     ]
+      indexToNode = fromList [ (_tnId l,l)
+                             | l <- conllLines
+                             ]
+      headToNode  = fromListWith (++) [ (_tnHead node,[node])
+                                      | node <- conllLines
+                                      ]
 
+      treeFrom n = let relations = fromMaybe [] $ lookup n headToNode
+                   in [ Node { rootLabel = node
+                             , subForest = treeFrom (_tnId node)
+                             }
+                      | node <- relations
+                      ]
diff --git a/src/Data/TagLabel.hs b/src/Data/TagLabel.hs
--- a/src/Data/TagLabel.hs
+++ b/src/Data/TagLabel.hs
@@ -1,15 +1,25 @@
-module Data.TagLabel ( module GHC.Generics
-                     , TagLabel(..)
-                     , SpelledAs(..)
-                     , fromLabelText
-                     , toLabelText
-                     ) where
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE DataKinds      #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE ScopedTypeVariables #-}
 
+module Data.TagLabel
+        ( module GHC.Generics
+        , TagLabel(..)
+        , SpelledAs(..)
+        , fromLabelText
+        , toLabelText
+        ) where
+
 import           Data.Char
 import           Data.Map
 import           GHC.Generics    (Generic,Rep(..),(:+:)(..))
 import           GHC.TypeLits
-import           Protolude       hiding(fromLabel)
+import           Protolude       hiding (fromLabel)
+import           Protolude.Error
 import qualified Data.Text       as T
 import qualified GHC.Generics    as G
 
@@ -29,10 +39,10 @@
 fromLabelText :: (TagLabel label) => Text -> Maybe label
 fromLabelText t = lookup t labelMap
 
--- | 
+-- |
 toLabelText   :: (TagLabel label) => label -> Text
 toLabelText l =
-  fromMaybe (error "imposible branch on Data.Label") 
+  fromMaybe (error "imposible branch on Data.Label")
     $ lookup l reverseLabelMap
 
 --------------------------------------------------------------------------------
@@ -46,31 +56,31 @@
     gLabelMap _ = second M1 <$> gLabelMap (Proxy :: Proxy f)
 
 
--- | The labels of sum types are the labels of its parts 
+-- | The labels of sum types are the labels of its parts
 instance (GLabel f, GLabel g) => GLabel ( f :+: g) where
   gLabelMap _ =  ( second L1  <$> gLabelMap (Proxy :: Proxy f))
               ++ ( second R1  <$> gLabelMap (Proxy :: Proxy g))
 
 -- | The label of a constructor without arguments is the constructor's name itself
 instance (KnownSymbol constructor) => GLabel (C1 ('MetaCons constructor a b) U1) where
-  gLabelMap _ = [( convert . toSL $ symbolVal (Proxy :: Proxy constructor) , M1 U1)] 
+  gLabelMap _ = [( convert . toSL $ symbolVal (Proxy :: Proxy constructor) , M1 U1)]
     where
       convert s = if T.any isLower s then T.toLower s
                                      else s
--- | The labels with a constructor with a single argument, are the labels of its argument 
+-- | The labels with a constructor with a single argument, are the labels of its argument
 instance (TagLabel labelType) => GLabel (C1 meta1 (S1 meta2 (K1 meta3 labelType))) where
   gLabelMap _ = assocs $ (M1 . M1 . K1)  <$> labelMap
 
 ---------------------------------------------------------------------------------------
 -- Standard labels
 
--- | The labels of a sum type, is the cartesian sum of its labels 
-instance (TagLabel l1, TagLabel l2)  => TagLabel (Either l1 l2)  
+-- | The labels of a sum type, is the cartesian sum of its labels
+instance (TagLabel l1, TagLabel l2)  => TagLabel (Either l1 l2)
 
 -- | The label of a `SpelledAs x` is x, where x is a type level literal string (a "Symbol").
 instance (KnownSymbol symbol) => TagLabel (SpelledAs symbol) where
    labelMap = fromList [(toSL $ symbolVal (Proxy :: Proxy symbol),  SymbolProxy)]
 
-data SpelledAs (s :: Symbol) = SymbolProxy deriving(Show,Read,Eq,Ord,Generic)
-
-
+data SpelledAs (s :: Symbol) =
+  SymbolProxy
+    deriving(Show, Read, Eq, Ord, Generic)
diff --git a/src/Model/NerCoreNlp.hs b/src/Model/NerCoreNlp.hs
--- a/src/Model/NerCoreNlp.hs
+++ b/src/Model/NerCoreNlp.hs
@@ -1,10 +1,12 @@
 {-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE DeriveGeneric  #-}
 
-module Model.NerCoreNlp where 
+module Model.NerCoreNlp where
 
-import           Protolude
 import           Data.TagLabel
+import           Protolude
 
+--------------------------------------------------------------------------------
 
 {- | Named Entity Recognition (NER) tag set used by `CoreNLP`.
 
@@ -14,24 +16,22 @@
 
 -- | CoreNLP's NER tag set:
 
-data NER = O
-         | CARDINAL 
-         | DATE
-         | DURATION
-         | FACILITY 
-         | GPE
-         | LOCATION 
-         | MEASURE
-         | MISC
-         | MONEY
-         | NUMBER
-         | ORDINAL
-         | ORGANIZATION 
-         | PERCENT 
-         | PERSON 
-         | SET
-         | TIME
-         deriving(Show,Eq,Read,Ord,Generic,TagLabel)
-
-
-
+data NER =
+    O
+  | CARDINAL
+  | DATE
+  | DURATION
+  | FACILITY
+  | GPE
+  | LOCATION
+  | MEASURE
+  | MISC
+  | MONEY
+  | NUMBER
+  | ORDINAL
+  | ORGANIZATION
+  | PERCENT
+  | PERSON
+  | SET
+  | TIME
+  deriving(Show, Eq, Read, Ord, Generic, TagLabel)
diff --git a/src/Model/PennTreebank.hs b/src/Model/PennTreebank.hs
--- a/src/Model/PennTreebank.hs
+++ b/src/Model/PennTreebank.hs
@@ -1,65 +1,63 @@
+{-# LANGUAGE DataKinds      #-}
 {-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE DeriveGeneric  #-}
 
-module Model.PennTreebank where 
+module Model.PennTreebank where
 
-import           Protolude
 import           Data.TagLabel
+import           Protolude
 
 --------------------------------------------------------------------------------
 
--- | (Penn) Treebank Tag-set 
+-- | (Penn) Treebank Tag-set
 --  For documentation see http://www.comp.leeds.ac.uk/amalgam/tagsets/upenn.html
-data POS = CC
-         | CD
-         | ClosePar    (SpelledAs ")"    )
-         | Colon       (SpelledAs ":"    )
-         | Coma        (SpelledAs ",")
-         | Dash        (SpelledAs "--"   ) 
-         | Dollar      (SpelledAs "$"    )
-         | DT
-         | EX
-         | FW
-         | IN
-         | JJ
-         | JJR
-         | JJS
-         | LRB_        (SpelledAs "-LRB-")
-         | LS
-         | MD
-         | NN
-         | NNP
-         | NNPS
-         | NNS
-         | OpenPar     (SpelledAs "("    ) 
-         | PDT
-         | POS
-         | PRP
-         | PRP_Dollar  (SpelledAs "PRP$")
-         | Quotes      (SpelledAs "''")
-         | Quotes2     (SpelledAs "``")
-         | RB
-         | RBR
-         | RBS
-         | RP
-         | RRB_        (SpelledAs "-RRB-")
-         | SYM
-         | Terminator  (SpelledAs "."    )
-         | TO
-         | UH
-         | VB
-         | VBD
-         | VBG
-         | VBN
-         | VBP
-         | VBZ
-         | WDT
-         | WP
-         | WP_Dollar     (SpelledAs "WP$")
-         | WRB
-         | UNKNOWN -- when some unknown string used
-         deriving(Show,Read,Eq,Ord,Generic,TagLabel)
-
-
-
-
-
+data POS =
+    CC
+  | CD
+  | ClosePar    (SpelledAs ")"    )
+  | Colon       (SpelledAs ":"    )
+  | Coma        (SpelledAs ",")
+  | Dash        (SpelledAs "--"   )
+  | Dollar      (SpelledAs "$"    )
+  | DT
+  | EX
+  | FW
+  | IN
+  | JJ
+  | JJR
+  | JJS
+  | LRB_        (SpelledAs "-LRB-")
+  | LS
+  | MD
+  | NN
+  | NNP
+  | NNPS
+  | NNS
+  | OpenPar     (SpelledAs "("    )
+  | PDT
+  | POS
+  | PRP
+  | PRP_Dollar  (SpelledAs "PRP$")
+  | Quotes      (SpelledAs "''")
+  | Quotes2     (SpelledAs "``")
+  | RB
+  | RBR
+  | RBS
+  | RP
+  | RRB_        (SpelledAs "-RRB-")
+  | SYM
+  | Terminator  (SpelledAs "."    )
+  | TO
+  | UH
+  | VB
+  | VBD
+  | VBG
+  | VBN
+  | VBP
+  | VBZ
+  | WDT
+  | WP
+  | WP_Dollar     (SpelledAs "WP$")
+  | WRB
+  | UNKNOWN -- when some unknown string used
+  deriving(Show,Read,Eq,Ord,Generic,TagLabel)
diff --git a/src/Model/UniversalTreebank.hs b/src/Model/UniversalTreebank.hs
--- a/src/Model/UniversalTreebank.hs
+++ b/src/Model/UniversalTreebank.hs
@@ -1,62 +1,64 @@
+{-# LANGUAGE DataKinds      #-}
 {-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE DeriveGeneric  #-}
 
-module Model.UniversalTreebank where 
+module Model.UniversalTreebank where
 
-import           Protolude
 import           Data.TagLabel
+import           Protolude
 
 --------------------------------------------------------------------------------
 
 -- | Tags from Universal Dependencies project
 --   see `http://universaldependencies.org/en/dep/`
-data REL = Acl                                    -- ^ clausal modifier of noun
-         | Acl_Relcl  (SpelledAs "acl:relcl"   )  -- ^ relative clause modifier
-         | Advcl                                  -- ^ adverbial clause modifier
-         | Advmod                                 -- ^ adverbial modifier
-         | Amod                                   -- ^ adjectival modifier
-         | Appos                                  -- ^ appositional modifier
-         | Aux                                    -- ^ auxiliary
-         | Auxpass                                -- ^ passive auxiliary
-         | Case                                   -- ^ case marking
-         | Cc                                     -- ^ coordination
-         | Cc_Preconj (SpelledAs "cc:preconj"  )  -- ^ preconjunct
-         | Ccomp                                  -- ^ clausal complement
-         | Compound                               -- ^ compound
-         | Compound_Pr(SpelledAs "compound:prt")  -- ^ phrasal verb particle
-         | Conj                                   -- ^ conjunct
-         | Cop                                    -- ^ copula
-         | Csubj                                  -- ^ clausal subject
-         | Csubjpass                              -- ^ clausal passive subject
-         | Dep                                    -- ^ dependent
-         | Det                                    -- ^ determiner
-         | Det_Predet (SpelledAs "det:predet"  )  -- ^ predeterminer
-         | Discourse                              -- ^ discourse element
-         | Dislocated                             -- ^ dislocated elements
-         | Dobj                                   -- ^ direct object
-         | Expl                                   -- ^ expletive
-         | Fixed      (SpelledAs "mwe")           -- ^ multi-word expression
-         | Flat                                   -- ^ name
-         | Foreign                                -- ^ foreign words
-         | Goeswith                               -- ^ goes with
-         | Iobj                                   -- ^ indirect object
-         | List                                   -- ^ list
-         | Mark                                   -- ^ marker
-         | Neg                                    -- ^ negation modifier
-         | Nmod                                   -- ^ nominal modifier
-         | Nmod_npmod (SpelledAs "nmod:npmod"  )  -- ^ noun phrase as adverbial modifier
-         | Nmod_poss  (SpelledAs "nmod:poss"   )  -- ^ possessive nominal modifier
-         | Nmod_tmod  (SpelledAs "nmod:tmod"   )  -- ^ temporal modifier
-         | Nsubj                                  -- ^ nominal subject
-         | Nsubjpass                              -- ^ passive nominal subject
-         | Nummod                                 -- ^ numeric modifier
-         | Orphan                                 -- ^ remnant in ellipsis
-         | Parataxis                              -- ^ parataxis
-         | Punct                                  -- ^ punctuation
-         | Reparandum                             -- ^ overridden disfluency
-         | ROOT                                   -- ^ root
-         | Root                                   -- ^ root (not main)
-         | Vocative                               -- ^ vocative
-         | Xcomp                                  -- ^ open clausal complement
-         | Unknown                                -- ^ unknown
-         deriving(Show,Read,Eq,Ord,Generic,TagLabel)
-
+data REL =
+  Acl                                    -- ^ clausal modifier of noun
+  | Acl_Relcl  (SpelledAs "acl:relcl"   )  -- ^ relative clause modifier
+  | Advcl                                  -- ^ adverbial clause modifier
+  | Advmod                                 -- ^ adverbial modifier
+  | Amod                                   -- ^ adjectival modifier
+  | Appos                                  -- ^ appositional modifier
+  | Aux                                    -- ^ auxiliary
+  | Auxpass                                -- ^ passive auxiliary
+  | Case                                   -- ^ case marking
+  | Cc                                     -- ^ coordination
+  | Cc_Preconj (SpelledAs "cc:preconj"  )  -- ^ preconjunct
+  | Ccomp                                  -- ^ clausal complement
+  | Compound                               -- ^ compound
+  | Compound_Pr(SpelledAs "compound:prt")  -- ^ phrasal verb particle
+  | Conj                                   -- ^ conjunct
+  | Cop                                    -- ^ copula
+  | Csubj                                  -- ^ clausal subject
+  | Csubjpass                              -- ^ clausal passive subject
+  | Dep                                    -- ^ dependent
+  | Det                                    -- ^ determiner
+  | Det_Predet (SpelledAs "det:predet"  )  -- ^ predeterminer
+  | Discourse                              -- ^ discourse element
+  | Dislocated                             -- ^ dislocated elements
+  | Dobj                                   -- ^ direct object
+  | Expl                                   -- ^ expletive
+  | Fixed      (SpelledAs "mwe")           -- ^ multi-word expression
+  | Flat                                   -- ^ name
+  | Foreign                                -- ^ foreign words
+  | Goeswith                               -- ^ goes with
+  | Iobj                                   -- ^ indirect object
+  | List                                   -- ^ list
+  | Mark                                   -- ^ marker
+  | Neg                                    -- ^ negation modifier
+  | Nmod                                   -- ^ nominal modifier
+  | Nmod_npmod (SpelledAs "nmod:npmod"  )  -- ^ noun phrase as adverbial modifier
+  | Nmod_poss  (SpelledAs "nmod:poss"   )  -- ^ possessive nominal modifier
+  | Nmod_tmod  (SpelledAs "nmod:tmod"   )  -- ^ temporal modifier
+  | Nsubj                                  -- ^ nominal subject
+  | Nsubjpass                              -- ^ passive nominal subject
+  | Nummod                                 -- ^ numeric modifier
+  | Orphan                                 -- ^ remnant in ellipsis
+  | Parataxis                              -- ^ parataxis
+  | Punct                                  -- ^ punctuation
+  | Reparandum                             -- ^ overridden disfluency
+  | ROOT                                   -- ^ root
+  | Root                                   -- ^ root (not main)
+  | Vocative                               -- ^ vocative
+  | Xcomp                                  -- ^ open clausal complement
+  | Unknown                                -- ^ unknown
+  deriving(Show, Read, Eq, Ord, Generic, TagLabel)
