diff --git a/pugs-DrIFT.cabal b/pugs-DrIFT.cabal
--- a/pugs-DrIFT.cabal
+++ b/pugs-DrIFT.cabal
@@ -1,5 +1,5 @@
 name:                pugs-DrIFT
-version:             2.2.3.2
+version:             2.2.3.20110925
 synopsis:            DrIFT with pugs-specific rules.
 description:         DrIFT is a type sensitive preprocessor for Haskell. It extracts type declarations
                      and directives from modules. The directives cause rules to be fired on the parsed
@@ -33,9 +33,9 @@
         src/Rules/YAML.hs
 
 executable          pugs-DrIFT
-    build-depends:       base >= 4 && < 5, haskell98, bytestring, utf8-string, pretty, containers, mtl < 2.0.0.0, stm, HsSyck
+    build-depends:       base >= 4 && < 5, old-time, random, bytestring, utf8-string, pretty, containers, mtl < 2.0.0.0, stm, HsSyck
     main-is:             DrIFT.hs
-    ghc-options:         -fparr
+    -- ghc-options:         -fparr
     hs-source-dirs:      src
     extensions:          ParallelListComp, ScopedTypeVariables,
                          ImplicitParams, MagicHash, TypeSynonymInstances,
@@ -44,9 +44,9 @@
                          IncoherentInstances
 
 library
-    build-depends:       base >= 4 && < 5, haskell98, bytestring, utf8-string, pretty, containers, mtl < 2.0.0.0, stm, HsSyck
+    build-depends:       base >= 4 && < 5, old-time, random, bytestring, utf8-string, pretty, containers, mtl < 2.0.0.0, stm, HsSyck
     hs-source-dirs:      src
-    ghc-options:         -fparr
+    -- ghc-options:         -fparr
     extensions:          ParallelListComp, ScopedTypeVariables,
                          ImplicitParams, MagicHash, TypeSynonymInstances,
                          OverlappingInstances, FlexibleContexts,
diff --git a/src/ChaseImports.hs b/src/ChaseImports.hs
--- a/src/ChaseImports.hs
+++ b/src/ChaseImports.hs
@@ -24,10 +24,10 @@
 import DataP
 import CommandP
 import ParseLib2
-import System
-import List
+import System.Environment
+import Data.List
 import qualified Unlit
-import Monad
+import Control.Monad
 import GenUtil
 
 try x = catch (x >>= return . Right) (return . Left)
diff --git a/src/DataP.lhs b/src/DataP.lhs
--- a/src/DataP.lhs
+++ b/src/DataP.lhs
@@ -10,9 +10,9 @@
 >where
 
 >import ParseLib2
->import Char
->import List
->import Monad
+>import Data.Char
+>import Data.List
+>import Control.Monad
 
 
 >data Statement = DataStmt | NewTypeStmt deriving (Eq,Show)
diff --git a/src/DrIFT.hs b/src/DrIFT.hs
--- a/src/DrIFT.hs
+++ b/src/DrIFT.hs
@@ -7,17 +7,17 @@
 import DataP
 import GenUtil
 import GetOpt
-import Char
-import IO hiding(try)
-import List (partition,isSuffixOf,sort, groupBy, sortBy)
-import Monad(unless)
+import Data.Char
+import System.IO
+import Data.List (partition,isSuffixOf,sort, groupBy, sortBy)
+import Control.Monad(unless)
 import PreludData(preludeData)
 import Pretty
 import RuleUtils (commentLine,texts)
 import RuleUtils(Rule,Tag)
 import Version
 import qualified Rules(rules)
-import qualified System
+import qualified System.Environment as System
 
 data Op = OpList | OpDerive | OpVersion
 
diff --git a/src/DrIFT/YAML.hs b/src/DrIFT/YAML.hs
--- a/src/DrIFT/YAML.hs
+++ b/src/DrIFT/YAML.hs
@@ -12,6 +12,8 @@
 import System.IO.Unsafe
 import Data.IORef
 import Data.Bits
