BangPatterns CPP DeriveDataTypeable DeriveFunctor EmptyDataDecls ExistentialQuantification FlexibleContexts FlexibleInstances FunctionalDependencies GeneralizedNewtypeDeriving MultiParamTypeClasses ParallelListComp PatternGuards QuasiQuotes RankNTypes ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeOperators TypeSynonymInstances UndecidableInstances UnicodeSyntax ViewPatterns