diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,12 +1,18 @@
-# 1.0.1.1
+# 1.1.0.0 (February 20th, 2018)
 
+- Changed the implementation of `LastMember` to avoid an issue similar to the one with `Member` fixed in 1.0.1.1 that could cause the constraint to unnecessarily fail to solve ([#6](https://github.com/lexi-lambda/freer-simple/issues/6)).
+- Changed the order of the type variables in `interpretM` to be more consistent with other functions (only relevant in combination with `TypeApplications`).
+- Re-exported `(~>)` from `Control.Natural` through `Control.Monad.Freer`.
+
+# 1.0.1.1 (January 31st, 2018)
+
 - Fixed a bug that could cause `Member` constraints to erroneously fail to solve ([#3](https://github.com/lexi-lambda/freer-simple/pull/3)).
 
-# 1.0.1.0
+# 1.0.1.0 (January 27th, 2018)
 
 - Added `subsume` to `Control.Monad.Freer` for deduplicating effects.
 - Added `gets` to `Control.Monad.Freer.State` ([#1](https://github.com/lexi-lambda/freer-simple/pull/1)).
 
-# 1.0.0.0
+# 1.0.0.0 (December 7th, 2017)
 
 - Initial release.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -32,9 +32,13 @@
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE DataKinds #-}
+{-# LANGUAGE LambdaCase #-}
 module Console where
 
 import Control.Monad.Freer
+import Control.Monad.Freer.Error
+import Control.Monad.Freer.State
+import Control.Monad.Freer.Writer
 import System.Exit hiding (ExitCode(ExitSuccess))
 
 --------------------------------------------------------------------------------
diff --git a/freer-simple.cabal b/freer-simple.cabal
--- a/freer-simple.cabal
+++ b/freer-simple.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 510c61e88946fcfca5f48fe0358a0c8e9c9b3c89db3f9934a231ffd539702e49
+-- hash: f02232dd03e2c26a1697a9b46bb32db8b1f332d4d81f5bb5c309a480589ea5d1
 
 name:           freer-simple
-version:        1.0.1.1
+version:        1.1.0.0
 synopsis:       Implementation of a friendly effect system for Haskell.
 description:    An implementation of an effect system for Haskell (a fork of
                 <http://hackage.haskell.org/package/freer-effects freer-effects>), which is
diff --git a/src/Control/Monad/Freer.hs b/src/Control/Monad/Freer.hs
--- a/src/Control/Monad/Freer.hs
+++ b/src/Control/Monad/Freer.hs
@@ -84,7 +84,7 @@
 
 @
 runInMemoryFileSystem :: [('FilePath', 'String')] -> 'Eff' (FileSystem ': effs) '~>' 'Eff' effs
-runInMemoryFileSystem initVfs = 'Control.Monad.Freer.State.runState' initVfs '.' fsToState where
+runInMemoryFileSystem initVfs = 'Control.Monad.Freer.State.evalState' initVfs '.' fsToState where
   fsToState :: 'Eff' (FileSystem ': effs) '~>' 'Eff' ('Control.Monad.Freer.State.State' [('FilePath', 'String')] ': effs)
   fsToState = 'reinterpret' '$' \case
     ReadFile path -> 'Control.Monad.Freer.State.get' '>>=' \\vfs -> case 'lookup' path vfs of
@@ -229,6 +229,9 @@
     -- *** Advanced effect handlers
   , interpretWith
   , interposeWith
+
+    -- * Re-exported bindings
+  , type (~>)
   ) where
 
 import Control.Natural (type (~>))
@@ -333,7 +336,7 @@
 -- 'interpretM' f = 'interpret' ('sendM' . f)
 -- @
 interpretM
-  :: forall eff effs m
+  :: forall eff m effs
    . (Monad m, LastMember m effs)
   => (eff ~> m) -> Eff (eff ': effs) ~> Eff effs
 interpretM f = interpret (sendM . f)
diff --git a/src/Data/OpenUnion.hs b/src/Data/OpenUnion.hs
--- a/src/Data/OpenUnion.hs
+++ b/src/Data/OpenUnion.hs
@@ -61,10 +61,6 @@
   Members (eff ': effs) effs' = (Member eff effs', Members effs effs')
   Members '[] effs' = ()
 
-type family Last effs where
-  Last (eff ': '[]) = eff
-  Last (_ ': effs) = Last effs
-
 -- | Like 'Member', @'LastMember' eff effs@ is a constraint that requires that
 -- @eff@ is in the type-level list @effs@. However, /unlike/ 'Member',
 -- 'LastMember' requires @m@ be the __final__ effect in @effs@.
@@ -74,5 +70,6 @@
 -- in combination with 'Control.Monad.Freer.sendM' or
 -- 'Control.Monad.Base.liftBase' to embed ordinary monadic effects within an
 -- 'Control.Monad.Freer.Eff' computation.
-class (Member m effs, m ~ Last effs) => LastMember m effs | effs -> m
-instance (Member m effs, m ~ Last effs) => LastMember m effs
+class Member m effs => LastMember m effs | effs -> m
+instance {-# OVERLAPPABLE #-} LastMember m effs => LastMember m (eff ': effs)
+instance LastMember m (m ': '[])
