diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+4.0.2
+-----
+* Made fixes necessary to work around changes in `ImpredicativeTypes` for GHC 7.8.1rc2
+
 4.0.1
 -----
 * Bug fix so we can compile on GHC 7.4
diff --git a/kan-extensions.cabal b/kan-extensions.cabal
--- a/kan-extensions.cabal
+++ b/kan-extensions.cabal
@@ -1,6 +1,6 @@
 name:          kan-extensions
 category:      Data Structures, Monads, Comonads, Functors
-version:       4.0.1
+version:       4.0.2
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
diff --git a/src/Control/Monad/Codensity.hs b/src/Control/Monad/Codensity.hs
--- a/src/Control/Monad/Codensity.hs
+++ b/src/Control/Monad/Codensity.hs
@@ -131,7 +131,7 @@
 --
 --
 -- @
--- 'lowerCodensity . lift' ≡ 'id'
+-- 'lowerCodensity' . 'lift' ≡ 'id'
 -- @
 --
 -- In general this is not a full 2-sided inverse, merely a retraction, as
diff --git a/src/Data/Functor/Kan/Lift.hs b/src/Data/Functor/Kan/Lift.hs
--- a/src/Data/Functor/Kan/Lift.hs
+++ b/src/Data/Functor/Kan/Lift.hs
@@ -47,7 +47,7 @@
 newtype Lift g f a = Lift { runLift :: forall z. Functor z => (forall x. f x -> g (z x)) -> z a }
 
 instance Functor (Lift g h) where
-  fmap f (Lift g) = Lift (fmap f . g)
+  fmap f (Lift g) = Lift (\x -> fmap f (g x))
   {-# INLINE fmap #-}
 
 instance (Functor g, g ~ h) => Copointed (Lift g h) where
@@ -63,7 +63,7 @@
 
 -- | The universal property of 'Lift'
 toLift :: Functor z => (forall a. f a -> g (z a)) -> Lift g f b -> z b
-toLift = flip runLift
+toLift f l =  runLift l f
 {-# INLINE toLift #-}
 
 -- | When the adjunction exists
