diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,9 @@
 # Revision history for sv-cassava
 
+## 0.2 -- 2018-07-19
+
+* Replace sv 0.1 with sv-core 0.1
+
 ## 0.1  -- 2018-03-14
 
 * First version. Released on an unsuspecting world.
diff --git a/src/Data/Sv/Cassava.hs b/src/Data/Sv/Cassava.hs
--- a/src/Data/Sv/Cassava.hs
+++ b/src/Data/Sv/Cassava.hs
@@ -30,25 +30,16 @@
 import Data.ByteString.UTF8 as UTF8
 import qualified Data.Csv as Cassava
 import qualified Data.Csv.Parser as Cassava
-import Data.Maybe (mapMaybe)
-import Data.Sv
-import qualified Data.Sv.Decode as D
-import Data.Vector (Vector, (!?))
-import Data.Vector.NonEmpty (NonEmptyVector (NonEmptyVector))
+import Data.Sv.Structure.Core (Headedness (..))
+import Data.Sv.Decode.Core (Decode', DecodeValidation, validateEitherWith)
+import qualified Data.Sv.Decode.Core as D
+import Data.Validation (bindValidation)
 import qualified Data.Vector as V
-import Text.Escape (Unescaped (Unescaped))
-import Text.Space (unspaced)
-import Text.Quote (Quote (DoubleQuote))
 
 -- | Use an sv 'Decode' to decode from cassava's 'Cassava.Csv' type.
 decodeFromCassava :: Decode' ByteString a -> Cassava.Csv -> DecodeValidation ByteString [a]
 decodeFromCassava d =
-  traverse (D.promote d) . fs2r . V.toList
-    where
-      fs2r :: [Vector Cassava.Field] -> [Record ByteString]
-      fs2r = mapMaybe (fmap (Record . fmap (unspaced . Quoted DoubleQuote . Unescaped)) . vec2nev)
-      vec2nev :: Vector b -> Maybe (NonEmptyVector b)
-      vec2nev v = NonEmptyVector <$> v !? 0 <*> pure (V.drop 1 v)
+  traverse (D.promote d) . V.toList
 
 -- | Parse a 'Cassava.Csv' from a 'ByteString' using cassava's parser
 --
@@ -56,7 +47,7 @@
 -- with the rest of sv.
 parseCassava :: Cassava.DecodeOptions -> ByteString -> DecodeValidation ByteString Cassava.Csv
 parseCassava opts =
-  D.validateEither' (BadParse . UTF8.fromString) . parseOnly (Cassava.csv opts)
+  validateEitherWith (D.BadParse . UTF8.fromString) . parseOnly (Cassava.csv opts)
 
 -- | Parse a 'Cassava.Csv' from a 'ByteString' using cassava's parser, then
 -- decode it using the given 'Decode'.
diff --git a/sv-cassava.cabal b/sv-cassava.cabal
--- a/sv-cassava.cabal
+++ b/sv-cassava.cabal
@@ -2,12 +2,11 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                sv-cassava
-version:             0.1
+version:             0.2
 synopsis:            Integration to use sv with cassava's parser
 description:
   This package provides functions allowing you to use cassava's parser
-  together with sv's decoding. You might prefer this to using sv's own
-  parser if speed is a significant concern.
+  together with sv-core's decoding.
 homepage:            https://github.com/qfpl/sv
 license:             BSD3
 license-file:        LICENCE
@@ -18,7 +17,17 @@
 build-type:          Simple
 extra-source-files:  changelog.md
 cabal-version:       >=1.10
+tested-with:
+  GHC == 7.10.3
+  , GHC == 8.0.2
+  , GHC == 8.2.2
+  , GHC == 8.4.3
+  , GHC == 8.6.1
 
+source-repository    head
+  type:              git
+  location:          git@github.com/qfpl/sv.git
+
 library
   exposed-modules:
     Data.Sv.Cassava
@@ -27,8 +36,9 @@
     , base >=4.8 && <5
     , bytestring >= 0.9.1.10 && < 0.11
     , cassava >= 0.4.1 && < 0.6
-    , sv >= 0.1 && < 0.2
+    , sv-core >= 0.1 && < 0.2
     , utf8-string >= 1 && < 1.1
+    , validation
     , vector >= 0.10 && < 0.13
   hs-source-dirs:
     src
@@ -46,7 +56,7 @@
     base >=4.8 && <5
     , bytestring >= 0.9.1.10 && < 0.11
     , cassava >= 0.4.1 && < 0.6
-    , sv >= 0.1 && < 0.2
+    , sv-core >= 0.1 && < 0.2
     , sv-cassava
     , HUnit >= 1.4 && < 1.7
     , text >= 1.0 && < 1.3
diff --git a/tests/tests.hs b/tests/tests.hs
--- a/tests/tests.hs
+++ b/tests/tests.hs
@@ -5,9 +5,9 @@
 import Control.Monad (when)
 import Data.ByteString (ByteString)
 import qualified Data.Csv as Cassava
-import Data.Sv
 import Data.Sv.Cassava
-import qualified Data.Sv.Decode as D
+import Data.Sv.Structure.Core (Headedness (Headed, Unheaded))
+import qualified Data.Sv.Decode.Core as D
 import Data.Text (Text)
 import qualified Data.Vector as V
 import System.Exit (exitFailure)
@@ -15,7 +15,7 @@
 
 data TestRow = TestRow Int Double Text deriving (Eq, Show)
 
-testRowDec :: Decode' ByteString TestRow
+testRowDec :: D.Decode' ByteString TestRow
 testRowDec = TestRow <$> D.int <*> D.double <*> D.utf8
 
 bs1 :: ByteString
