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-store@ includes the same @store@ support
-  and tests that were present in @safe-money-0.6@.
+* This first release of `safe-money-store` includes the same `store` support
+  and tests that were present in `safe-money-0.6`.
diff --git a/safe-money-store.cabal b/safe-money-store.cabal
--- a/safe-money-store.cabal
+++ b/safe-money-store.cabal
@@ -1,5 +1,5 @@
 name: safe-money-store
-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,
     bytestring,
-    safe-money,
+    safe-money >=0.8,
     store >=0.2
   exposed-modules:
     Money.Store
diff --git a/src/Money/Store.hs b/src/Money/Store.hs
--- a/src/Money/Store.hs
+++ b/src/Money/Store.hs
@@ -50,22 +50,30 @@
   poke = Store.poke . Money.toSomeDiscrete
   peek = maybe (fail "peek") pure =<< fmap Money.fromSomeDiscrete Store.peek
 
+instance Store.Store Money.Scale where
+  poke = \s -> do
+    let r = Money.scaleToRational s
+    Store.poke (numerator r)
+    Store.poke (denominator r)
+  peek = maybe (fail "peek") pure =<< do
+    n :: Integer <- Store.peek
+    d :: Integer <- Store.peek
+    when (d == 0) (fail "denominator is zero")
+    pure (Money.scaleFromRational (n % d))
+
+
 -- | Compatible with 'Money.Discrete''.
 instance Store.Store Money.SomeDiscrete where
   poke = \sd -> do
     Store.poke (MoneyI.someDiscreteCurrency' sd)
-    let r = Money.someDiscreteScale sd
-    Store.poke (numerator r)
-    Store.poke (denominator r)
+    Store.poke (Money.someDiscreteScale sd)
     Store.poke (Money.someDiscreteAmount sd)
-  peek = maybe (fail "peek") pure =<< do
+  peek = do
     -- We go through String for backwards compatibility.
     c :: String <- Store.peek
-    n :: Integer <- Store.peek
-    d :: Integer <- Store.peek
-    when (d == 0) (fail "denominator is zero")
+    s :: Money.Scale <- Store.peek
     a :: Integer <- Store.peek
-    pure (MoneyI.mkSomeDiscrete' c (n % d) a)
+    pure (MoneyI.mkSomeDiscrete' c s a)
 
 -- | Compatible with 'Money.SomeExchangeRate'.
 instance
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -59,10 +59,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")
@@ -116,7 +114,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
