diff --git a/Control/Reference/Examples/TH.hs b/Control/Reference/Examples/TH.hs
--- a/Control/Reference/Examples/TH.hs
+++ b/Control/Reference/Examples/TH.hs
@@ -98,29 +98,27 @@
 definedName
   = partial (\case FunD n c                 -> Right (n, \n' -> FunD n' c)
                    ValD (VarP n) b w        -> Right (n, \n' -> ValD (VarP n') b w) 
-                   DataD c n tv con d       -> Right (n, \n' -> DataD c n' tv con d) 
-                   NewtypeD c n tv con d    -> Right (n, \n' -> NewtypeD c n' tv con d) 
+                   DataD c n tv k con d     -> Right (n, \n' -> DataD c n' tv k con d) 
+                   NewtypeD c n tv k con d  -> Right (n, \n' -> NewtypeD c n' tv k con d) 
                    TySynD n tv t            -> Right (n, \n' -> TySynD n' tv t) 
                    ClassD c n tv fd f       -> Right (n, \n' -> ClassD c n' tv fd f) 
-                   FamilyD fl n tv k        -> Right (n, \n' -> FamilyD fl n' tv k) 
                    other -> Left other)
 
 -- | Accesses the constructors of a data or newtype definition.
 -- After changing the definition becames a newtype if there is only one constructor.
 definedConstructors :: Simple Partial Dec [Con]
 definedConstructors
-  = partial (\case DataD c n tv con d       -> Right (con, \con' -> createConOrNewtype c n tv con' d) 
-                   NewtypeD c n tv con d    -> Right ([con], \con' -> createConOrNewtype c n tv con' d) 
+  = partial (\case DataD c n tv k con d     -> Right (con, \con' -> createConOrNewtype c n tv k con' d) 
+                   NewtypeD c n tv k con d  -> Right ([con], \con' -> createConOrNewtype c n tv k con' d) 
                    other -> Left other)
-  where createConOrNewtype c n tv [con] d = NewtypeD c n tv con d
-        createConOrNewtype c n tv cons d = DataD c n tv cons d
+  where createConOrNewtype c n tv k [con] d = NewtypeD c n tv k con d
+        createConOrNewtype c n tv k cons d = DataD c n tv k cons d
         
 -- | Accesses the type variables of a definition
 definedTypeArgs :: Simple Partial Dec [TyVarBndr]
 definedTypeArgs
-  = partial (\case DataD c n tv con d       -> Right (tv, \tv' -> DataD c n tv' con d) 
-                   NewtypeD c n tv con d    -> Right (tv, \tv' -> NewtypeD c n tv' con d) 
+  = partial (\case DataD c n tv k con d     -> Right (tv, \tv' -> DataD c n tv' k con d) 
+                   NewtypeD c n tv k con d  -> Right (tv, \tv' -> NewtypeD c n tv' k con d) 
                    TySynD n tv t            -> Right (tv, \tv' -> TySynD n tv' t) 
                    ClassD c n tv fd f       -> Right (tv, \tv' -> ClassD c n tv' fd f) 
-                   FamilyD fl n tv k        -> Right (tv, \tv' -> FamilyD fl n tv' k) 
                    other -> Left other)
diff --git a/Control/Reference/TH/Records.hs b/Control/Reference/TH/Records.hs
--- a/Control/Reference/TH/Records.hs
+++ b/Control/Reference/TH/Records.hs
@@ -66,7 +66,7 @@
   = do inf <- reify n
        case inf of
          TyConI decl -> case newtypeToData decl of
-           DataD _ tyConName args cons _ -> 
+           DataD _ tyConName args _ cons _ -> 
               createReferences tyConName (args ^? traversal&typeVarName) cons
            _ -> fail "makeReferences: Unsupported data type"
          _ -> fail "makeReferences: Expected the name of a data type or newtype"
@@ -186,8 +186,8 @@
 addTypeArgs n = foldl AppT (ConT n) . map VarT
  
 newtypeToData :: Dec -> Dec
-newtypeToData (NewtypeD ctx name tvars con derives) 
-  = DataD ctx name tvars [con] derives
+newtypeToData (NewtypeD ctx name tvars kind con derives) 
+  = DataD ctx name tvars kind [con] derives
 newtypeToData d = d
 
 bindAndRebuild :: Con -> Q (Pat, Exp, [Name])
diff --git a/Control/Reference/TH/Tuple.hs b/Control/Reference/TH/Tuple.hs
--- a/Control/Reference/TH/Tuple.hs
+++ b/Control/Reference/TH/Tuple.hs
@@ -59,14 +59,15 @@
   = do names <- replicateM m (newName "a")
        name <- newName "b2"
        genBody <- generateBody
-       return $ InstanceD [] (ConT (lensClass n) 
-                                `AppT` typGen names
-                                `AppT` typGen (replace n name names)
-                                `AppT` VarT (names !! n)
-                                `AppT` VarT name
-                             ) 
-                             [ ValD (VarP (lensFun n) ) 
-                                    (NormalB genBody) [] ]
+       return $ InstanceD Nothing [] 
+                          (ConT (lensClass n) 
+                             `AppT` typGen names
+                             `AppT` typGen (replace n name names)
+                             `AppT` VarT (names !! n)
+                             `AppT` VarT name
+                          ) 
+                          [ ValD (VarP (lensFun n) ) 
+                                 (NormalB genBody) [] ]
 
   where generateBody :: Q Exp
         generateBody
diff --git a/Control/Reference/Types.hs b/Control/Reference/Types.hs
--- a/Control/Reference/Types.hs
+++ b/Control/Reference/Types.hs
@@ -20,14 +20,6 @@
 import Control.Monad.Trans.Maybe (MaybeT(..))
 import Control.Monad.ST (ST)
 import Data.Proxy
-    
-instance Alternative MU where
-  empty = Proxy
-  _ <|> _ = Proxy
-  
-instance MonadPlus MU where
-  mzero = Proxy
-  mplus _ _ = Proxy
          
 -- | A monomorph 'Lens', 'Traversal', 'Partial', etc... 
 -- Setting or updating does not change the type of the base.
diff --git a/references.cabal b/references.cabal
--- a/references.cabal
+++ b/references.cabal
@@ -1,5 +1,5 @@
 name:                references
-version:             0.3.0.1
+version:             0.3.1.0
 synopsis:            Selectors for reading and updating data.
 
 description:         References are data accessors that can read, write or update the accessed infromation through their context. They are first-class values, can be passed in functions, transformed, combined. References generalize lenses, folds and traversals for haskell (see: < https://hackage.haskell.org/package/lens>).
@@ -93,7 +93,7 @@
                      , Control.Reference.TH.Records
                      , Control.Reference.TH.Tuple
                      , Control.Reference.Examples.TH
-  build-depends:       base                 >= 4.6 && < 5 
+  build-depends:       base                 >= 4.9 && < 5 
                      , uniplate             >= 1.6 && < 2
                      , text                 >= 1.1 && < 2
                      , array                >= 0.5 && < 1
