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.1
+version:             2.2.3.2
 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
@@ -18,22 +18,9 @@
 author:              Noel Winstanley
 maintainer:          Audrey Tang <audreyt@audreyt.org>
 homepage:            http://pugscode.org/
-exposed-modules:     DrIFT.JSON
-                     DrIFT.Perl5
-                     DrIFT.Perl6Class
-                     DrIFT.YAML
-hs-source-dirs:      src
-build-depends:       base < 4, haskell98, bytestring, utf8-string, pretty, containers, mtl, stm, HsSyck
 build-type:          Simple
 data-files:          AUTHORS, ChangeLog, README, README.old
-extensions:          ParallelListComp, ScopedTypeVariables,
-                     ImplicitParams, MagicHash, TypeSynonymInstances,
-                     OverlappingInstances, FlexibleContexts,
-                     UndecidableInstances, FlexibleInstances,
-                     IncoherentInstances
                      -- , PArr
-ghc-options:         -fparr
-
 extra-source-files:
         src/CommandP.hs, src/GenUtil.hs,
         src/DrIFT.hs, src/PreludData.hs src/Rules.hs, src/ParseLib2.hs,
@@ -45,7 +32,27 @@
         src/Rules/Perl6Class.hs,
         src/Rules/YAML.hs
 
-executable:          pugs-DrIFT
-main-is:             DrIFT.hs
-hs-source-dirs:      src
-extensions:          ParallelListComp
+executable          pugs-DrIFT
+    build-depends:       base >= 4 && < 5, haskell98, bytestring, utf8-string, pretty, containers, mtl < 2.0.0.0, stm, HsSyck
+    main-is:             DrIFT.hs
+    ghc-options:         -fparr
+    hs-source-dirs:      src
+    extensions:          ParallelListComp, ScopedTypeVariables,
+                         ImplicitParams, MagicHash, TypeSynonymInstances,
+                         OverlappingInstances, FlexibleContexts,
+                         UndecidableInstances, FlexibleInstances,
+                         IncoherentInstances
+
+library
+    build-depends:       base >= 4 && < 5, haskell98, bytestring, utf8-string, pretty, containers, mtl < 2.0.0.0, stm, HsSyck
+    hs-source-dirs:      src
+    ghc-options:         -fparr
+    extensions:          ParallelListComp, ScopedTypeVariables,
+                         ImplicitParams, MagicHash, TypeSynonymInstances,
+                         OverlappingInstances, FlexibleContexts,
+                         UndecidableInstances, FlexibleInstances,
+                         IncoherentInstances
+    exposed-modules:     DrIFT.JSON
+                         DrIFT.Perl5
+                         DrIFT.Perl6Class
+                         DrIFT.YAML
diff --git a/src/DrIFT/YAML.hs b/src/DrIFT/YAML.hs
--- a/src/DrIFT/YAML.hs
+++ b/src/DrIFT/YAML.hs
@@ -59,7 +59,7 @@
 class Typeable a => YAML a where
     asYAML :: a -> EmitAs YamlNode
     asYAML x = lift $ do
-        ty <- Control.Exception.handle (const $ return "()") $
+        ty <- Control.Exception.handle (\(e :: SomeException) -> return "()") $
             evaluate (show (typeOf x))
         case ty of
             "()" -> return nilNode
