diff --git a/HStringTemplate.cabal b/HStringTemplate.cabal
--- a/HStringTemplate.cabal
+++ b/HStringTemplate.cabal
@@ -1,5 +1,5 @@
 name:                HStringTemplate
-version:             0.6.4
+version:             0.6.5
 synopsis:            StringTemplate implementation in Haskell.
 description:         A port of the Java library by Terrence Parr.
 category:            Text
@@ -26,7 +26,7 @@
     exposed-modules: Text.StringTemplate.QQ
 
   if flag(smaller-base)
-    build-depends:   syb, base >= 4, base < 5, filepath, parsec < 4, containers, pretty, time, old-time, old-locale, bytestring, directory, array, text, parallel, utf8-string
+    build-depends:   syb, base >= 4, base < 5, filepath, parsec < 4, containers, pretty, time, old-time, old-locale, bytestring, directory, array, text, deepseq, utf8-string
   else
     build-depends:   base > 3, base < 4, filepath, parsec < 4, containers, pretty, time, old-time, old-locale, bytestring, directory, array, text, utf8-string
 
diff --git a/Text/StringTemplate/Base.hs b/Text/StringTemplate/Base.hs
--- a/Text/StringTemplate/Base.hs
+++ b/Text/StringTemplate/Base.hs
@@ -16,7 +16,7 @@
 import Control.Arrow
 import Control.Applicative hiding ((<|>),many,optional)
 import Control.Monad
-import Control.Parallel.Strategies(rnf, NFData(..))
+import Control.DeepSeq
 import qualified Control.Exception as C
 import Data.List
 import Data.Maybe
@@ -30,7 +30,6 @@
 
 import Text.StringTemplate.Classes
 import Text.StringTemplate.Instances()
-import Debug.Trace
 
 {--------------------------------------------------------------------
   Generic Utilities
@@ -93,6 +92,7 @@
 render :: Stringable a => StringTemplate a -> a
 render = either (showStr) id . runSTMP <*> senv
 
+nullEnv :: SEnv a
 nullEnv = SEnv M.empty [] mempty id
 
 -- | Returns a tuple of three Maybes. The first is set if there is a parse error in the template.
@@ -182,8 +182,10 @@
 inSGen :: (STGroup a -> STGroup a) -> StringTemplate a -> StringTemplate a
 inSGen f st@STMP{senv = env} = st {senv = env {sgen = f (sgen env)} }
 
+{-
 envLookup :: String -> SEnv a -> Maybe (SElem a)
 envLookup x = M.lookup x . smp
+-}
 
 envLookupEx :: String -> SEnv a -> SElem a
 envLookupEx x snv = case M.lookup x (smp snv) of
@@ -241,7 +243,7 @@
 parseSTMPNames :: (Char, Char) -> String -> Either ParseError ([String],[String],[String])
 parseSTMPNames cs s = runParser getRefs (cs,[],[],[]) "" s
     where getRefs = do
-            (stmpl False :: TmplParser (SEnv String -> String))
+            _ <- stmpl False :: TmplParser (SEnv String -> String)
             (_,qqnames,regnames,tmpls) <- getState
             return (qqnames, regnames, tmpls)
 
@@ -318,7 +320,7 @@
                             (stToString <$$> showVal <*> fs $ snv) a
 
 around :: Char -> GenParser Char st t -> Char -> GenParser Char st t
-around x p y = do {char x; v<-p; char y; return v}
+around x p y = do {_ <- char x; v<-p; _ <- char y; return v}
 spaced :: GenParser Char st t -> GenParser Char st t
 spaced p = do {spaces; v<-p; spaces; return v}
 word :: GenParser Char st String
@@ -369,15 +371,15 @@
 comment :: Stringable a => TmplParser (SEnv a -> a)
 comment = do
   (ca, cb) <- getSeps
-  string [ca,'!'] >> manyTill anyChar (try . string $ ['!',cb])
+  _ <- string [ca,'!'] >> manyTill anyChar (try . string $ ['!',cb])
   return (showStr "")
 
 blank :: Stringable a => TmplParser (SEnv a -> a)
 blank = do
   (ca, cb) <- getSeps
-  char ca
+  _ <- char ca
   spaces
-  char cb
+  _ <- char cb
   return (showStr "")
 
 optExpr :: Stringable a => TmplParser (SEnv a -> a)
@@ -392,7 +394,7 @@
             optList = sepBy oneOpt (char ',' <|> char ';')
             oneOpt = do
               o <- spaced word
-              char '='
+              _ <- char '='
               v <- spaced subexprn
               return (o,v)
 
@@ -419,7 +421,7 @@
 ifstat ::Stringable a => TmplParser (SEnv a -> a)
 ifstat = do
   (_, cb) <- getSeps
-  string "if("
+  _ <- string "if("
   n <- option True (char '!' >> return False)
   e <- subexprn
   p <- props
@@ -434,10 +436,10 @@
 elsestat ::Stringable a => TmplParser (SEnv a -> a)
 elsestat = do
   (ca, cb) <- getSeps
-  around ca (string "else") cb
+  _ <- around ca (string "else") cb
   optLine
   act <- stmpl True
-  char ca >> string "endif"
+  _ <- char ca >> string "endif"
   return act
 
 endifstat ::Stringable a => TmplParser (SEnv a -> a)
diff --git a/Text/StringTemplate/GenericStandard.hs b/Text/StringTemplate/GenericStandard.hs
--- a/Text/StringTemplate/GenericStandard.hs
+++ b/Text/StringTemplate/GenericStandard.hs
@@ -10,10 +10,8 @@
 import Text.StringTemplate.Instances()
 import Data.Generics.Basics
 import Data.Generics.Aliases
-import qualified Data.Map as M
 import qualified Data.ByteString.Char8 as B
 import qualified Data.ByteString.Lazy.Char8 as LB
-import Data.Maybe
 -- import qualified System.Time as OldTime
 -- import System.Locale
 -- import Data.Time
diff --git a/Text/StringTemplate/QQ.hs b/Text/StringTemplate/QQ.hs
--- a/Text/StringTemplate/QQ.hs
+++ b/Text/StringTemplate/QQ.hs
@@ -19,7 +19,6 @@
 import qualified Language.Haskell.TH as TH
 import Language.Haskell.TH.Quote
 import Text.StringTemplate.Base
-import Control.Monad.Writer
 
 quoteTmplExp :: String -> TH.ExpQ
 quoteTmplPat :: String -> TH.PatQ
