diff --git a/language-elm.cabal b/language-elm.cabal
--- a/language-elm.cabal
+++ b/language-elm.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 5a8ac7a0d3b4256acbac6f6a2752b4d850e3c26442dc066788cbb63c41b5e56e
+-- hash: 050e863d71a7e857420f7de3b152deaef3a5bb95ea66f88027aea574e710783e
 
 name:           language-elm
-version:        0.1.1.3
+version:        0.2.0.0
 synopsis:       Generate elm code
 description:    Generate elm code from an ast
 category:       Web
@@ -37,7 +37,7 @@
 library
   exposed-modules:
       Elm
-      Elm.Decleration
+      Elm.Declaration
       Elm.Expression
       Elm.Import
       Elm.Program
@@ -50,7 +50,7 @@
       src
   build-depends:
       MissingH
-    , base >=4.11 && <5
+    , base >=4.11 && <4.12
     , mtl
     , pretty
     , protolude
@@ -68,8 +68,7 @@
       test
   ghc-options: -threaded -rtsopts -with-rtsopts=-N
   build-depends:
-      base >=4.11 && <5
-    , doctest
+      base >=4.11 && <4.12
     , hspec
     , language-elm
     , mtl
diff --git a/src/Elm.hs b/src/Elm.hs
--- a/src/Elm.hs
+++ b/src/Elm.hs
@@ -28,7 +28,7 @@
     , ttuple
     , trecord
     , trecordParam
-    -- * Declerations
+    -- * Declarations
     , Dec
     , decVariable
     , decFunction
@@ -61,7 +61,7 @@
 import           Control.Monad.Writer
 import           Data.String
 import           Elm.Classes
-import qualified Elm.Decleration
+import qualified Elm.Declaration
 import qualified Elm.Expression
 import           Elm.GenError         (GenError (WarningList))
 import qualified Elm.Import
@@ -72,7 +72,7 @@
 
 type Expr = Elm.Expression.Expr
 type Type = Elm.Type.TypeDec
-type Dec = Elm.Decleration.Dec
+type Dec = Elm.Declaration.Dec
 type Import = Elm.Import.Import
 type ImportExpr = Elm.Import.ImportType
 type ImportItem = Elm.Import.ImportItem
@@ -231,7 +231,7 @@
     -> Type -- ^ The variable's type
     -> Expr -- ^ The variable's value
     -> Dec
-decVariable name type_ expr = Elm.Decleration.Dec  name type_ [] expr
+decVariable name type_ expr = Elm.Declaration.Dec  name type_ [] expr
 
 -- | Declare a function
 decFunction :: String  -- ^ The function name
@@ -239,21 +239,21 @@
     -> [Expr] -- ^ The fuction's paramaters
     -> Expr  -- ^ The function's value
     -> Dec
-decFunction = Elm.Decleration.Dec
+decFunction = Elm.Declaration.Dec
 
 -- | Declare a type
 decType :: String -- ^ The type name
     -> [String] -- ^ The type's type paramaters
     -> [(String, [Type])] -- ^ The type's constructors
     -> Dec
-decType = Elm.Decleration.DecType
+decType = Elm.Declaration.DecType
 
 -- | Declare a type alias
 decTypeAlias :: String  -- ^ The type alias' name
     -> [String]  -- ^ The type alias's type paramaters
     -> Type  -- ^ The type alias's type
     -> Dec
-decTypeAlias = Elm.Decleration.DecTypeAlias
+decTypeAlias = Elm.Declaration.DecTypeAlias
 
 -- | Import an item
 select :: String -> ImportItem
