diff --git a/Language/KURE.hs b/Language/KURE.hs
--- a/Language/KURE.hs
+++ b/Language/KURE.hs
@@ -12,8 +12,8 @@
 -- and the traversal functionality can be found in "Language.KURE.Walker".
 --
 module Language.KURE
-	( module Language.KURE.Transform
-	, module Language.KURE.Walker
+        ( module Language.KURE.Transform
+        , module Language.KURE.Walker
         , module Language.KURE.Combinators
         , module Language.KURE.MonadCatch
         , module Language.KURE.Injection
diff --git a/Language/KURE/Combinators/Arrow.hs b/Language/KURE/Combinators/Arrow.hs
--- a/Language/KURE/Combinators/Arrow.hs
+++ b/Language/KURE/Combinators/Arrow.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -- |
 -- Module: Language.KURE.Combinators.Arrow
 -- Copyright: (c) 2012--2014 The University of Kansas
@@ -31,7 +32,9 @@
 import Control.Category hiding ((.))
 import Control.Arrow
 
+#if !(MIN_VERSION_base(4,8,0))
 import Data.Monoid
+#endif
 import Data.Foldable
 
 ------------------------------------------------------------------------------------------
diff --git a/Language/KURE/Combinators/Transform.hs b/Language/KURE/Combinators/Transform.hs
--- a/Language/KURE/Combinators/Transform.hs
+++ b/Language/KURE/Combinators/Transform.hs
@@ -1,4 +1,4 @@
-{-# Language InstanceSigs #-}
+{-# Language CPP, InstanceSigs #-}
 -- |
 -- Module: Language.KURE.Combinators.Transform
 -- Copyright: (c) 2012--2014 The University of Kansas
@@ -50,8 +50,10 @@
 
 import Prelude hiding (id, map, foldr, mapM)
 
-import Control.Category ((>>>),id)
+#if !(MIN_VERSION_base(4,8,0))
 import Control.Applicative
+#endif
+import Control.Category ((>>>),id)
 import Control.Monad (liftM,ap)
 
 import Data.Foldable
diff --git a/Language/KURE/MonadCatch.hs b/Language/KURE/MonadCatch.hs
--- a/Language/KURE/MonadCatch.hs
+++ b/Language/KURE/MonadCatch.hs
@@ -1,4 +1,4 @@
-{-# Language InstanceSigs #-}
+{-# Language CPP, InstanceSigs #-}
 -- |
 -- Module: Language.KURE.MonadCatch
 -- Copyright: (c) 2012--2014 The University of Kansas
@@ -36,16 +36,19 @@
 
 import Prelude hiding (foldr)
 
-import Control.Applicative
 import Control.Exception (catch, SomeException)
 import Control.Monad
 import Control.Monad.IO.Class
 
 import Data.Foldable
 import Data.List (isPrefixOf)
-import Data.Monoid
 
 import Language.KURE.Combinators.Monad
+
+#if !(MIN_VERSION_base(4,8,0))
+import Control.Applicative
+import Data.Monoid
+#endif
 
 infixl 3 <+
 
diff --git a/Language/KURE/Path.hs b/Language/KURE/Path.hs
--- a/Language/KURE/Path.hs
+++ b/Language/KURE/Path.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE InstanceSigs, MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances #-}
+{-# LANGUAGE CPP, InstanceSigs, MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances #-}
 -- |
 -- Module: Language.KURE.Path
 -- Copyright: (c) 2012--2014 The University of Kansas
@@ -37,7 +37,9 @@
        )
 where
 
+#if !(MIN_VERSION_base(4,8,0))
 import Data.Monoid
+#endif
 
 import Control.Arrow ((>>^))
 
diff --git a/Language/KURE/Pathfinder.hs b/Language/KURE/Pathfinder.hs
--- a/Language/KURE/Pathfinder.hs
+++ b/Language/KURE/Pathfinder.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE ScopedTypeVariables, FlexibleContexts #-}
+{-# LANGUAGE CPP, ScopedTypeVariables, FlexibleContexts #-}
 
 -- |
 -- Module: Language.KURE.Pathfinder
@@ -34,7 +34,9 @@
 
 import Control.Category hiding ((.))
 import Control.Arrow
+#if !(MIN_VERSION_base(4,8,0))
 import Data.Monoid (mempty)
+#endif
 
 import Language.KURE.MonadCatch
 import Language.KURE.Transform
diff --git a/Language/KURE/Transform.hs b/Language/KURE/Transform.hs
--- a/Language/KURE/Transform.hs
+++ b/Language/KURE/Transform.hs
@@ -1,4 +1,4 @@
-{-# Language InstanceSigs #-}
+{-# Language CPP, InstanceSigs #-}
 -- |
 -- Module: Language.KURE.Transform
 -- Copyright: (c) 2012--2014 The University of Kansas
@@ -38,7 +38,9 @@
 import Control.Category
 import Control.Arrow
 
+#if !(MIN_VERSION_base(4,8,0))
 import Data.Monoid
+#endif
 
 import Language.KURE.MonadCatch
 
diff --git a/Language/KURE/Walker.hs b/Language/KURE/Walker.hs
--- a/Language/KURE/Walker.hs
+++ b/Language/KURE/Walker.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE InstanceSigs, MultiParamTypeClasses, ScopedTypeVariables, FlexibleContexts #-}
+{-# LANGUAGE CPP, InstanceSigs, MultiParamTypeClasses, ScopedTypeVariables, FlexibleContexts #-}
 -- |
 -- Module: Language.KURE.Walker
 -- Copyright: (c) 2012--2014 The University of Kansas
@@ -78,10 +78,12 @@
 import Data.Monoid
 import Data.DList (singleton, toList)
 
-import Control.Monad
+#if !(MIN_VERSION_base(4,8,0))
 import Control.Applicative
+#endif
 import Control.Arrow
 import Control.Category hiding ((.))
+import Control.Monad
 
 import Language.KURE.MonadCatch
 import Language.KURE.Transform
@@ -461,12 +463,12 @@
 unOneT (OneT f) = f
 {-# INLINE unOneT #-}
 
-instance (Monoid w, Monad m) => Functor (OneT w m) where
+instance Monad m => Functor (OneT w m) where
    fmap :: (a -> b) -> OneT w m a -> OneT w m b
    fmap = liftM
    {-# INLINE fmap #-}
 
-instance (Monoid w, Monad m) => Applicative (OneT w m) where
+instance Monad m => Applicative (OneT w m) where
    pure :: a -> OneT w m a
    pure = return
    {-# INLINE pure #-}
diff --git a/kure.cabal b/kure.cabal
--- a/kure.cabal
+++ b/kure.cabal
@@ -1,5 +1,5 @@
 Name:                kure
-Version:             2.16.4
+Version:             2.16.6
 Synopsis:            Combinators for Strategic Programming
 Description:	     The Kansas University Rewrite Engine (KURE) is a domain-specific language for strategic rewriting.
 	 	     KURE was inspired by Stratego and StrategyLib, and has similarities with Scrap Your Boilerplate and Uniplate.
@@ -11,7 +11,7 @@
                      .
                      You can read about KURE in the following article:
                      .
-                     The Kansas University Rewrite Engine: A Haskell-Embedded Strategic Programming Language with Custom Closed Universes.  Neil Sculthorpe, Nicolas Frisby and Andy Gill.   Journal of Functional Programming. Cambridge University Press, 2014.
+                     The Kansas University Rewrite Engine: A Haskell-Embedded Strategic Programming Language with Custom Closed Universes.  Neil Sculthorpe, Nicolas Frisby and Andy Gill.  Journal of Functional Programming.  Cambridge University Press, 24(4), pages 434-473, 2014.
                      <http://www.cs.swan.ac.uk/~csnas/papers_and_talks/kure.pdf>
 
 Category:            Language
@@ -19,7 +19,7 @@
 License-file:        LICENSE
 Author:              Neil Sculthorpe and Andy Gill
 Maintainer:          Neil Sculthorpe <N.A.Sculthorpe@swansea.ac.uk>
-Copyright:           (c) 2006--2014 The University of Kansas
+Copyright:           (c) 2006--2015 The University of Kansas
 Homepage:            http://www.ittc.ku.edu/csdl/fpg/software/kure.html
 Stability:	     beta
 build-type: 	     Simple
