diff --git a/compiler98/Error.hs b/compiler98/Error.hs
--- a/compiler98/Error.hs
+++ b/compiler98/Error.hs
@@ -1,5 +1,6 @@
 module Error where
 
+import Control.Exception
 import Data.List
 import System.IO
 import System.Exit
@@ -7,7 +8,7 @@
 exit :: IO a
 exit = exitWith (ExitFailure 1)
 
-can'tOpen :: String -> a -> IO b
+can'tOpen :: String -> IOException -> IO a
 can'tOpen filename ioError =
   do
     hPutStr stderr ("Can't open "++filename ++ "\n")
diff --git a/compiler98/Extra.hs b/compiler98/Extra.hs
--- a/compiler98/Extra.hs
+++ b/compiler98/Extra.hs
@@ -1,6 +1,7 @@
 module Extra(module Extra, module HbcOnly, module Data.Maybe, trace) where
 
 import HbcOnly
+import qualified Control.Exception (catch, IOException)
 import Data.Char
 import Data.List
 import Data.Maybe
@@ -286,8 +287,8 @@
   finput <- readFile x
   return (x,finput)
 readFirst (x:xs) =
-  catch (do finput <- readFile x
-            return (x,finput))
-        (\ _ -> readFirst xs)
+  Control.Exception.catch (do finput <- readFile x
+                              return (x,finput))
+        (\ y -> (y :: Control.Exception.IOException) `seq` readFirst xs)
 
 ------------------------
diff --git a/hat.cabal b/hat.cabal
--- a/hat.cabal
+++ b/hat.cabal
@@ -1,6 +1,6 @@
 
 name:                hat
-version:             2.7.0.11
+version:             2.7.0.12
 synopsis:            The Haskell tracer, generating and viewing Haskell execution traces
 description:
   hat-trans transforms Module.hs into Hat/Module.hs such that when the program is
@@ -41,7 +41,7 @@
 
   There is documentation in the "docs" folder, but much of it is outdated.
   There are a few small programs for exploring tracing in the "examples" folder.
-homepage:            http://www.cs.kent.ac.uk/~oc
+homepage:            http://olafchitil.github.com/hat/
 license:             OtherLicense
 license-file:        docs/copyright.html
 copyright:	     (c) 2000-2012 Hat team
diff --git a/tools/HatTrail.hs b/tools/HatTrail.hs
--- a/tools/HatTrail.hs
+++ b/tools/HatTrail.hs
@@ -15,6 +15,7 @@
 			,highlight,Highlight(..),Colour(..)
 			,enableScrollRegion,getTerminalSize
 			,savePosition,restorePosition)
+import qualified Control.Exception(catch,IOException)
 import Control.Monad	(when,liftM)
 import System.Cmd       (system)
 import System.Environment (getArgs,getProgName,getEnv)
@@ -69,10 +70,12 @@
     errmsg <- getErrorMessage
     output <- readOutputFile hatfile
     bridge <- readBridgeFile
-    (style0,style1) <- catch (do home <- getEnv "HOME"
-                                 f <- readFile (home++"/.hattrailrc")
-                                 return (read f))
-                             (\e-> return ( [Dim,Foreground Red]
+    (style0,style1) <- Control.Exception.catch (do 
+                         home <- getEnv "HOME"
+                         f <- readFile (home++"/.hattrailrc")
+                         return (read f))
+                             (\e-> (e :: Control.Exception.IOException) `seq`
+                                   return ( [Dim,Foreground Red]
                                           , [Bold,Foreground Magenta] ))
     (columns,lines) <- getTerminalSize
     let state = State { file=hatfile, width=columns, height=lines, startLine=0
diff --git a/trans/HatTrans.hs b/trans/HatTrans.hs
--- a/trans/HatTrans.hs
+++ b/trans/HatTrans.hs
@@ -10,6 +10,7 @@
 import System.Environment(getArgs)
 import System.Exit(exitWith,ExitCode(..))
 import System.IO.Error(isAlreadyExistsError)
+import qualified Control.Exception (catch)
 import Control.Monad(when)
 import Data.List(isPrefixOf,intersperse,inits)
 import System.Directory(doesDirectoryExist,createDirectory)
@@ -81,7 +82,7 @@
   {- lex source code -}
   beginPhase "lex"
   mainChar	-- :: String
-           <- catch (readFile filename) (can'tOpen filename) 
+           <- Control.Exception.catch (readFile filename) (can'tOpen filename) 
   lexdata	-- :: [PosToken]
            <- return (lexical (sUnderscore flags) (sSourceFile flags)
                               (if sUnlit flags 
@@ -176,7 +177,7 @@
         accum xs = map (concat . intersperse "/") (tail (inits xs))
         wordsBy c s = let (w,s') = break (==c) s
                       in w: case s' of [] -> []; (_:s'') -> wordsBy c s''
-        safeCreate path = catch (createDirectory path)
+        safeCreate path = Control.Exception.catch (createDirectory path)
                                 (\e-> if isAlreadyExistsError e then return ()
                                       else ioError e)
 
