diff --git a/free-algebras.cabal b/free-algebras.cabal
--- a/free-algebras.cabal
+++ b/free-algebras.cabal
@@ -1,6 +1,6 @@
-cabal-version:  2.0
+cabal-version:  2.2
 name:           free-algebras
-version:        0.1.0.0
+version:        0.1.0.1
 synopsis:       Free algebras
 description:
   Algebraic approach to free algebras, inspired by Univeral Algebra and
@@ -10,8 +10,8 @@
 homepage:       https://github.com/coot/free-algebras#readme
 bug-reports:    https://github.com/coot/free-algebras/issues
 author:         Marcin Szamotulski
-maintainer:     profunctor@pm.me
-copyright:      (c) 2018-2020 Marcin Szamotulski
+maintainer:     coot@coot.me
+copyright:      (c) 2018-2021 Marcin Szamotulski
 license:        MPL-2.0
 license-file:   LICENSE
 build-type:     Simple
@@ -19,13 +19,24 @@
     ChangeLog.md
     README.md
 stability:      experimental
-tested-with:    GHC==8.6.5, GHC==8.8.3, GHC==8.10.1
+tested-with:    GHC==8.6.5, GHC==8.8.4, GHC==8.10.4
 
 source-repository head
   type: git
   location: https://github.com/coot/free-algebras
 
+
+common ghc-options
+  ghc-options:
+    -Wall
+    -Wincomplete-record-updates
+    -Wincomplete-uni-patterns
+    -Wredundant-constraints
+    -Wno-deprecations
+
+
 library
+  import: ghc-options
   exposed-modules:
       Control.Algebra.Free
       Control.Algebra.Free2
@@ -41,19 +52,13 @@
   build-depends:
       base            >= 4.9 && <5
     , containers      >= 0.4.2 && <0.7
-    , data-fix                  <0.3
-    , dlist           >= 0.8 && <0.9
+    , data-fix                  <0.4
+    , dlist           >= 0.8 && <1.1
     , free            >= 4.0 && <6.0
-    , groups          >= 0.3 && <0.5
+    , groups          >= 0.3 && <0.6
     , kan-extensions  >= 4.1 && <6.0
     , mtl             >= 2.2 && <2.3
     , transformers    >= 0.5 && <0.6
-  ghc-options:
-    -Wall
-    -Wincomplete-record-updates
-    -Wincomplete-uni-patterns
-    -Wredundant-constraints
-    -Wno-deprecations
   default-language: Haskell2010
 
 test-suite test-free-algebras
diff --git a/src/Control/Algebra/Free.hs b/src/Control/Algebra/Free.hs
--- a/src/Control/Algebra/Free.hs
+++ b/src/Control/Algebra/Free.hs
@@ -627,7 +627,7 @@
 -- | @'Free1'@ is an applicative functor whenever @c f@ implies @'Applicative'
 -- f@.
 --
-instance (forall h. c h => Applicative h)
+instance (forall h. c h => Applicative h, c (Free1 c f))
          => Applicative (Free1 c f) where
 
     pure a = Free1 $ \_ -> pure a
@@ -643,7 +643,7 @@
 
 -- | @'Free1'@ is a monad whenever @c f@ implies @'Monad' f@.
 --
-instance (forall h. c h => Monad h)
+instance (forall h. c h => Monad h, c (Free1 c f))
          => Monad (Free1 c f) where
 
     return = pure
@@ -658,7 +658,7 @@
 #endif
 
 
-instance (forall h. c h => Alternative h)
+instance (forall h. c h => Alternative h, c (Free1 c f))
          => Alternative (Free1 c f) where
     empty = Free1 $ \_ -> empty
 
@@ -669,7 +669,7 @@
     many (Free1 f) = Free1 $ \h -> many (f h)
 
 
-instance (forall h. c h => MonadPlus h)
+instance (forall h. c h => MonadPlus h, c (Free1 c f))
          => MonadPlus (Free1 c f) where
 
     mzero = Free1 $ \_ -> mzero
