diff --git a/Data/Storable/Endian.hs b/Data/Storable/Endian.hs
--- a/Data/Storable/Endian.hs
+++ b/Data/Storable/Endian.hs
@@ -29,12 +29,7 @@
 
 import Data.Bits
 import Data.Word
-
-#if defined(__GLASGOW_HASKELL__) && !defined(__HADDOCK__)
-import GHC.Base
-import GHC.Int
-import GHC.Word
-#endif
+import Data.Int
 
 import GHC.Generics (Generic(..))
 
@@ -68,6 +63,7 @@
   peek      p        = BE `fmap` peekBE (castPtr p)
   poke      p (BE a) = pokeBE (castPtr p) a
 
+fork :: (a1 -> b1 -> c) -> (a0 -> a1) -> (b0 -> b1) -> a0 -> b0 -> c
 fork f onX onY = \x y -> f (onX x) (onY y)
 
 ------------------------------
@@ -366,28 +362,9 @@
 {-# INLINE shiftr_w64 #-}
 shiftr_w64 :: Word64 -> Int -> Word64
 
-#if defined(__GLASGOW_HASKELL__) && !defined(__HADDOCK__)
-shiftr_w16 (W16# w) (I# i) = W16# (w `uncheckedShiftRL#`   i)
-shiftr_w32 (W32# w) (I# i) = W32# (w `uncheckedShiftRL#`   i)
-
-#if WORD_SIZE_IN_BITS < 64
-shiftr_w64 (W64# w) (I# i) = W64# (w `uncheckedShiftRL64#` i)
-
-#if __GLASGOW_HASKELL__ <= 606
--- Exported by GHC.Word in GHC 6.8 and higher
-foreign import ccall unsafe "stg_uncheckedShiftRL64"
-    uncheckedShiftRL64#     :: Word64# -> Int# -> Word64#
-#endif
-
-#else
-shiftr_w64 (W64# w) (I# i) = W64# (w `uncheckedShiftRL#` i)
-#endif
-
-#else
 shiftr_w16 = shiftR
 shiftr_w32 = shiftR
 shiftr_w64 = shiftR
-#endif
 
 ------------------------------------------------------------------------
 -- Unchecked shifts
@@ -396,25 +373,6 @@
 shiftl_w32 :: Word32 -> Int -> Word32
 shiftl_w64 :: Word64 -> Int -> Word64
 
-#if defined(__GLASGOW_HASKELL__) && !defined(__HADDOCK__)
-shiftl_w16 (W16# w) (I# i) = W16# (w `uncheckedShiftL#`   i)
-shiftl_w32 (W32# w) (I# i) = W32# (w `uncheckedShiftL#`   i)
-
-#if WORD_SIZE_IN_BITS < 64
-shiftl_w64 (W64# w) (I# i) = W64# (w `uncheckedShiftL64#` i)
-
-#if __GLASGOW_HASKELL__ <= 606
--- Exported by GHC.Word in GHC 6.8 and higher
-foreign import ccall unsafe "stg_uncheckedShiftL64"
-    uncheckedShiftL64#     :: Word64# -> Int# -> Word64#
-#endif
-
-#else
-shiftl_w64 (W64# w) (I# i) = W64# (w `uncheckedShiftL#` i)
-#endif
-
-#else
 shiftl_w16 = shiftL
 shiftl_w32 = shiftL
 shiftl_w64 = shiftL
-#endif
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/storable-endian.cabal b/storable-endian.cabal
--- a/storable-endian.cabal
+++ b/storable-endian.cabal
@@ -1,5 +1,5 @@
 Name: storable-endian
-Version: 0.2.6
+Version: 0.2.6.1
 License: BSD3
 License-file: LICENSE
 Copyright: Eugene Kirpichov, 2010
@@ -8,7 +8,7 @@
 Synopsis: Storable instances with endianness
 Description: Storable instances with endianness
 Category: Data
-Cabal-Version: >= 1.6
+Cabal-Version: 1.14
 Build-Type: Simple
 Source-repository head
   type: git
@@ -25,6 +25,6 @@
 
   Build-Depends: byteorder
   Exposed-Modules: Data.Storable.Endian
-  Extensions: 
-    MagicHash
-   ,CPP
+  Default-Language: Haskell98
+  Default-Extensions: CPP
+  GHC-Options: -Wall
