diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,4 +1,9 @@
+# Version 0.1.1
+
+* Require `safe-money>=0.8`.
+
+
 # Version 0.1
 
-* This first release of @safe-money-cereal@ includes the same @cereal@ support
-  and tests that were present in @safe-money-0.6@.
+* This first release of `safe-money-cereal` includes the same `cereal` support
+  and tests that were present in `safe-money-0.6`.
diff --git a/safe-money-cereal.cabal b/safe-money-cereal.cabal
--- a/safe-money-cereal.cabal
+++ b/safe-money-cereal.cabal
@@ -1,5 +1,5 @@
 name: safe-money-cereal
-version: 0.1
+version: 0.1.1
 license: BSD3
 license-file: LICENSE
 copyright: Copyright (c) Renzo Carbonara 2016-2018
@@ -33,7 +33,7 @@
   build-depends:
     base (>=4.8 && <5.0),
     cereal,
-    safe-money
+    safe-money >=0.8
   exposed-modules:
     Money.Cereal
 
diff --git a/src/Money/Cereal.hs b/src/Money/Cereal.hs
--- a/src/Money/Cereal.hs
+++ b/src/Money/Cereal.hs
@@ -56,23 +56,31 @@
     when (d == 0) (fail "denominator is zero")
     pure (MoneyI.mkSomeDense' c (n % d))
 
+instance Cereal.Serialize Money.Scale where
+  put = \s -> do
+    let r = Money.scaleToRational s
+    Cereal.put (numerator r)
+    Cereal.put (denominator r)
+  get = maybe empty pure =<< do
+    -- We go through String for backwards compatibility.
+    n :: Integer <- Cereal.get
+    d :: Integer <- Cereal.get
+    when (d == 0) (fail "denominator is zero")
+    pure (Money.scaleFromRational (n % d))
+
 -- | Compatible with 'Money.Discrete'.
 instance Cereal.Serialize Money.SomeDiscrete where
   put = \sd -> do
     -- We go through String for backwards compatibility.
     Cereal.put (MoneyI.someDiscreteCurrency' sd)
-    let r = Money.someDiscreteScale sd
-    Cereal.put (numerator r)
-    Cereal.put (denominator r)
+    Cereal.put (Money.someDiscreteScale sd)
     Cereal.put (Money.someDiscreteAmount sd)
-  get = maybe empty pure =<< do
+  get = do
     -- We go through String for backwards compatibility.
     c :: String <- Cereal.get
-    n :: Integer <- Cereal.get
-    d :: Integer <- Cereal.get
-    when (d == 0) (fail "denominator is zero")
+    s :: Money.Scale <- Cereal.get
     a :: Integer <- Cereal.get
-    pure (MoneyI.mkSomeDiscrete' c (n % d) a)
+    pure (MoneyI.mkSomeDiscrete' c s a)
 
 -- | Compatible with 'Money.ExchangeRate'.
 instance Cereal.Serialize Money.SomeExchangeRate where
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -57,10 +57,8 @@
 testCurrencyUnits :: Tasty.TestTree
 testCurrencyUnits =
   Tasty.testGroup "Currency units"
-  [ testDiscrete (Proxy :: Proxy "BTC") (Proxy :: Proxy "BTC")
-  , testDiscrete (Proxy :: Proxy "BTC") (Proxy :: Proxy "satoshi")
+  [ testDiscrete (Proxy :: Proxy "BTC") (Proxy :: Proxy "satoshi")
   , testDiscrete (Proxy :: Proxy "BTC") (Proxy :: Proxy "bitcoin")
-  , testDiscrete (Proxy :: Proxy "USD") (Proxy :: Proxy "USD")
   , testDiscrete (Proxy :: Proxy "USD") (Proxy :: Proxy "cent")
   , testDiscrete (Proxy :: Proxy "USD") (Proxy :: Proxy "dollar")
   , testDiscrete (Proxy :: Proxy "VUV") (Proxy :: Proxy "vatu")
@@ -115,7 +113,7 @@
 
 testDiscrete
   :: forall (currency :: Symbol) (unit :: Symbol)
-  .  ( Money.GoodScale (Money.Scale currency unit)
+  .  ( Money.GoodScale (Money.UnitScale currency unit)
      , KnownSymbol currency
      , KnownSymbol unit )
   => Proxy currency
