diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Mustache library changelog
 
+## v2.3.0
+
+- Changed `EitherT` to `ExceptT` (deprecation)
+- removed `getFile` from public API
+
 ## v2.2.3
 
 - Quick fix to prevent catchSubstitute from reporting substitutions to the renderer.
diff --git a/mustache.cabal b/mustache.cabal
--- a/mustache.cabal
+++ b/mustache.cabal
@@ -1,121 +1,128 @@
-name:                mustache
-version:             2.2.3
-synopsis:            A mustache template parser library.
-description:
-  Allows parsing and rendering template files with mustache markup. See the
-  mustache <http://mustache.github.io/mustache.5.html language reference>.
-  .
-  Implements the mustache spec version 1.1.3.
-  .
-  /Note/: Versions including and beyond 0.4 are compatible with ghc 7.8 again.
-license:             BSD3
-license-file:        LICENSE
-author:              Justus Adam
-maintainer:          dev@justus.science
-homepage:            https://github.com/JustusAdam/mustache
-bug-reports:         https://github.com/JustusAdam/mustache/issues
-copyright:           (c) 2015, 2016 Justus Adam
-category:            Development
-build-type:          Simple
-extra-source-files:  README.md
-                   , CHANGELOG.md
-                   , test/unit/examples/*.txt.mustache
-                   , test/unit/examples/partials/*.txt.mustache
-cabal-version:       >=1.10
-tested-with:         GHC >=7.8 && <= 7.10.2
+-- This file has been generated from package.yaml by hpack version 0.17.1.
+--
+-- see: https://github.com/sol/hpack
 
+name:           mustache
+version:        2.3.0
+synopsis:       A mustache template parser library.
+description:    Allows parsing and rendering template files with mustache markup. See the
+                mustache <http://mustache.github.io/mustache.5.html language reference>.
+                .
+                Implements the mustache spec version 1.1.3.
+                .
+                /Note/: Versions including and beyond 0.4 are compatible with ghc 7.8 again.
+category:       Development
+homepage:       https://github.com/JustusAdam/mustache
+bug-reports:    https://github.com/JustusAdam/mustache/issues
+author:         Justus Adam
+maintainer:     dev@justus.science
+copyright:      (c) 2015,
+                2016 Justus Adam
+license:        BSD3
+license-file:   LICENSE
+tested-with:    GHC>=7.8 && <=7.10.2
+build-type:     Simple
+cabal-version:  >= 1.10
 
+extra-source-files:
+    CHANGELOG.md
+    README.md
+    test/unit/examples/partials/test-partial.txt.mustache
+    test/unit/examples/test-template-partials.txt.mustache
+    test/unit/examples/test-template.txt.mustache
+
 source-repository head
-  type:     git
+  type: git
   location: git://github.com/JustusAdam/mustache.git
 
-
 library
-  exposed-modules:     Text.Mustache
-                     , Text.Mustache.Types
-                     , Text.Mustache.Parser
-                     , Text.Mustache.Compile
-                     , Text.Mustache.Render
-  other-modules:       Text.Mustache.Internal
-                     , Text.Mustache.Internal.Types
-  other-extensions:    NamedFieldPuns
-                     , OverloadedStrings
-                     , LambdaCase
-                     , TupleSections
-                     , TemplateHaskell
-                     , QuasiQuotes
-  build-depends:       base >=4.7 && <5
-                     , text
-                     , parsec
-                     , mtl >= 2.2.1
-                     , either
-                     , aeson
-                     , unordered-containers
-                     , vector
-                     , bytestring
-                     , directory
-                     , filepath
-                     , scientific
-                     , containers
-                     , template-haskell
-                     , th-lift
-  hs-source-dirs:      src
-  default-language:    Haskell2010
-  ghc-options:
-    -Wall
-  default-extensions:  LambdaCase
-                     , TupleSections
-
+  hs-source-dirs:
+      src
+  default-extensions: LambdaCase TupleSections
+  other-extensions: NamedFieldPuns OverloadedStrings LambdaCase TupleSections TemplateHaskell QuasiQuotes
+  ghc-options: -Wall
+  build-depends:
+      base >=4.7 && <5
+    , text
+    , aeson
+    , bytestring
+    , filepath
+    , parsec
+    , mtl >=2.2.1
+    , either
+    , unordered-containers
+    , vector
+    , directory
+    , scientific
+    , containers
+    , template-haskell
+    , th-lift
+  exposed-modules:
+      Text.Mustache
+      Text.Mustache.Types
+      Text.Mustache.Parser
+      Text.Mustache.Compile
+      Text.Mustache.Render
+  other-modules:
+      Text.Mustache.Internal
+      Text.Mustache.Internal.Types
+      Paths_mustache
+  default-language: Haskell2010
 
 executable haskell-mustache
-  main-is:             Main.hs
-  build-depends:       base >=4.7 && <5
-                     , mustache
-                     , bytestring
-                     , yaml
-                     , aeson
-                     , cmdargs
-                     , text
-                     , filepath
-  default-language:    Haskell2010
-  ghc-options:       -threaded -Wall
-  hs-source-dirs:      app
+  main-is: Main.hs
+  hs-source-dirs:
+      app
+  ghc-options: -threaded -Wall
+  build-depends:
+      base >=4.7 && <5
+    , text
+    , aeson
+    , bytestring
+    , filepath
+    , mustache
+    , yaml
+    , cmdargs
+  default-language: Haskell2010
 
+test-suite language-specifications
+  type: exitcode-stdio-1.0
+  main-is: Language.hs
+  hs-source-dirs:
+      test/integration
+  build-depends:
+      base >=4.7 && <5
+    , text
+    , aeson
+    , bytestring
+    , filepath
+    , hspec
+    , mustache
+    , unordered-containers
+    , yaml
+    , base-unicode-symbols
+    , wreq
+    , zlib
+    , tar
+    , lens
+  default-language: Haskell2010
 
 test-suite unit-tests
-  main-is:            Spec.hs
-  type:               exitcode-stdio-1.0
-  build-depends:      base >=4.7 && <5
-                    , hspec
-                    , text
-                    , mustache
-                    , aeson
-                    , unordered-containers
-                    , yaml
-                    , filepath
-                    , process
-                    , temporary
-                    , directory
-  hs-source-dirs:     test/unit
-  default-language:   Haskell2010
-
-
-test-suite language-specifications
-  main-is:            Language.hs
-  type:               exitcode-stdio-1.0
-  build-depends:      base >=4.7 && <5
-                    , hspec
-                    , text
-                    , mustache
-                    , aeson
-                    , unordered-containers
-                    , yaml
-                    , filepath
-                    , base-unicode-symbols
-                    , wreq
-                    , zlib
-                    , tar
-                    , lens
-                    , bytestring
-  hs-source-dirs:     test/integration
-  default-language:   Haskell2010
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  hs-source-dirs:
+      test/unit
+  build-depends:
+      base >=4.7 && <5
+    , text
+    , aeson
+    , bytestring
+    , filepath
+    , hspec
+    , mustache
+    , unordered-containers
+    , yaml
+    , process
+    , temporary
+    , directory
+  default-language: Haskell2010
diff --git a/src/Text/Mustache.hs b/src/Text/Mustache.hs
--- a/src/Text/Mustache.hs
+++ b/src/Text/Mustache.hs
@@ -131,7 +131,7 @@
 
 Subsequenty the 'STree' of the template is scanned for included partials, any
 present 'TemplateCache' is queried for the partial ('compileTemplateWithCache'),
-if not found it will be searched for in the @searchSpache@, compiled and
+if not found it will be searched for in the @searchSpace@, compiled and
 inserted into the template's own cache as well as the global cache for the
 compilation process.
 
diff --git a/src/Text/Mustache/Compile.hs b/src/Text/Mustache/Compile.hs
--- a/src/Text/Mustache/Compile.hs
+++ b/src/Text/Mustache/Compile.hs
@@ -12,7 +12,7 @@
 {-# LANGUAGE TemplateHaskell #-}
 module Text.Mustache.Compile
   ( automaticCompile, localAutomaticCompile, TemplateCache, compileTemplateWithCache
-  , compileTemplate, cacheFromList, getPartials, getFile, mustache, embedTemplate, embedSingleTemplate
+  , compileTemplate, cacheFromList, getPartials, mustache, embedTemplate, embedSingleTemplate
   ) where
 
 
@@ -20,7 +20,6 @@
 import           Control.Monad
 import           Control.Monad.Except
 import           Control.Monad.State
-import           Control.Monad.Trans.Either
 import           Data.Bool
 import           Data.HashMap.Strict        as HM
 import           Data.Text                  hiding (concat, find, map, uncons)
@@ -67,12 +66,12 @@
                          -> FilePath
                          -> IO (Either ParseError Template)
 compileTemplateWithCache searchSpace templates initName =
-  runEitherT $ evalStateT (compile' initName) $ flattenPartials templates
+  runExceptT $ evalStateT (compile' initName) $ flattenPartials templates
   where
     compile' :: FilePath
              -> StateT
                 (HM.HashMap String Template)
-                (EitherT ParseError IO)
+                (ExceptT ParseError IO)
                 Template
     compile' name' = do
       templates' <- get
@@ -81,7 +80,7 @@
         Nothing -> do
           rawSource <- lift $ getFile searchSpace name'
           compiled@(Template { ast = mSTree }) <-
-            lift $ hoistEither $ compileTemplate name' rawSource
+            lift $ ExceptT . pure $ compileTemplate name' rawSource
 
           foldM
             (\st@(Template { partials = p }) partialName -> do
@@ -135,7 +134,7 @@
   This trows 'ParseError's to be compatible with the internal Either Monad of
   'compileTemplateWithCache'.
 -}
-getFile :: [FilePath] -> FilePath -> EitherT ParseError IO Text
+getFile :: [FilePath] -> FilePath -> ExceptT ParseError IO Text
 getFile [] fp = throwError $ fileNotFound fp
 getFile (templateDir : xs) fp =
   lift (doesFileExist filePath) >>=
