diff --git a/creatur.cabal b/creatur.cabal
--- a/creatur.cabal
+++ b/creatur.cabal
@@ -1,5 +1,5 @@
 Name:              creatur
-Version:           5.9.4
+Version:           5.9.5
 Stability:         experimental
 Synopsis:          Framework for artificial life experiments.
 Description:       A software framework for automating experiments
@@ -36,7 +36,7 @@
 source-repository this
   type:     git
   location: https://github.com/mhwombat/creatur.git
-  tag:      5.9.4
+  tag:      5.9.5
 
 library
   GHC-Options:      -Wall -fno-warn-orphans
@@ -70,7 +70,7 @@
   Other-modules:    Paths_creatur
   Build-Depends:    
                     array ==0.5.*,
-                    base >=4.8 && <5,
+                    base ==4.*,
                     bytestring ==0.10.*,
                     cond ==0.4.*,
                     cereal ==0.4.*,
@@ -96,7 +96,7 @@
   Hs-source-dirs:   test
   Build-Depends:    
                     array ==0.5.*,
-                    base >=4.8 && <5,
+                    base ==4.*,
                     binary ==0.7.*,
                     cereal ==0.4.*,
                     creatur,
@@ -132,7 +132,7 @@
 --   GHC-Options:      -Wall
 --   Hs-source-dirs:   test
 --   Build-Depends:    
---                     base >=4.8 && <5,
+--                     base ==4.*,
 --                     creatur,
 --                     criterion ==0.8.*,
 --                     test-framework ==0.8.*
diff --git a/src/ALife/Creatur/Genetics/BRGCBool.hs b/src/ALife/Creatur/Genetics/BRGCBool.hs
--- a/src/ALife/Creatur/Genetics/BRGCBool.hs
+++ b/src/ALife/Creatur/Genetics/BRGCBool.hs
@@ -19,8 +19,13 @@
 -- next are the result of mutation alone.
 --
 ------------------------------------------------------------------------