diff --git a/src/Elm/Declaration.hs b/src/Elm/Declaration.hs
new file mode 100644
--- /dev/null
+++ b/src/Elm/Declaration.hs
@@ -0,0 +1,44 @@
+{-# OPTIONS_HADDOCK prune #-}
+{-# OPTIONS_GHC -Wall -Werror #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE Safe              #-}
+
+-- | Top level declerations
+module Elm.Declaration where
+
+import           Elm.Classes
+import           Elm.Expression
+import           Elm.Type
+import           Text.PrettyPrint
+
+-- | Used to declare functions, variables, and types
+data Dec
+    -- | Declare a function
+    = Dec String TypeDec [Expr] Expr
+    -- | Declare a type
+    | DecType String [String] [(String, [TypeDec])]
+    -- | Declare a type alias
+    | DecTypeAlias String [String] TypeDec
+
+instance Generate Dec where
+    generate dec =
+        case dec of
+             Dec name type_ params value -> do
+                typeDoc <- generate type_
+                paramDocs <- mapM generate params
+                valueDoc <- generate value
+                return $ text name <+> ":" <+> typeDoc $+$ text name <+> hsep paramDocs <+> "=" $+$ nest 4 valueDoc
+
+             DecType name params instances -> do
+                let (keys, values) = unzip instances
+                let keyDocs = map text keys
+                valueDocs <- mapM (mapM generate) values
+                let instanceDocs = map (\(key, values') -> key <+> hsep values') $ zip keyDocs valueDocs
+                let paramDocs = map text params
+                return $ "type" <+> text name <+> hsep paramDocs $+$
+                    (nest 4 $  "=" <+> head instanceDocs $+$ (vcat . map ((<+>)"|") . tail $ instanceDocs))
+
+             DecTypeAlias name params type_ -> do
+                typeDoc <- generate type_
+                let paramDocs = map text params
+                return $ "type alias" <+> text name <+> hsep paramDocs <+> "=" $+$ nest 4 typeDoc
diff --git a/src/Elm/Decleration.hs b/src/Elm/Decleration.hs
deleted file mode 100644
--- a/src/Elm/Decleration.hs
+++ /dev/null
@@ -1,44 +0,0 @@
-{-# OPTIONS_HADDOCK prune #-}
-{-# OPTIONS_GHC -Wall -Werror #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE Safe              #-}
-
--- | Top level declerations
-module Elm.Decleration where
-
-import           Elm.Classes
-import           Elm.Expression
-import           Elm.Type
-import           Text.PrettyPrint
-
--- | Used to declare functions, variables, and types
-data Dec
-    -- | Declare a function
-    = Dec String TypeDec [Expr] Expr
-    -- | Declare a type
-    | DecType String [String] [(String, [TypeDec])]
-    -- | Declare a type alias
-    | DecTypeAlias String [String] TypeDec
-
-instance Generate Dec where
-    generate dec =
-        case dec of
-             Dec name type_ params value -> do
-                typeDoc <- generate type_
-                paramDocs <- mapM generate params
-                valueDoc <- generate value
-                return $ text name <+> ":" <+> typeDoc $+$ text name <+> hsep paramDocs <+> "=" $+$ nest 4 valueDoc
-
-             DecType name params instances -> do
-                let (keys, values) = unzip instances
-                let keyDocs = map text keys
-                valueDocs <- mapM (mapM generate) values
-                let instanceDocs = map (\(key, values') -> key <+> hsep values') $ zip keyDocs valueDocs
-                let paramDocs = map text params
-                return $ "type" <+> text name <+> hsep paramDocs $+$
-                    (nest 4 $  "=" <+> head instanceDocs $+$ (vcat . map ((<+>)"|") . tail $ instanceDocs))
-
-             DecTypeAlias name params type_ -> do
-                typeDoc <- generate type_
-                let paramDocs = map text params
-                return $ "type alias" <+> text name <+> hsep paramDocs <+> "=" $+$ nest 4 typeDoc
diff --git a/src/Elm/Program.hs b/src/Elm/Program.hs
--- a/src/Elm/Program.hs
+++ b/src/Elm/Program.hs
@@ -14,7 +14,7 @@
 import           Data.String
 import           Data.String.Utils
 import           Elm.Classes
-import           Elm.Decleration
+import           Elm.Declaration
 import           Elm.GenError
 import           Elm.Import
 import           Text.PrettyPrint
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -2,7 +2,7 @@
 
 import           Control.Monad.Writer
 import           Elm.Classes
-import           Elm.Decleration
+import           Elm.Declaration
 import           Elm.Expression
 import           Elm.GenError
 import           Elm.Import
