diff --git a/deque.cabal b/deque.cabal
--- a/deque.cabal
+++ b/deque.cabal
@@ -1,5 +1,5 @@
 name: deque
-version: 0.4.2.3
+version: 0.4.3
 synopsis: Double-ended queues
 description:
   Strict and lazy implementations of Double-Ended Queue (aka Dequeue or Deque)
@@ -36,16 +36,16 @@
     Deque.Prelude
   build-depends:
     base >=4.9 && <5,
+    hashable >=1.2 && <2,
     mtl >=2.2 && <3,
-    strict-list >=0.1.4 && <0.2
+    strict-list >=0.1.5 && <0.2
 
 test-suite test
   type: exitcode-stdio-1.0
   hs-source-dirs: test
   default-extensions: BangPatterns, DeriveDataTypeable, DeriveGeneric, DeriveFunctor, DeriveTraversable, FlexibleContexts, FlexibleInstances, LambdaCase, NoImplicitPrelude, RankNTypes, ScopedTypeVariables, StandaloneDeriving, TypeApplications, TypeFamilies
   default-language: Haskell2010
-  main-is:
-    Main.hs
+  main-is: Main.hs
   build-depends:
     deque,
     QuickCheck >=2.8.1 && <3,
diff --git a/library/Deque/Lazy/Defs.hs b/library/Deque/Lazy/Defs.hs
--- a/library/Deque/Lazy/Defs.hs
+++ b/library/Deque/Lazy/Defs.hs
@@ -271,4 +271,8 @@
   type Item (Deque a) = a
   fromList = flip Deque []
   toList (Deque consList snocList) = consList <> List.reverse snocList
-  
+
+deriving instance Generic (Deque a)
+deriving instance Generic1 Deque
+
+instance Hashable a => Hashable (Deque a)
diff --git a/library/Deque/Prelude.hs b/library/Deque/Prelude.hs
--- a/library/Deque/Prelude.hs
+++ b/library/Deque/Prelude.hs
@@ -80,3 +80,6 @@
 import Control.Monad.State.Class as Exports hiding (fail)
 import Control.Monad.Writer.Class as Exports hiding (fail)
 
+-- hashable
+-------------------------
+import Data.Hashable as Exports (Hashable)
diff --git a/library/Deque/Strict/Defs.hs b/library/Deque/Strict/Defs.hs
--- a/library/Deque/Strict/Defs.hs
+++ b/library/Deque/Strict/Defs.hs
@@ -276,3 +276,8 @@
 
 instance MonadFail Deque where
   fail = const mempty
+
+deriving instance Generic (Deque a)
+deriving instance Generic1 Deque
+
+instance Hashable a => Hashable (Deque a)
