diff --git a/open-witness.cabal b/open-witness.cabal
--- a/open-witness.cabal
+++ b/open-witness.cabal
@@ -1,6 +1,6 @@
 cabal-version:  >=1.14
 name:           open-witness
-version:        0.4
+version:        0.4.0.1
 x-follows-version-policy:
 license:        BSD3
 license-file:   LICENSE
diff --git a/src/Data/OpenWitness.hs b/src/Data/OpenWitness.hs
--- a/src/Data/OpenWitness.hs
+++ b/src/Data/OpenWitness.hs
@@ -35,7 +35,12 @@
     newtype OpenWitness :: * -> forall (k :: *). k -> * where
     {
         MkOpenWitness :: Integer -> OpenWitness s a;
-    } deriving Eq;
+    };
+
+    instance Eq (OpenWitness s a) where
+    {
+        (MkOpenWitness p) == (MkOpenWitness q) = p == q;
+    };
 
     instance TestHetEquality (OpenWitness s) where
     {
diff --git a/src/Data/OpenWitness/ST.hs b/src/Data/OpenWitness/ST.hs
--- a/src/Data/OpenWitness/ST.hs
+++ b/src/Data/OpenWitness/ST.hs
@@ -26,7 +26,7 @@
     fixST :: (a -> ST s a) -> ST s a;
     fixST = mfix;
 
-    type STRef = OpenWitness;
+    type STRef s = OpenWitness s;
 
     newSTRef :: a -> ST s (STRef s a);
     newSTRef a = do
diff --git a/test/Object.hs b/test/Object.hs
--- a/test/Object.hs
+++ b/test/Object.hs
@@ -1,24 +1,24 @@
 module Object where
 {
-	import Data.Witness;
-	import Data.OpenWitness;
+    import Data.Witness;
+    import Data.OpenWitness;
 
-	data Object s = forall a. MkObject (OpenWitness s a) a;
+    data Object s = forall a. MkObject (OpenWitness s a) a;
 
-	matchObject :: OpenWitness s b -> Object s -> Maybe b;
-	matchObject uqb (MkObject uqa a) = do
-	{
-		MkEqualType <- testEquality uqa uqb;
-		return a;
-	};
+    matchObject :: OpenWitness s b -> Object s -> Maybe b;
+    matchObject uqb (MkObject uqa a) = do
+    {
+        Refl <- testEquality uqa uqb;
+        return a;
+    };
 
-	makeConversions :: OpenWitness s b -> (b -> Object s,Object s -> Maybe b);
-	makeConversions wit = (MkObject wit,matchObject wit);
+    makeConversions :: OpenWitness s b -> (b -> Object s,Object s -> Maybe b);
+    makeConversions wit = (MkObject wit,matchObject wit);
 
-	getConversions :: OW s (b -> Object s,Object s -> Maybe b);
-	getConversions = do
-	{
-		wit <- newOpenWitnessOW;
-		return (makeConversions wit);
-	};
+    getConversions :: OW s (b -> Object s,Object s -> Maybe b);
+    getConversions = do
+    {
+        wit <- newOpenWitnessOW;
+        return (makeConversions wit);
+    };
 }
