diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,15 @@
 # Changelog for the [`clash-ghc`](http://hackage.haskell.org/package/clash-ghc) package
 
-## 0.6.8 *January 13th 2015*
+## 0.6.9 *January 29th 2016*
+* New features:
+  * Support for `Debug.Trace.trace`, thanks to @ggreif
+
+* Fixes bugs:
+  * `case undefined of ...` should reduce to `undefined` [#116](https://github.com/clash-lang/clash-compiler/issues/109)
+  * VHDL/SystemVerilog: BlockRAM elements must be bit vectors [#113](https://github.com/clash-lang/clash-compiler/issues/113)
+  * Type families obscure eligibility for synthesis [#114](https://github.com/clash-lang/clash-compiler/issues/114)
+
+## 0.6.8 *January 13th 2016*
 * New features:
   * Support for Haskell's: `Char`, `Int8`, `Int16`, `Int32`, `Int64`, `Word`, `Word8`, `Word16`, `Word32`, `Word64`.
   * Int/Word/Integer bitwidth for generated HDL is configurable using the `-clash-intwidth=N` flag, where `N` can be either 32 or 64.
diff --git a/clash-ghc.cabal b/clash-ghc.cabal
--- a/clash-ghc.cabal
+++ b/clash-ghc.cabal
@@ -1,5 +1,5 @@
 Name:                 clash-ghc
-Version:              0.6.8
+Version:              0.6.9
 Synopsis:             CAES Language for Synchronous Hardware
 Description:
   CλaSH (pronounced ‘clash’) is a functional hardware description language that
@@ -37,7 +37,7 @@
 License-file:         LICENSE
 Author:               Christiaan Baaij
 Maintainer:           Christiaan Baaij <christiaan.baaij@gmail.com>
-Copyright:            Copyright © 2012-2015 University of Twente
+Copyright:            Copyright © 2012-2016 University of Twente
 Category:             Hardware
 Build-type:           Simple
 
@@ -94,10 +94,10 @@
                       unbound-generics          >= 0.1 && < 0.4,
                       unordered-containers      >= 0.2.1.0,
 
-                      clash-lib                 >= 0.6.8 && < 0.7,
-                      clash-systemverilog       >= 0.6.4,
-                      clash-vhdl                >= 0.6.5,
-                      clash-verilog             >= 0.6.4,
+                      clash-lib                 >= 0.6.9 && < 0.7,
+                      clash-systemverilog       >= 0.6.5,
+                      clash-vhdl                >= 0.6.6,
+                      clash-verilog             >= 0.6.5,
                       clash-prelude             >= 0.10.5 && < 0.11,
                       ghc-typelits-extra        >= 0.1,
                       ghc-typelits-natnormalise >= 0.3
diff --git a/src-bin/GhciMonad.hs b/src-bin/GhciMonad.hs
--- a/src-bin/GhciMonad.hs
+++ b/src-bin/GhciMonad.hs
@@ -56,10 +56,6 @@
 import Control.Monad.Trans.Class
 import Control.Monad.IO.Class
 
-#if __GLASGOW_HASKELL__ < 709
-import Control.Applicative (Applicative(..))
-#endif
-
 -----------------------------------------------------------------------------
 -- GHCi monad
 
diff --git a/src-bin/InteractiveUI.hs b/src-bin/InteractiveUI.hs
--- a/src-bin/InteractiveUI.hs
+++ b/src-bin/InteractiveUI.hs
@@ -81,11 +81,7 @@
 import Exception hiding (catch)
 
 import Foreign.C
-#if __GLASGOW_HASKELL__ >= 709
 import Foreign
-#else
-import Foreign.Safe
-#endif
 
 import System.Directory
 import System.Environment
diff --git a/src-bin/hschooks.c b/src-bin/hschooks.c
--- a/src-bin/hschooks.c
+++ b/src-bin/hschooks.c
@@ -30,14 +30,10 @@
 void
 defaultsHook (void)
 {
-#if __GLASGOW_HASKELL__ >= 707
     // This helps particularly with large compiles, but didn't work
     // very well with earlier GHCs because it caused large amounts of
     // fragmentation.  See rts/sm/BlockAlloc.c:allocLargeChunk().
     RtsFlags.GcFlags.heapSizeSuggestionAuto = rtsTrue;
-#else
-    RtsFlags.GcFlags.heapSizeSuggestion = 6*1024*1024 / BLOCK_SIZE;
-#endif
 
     RtsFlags.GcFlags.maxStkSize         = 512*1024*1024 / sizeof(W_);
 
diff --git a/src-ghc/CLaSH/GHC/CLaSHFlags.hs b/src-ghc/CLaSH/GHC/CLaSHFlags.hs
--- a/src-ghc/CLaSH/GHC/CLaSHFlags.hs
+++ b/src-ghc/CLaSH/GHC/CLaSHFlags.hs
@@ -1,4 +1,11 @@
+{-|
+  Copyright   :  (C) 2015-2016, University of Twente
+  License     :  BSD2 (see the file LICENSE)
+  Maintainer  :  Christiaan Baaij <christiaan.baaij@gmail.com>
+-}
+
 {-# LANGUAGE TupleSections #-}
+
 module CLaSH.GHC.CLaSHFlags
   ( parseCLaSHFlags
   )
diff --git a/src-ghc/CLaSH/GHC/Evaluator.hs b/src-ghc/CLaSH/GHC/Evaluator.hs
--- a/src-ghc/CLaSH/GHC/Evaluator.hs
+++ b/src-ghc/CLaSH/GHC/Evaluator.hs
@@ -1,5 +1,12 @@
+{-|
+  Copyright   :  (C) 2013-2016, University of Twente
+  License     :  BSD2 (see the file LICENSE)
+  Maintainer  :  Christiaan Baaij <christiaan.baaij@gmail.com>
+-}
+
 {-# LANGUAGE ViewPatterns #-}
 {-# LANGUAGE OverloadedStrings #-}
+
 module CLaSH.GHC.Evaluator where
 
 import qualified Data.Bifunctor      as Bifunctor
diff --git a/src-ghc/CLaSH/GHC/GHC2Core.hs b/src-ghc/CLaSH/GHC/GHC2Core.hs
--- a/src-ghc/CLaSH/GHC/GHC2Core.hs
+++ b/src-ghc/CLaSH/GHC/GHC2Core.hs
@@ -1,3 +1,9 @@
+{-|
+  Copyright   :  (C) 2013-2016, University of Twente
+  License     :  BSD2 (see the file LICENSE)
+  Maintainer  :  Christiaan Baaij <christiaan.baaij@gmail.com>
+-}
+
 {-# LANGUAGE CPP              #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE TemplateHaskell  #-}
@@ -84,9 +90,6 @@
 import qualified CLaSH.Core.Term             as C
 import qualified CLaSH.Core.TyCon            as C
 import qualified CLaSH.Core.Type             as C
-#if __GLASGOW_HASKELL__ < 710
-import qualified CLaSH.Core.Util             as C
-#endif
 import qualified CLaSH.Core.Var              as C
 import           CLaSH.Primitives.Types
 import           CLaSH.Util
@@ -211,7 +214,7 @@
   AbstractTyCon _ -> return Nothing
   DataFamilyTyCon -> return Nothing
 
-coreToTerm :: PrimMap
+coreToTerm :: PrimMap a
            -> [Var]
            -> CoreExpr
            -> State GHC2CoreState C.Term
@@ -251,20 +254,7 @@
         return $ C.Letrec $ bind (rec [(b',embed e')]) ct
       else caseTerm e'
 
-#if __GLASGOW_HASKELL__ < 710
-    term (Cast e co)       = do
-      e' <- term e
-      case C.collectArgs e' of
-        (C.Prim nm pTy, [Right _, Left errMsg])
-          | nm == (pack "Control.Exception.Base.irrefutPatError") -> case co of
-            (UnivCo _ _ resTy) -> do resTy' <- coreToType resTy
-                                     return (C.mkApps (C.Prim nm pTy) [Right resTy', Left errMsg])
-            _ -> error $ $(curLoc) ++ "irrefutPatError casted with an unknown coercion: " ++ showPpr co
-        _ -> return e'
-#else
     term (Cast e _)        = term e
-#endif
-
     term (Tick _ e)        = term e
     term (Type t)          = C.Prim (pack "_TY_") <$> coreToType t
     term (Coercion co)     = C.Prim (pack "_CO_") <$> coreToType (coercionType co)
diff --git a/src-ghc/CLaSH/GHC/GenerateBindings.hs b/src-ghc/CLaSH/GHC/GenerateBindings.hs
--- a/src-ghc/CLaSH/GHC/GenerateBindings.hs
+++ b/src-ghc/CLaSH/GHC/GenerateBindings.hs
@@ -1,3 +1,9 @@
+{-|
+  Copyright   :  (C) 2013-2016, University of Twente
+  License     :  BSD2 (see the file LICENSE)
+  Maintainer  :  Christiaan Baaij <christiaan.baaij@gmail.com>
+-}
+
 module CLaSH.GHC.GenerateBindings
   (generateBindings)
 where
@@ -40,7 +46,7 @@
 import           CLaSH.Util              ((***),first)
 
 generateBindings ::
-  PrimMap
+     PrimMap a
   -> String
   -> Maybe  (GHC.DynFlags)
   -> IO (BindingMap,HashMap TyConName TyCon,IntMap TyConName
@@ -102,7 +108,7 @@
     tm'                  = substTms (zip used usedVars) tm
     ty'                  = runFreshM (termType tcm tm')
 
-mkBindings :: PrimMap
+mkBindings :: PrimMap a
            -> [(GHC.CoreBndr, GHC.CoreExpr)] -- Binders
            -> [(GHC.CoreBndr,Int)]           -- Class operations
            -> [GHC.CoreBndr]                 -- Unlocatable Expressions
diff --git a/src-ghc/CLaSH/GHC/LoadInterfaceFiles.hs b/src-ghc/CLaSH/GHC/LoadInterfaceFiles.hs
--- a/src-ghc/CLaSH/GHC/LoadInterfaceFiles.hs
+++ b/src-ghc/CLaSH/GHC/LoadInterfaceFiles.hs
@@ -1,7 +1,14 @@
+{-|
+  Copyright   :  (C) 2013-2016, University of Twente
+  License     :  BSD2 (see the file LICENSE)
+  Maintainer  :  Christiaan Baaij <christiaan.baaij@gmail.com>
+-}
+
 {-# LANGUAGE RecordWildCards     #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TemplateHaskell     #-}
 {-# LANGUAGE TupleSections       #-}
+
 module CLaSH.GHC.LoadInterfaceFiles
   (loadExternalExprs)
 where
diff --git a/src-ghc/CLaSH/GHC/LoadModules.hs b/src-ghc/CLaSH/GHC/LoadModules.hs
--- a/src-ghc/CLaSH/GHC/LoadModules.hs
+++ b/src-ghc/CLaSH/GHC/LoadModules.hs
@@ -1,7 +1,14 @@
+{-|
+  Copyright   :  (C) 2013-2016, University of Twente
+  License     :  BSD2 (see the file LICENSE)
+  Maintainer  :  Christiaan Baaij <christiaan.baaij@gmail.com>
+-}
+
 {-# LANGUAGE CPP                 #-}
 {-# LANGUAGE RecordWildCards     #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TemplateHaskell     #-}
+
 module CLaSH.GHC.LoadModules
   ( loadModules
   , ghcLibDir
diff --git a/src-ghc/CLaSH/GHC/NetlistTypes.hs b/src-ghc/CLaSH/GHC/NetlistTypes.hs
--- a/src-ghc/CLaSH/GHC/NetlistTypes.hs
+++ b/src-ghc/CLaSH/GHC/NetlistTypes.hs
@@ -1,5 +1,12 @@
+{-|
+  Copyright   :  (C) 2013-2016, University of Twente
+  License     :  BSD2 (see the file LICENSE)
+  Maintainer  :  Christiaan Baaij <christiaan.baaij@gmail.com>
+-}
+
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE ViewPatterns    #-}
+
 module CLaSH.GHC.NetlistTypes
   (ghcTypeToHWType)
 where
