diff --git a/pugs-compat.cabal b/pugs-compat.cabal
--- a/pugs-compat.cabal
+++ b/pugs-compat.cabal
@@ -1,5 +1,5 @@
 Name           : pugs-compat
-Version        : 0.0.6.2
+Version        : 0.0.6.20110925
 Build-type     : Simple
 Category       : Pugs
 License        : BSD3
@@ -16,7 +16,7 @@
                     TypeSynonymInstances, FlexibleInstances, PatternGuards,
                     UndecidableInstances, FlexibleContexts, OverlappingInstances, TypeOperators
 
-  Build-depends   : base >=4 && < 5, haskell98, time, directory, process, regex-pcre-builtin, regex-base,
+  Build-depends   : base >=4 && < 5, time, directory, process, regex-pcre-builtin, regex-base,
                     random, network, containers, bytestring, array, mtl < 2.0.0.0, stm, utf8-string, syb,
                     stringtable-atom >= 0.0.6.1
   Exposed-modules : Pugs.Compat
diff --git a/src/Pugs/Compat.hs b/src/Pugs/Compat.hs
--- a/src/Pugs/Compat.hs
+++ b/src/Pugs/Compat.hs
@@ -1,5 +1,4 @@
 {-# OPTIONS_GHC -fno-warn-unused-imports -fno-warn-orphans #-}
-{-# LANGUAGE PArr #-}
 {-|
     Internal utilities and library imports.
 
@@ -59,7 +58,6 @@
 import Debug.Trace            as X 
 import GHC.Conc               as X (unsafeIOToSTM)
 import GHC.Exts               as X (unsafeCoerce#, Word(W#), Word#)
-import GHC.PArr               as X 
 import Network                as X 
 import Numeric                as X (showHex)
 import System.Cmd             as X 
@@ -93,6 +91,3 @@
     x == y = show x == show y
 instance Ord Dynamic where
     compare x y = compare (show x) (show y)
-
-instance Typeable1 [::] where
-    typeOf1 _ = mkTyConApp (mkTyCon "[::]") []
diff --git a/src/Pugs/Compat/Cast.hs b/src/Pugs/Compat/Cast.hs
--- a/src/Pugs/Compat/Cast.hs
+++ b/src/Pugs/Compat/Cast.hs
@@ -1,5 +1,4 @@
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# LANGUAGE PArr #-}
 module Pugs.Compat.Cast (
     (:>:)(..),
     (:<:)(..),
@@ -15,7 +14,6 @@
 import Data.Sequence (Seq)
 import Numeric (showHex)
 import Data.Foldable (toList)
-import GHC.PArr (fromP, toP, mapP)
 import qualified Data.Sequence as Seq
 import qualified Data.Typeable as Typeable
 import qualified Data.ByteString.UTF8 as UTF8
@@ -29,11 +27,6 @@
 -- Also, it must work for all values of type "b".
 -- 
 class ((:>:) a) b where
-    {-# SPECIALISE cast :: a -> a #-}
-    {-# SPECIALISE cast :: ByteString -> ByteString #-}
-    {-# SPECIALISE cast :: String -> ByteString #-}
-    {-# SPECIALISE cast :: ByteString -> String #-}
-    {-# SPECIALISE cast :: String -> String #-}
     cast :: b -> a
 
 class ((:<:) a) b where
@@ -43,8 +36,6 @@
     cast = castBack
 
 {-# INLINE _cast #-}
-{-# SPECIALISE _cast :: String -> String #-}
-{-# SPECIALISE _cast :: String -> ByteString #-}
 _cast :: (a :>: String) => String -> a
 _cast = cast
 
@@ -52,12 +43,9 @@
 
 instance ((:>:) [a]) (Seq a) where cast = toList
 instance ((:<:) [a]) (Seq a) where castBack = Seq.fromList
-instance ((:>:) [a]) [:a:] where cast = fromP
-instance ((:<:) [a]) [:a:] where castBack = toP
 
 -- "map cast" can be written as "cast"
 instance (a :>: b) => ((:>:) [a]) [b] where cast = map cast
-instance (a :>: b) => ((:>:) [:a:]) [:b:] where cast = mapP cast
 
 fromTypeable :: forall m a b. (Monad m, Typeable a, Typeable b) => a -> m b
 fromTypeable x = case Typeable.cast x of
