diff --git a/Data/RefSerialize/Serialize.hs b/Data/RefSerialize/Serialize.hs
--- a/Data/RefSerialize/Serialize.hs
+++ b/Data/RefSerialize/Serialize.hs
@@ -1,5 +1,4 @@
-{-# LANGUAGE OverlappingInstances
-            ,TypeSynonymInstances
+{-# LANGUAGE TypeSynonymInstances
             ,FlexibleInstances
             ,UndecidableInstances
             ,OverloadedStrings
@@ -58,14 +57,14 @@
 data STW a= STW(StatW->  (StatW , a) )
 
 instance Functor STW where
-  fmap f (STW stwx)= STW $ \s -> 
+  fmap f (STW stwx)= STW $ \s ->
              let (s',x) = stwx s
              in (s', f x)
 
 instance Applicative STW where
     pure x = STW (\s ->  (s, x))
-    
-    STW g <*> STW f = STW (\s -> 
+
+    STW g <*> STW f = STW (\s ->
 
                        let (s', x)= g s
                            (s'',y)= f s'
diff --git a/RefSerialize.cabal b/RefSerialize.cabal
--- a/RefSerialize.cabal
+++ b/RefSerialize.cabal
@@ -1,5 +1,5 @@
 name:                RefSerialize
-version:             0.3.1.4
+version:             0.4.0
 synopsis:            Write to and read from ByteStrings maintaining internal memory references
 description:
                      Read, Show and Binary instances do not check for internal data references to the same address.
