diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for schematic
 
+## 0.2.1.0 -- 2017-09-26
+
+Add decodeAndValidateVersionedWithPureMList, fix tests
+
 ## 0.2.0.0 -- 2017-09-26
 
 Migratable is deprecated, migrations are now possible in an arbitrary monad.
diff --git a/schematic.cabal b/schematic.cabal
--- a/schematic.cabal
+++ b/schematic.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                schematic
-version:             0.2.0.0
+version:             0.2.1.0
 synopsis:            JSON-biased spec and validation tool
 -- description:
 license:             BSD3
diff --git a/src/Data/Schematic.hs b/src/Data/Schematic.hs
--- a/src/Data/Schematic.hs
+++ b/src/Data/Schematic.hs
@@ -13,6 +13,7 @@
   , parseAndValidateTopVersionJson
   , parseAndValidateWithMList
   , decodeAndValidateVersionedWithMList
+  , decodeAndValidateVersionedWithPureMList
   , isValid
   , isDecodingError
   , isValidationError
@@ -114,3 +115,11 @@
 decodeAndValidateVersionedWithMList _ mlist bs = case decode bs of
   Nothing -> pure $ DecodingError "malformed json"
   Just x  -> parseAndValidateWithMList mlist x
+
+decodeAndValidateVersionedWithPureMList
+  :: proxy versioned
+  -> MList Identity (MapSnd (AllVersions versioned))
+  -> BL.ByteString
+  -> ParseResult (JsonRepr (Head (MapSnd (AllVersions versioned))))
+decodeAndValidateVersionedWithPureMList a b c =
+  runIdentity $ decodeAndValidateVersionedWithMList a b c
diff --git a/test/SchemaSpec.hs b/test/SchemaSpec.hs
--- a/test/SchemaSpec.hs
+++ b/test/SchemaSpec.hs
@@ -2,8 +2,9 @@
 
 module SchemaSpec (spec, main) where
 
-import Data.ByteString.Lazy
 import Data.Aeson
+import Data.ByteString.Lazy
+import Data.Functor.Identity
 import Data.Proxy
 import Data.Schematic
 import Data.Vinyl
@@ -44,14 +45,6 @@
     :& FieldRepr (ReprText "test")
     :& RNil
 
-instance
-  MigrateSchema
-    SchemaExample
-    ('SchemaObject
-      '[ '("foo", 'SchemaNumber '[]), '("bar", 'SchemaText '[])])
-  where
-  migrate = const topObject
-
 spec :: Spec
 spec = do
   -- it "show/read JsonRepr properly" $
@@ -67,13 +60,15 @@
   it "validates incorrect representation" $
     ((decodeAndValidateJson schemaJson2) :: ParseResult (JsonRepr SchemaExample))
       `shouldSatisfy` isValidationError
-  it "validates versioned json" $ do
-    decodeAndValidateVersionedJson (Proxy @VS) schemaJson
-      `shouldSatisfy` isValid
+  -- it "validates versioned json" $ do
+  --   decodeAndValidateVersionedJson (Proxy @VS) schemaJson
+  --     `shouldSatisfy` isValid
   it "validates versioned json with a migration list" $ do
-    decodeAndValidateVersionedWithMList
+    decodeAndValidateVersionedWithPureMList
       (Proxy @VS)
-      ((:&&) (Proxy @(SchemaByRevision "test_revision" VS)) (const topObject) MNil)
+      ((:&&)
+        (Proxy @(SchemaByRevision "test_revision" VS))
+        (const $ Identity topObject) MNil)
       schemaJson
         `shouldSatisfy` isValid
 
