diff --git a/Text/Regex/TDFA/NewDFA/Engine.hs b/Text/Regex/TDFA/NewDFA/Engine.hs
--- a/Text/Regex/TDFA/NewDFA/Engine.hs
+++ b/Text/Regex/TDFA/NewDFA/Engine.hs
@@ -19,7 +19,8 @@
 -}
 import Prelude hiding ((!!))
 
-import Data.Array.MArray(MArray(..),unsafeFreeze)
+import Data.Array.MArray(MArray(..))
+import Data.Array.Unsafe(unsafeFreeze)
 import Data.Array.IArray(Array,bounds,assocs,Ix(rangeSize,range))
 import qualified Data.IntMap.CharMap2 as CMap(findWithDefault)
 import Data.IntMap(IntMap)
@@ -163,11 +164,11 @@
 -- compressOrbit.
 --
 -- compressOrbit on such a Tag loops through all the NFS states'
--- m_orbit record, discardind ones that are Nothing and discarding
+-- m_orbit record, discarding ones that are Nothing and discarding
 -- ones that are too new to care about (after the cutoff value).
 --
 -- compressOrbit then groups the Orbits records by the Tag-0 start
--- position and the basePos position.  Entried in different groups
+-- position and the basePos position.  Entries in different groups
 -- will never be comparable in the future so they can be processed
 -- separately.  Groups could probably be even more finely
 -- distinguished, as a futher optimization, but the justification will
diff --git a/Text/Regex/TDFA/NewDFA/Engine_FA.hs b/Text/Regex/TDFA/NewDFA/Engine_FA.hs
--- a/Text/Regex/TDFA/NewDFA/Engine_FA.hs
+++ b/Text/Regex/TDFA/NewDFA/Engine_FA.hs
@@ -20,7 +20,8 @@
 
 import Prelude hiding ((!!))
 import Control.Monad(when,unless,forM,forM_,liftM2,foldM)
-import Data.Array.MArray(MArray(..),unsafeFreeze)
+import Data.Array.MArray(MArray(..))
+import Data.Array.Unsafe(unsafeFreeze)
 import Data.Array.IArray(Array,bounds,assocs,Ix(range))
 import qualified Data.IntMap.CharMap2 as CMap(findWithDefault)
 import Data.IntMap(IntMap)
diff --git a/Text/Regex/TDFA/NewDFA/Engine_NC.hs b/Text/Regex/TDFA/NewDFA/Engine_NC.hs
--- a/Text/Regex/TDFA/NewDFA/Engine_NC.hs
+++ b/Text/Regex/TDFA/NewDFA/Engine_NC.hs
@@ -5,7 +5,8 @@
 import Data.Array.Base(unsafeRead,unsafeWrite)
 import Prelude hiding ((!!))
 
-import Data.Array.MArray(MArray(..),unsafeFreeze)
+import Data.Array.MArray(MArray(..))
+import Data.Array.Unsafe(unsafeFreeze)
 import Data.Array.IArray(Ix)
 import Data.Array.ST(STArray,STUArray)
 import qualified Data.IntMap.CharMap2 as CMap(findWithDefault)
diff --git a/Text/Regex/TDFA/NewDFA/Engine_NC_FA.hs b/Text/Regex/TDFA/NewDFA/Engine_NC_FA.hs
--- a/Text/Regex/TDFA/NewDFA/Engine_NC_FA.hs
+++ b/Text/Regex/TDFA/NewDFA/Engine_NC_FA.hs
@@ -4,7 +4,8 @@
 import Control.Monad(unless)
 import Prelude hiding ((!!))
 
-import Data.Array.MArray(MArray(newArray),unsafeFreeze)
+import Data.Array.MArray(MArray(..))
+import Data.Array.Unsafe(unsafeFreeze)
 import Data.Array.ST(STArray)
 import qualified Data.IntMap.CharMap2 as CMap(findWithDefault)
 import qualified Data.IntMap as IMap(null)
diff --git a/Text/Regex/TDFA/TDFA.hs b/Text/Regex/TDFA/TDFA.hs
--- a/Text/Regex/TDFA/TDFA.hs
+++ b/Text/Regex/TDFA/TDFA.hs
@@ -369,6 +369,9 @@
 setGroupTag :: Tag -> CompileInstructions ()
 setGroupTag = modifyPos (SetVal 0)
 
+-- The following is ten times more complicated than it ought to be.  Sorry, I was too new, and now
+-- too busy to clean this up.
+
 resetOrbit :: Tag -> CompileInstructions ()
 resetOrbit tag = modifyPos (SetVal (-1)) tag >> modifyOrbit (IMap.insert tag AlterReset)
 
diff --git a/regex-tdfa.cabal b/regex-tdfa.cabal
--- a/regex-tdfa.cabal
+++ b/regex-tdfa.cabal
@@ -1,5 +1,5 @@
 Name:                   regex-tdfa
-Version:                1.1.8
+Version:                1.2.0
 -- 0.99.4 tests pnonempty' = \ p -> POr [ PEmpty, p ] instead of PNonEmpty
 -- 0.99.5 remove PNonEmpty constructor
 -- 0.99.6 change to nested nonEmpty calls for PBound
@@ -46,6 +46,7 @@
 -- 1.1.6 Fix bug preventing []] [-] [^]] [^-] (thanks to Maxime Henrion)
 -- 1.1.7 fix url below
 -- 1.1.8 Make ghc-7.0.2 on platorm 2011.2.0.0.0 happy
+-- 1.2.0 "Almost ghc-7.8" with the array 0.4 changes for Data.Array.Unsafe
 License:                BSD3
 License-File:           LICENSE
 Copyright:              Copyright (c) 2007, Christopher Kuklewicz
@@ -64,7 +65,7 @@
 flag base4
 
 library 
-  Build-Depends:        regex-base >= 0.93.1, parsec, mtl, containers, array, bytestring
+  Build-Depends:        regex-base >= 0.93.1, parsec, mtl, containers, array >= 0.4, bytestring
   if flag(base4)
     Build-Depends:      base >= 4.0 && < 5, ghc-prim
   else
