diff --git a/ministg.cabal b/ministg.cabal
--- a/ministg.cabal
+++ b/ministg.cabal
@@ -1,5 +1,5 @@
 name:                ministg
-version:             0.2
+version:             0.3
 cabal-version:       >= 1.6
 synopsis:            an interpreter for an operational semantics for the STG machine. 
 description:         ministg is an interpreter for a simple high-level operational semantics for the STG machine. The
@@ -11,19 +11,23 @@
 category:            Language
 license:             BSD3
 license-file:        LICENSE
-copyright:           (c) 2009 Bernard James Pope
+copyright:           (c) 2009, 2010, 2011 Bernard James Pope
 author:              Bernard James Pope 
-maintainer:          bjpop@csse.unimelb.edu.au
+maintainer:          florbitous@gmail.com
 homepage:            http://www.haskell.org/haskellwiki/Ministg 
 build-type:          Simple
 stability:           experimental
 tested-with:         GHC==6.10.4
 extra-source-files:  README.txt test/*.stg 
 
+source-repository head
+  type:     git
+  location: https://github.com/bjpop/ministg.git 
+
 Executable ministg 
   main-is:         Main.hs
   hs-source-dirs:  src
-  build-depends:   base >= 3 && < 5, monads-tf, transformers, containers, parsec >= 3, pretty, haskell98, xhtml, directory, filepath
+  build-depends:   base >= 3 && < 5, monads-tf, transformers, containers, parsec >= 3, pretty, xhtml, directory, filepath
   other-modules:
       Ministg.AST
       Ministg.Lexer
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -14,12 +14,12 @@
 
 module Main where
 
-import System (exitFailure)
+import System.Exit (exitFailure)
 import Ministg.AST (Program (Program))
 import Ministg.Parser (parser)
 import Ministg.Lexer (lexer, Token)
 import Control.Monad (when, unless)
-import System (getArgs, exitFailure)
+import System.Environment (getArgs)
 import System.Directory (doesDirectoryExist, createDirectory)
 import Ministg.Utils (safeReadFile)
 import Ministg.Arity (runArity)
diff --git a/src/Ministg/Arity.hs b/src/Ministg/Arity.hs
--- a/src/Ministg/Arity.hs
+++ b/src/Ministg/Arity.hs
@@ -15,7 +15,8 @@
 
 module Ministg.Arity (runArity, Arity) where
 
-import Data.Map as Map
+import qualified Data.Map as Map
+import Data.Map (Map)
 import Control.Monad.Reader
 import Control.Applicative
 import Ministg.AST
diff --git a/src/Ministg/Eval.hs b/src/Ministg/Eval.hs
--- a/src/Ministg/Eval.hs
+++ b/src/Ministg/Eval.hs
@@ -16,7 +16,8 @@
 
 import Control.Monad.State (evalStateT, gets)
 import Control.Monad.Trans (liftIO)
-import Data.Map as Map hiding (map)
+import qualified Data.Map as Map
+import Data.Map (Map)
 import Data.List (foldl')
 import Ministg.AST
 import Ministg.CallStack (CallStack, push, showCallStack)
@@ -85,6 +86,9 @@
    let newExp = subs (mkSub var (Variable newVar)) exp 
    return $ Just (newExp, stack, newHeap)
 -- CASECON
+-- We don't catch pattern match errors here because we assume
+-- that the compiler will insert a default clause which will
+-- fire if no previous pattern matches.
 smallStep _anyStyle (Case (Atom (Variable v)) alts) stack heap
    | Con constructor args <- lookupHeap v heap, 
      Just (vars, exp) <- exactPatternMatch constructor alts = do
diff --git a/src/Ministg/Options.hs b/src/Ministg/Options.hs
--- a/src/Ministg/Options.hs
+++ b/src/Ministg/Options.hs
@@ -31,8 +31,8 @@
 import Data.Maybe (fromMaybe)
 import Data.Char (toLower, isDigit)
 import Data.Maybe (catMaybes)
-import IO (stderr, hPutStrLn)
-import System
+import System.IO (stderr, hPutStrLn)
+import System.Exit
 
 programName :: String
 programName = "ministg"
diff --git a/test/fac_stack.stg b/test/fac_stack.stg
deleted file mode 100644
--- a/test/fac_stack.stg
+++ /dev/null
@@ -1,9 +0,0 @@
-fac = FUN (x -> stack "fac"
-         case eqInt x zero of {
-            True -> one;
-            False -> let { s = THUNK(subInt x one);
-                           rec = THUNK(fac s) }
-                     in multInt x rec
-         });
-
-main = THUNK (stack "main" fac seven) 
diff --git a/test/non_exhaustive_pattern.stg b/test/non_exhaustive_pattern.stg
new file mode 100644
--- /dev/null
+++ b/test/non_exhaustive_pattern.stg
@@ -0,0 +1,5 @@
+foo = CON(Foo);
+end = CON(End);
+main = THUNK(
+   case foo of { Bar -> end; x -> error; }
+);
