diff --git a/src/Data/Binary/Class.hs b/src/Data/Binary/Class.hs
index 4d1c436fcf9375a4e8dcac48a4e8be135e6e3155..2eed93e065a10208a95a47cb96fe74f72c07a850 100644
--- a/src/Data/Binary/Class.hs
+++ b/src/Data/Binary/Class.hs
@@ -60,6 +60,9 @@ import Data.Monoid (mempty)
 #endif
 import qualified Data.Monoid as Monoid
 import Data.Monoid ((<>))
+#if MIN_VERSION_base(4,8,0)
+import Data.Functor.Identity (Identity (..))
+#endif
 #if MIN_VERSION_base(4,9,0)
 import qualified Data.List.NonEmpty as NE
 import qualified Data.Semigroup     as Semigroup
@@ -566,6 +569,12 @@ instance (Binary a, Binary b, Binary c, Binary d, Binary e,
 ------------------------------------------------------------------------
 -- Container types
 
+#if MIN_VERSION_base(4,8,0)
+instance Binary a => Binary (Identity a) where
+  put (Identity x) = put x
+  get = Identity <$> get
+#endif
+
 instance Binary a => Binary [a] where
     put = putList
     get = do n <- get :: Get Int