@@ -677,7 +677,7 @@
     Free1 f `mplus` Free1 g = Free1 $ \h -> f h `mplus` g h 
 
 
-instance (forall h. c h => MonadZip h)
+instance (forall h. c h => MonadZip h, c (Free1 c f))
          => MonadZip (Free1 c f) where
 
     Free1 f `mzip` Free1 g = Free1 $ \h -> f h `mzip` g h
diff --git a/src/Data/Algebra/Free.hs b/src/Data/Algebra/Free.hs
--- a/src/Data/Algebra/Free.hs
+++ b/src/Data/Algebra/Free.hs
@@ -43,7 +43,11 @@
 #endif
 import           Data.DList as DList
 import           Data.Functor.Identity (Identity (..))
+#if MIN_VERSION_data_fix(0,3,0)
+import           Data.Fix (Fix, foldFix)
+#else
 import           Data.Fix (Fix, cata)
+#endif
 import           Data.Group (Group (..))
 import           Data.Kind (Constraint, Type)
 import           Data.List.NonEmpty (NonEmpty (..))
@@ -269,7 +273,11 @@
             )
          => Fix m
          -> a
+#if MIN_VERSION_data_fix(0,3,0)
+cataFree = foldFix foldFree
+#else
 cataFree = cata foldFree
+#endif
 
 -- | A version of @'Data.Foldable.foldr'@, e.g. it can specialize to
 --
diff --git a/src/Data/Group/Free.hs b/src/Data/Group/Free.hs
--- a/src/Data/Group/Free.hs
+++ b/src/Data/Group/Free.hs
@@ -25,6 +25,9 @@
 import           Data.Bifunctor (bimap)
 import           Data.DList (DList)
 import qualified Data.DList as DList
+#if MIN_VERSION_dlist(1,0,0)
+import           Data.DList.Unsafe (DList (..))
+#endif
 import           Data.Group (Group (..))
 import           Data.List (foldl')
 #if __GLASGOW_HASKELL__ < 808
@@ -114,7 +117,12 @@
     foldMapFree _ (FreeGroup DList.Nil) = mempty
     foldMapFree f (FreeGroup as)        =
         let a'  = DList.head as
+#if MIN_VERSION_dlist(1,0,0)
+            as' = case as of
+              UnsafeDList g -> UnsafeDList (drop 1 . g)
+#else
             as' = DList.tail as
+#endif
         in either (invert . f) f a' `mappend` foldMapFree f (FreeGroup as')
 
 -- | Free group in the class of groups which multiplication is strict on the
diff --git a/src/Data/Semigroup/Abelian.hs b/src/Data/Semigroup/Abelian.hs
--- a/src/Data/Semigroup/Abelian.hs
+++ b/src/Data/Semigroup/Abelian.hs
@@ -60,7 +60,11 @@
 
 instance Ord a => AbelianSemigroup (Min a)
 
+#if __GLASGOW_HASKELL__ >= 900
+instance AbelianSemigroup a => AbelianSemigroup (Maybe a)
+#else
 instance AbelianSemigroup a => AbelianSemigroup (Option a)
+#endif
 
 instance Num a => AbelianSemigroup (Product a)
 
diff --git a/test/Test/Control/Algebra/Free.hs b/test/Test/Control/Algebra/Free.hs
--- a/test/Test/Control/Algebra/Free.hs
+++ b/test/Test/Control/Algebra/Free.hs
@@ -275,14 +275,14 @@
     (genFreeIdentity (Gen.int $ Range.linear 0 1000))
     show
     runIdentity
-    Free.iter
+    (\f -> Free.iter f)
 
 prop_iterFree1_ap :: Property
 prop_iterFree1_ap = iterFree1_property
     (genApIdentity (Gen.int $ Range.linear 0 1000) genIntToInt)
     (show . Ap.retractAp)
     runIdentity
-    Ap.iterAp
+    (\f -> Ap.iterAp f)
 
 foldNatFree_liftFree_property
     :: forall m g f a proxy n.
