diff --git a/OpenAFP.cabal b/OpenAFP.cabal
--- a/OpenAFP.cabal
+++ b/OpenAFP.cabal
@@ -1,10 +1,10 @@
 name:               OpenAFP
-version:            1.4.2
+version:            1.4.3
 license:            PublicDomain
 License-file:       LICENSE
 cabal-version:      >= 1.6
 author:             Audrey Tang
-Tested-With:        GHC==6.10.1, GHC==6.12.1, GHC==7.0.1, GHC==7.2.1, GHC==7.4.1, GHC==7.8.2
+Tested-With:        GHC==6.10.1, GHC==6.12.1, GHC==7.0.1, GHC==7.2.1, GHC==7.4.1, GHC==7.8.2, GHC==8.0.2
 maintainer:         audreyt@audreyt.org
 homepage:           https://github.com/audreyt/openafp/
 synopsis:           IBM AFP document format parser and generator
diff --git a/src/OpenAFP/Internals.hs b/src/OpenAFP/Internals.hs
--- a/src/OpenAFP/Internals.hs
+++ b/src/OpenAFP/Internals.hs
@@ -55,7 +55,7 @@
 import System.Console.GetOpt     as X 
 import System.IO                 as X 
 import System.Environment        as X 
-import System.Exit               as X 
+import System.Exit               as X hiding (die)
 import System.Mem.Weak           as X 
 import System.IO.Unsafe          as X 
 import System.IO.Error           as X 
@@ -91,5 +91,5 @@
 statePut :: (Control.Monad.State.MonadState s m) => s -> m ()
 statePut = Control.Monad.RWS.put
 
-type IOm a = (MonadPlus m, MonadIO m, MonadError e m, Show e, Typeable e) => m a
-type StateIO v a = (MonadPlus m, MonadIO m, MonadReader v m, MonadError e m, Show e, Typeable e) => m a
+type IOm a = forall m e. (MonadPlus m, MonadIO m, MonadError e m, Show e, Typeable e) => m a
+type StateIO v a = forall m e. (MonadPlus m, MonadIO m, MonadReader v m, MonadError e m, Show e, Typeable e) => m a
diff --git a/src/OpenAFP/Internals/Binary.hs b/src/OpenAFP/Internals/Binary.hs
--- a/src/OpenAFP/Internals/Binary.hs
+++ b/src/OpenAFP/Internals/Binary.hs
@@ -10,7 +10,7 @@
     module Data.ByteString.Internal
   ) where
 
-import Data.Binary
+import Data.Binary hiding (putList)
 import Data.Array.Unboxed
 import Data.Bits
 import Data.Int
@@ -49,16 +49,15 @@
 newtype A8 = A8 Word64 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Bounded)
 newtype A12 = A12 Integer deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable)
 
-newtype I1 = I1 Int8 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Ix, IArray UArray, Show, Hashable)
-newtype I2 = I2 Int16 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Ix, IArray UArray, Show, Hashable)
-newtype I4 = I4 Int32 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Ix, IArray UArray, Show, Hashable)
-newtype I8 = I8 Int64 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Ix, IArray UArray, Show, Hashable)
+newtype I1 = I1 Int8 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Ix, Show, Hashable)
+newtype I2 = I2 Int16 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Ix, Show, Hashable)
+newtype I4 = I4 Int32 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Ix, Show, Hashable)
+newtype I8 = I8 Int64 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Ix, Show, Hashable)
 
-newtype N1 = N1 { fromN1 :: Word8 } deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Binary, Ix, IArray UArray, Bounded, Hashable)
+newtype N1 = N1 { fromN1 :: Word8 } deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Binary, Ix, Bounded, Hashable)
 newtype N2 = N2 { fromN2 :: Word16 } deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Binary, Bounded, Hashable)
 newtype N3 = N3 { fromN3 :: Word32 } deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Hashable)
 newtype N4 = N4 { fromN4 :: Word32 } deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Binary, Bounded, Hashable)
-
 data N0 = N0 deriving (Show, Ord, Enum, Eq, Typeable, Ix, Bounded)
 
 instance Bounded A3 where
diff --git a/src/OpenAFP/Internals/Ebc2Asc.hs b/src/OpenAFP/Internals/Ebc2Asc.hs
--- a/src/OpenAFP/Internals/Ebc2Asc.hs
+++ b/src/OpenAFP/Internals/Ebc2Asc.hs
@@ -153,7 +153,7 @@
         0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
         0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 ]
 
-asc2ebc :: UArray Int N1
+asc2ebc :: UArray Int Word8
 asc2ebc = listArray (0, 255) [
         0x00, 0x01, 0x02, 0x03, 0x37, 0x2D, 0x2E, 0x2F,
         0x16, 0x05, 0x25, 0x0B, 0x0C, 0x0D, 0x3F, 0x3F,
diff --git a/src/OpenAFP/Types/Chunk.hs b/src/OpenAFP/Types/Chunk.hs
--- a/src/OpenAFP/Types/Chunk.hs
+++ b/src/OpenAFP/Types/Chunk.hs
@@ -41,7 +41,7 @@
 type AStr = NStr
 
 type ChunkWriter c = WriterT (ChunkQueue c)
-type WriterStateIO v a = (Chunk c, MonadReader v m) => ChunkWriter c m a
+type WriterStateIO v a = forall c m. (Chunk c, MonadReader v m) => ChunkWriter c m a
 
 instance Storable NStr where
     alignment _ = 8