+import Data.Sequence (Seq)
+import Data.Foldable (toList)
 import Data.List	( foldl' )
 import Data.Int		( Int32, Int64 )
 import Codec.Binary.UTF8.String (encodeString, decodeString)
@@ -22,6 +24,7 @@
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Char8 as S
 import qualified Data.ByteString.Lazy.Char8 as L
+import qualified Data.Sequence as Seq
 
 type Buf = S.ByteString
 
@@ -208,11 +211,11 @@
     fromYAMLElem (ESeq s) = mapM fromYAML s
     fromYAMLElem e = fail $ "no parse: " ++ show e ++ ", expecting list of " ++ show (typeOf (undefined :: a))
 
-instance (YAML a) => YAML [:a:] where
+instance (YAML a) => YAML (Seq a) where
     asYAML xs = do -- asYAMLanchor xs $ do
-        xs' <- mapM asYAML (fromP xs)
+        xs' <- mapM asYAML $ toList xs
         (return . mkNode . ESeq) xs'
-    fromYAMLElem (ESeq s) = fmap toP (mapM fromYAML s)
+    fromYAMLElem (ESeq s) = fmap Seq.fromList (mapM fromYAML s)
     fromYAMLElem e = fail $ "no parse: " ++ show e ++ ", expecting array of " ++ show (typeOf (undefined :: a))
 
 instance (YAML a, YAML b) => YAML (a, b) where
@@ -429,7 +432,3 @@
         where
         r :: Int64
         r = fromIntegral a * fromIntegral b
-
-instance Typeable1 [::] where
-    typeOf1 _ = mkTyConApp (mkTyCon "[::]") []
-
diff --git a/src/GenUtil.hs b/src/GenUtil.hs
--- a/src/GenUtil.hs
+++ b/src/GenUtil.hs
@@ -91,14 +91,16 @@
     UniqueProducer(..)
     ) where
 
-import Char(isAlphaNum, isSpace, toLower,  ord)
-import List(group,sort)
-import List(intersperse, sortBy, groupBy)
-import Monad
-import qualified IO
-import qualified System
-import Random(StdGen, newStdGen, Random(randomR))
-import Time
+import Data.Char(isAlphaNum, isSpace, toLower,  ord)
+import Data.List(group,sort)
+import Data.List(intersperse, sortBy, groupBy)
+import Control.Monad (join, liftM, MonadPlus(..))
+import qualified System.IO as IO
+import qualified System.IO.Error as IO
+import qualified System.Environment as System
+import qualified System.Exit as System
+import System.Random(StdGen, newStdGen, Random(randomR))
+import System.Time
 
 {-# SPECIALIZE snub :: [String] -> [String] #-}
 {-# SPECIALIZE snub :: [Int] -> [Int] #-}
diff --git a/src/GetOpt.hs b/src/GetOpt.hs
--- a/src/GetOpt.hs
+++ b/src/GetOpt.hs
@@ -21,7 +21,7 @@
    ArgOrder(..), OptDescr(..), ArgDescr(..), usageInfo, getOpt
    ) where
 
-import List(isPrefixOf)
+import Data.List(isPrefixOf)
 
 data ArgOrder a                        -- what to do with options following non-options:
    = RequireOrder                      --    no option processing after first non-option
diff --git a/src/ParseLib2.hs b/src/ParseLib2.hs
--- a/src/ParseLib2.hs
+++ b/src/ParseLib2.hs
@@ -31,8 +31,8 @@
     many1_offside,many_offside,off,
     opt, skipUntil, skipUntilOff,skipUntilParse,skipNest) where
 
-import Char
-import Monad
+import Data.Char
+import Control.Monad
 
 infixr 5 +++
 
diff --git a/src/Rules/JSON.hs b/src/Rules/JSON.hs
--- a/src/Rules/JSON.hs
+++ b/src/Rules/JSON.hs
@@ -1,7 +1,7 @@
 module Rules.JSON (rules) where
 
 import RuleUtils
-import List 
+import Data.List 
 import GenUtil
 
 rules = [
diff --git a/src/Rules/Perl5.hs b/src/Rules/Perl5.hs
--- a/src/Rules/Perl5.hs
+++ b/src/Rules/Perl5.hs
@@ -1,7 +1,7 @@
 module Rules.Perl5 (rules) where
 
 import RuleUtils
-import List 
+import Data.List 
 import GenUtil
 
 rules = [
diff --git a/src/Rules/Perl6Class.hs b/src/Rules/Perl6Class.hs
--- a/src/Rules/Perl6Class.hs
+++ b/src/Rules/Perl6Class.hs
@@ -1,7 +1,7 @@
 module Rules.Perl6Class (rules) where
 
 import RuleUtils
-import List 
+import Data.List 
 import GenUtil
 
 type AlwaysPositional = Bool
diff --git a/src/Rules/YAML.hs b/src/Rules/YAML.hs
--- a/src/Rules/YAML.hs
+++ b/src/Rules/YAML.hs
@@ -1,7 +1,7 @@
 module Rules.YAML (rules) where
 
 import RuleUtils
-import List 
+import Data.List 
 import GenUtil
 
 type AlwaysPositional = Bool
diff --git a/src/Unlit.hs b/src/Unlit.hs
--- a/src/Unlit.hs
+++ b/src/Unlit.hs
@@ -5,7 +5,7 @@
 --   version 1.2, appendix C.
 
 
-import Char
+import Data.Char
 
 data Classified = Program String | Blank | Comment
                 | Include Int String | Pre String
