diff --git a/cogent/Main.hs b/cogent/Main.hs
index 96a9a29..7496b78 100644
--- a/cogent/Main.hs
+++ b/cogent/Main.hs
@@ -61,11 +61,6 @@
 import           Cogent.Util                      as UT
 
 -- import BuildInfo_cogent (githash, buildtime)
-#if __GLASGOW_HASKELL__ < 709
-import           Control.Applicative              (liftA, (<$>))
-#else
-import           Control.Applicative              (liftA)
-#endif
 import           Control.Monad                    (forM, forM_, unless, when, (<=<))
 import           Control.Monad.Trans.Except       (runExceptT)
 -- import Control.Monad.Cont
@@ -647,7 +642,7 @@
       parseWithIncludes source __cogent_include >>= \case
         Left err -> hPutStrLn stderr err >> exitFailure
         Right (parsed,pragmas) -> do
-          prune <- T.forM __cogent_prune_call_graph $ return . parseEntryFuncs <=< readFile
+          prune <- T.forM __cogent_prune_call_graph simpleLineParser
           putProgressLn "Resolving dependencies..."
           case reorganize prune parsed of
             Left err -> printError prettyRE [err] >> exitFailure
@@ -763,7 +758,7 @@
       let stg = STGMono
       putProgressLn "Monomorphising..."
       efuns <- T.forM __cogent_entry_funcs $
-                 return . (,empty) <=< (readEntryFuncs tced tcst typedefs fts) <=< return . parseEntryFuncs <=< readFile
+                 return . (,empty) <=< (readEntryFuncs tced tcst typedefs fts) <=< simpleLineParser
       entryFuncs <- case efuns of
                       Nothing -> return Nothing
                       Just (Nothing, _) -> exitFailure
@@ -897,7 +892,7 @@
         output csfile $ flip LJ.hPutDoc corresSetupThy
       when cp $ do
         putProgressLn "Generating C-refinement proofs..."
-        ent <- T.forM __cogent_entry_funcs $ (liftA parseEntryFuncs) . readFile  -- a simple parser
+        ent <- T.forM __cogent_entry_funcs simpleLineParser  -- a simple parser
         let corresProofThy = corresProof thy inputc (map SY.CoreFunName confns) (map SY.CoreFunName <$> ent) log
         writeFileMsg cpfile
         output cpfile $ flip LJ.hPutDoc corresProofThy
@@ -1049,8 +1044,6 @@
         writeFileMsg bifile
         output bifile $ flip hPutStrLn buildinfo
 
-    -- --entry-funcs expects one function name per line; lines starting with -- are comments
-    parseEntryFuncs = filter (not . isPrefixOf "--") . filter (not . null) . map (dropWhile isSpace) . lines
 
     -- ------------------------------------------------------------------------
     -- Helper functions
diff --git a/cogent/cogent.cabal b/cogent/cogent.cabal
index b459aa4..378c3d6 100644
--- a/cogent/cogent.cabal
+++ b/cogent/cogent.cabal
@@ -75,7 +75,7 @@
 
 custom-setup
   setup-depends:
-                base >= 4.10 && < 4.14
+                base >= 4.10 && < 4.15
               , Cabal >= 3.0
                 -- ^^^ 3.0 is needed as we use Cabal in Setup.hs
               , directory >= 1.2
@@ -175,7 +175,7 @@
 
   build-depends:
                 ansi-wl-pprint >= 0.6
-              , base >= 4.10 && < 4.14
+              , base >= 4.10 && < 4.15
               , binary
               , bytestring >= 0.10 
               , containers >= 0.5.8
@@ -255,7 +255,7 @@
                 cogent
               , ansi-wl-pprint >= 0.6
               , atomic-write >= 0.2.0.4
-              , base >= 4.10 && < 4.14
+              , base >= 4.10 && < 4.15
               , binary
               , containers >= 0.5.8
               , directory >=1.2
@@ -302,7 +302,7 @@
   main-is: test-util.hs
   build-depends:
                 cogent
-              , base >= 4.10 && < 4.14
+              , base >= 4.10 && < 4.15
               , containers >= 0.5.8
               , directory >=1.2
               , filepath >= 1.4.0.0
@@ -324,7 +324,7 @@
               , CogentTests.Core
   build-depends:
                 cogent
-              , base >= 4.10 && < 4.14
+              , base >= 4.10 && < 4.15
               , Cabal >= 3.0
               , containers >= 0.5.8
               , mainland-pretty >= 0.2.6
diff --git a/cogent/examples/files/types.cfg b/cogent/examples/files/types.cfg
index c7152c4..1f0d456 100644
--- a/cogent/examples/files/types.cfg
+++ b/cogent/examples/files/types.cfg
@@ -1 +1,3 @@
 FILE
+-- This line is a comment, and the next line is empty
+
diff --git a/cogent/src/Cogent/Glue.hs b/cogent/src/Cogent/Glue.hs
index d4fa4b7..4cefa67 100644
--- a/cogent/src/Cogent/Glue.hs
+++ b/cogent/src/Cogent/Glue.hs
@@ -103,7 +103,7 @@
   let start = startPos filename
 #endif
   s <- lift $ B.readFile filename
-  typnames <- case __cogent_ext_types of Nothing -> lift (return deftypnames); Just f -> lift $ getTypnames f
+  typnames <- case __cogent_ext_types of Nothing -> lift (return deftypnames); Just f -> lift $ simpleLineParser f
   case CP.evalP (__fixme CP.parseUnit) (CP.emptyPState exts typnames s start) of -- FIXME: check for other antiquotes
     Left err -> throwE $ "Error: Failed to parse C: " ++ show err
     Right ds -> return ds
@@ -114,9 +114,6 @@
 defaultTypnames :: [String]
 defaultTypnames = []
 
-getTypnames :: FilePath -> IO [String]
-getTypnames = liftA lines . readFile
-
 
 -- Desugaring, Monomorphising, and CG
 
diff --git a/cogent/src/Cogent/Util.hs b/cogent/src/Cogent/Util.hs
index 294f557..49778ba 100644
--- a/cogent/src/Cogent/Util.hs
+++ b/cogent/src/Cogent/Util.hs
@@ -428,6 +428,11 @@
 getStdIncFullPath fp = do sdir <- getLibgumDir
                           return (sdir </> fp)
 
+-- reads a file, ignoring all lines starting with "--" and blank lines, eliminate spaces
+simpleLineParser :: FilePath -> IO [String]
+simpleLineParser = (return . filter (not . L.isPrefixOf "--") . filter (not . null) . map (dropWhile isSpace) . lines) <=< readFile
+
+
 -- If the domain of some maps contains duplicate keys.
 -- Returns Left ks for overlapping keys ks, Right ks for with the set of non-overlapping keys ks.
 overlapping :: (Eq k) => [M.Map k v] -> Either [k] [k]
