diff --git a/examples/Sort.hs b/examples/Sort.hs
--- a/examples/Sort.hs
+++ b/examples/Sort.hs
@@ -63,11 +63,11 @@
 -- * poset enumeration
 
 data State =
-     State { comps:: ! [Comp]
-           , poset :: ! Poset
-           , args :: ! [Num]
-           , form :: ! Bit
-           , size :: ! Integer
+     State { comps:: ![Comp]
+           , poset :: !Poset
+           , args :: ![Num]
+           , form :: !Bit
+           , size :: !Integer
            }
 
 start w =
@@ -110,20 +110,20 @@
     else if size s > 2^d
          then return (False,known)
          else do
-	   let verbose = False
+           let verbose = False
            case M.lookup (canonical $ poset s) known of
              Just (r,prev) -> do
                if verbose
-	         then putStrLn $ unwords [ show d, show $ size s, show (comps s)
+                 then putStrLn $ unwords [ show d, show $ size s, show (comps s)
                                   , show r, "iso", show prev ]
-		 else putStr "!"
+                 else putStr "!"
                return (r,known)
              Nothing -> do
                let go [] known = return (False, known)
                    go (c@(x,y):cs) known = do
-		     let [s1,s2] = reverse
-		                 $ sortOn size
-		                 $ map (next w s) [ (x,y), (y,x) ]
+                     let [s1,s2] = reverse
+                                 $ sortOn size
+                                 $ map (next w s) [ (x,y), (y,x) ]
                      (a1,k1) <- work w (d-1) s1 known
                      if a1
                        then do
@@ -139,10 +139,10 @@
                       $ comparators w
                (r,known) <- go candidates known
                if verbose
-	         then putStrLn $ unwords [ show d, show $ size s, show (comps s)
+                 then putStrLn $ unwords [ show d, show $ size s, show (comps s)
                                   , show r ]
                  else putStr "." 
-  	       hFlush stdout	 
+               hFlush stdout
                return
                  (r, M.insert (canonical $ poset s) (r, comps s) known)
 
@@ -154,7 +154,7 @@
                  $ logBase 2 $ fromIntegral
                  $ factorial $ read w
            in -- search (read w) b
-	       void $ run (read w) b
+               void $ run (read w) b
   [ w , d ] -> void $ run (read w) (read d)
 
 
diff --git a/obdd.cabal b/obdd.cabal
--- a/obdd.cabal
+++ b/obdd.cabal
@@ -1,6 +1,6 @@
 Name:                obdd
-Version:             0.8.2
-Cabal-Version:       >= 1.8
+Version:             0.8.4
+Cabal-Version:       1.12
 Build-type: Simple
 Synopsis:            Ordered Reduced Binary Decision Diagrams
 Description:
@@ -37,6 +37,9 @@
 Maintainer:          Johannes Waldmann
 Homepage:            https://github.com/jwaldmann/haskell-obdd
 
+tested-with: GHC == 9.0.1 , GHC == 8.10.4 , GHC == 8.8.4 , GHC == 8.6.5 , GHC == 8.4.4
+             , GHC == 8.2.2 , GHC == 8.0.2 , GHC == 7.10.3
+                     
 Source-Repository head
     Type: git
     Location: git://github.com/jwaldmann/haskell-obdd.git
@@ -46,6 +49,7 @@
     Hs-Source-Dirs:          src
     Exposed-Modules:     OBDD OBDD.Data OBDD.Make OBDD.Operation OBDD.Property, OBDD.Display, OBDD.Linopt, OBDD.Cube
     Other-Modules:           OBDD.IntIntMap, OBDD.VarIntIntMap
+    Default-Language: Haskell2010
     ghc-options: -funbox-strict-fields
 
 test-suite obdd-placement
@@ -53,18 +57,21 @@
     Type: exitcode-stdio-1.0
     Main-Is: Placement.hs
     Build-Depends: base, containers, obdd
+    Default-Language: Haskell2010
 
 test-suite obdd-domino
     Hs-Source-Dirs: examples
     Type: exitcode-stdio-1.0
     Main-Is: Domino.hs
     Build-Depends: base, containers, obdd
+    Default-Language: Haskell2010
 
 test-suite obdd-cubism
     Hs-Source-Dirs : examples
     Type: exitcode-stdio-1.0
     Main-Is: Cubism.hs
     Build-Depends: base, containers, obdd
+    Default-Language: Haskell2010
 
 test-suite obdd-queens
     Hs-Source-Dirs : examples
@@ -72,18 +79,21 @@
     Main-Is: Queens.hs
     ghc-options: -threaded -rtsopts
     Build-Depends: base, containers, obdd, text
+    Default-Language: Haskell2010
 
 test-suite obdd-queens2
     Hs-Source-Dirs : examples
     Type: exitcode-stdio-1.0
     Main-Is: Queens2.hs
     Build-Depends: base, containers, obdd
+    Default-Language: Haskell2010
 
 test-suite obdd-weight
     Hs-Source-Dirs : examples
     Type: exitcode-stdio-1.0
     Main-Is: Weight.hs
     Build-Depends: base, containers, obdd
+    Default-Language: Haskell2010
     
 test-suite obdd-sort
     Hs-Source-Dirs : examples
@@ -91,6 +101,7 @@
     Main-Is: Sort.hs
     Build-Depends: base, containers, obdd
     Ghc-Options: -rtsopts    
+    Default-Language: Haskell2010
 
 test-suite obdd-mm0916
     Hs-Source-Dirs : examples
@@ -98,3 +109,4 @@
     Main-Is: MM0916.hs
     Build-Depends: base, containers, obdd, array
     Ghc-Options: -rtsopts
+    Default-Language: Haskell2010
diff --git a/src/OBDD.hs b/src/OBDD.hs
--- a/src/OBDD.hs
+++ b/src/OBDD.hs
@@ -28,3 +28,8 @@
 import OBDD.Operation
 import OBDD.Display
 import OBDD.Make
+
+import Prelude hiding (not, null)
+
+instance Ord v => Eq (OBDD v) where
+  f == g = null $ not $ equiv f g
diff --git a/src/OBDD/Data.hs b/src/OBDD/Data.hs
--- a/src/OBDD/Data.hs
+++ b/src/OBDD/Data.hs
@@ -72,8 +72,8 @@
             
             -- , icore :: !(Map ( Node v Index ) Index)
             , icore :: !(VarIntIntMap v Index)
-            , ifalse :: ! Index
-            , itrue :: ! Index
+            , ifalse :: !Index
+            , itrue :: !Index
             , next :: !Index
             , top :: !Index
             }
