diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,13 @@
 # ChangeLog
 
+## 0.7.0
+
+* Fixes a bug where the `Store` instances for `Identity`, `Const`, and
+  `Complex` all have `Storable` superclasses instead of `Store. See
+  [#143][].
+
+[#143]: https://github.com/fpco/store/issues/143
+
 ## 0.6.1
 
 * Can now optionally be built with `integer-simple` instead of
diff --git a/src/Data/Store/Internal.hs b/src/Data/Store/Internal.hs
--- a/src/Data/Store/Internal.hs
+++ b/src/Data/Store/Internal.hs
@@ -76,10 +76,12 @@
 import qualified Data.ByteString.Lazy as LBS
 import qualified Data.ByteString.Short.Internal as SBS
 import           Data.Containers (IsMap, ContainerKey, MapValue, mapFromList, mapToList, IsSet, setFromList)
+import           Data.Complex (Complex)
 import           Data.Data (Data)
 import           Data.Fixed (Fixed (..), Pico)
 import           Data.Foldable (forM_, foldl')
 import           Data.Functor.Contravariant
+import           Data.Functor.Identity (Identity)
 import           Data.HashMap.Strict (HashMap)
 import           Data.HashSet (HashSet)
 import           Data.Hashable (Hashable)
@@ -741,6 +743,9 @@
 instance Store a => Store (First a)
 instance Store a => Store (Last a)
 instance Store a => Store (Maybe a)
+instance Store a => Store (Identity a)
+instance Store a => Store (Complex a)
+instance Store a => Store (Const a b)
 
 -- FIXME: have TH deriving handle unboxed fields?
 
diff --git a/src/Data/Store/TH/Internal.hs b/src/Data/Store/TH/Internal.hs
--- a/src/Data/Store/TH/Internal.hs
+++ b/src/Data/Store/TH/Internal.hs
@@ -24,11 +24,11 @@
 
 import           Control.Applicative
 import           Data.Complex ()
-import           Data.Generics.Aliases (extT)
-import           Data.Generics.Schemes (listify, everywhere)
+import           Data.Generics.Aliases (extT, mkQ, extQ)
+import           Data.Generics.Schemes (listify, everywhere, something)
 import           Data.List (find, nub)
 import qualified Data.Map as M
-import           Data.Maybe (fromMaybe)
+import           Data.Maybe (fromMaybe, isJust)
 import           Data.Primitive.ByteArray
 import           Data.Primitive.Types
 import           Data.Store.Core
@@ -287,12 +287,23 @@
         \(TypeclassInstance cs ty _) ->
         let argTy = head (tail (unAppsT ty))
             tyNameLit = LitE (StringL (pprint ty)) in
-        if p argTy
+        if p argTy && not (superclassHasStorable cs)
             then Just $ makeStoreInstance cs argTy
                 (AppE (VarE 'sizeStorableTy) tyNameLit)
                 (AppE (VarE 'peekStorableTy) tyNameLit)
                 (VarE 'pokeStorable)
             else Nothing
+
+-- See #143. Often Storable superclass constraints should instead be
+-- Store constraints, so instead it just warns for these.
+superclassHasStorable :: Cxt -> Bool
+superclassHasStorable = isJust . something (mkQ Nothing justStorable `extQ` ignoreStrings)
+  where
+    justStorable :: Type -> Maybe ()
+    justStorable (ConT n) | n == ''Storable = Just ()
+    justStorable _ = Nothing
+    ignoreStrings :: String -> Maybe ()
+    ignoreStrings _ = Nothing
 
 ------------------------------------------------------------------------
 -- Vector
diff --git a/store.cabal b/store.cabal
--- a/store.cabal
+++ b/store.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: ed0f087802fae2b44eeecb3e8163cf7c263fe0b11167686dae1faa5c23a13ed8
+-- hash: e97026b3dd607ae815326e726b09a470b5b4bb879c5d9faaee87ef206e9a4830
 
 name:           store
-version:        0.6.1
+version:        0.7.0
 synopsis:       Fast binary serialization
 category:       Serialization, Data
 homepage:       https://github.com/fpco/store#readme