-{-# LANGUAGE TypeFamilies, FlexibleContexts, FlexibleInstances,
-    DefaultSignatures, DeriveGeneric, TypeOperators #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE DefaultSignatures #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE CPP #-}
 module ALife.Creatur.Genetics.BRGCBool
   (
     Genetic(..),
@@ -55,6 +60,11 @@
 import Data.Word (Word8, Word16)
 import GHC.Generics
 import Numeric (showIntAtBase)
+
+#if MIN_VERSION_base(4,8,0)
+#else
+import Control.Applicative
+#endif
 
 type Sequence = [Bool]
 
diff --git a/src/ALife/Creatur/Genetics/BRGCWord16.hs b/src/ALife/Creatur/Genetics/BRGCWord16.hs
--- a/src/ALife/Creatur/Genetics/BRGCWord16.hs
+++ b/src/ALife/Creatur/Genetics/BRGCWord16.hs
@@ -19,8 +19,13 @@
 -- next are the result of mutation alone.
 --
 ------------------------------------------------------------------------
-{-# LANGUAGE TypeFamilies, FlexibleContexts, FlexibleInstances,
-    DefaultSignatures, DeriveGeneric, TypeOperators #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE DefaultSignatures #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE CPP #-}
 module ALife.Creatur.Genetics.BRGCWord16
   (
     Genetic(..),
@@ -57,6 +62,11 @@
 import Data.Functor.Identity (Identity)
 import Data.Word (Word8, Word16)
 import GHC.Generics
+
+#if MIN_VERSION_base(4,8,0)
+#else
+import Control.Applicative
+#endif
 
 type Sequence = [Word16]
 
diff --git a/src/ALife/Creatur/Genetics/BRGCWord8.hs b/src/ALife/Creatur/Genetics/BRGCWord8.hs
--- a/src/ALife/Creatur/Genetics/BRGCWord8.hs
+++ b/src/ALife/Creatur/Genetics/BRGCWord8.hs
@@ -19,8 +19,13 @@
 -- next are the result of mutation alone.
 --
 ------------------------------------------------------------------------
-{-# LANGUAGE TypeFamilies, FlexibleContexts, FlexibleInstances,
-    DefaultSignatures, DeriveGeneric, TypeOperators #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE DefaultSignatures #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE CPP #-}
 module ALife.Creatur.Genetics.BRGCWord8
   (
     Genetic(..),
@@ -58,6 +63,11 @@
 import Data.Functor.Identity (Identity)
 import Data.Word (Word8, Word16)
 import GHC.Generics
+
+#if MIN_VERSION_base(4,8,0)
+#else
+import Control.Applicative
+#endif
 
 type Sequence = [Word8]
 
diff --git a/src/ALife/Creatur/Logger.hs b/src/ALife/Creatur/Logger.hs
--- a/src/ALife/Creatur/Logger.hs
+++ b/src/ALife/Creatur/Logger.hs
@@ -11,6 +11,7 @@
 -- framework.
 --
 ------------------------------------------------------------------------
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fno-warn-type-defaults #-}
 
 module ALife.Creatur.Logger
@@ -20,7 +21,13 @@
   ) where
 
 import Control.Monad.State (StateT)
+
+#if MIN_VERSION_base(4,8,0)
 import Data.Time (formatTime, getZonedTime, defaultTimeLocale)
+#else
+import Data.Time (formatTime, getZonedTime)
+import System.Locale (defaultTimeLocale)
+#endif
 
 class Logger l where
   -- | @'writeToLog' msg@ formats and writes a new log message.
diff --git a/test/ALife/Creatur/Genetics/BRGCBoolQC.hs b/test/ALife/Creatur/Genetics/BRGCBoolQC.hs
--- a/test/ALife/Creatur/Genetics/BRGCBoolQC.hs
+++ b/test/ALife/Creatur/Genetics/BRGCBoolQC.hs
@@ -10,7 +10,9 @@
 -- QuickCheck tests.
 --
 ------------------------------------------------------------------------
-{-# LANGUAGE DeriveGeneric, FlexibleInstances #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE CPP #-}
 module ALife.Creatur.Genetics.BRGCBoolQC
   (
     test
@@ -25,6 +27,11 @@
 import Test.Framework.Providers.QuickCheck2 (testProperty)
 import Test.QuickCheck (Arbitrary, Gen, Property, arbitrary, choose,
   oneof, property, sized, vectorOf)
+
+#if MIN_VERSION_base(4,8,0)
+#else
+import Control.Applicative
+#endif
 
 prop_round_trippable :: (Eq g, Genetic g) => g -> Property
 prop_round_trippable g = property $ g' == Right g
diff --git a/test/ALife/Creatur/Genetics/BRGCWord16QC.hs b/test/ALife/Creatur/Genetics/BRGCWord16QC.hs
--- a/test/ALife/Creatur/Genetics/BRGCWord16QC.hs
+++ b/test/ALife/Creatur/Genetics/BRGCWord16QC.hs
@@ -10,7 +10,9 @@
 -- QuickCheck tests.
 --
 ------------------------------------------------------------------------
-{-# LANGUAGE DeriveGeneric, FlexibleInstances #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE CPP #-}
 module ALife.Creatur.Genetics.BRGCWord16QC
   (
     test
@@ -25,6 +27,11 @@
 import Test.Framework.Providers.QuickCheck2 (testProperty)
 import Test.QuickCheck (Arbitrary, Gen, Property, arbitrary, choose,
   oneof, property, sized, vectorOf)
+
+#if MIN_VERSION_base(4,8,0)
+#else
+import Control.Applicative
+#endif
 
 prop_round_trippable :: (Eq g, Genetic g) => g -> Property
 prop_round_trippable g = property $ g' == Right g
diff --git a/test/ALife/Creatur/Genetics/BRGCWord8QC.hs b/test/ALife/Creatur/Genetics/BRGCWord8QC.hs
--- a/test/ALife/Creatur/Genetics/BRGCWord8QC.hs
+++ b/test/ALife/Creatur/Genetics/BRGCWord8QC.hs
@@ -10,7 +10,9 @@
 -- QuickCheck tests.
 --
 ------------------------------------------------------------------------
-{-# LANGUAGE DeriveGeneric, FlexibleInstances #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE CPP #-}
 module ALife.Creatur.Genetics.BRGCWord8QC
   (
     test
@@ -26,6 +28,11 @@
 import Test.Framework.Providers.QuickCheck2 (testProperty)
 import Test.QuickCheck (Arbitrary, Gen, Property, arbitrary, choose,
   oneof, property, sized, vectorOf)
+
+#if MIN_VERSION_base(4,8,0)
+#else
+import Control.Applicative
+#endif
 
 prop_round_trippable :: (Eq g, Genetic g) => g -> Property
 prop_round_trippable g = property $ g' == Right g
diff --git a/test/ALife/Creatur/Genetics/DiploidQC.hs b/test/ALife/Creatur/Genetics/DiploidQC.hs
--- a/test/ALife/Creatur/Genetics/DiploidQC.hs
+++ b/test/ALife/Creatur/Genetics/DiploidQC.hs
@@ -10,7 +10,9 @@
 -- QuickCheck tests.
 --
 ------------------------------------------------------------------------
-{-# LANGUAGE DeriveGeneric, FlexibleInstances #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 module ALife.Creatur.Genetics.DiploidQC
   (
@@ -23,6 +25,11 @@
 import Test.Framework.Providers.QuickCheck2 (testProperty)
 import Test.QuickCheck (Arbitrary, Gen, Property, arbitrary, choose,
   oneof, property, sized, vectorOf)
+
+#if MIN_VERSION_base(4,8,0)
+#else
+import Control.Applicative
+#endif
 
 data TestStructure = A | B Bool | C Int | D Bool Char | E [TestStructure]
   deriving (Show, Eq, Generic)
