diff --git a/Data/Array/Base.hs b/Data/Array/Base.hs
index bf0e5f0101cdf29cd739120ddf63ca89347382ed..f9cc0c5b40ca8fe95c47c7817f0fca819d81a7f0 100644
--- a/Data/Array/Base.hs
+++ b/Data/Array/Base.hs
@@ -43,8 +43,14 @@ import GHC.Float	( Float(..), Double(..) )
 import GHC.Stable	( StablePtr(..) )
 import GHC.Int		( Int8(..),  Int16(..),  Int32(..),  Int64(..) )
 import GHC.Word		( Word8(..), Word16(..), Word32(..), Word64(..) )
+#if __GLASGOW_HASKELL__ >= 611
+import GHC.IO           ( IO(..), stToIO )
+import GHC.IOArray      ( IOArray(..),
+                          newIOArray, unsafeReadIOArray, unsafeWriteIOArray )
+#else
 import GHC.IOBase       ( IO(..), IOArray(..), stToIO,
                           newIOArray, unsafeReadIOArray, unsafeWriteIOArray )
+#endif
 #else
 import Data.Int
 import Data.Word
diff --git a/Data/Array/IO.hs b/Data/Array/IO.hs
index 5f5166fc6c8b9388912317caef47a781b56884eb..13f46a458b38873cbd822e038ee509a6c75a5dbf 100644
--- a/Data/Array/IO.hs
+++ b/Data/Array/IO.hs
@@ -1,4 +1,5 @@
 {-# OPTIONS_GHC -#include "HsBase.h" #-}
+{-# OPTIONS_GHC -w #-} --tmp
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Data.Array.IO
@@ -39,9 +40,11 @@ import Foreign
 import Foreign.C
 
 import GHC.Arr
+import GHC.IORef
+import GHC.IO.Handle
+import GHC.IO.Buffer
+import GHC.IO.Exception
 
-import GHC.IOBase
-import GHC.Handle
 #else
 import Data.Char
 import Data.Word ( Word8 )
@@ -63,6 +66,10 @@ hGetArray
 		-- read, which might be smaller than the number requested
 		-- if the end of file was reached.
 
+hGetArray = undefined
+
+#if 0
+
 hGetArray handle (IOUArray (STUArray _l _u n ptr)) count
   | count == 0
   = return 0
@@ -105,6 +112,8 @@ readChunk fd is_stream ptr init_off bytes0 = loop init_off bytes0
 	then return (off - init_off)
 	else loop (off + r) (bytes - r)
 
+#endif
+
 -- ---------------------------------------------------------------------------
 -- hPutArray
 
@@ -115,6 +124,10 @@ hPutArray
 	-> Int				-- ^ Number of 'Word8's to write
 	-> IO ()
 
+hPutArray = undefined
+
+#if 0
+
 hPutArray handle (IOUArray (STUArray _l _u n raw)) count
   | count == 0
   = return ()
@@ -144,14 +157,11 @@ hPutArray handle (IOUArray (STUArray _l _u n raw)) count
 		    flushWriteBuffer fd stream this_buf
 		    return ()
 
+#endif
+
 -- ---------------------------------------------------------------------------
 -- Internal Utils
 
-foreign import ccall unsafe "__hscore_memcpy_dst_off"
-   memcpy_baoff_ba :: RawBuffer -> CInt -> RawBuffer -> CSize -> IO (Ptr ())
-foreign import ccall unsafe "__hscore_memcpy_src_off"
-   memcpy_ba_baoff :: RawBuffer -> RawBuffer -> CInt -> CSize -> IO (Ptr ())
-
 illegalBufferSize :: Handle -> String -> Int -> IO a
 illegalBufferSize handle fn sz = 
 	ioException (ioeSetErrorString
diff --git a/Data/Array/IO/Internals.hs b/Data/Array/IO/Internals.hs
index 7c0cd61d7495e5ea65aea4e88344cbe5bf38cc53..3569b79fd3f9be668812faf408ba36ecf8206415 100644
--- a/Data/Array/IO/Internals.hs
+++ b/Data/Array/IO/Internals.hs
@@ -38,7 +38,11 @@ import Data.Array.Base
 import Data.Ix
 
 #ifdef __GLASGOW_HASKELL__
+#if __GLASGOW_HASKELL__ >= 611
+import GHC.IOArray (IOArray(..))
+#else
 import GHC.IOBase (IOArray(..))
+#endif
 #endif /* __GLASGOW_HASKELL__ */
 
 #include "Typeable.h"