diff --git a/Crypto/Cipher/AES/Haskell.hs b/Crypto/Cipher/AES/Haskell.hs
--- a/Crypto/Cipher/AES/Haskell.hs
+++ b/Crypto/Cipher/AES/Haskell.hs
@@ -315,13 +315,26 @@
 		cR0 it r0 r1 r2 r3 =
 			(sbox r1 `xor` rcon it, sbox r2, sbox r3, sbox r0)
 
+rotateR' :: Word32 -> Int -> Word32
+rotateR' = case getSystemEndianness of
+           LittleEndian -> rotateR
+           BigEndian    -> rotateL
+{-# INLINE rotateR' #-}
+
+rotateL' :: Word32 -> Int -> Word32
+rotateL' = case getSystemEndianness of
+           LittleEndian -> rotateL
+           BigEndian    -> rotateR
+{-# INLINE rotateL' #-}
+
+
 {-# INLINE shiftRows #-}
 shiftRows :: AESState -> IO ()
 shiftRows blk = do
 	r32 blk 0 >>= w32 blk 0 . msbox32
-	r32 blk 1 >>= \t1 -> w32 blk 1 $ rotateR (msbox32 t1) 8
-	r32 blk 2 >>= \t2 -> w32 blk 2 $ rotateR (msbox32 t2) 16
-	r32 blk 3 >>= \t3 -> w32 blk 3 $ rotateR (msbox32 t3) 24
+	r32 blk 1 >>= \t1 -> w32 blk 1 $ rotateR' (msbox32 t1) 8
+	r32 blk 2 >>= \t2 -> w32 blk 2 $ rotateR' (msbox32 t2) 16
+	r32 blk 3 >>= \t3 -> w32 blk 3 $ rotateR' (msbox32 t3) 24
 
 {-# INLINE addRoundKey #-}
 addRoundKey :: Key -> Int -> AESState -> IO ()
@@ -355,9 +368,9 @@
 shiftRowsInv :: AESState -> IO ()
 shiftRowsInv blk = do
 	r32 blk 0 >>= w32 blk 0 . mrsbox32
-	r32 blk 1 >>= \t1 -> w32 blk 1 $ mrsbox32 $ rotateL t1 8
-	r32 blk 2 >>= \t2 -> w32 blk 2 $ mrsbox32 $ rotateL t2 16
-	r32 blk 3 >>= \t3 -> w32 blk 3 $ mrsbox32 $ rotateL t3 24
+	r32 blk 1 >>= \t1 -> w32 blk 1 $ mrsbox32 $ rotateL' t1 8
+	r32 blk 2 >>= \t2 -> w32 blk 2 $ mrsbox32 $ rotateL' t2 16
+	r32 blk 3 >>= \t3 -> w32 blk 3 $ mrsbox32 $ rotateL' t3 24
 
 {-# INLINE mixColumnsInv #-}
 mixColumnsInv :: AESState -> IO ()
diff --git a/Crypto/Cipher/ElGamal.hs b/Crypto/Cipher/ElGamal.hs
--- a/Crypto/Cipher/ElGamal.hs
+++ b/Crypto/Cipher/ElGamal.hs
@@ -21,13 +21,14 @@
     , encryptWith
     , encrypt
     , decrypt
+{-
     , sign
     , verify
+-}
     ) where
 
 import Number.ModArithmetic (exponantiation, inverse)
-import Number.Prime (generateSafePrime)
-import Number.Generate (generateOfSize, generateBetween)
+import Number.Generate (generateOfSize)
 import Crypto.Types.PubKey.DH
 import Crypto.Random
 import Control.Arrow (first)
@@ -61,10 +62,12 @@
 
 -- | decrypt message
 decrypt :: Params -> PrivateNumber -> (Integer, Integer) -> Integer
-decrypt (p,g) (PrivateNumber a) (c1,c2) = (c2 * sm1) `mod` p
+decrypt (p,_) (PrivateNumber a) (c1,c2) = (c2 * sm1) `mod` p
     where s   = exponantiation c1 a p
           sm1 = fromJust $ inverse s p -- always inversible in Zp
 
+{-
 sign = undefined
 
 verify = undefined
+-}
diff --git a/cryptocipher.cabal b/cryptocipher.cabal
--- a/cryptocipher.cabal
+++ b/cryptocipher.cabal
@@ -1,5 +1,5 @@
 Name:                cryptocipher
-Version:             0.3.4
+Version:             0.3.5
 Description:         Symmetrical Block, Stream and PubKey Ciphers
 License:             BSD3
 License-file:        LICENSE
