diff --git a/haskell-qrencode.cabal b/haskell-qrencode.cabal
--- a/haskell-qrencode.cabal
+++ b/haskell-qrencode.cabal
@@ -1,5 +1,5 @@
 Name:                haskell-qrencode
-Version:             1.0.2
+Version:             1.0.3
 Synopsis:            Haskell bindings for libqrencode.
 Description:         Haskell bindings for libqrencode.
 
@@ -19,7 +19,7 @@
 Library
   hs-source-dirs: src
   Exposed-modules:     Data.QRCode
-  Build-depends: base <= 4, bytestring >= 0.9.1.7
+  Build-depends:  base >=4 && <5, bytestring >= 0.9.1.7
   Build-tools:         hsc2hs
   ghc-options: -O2 -Wall
   extra-libraries: qrencode
diff --git a/src/Data/QRCode.hsc b/src/Data/QRCode.hsc
--- a/src/Data/QRCode.hsc
+++ b/src/Data/QRCode.hsc
@@ -17,6 +17,7 @@
 
 import Control.Monad
 import Data.ByteString (ByteString, unpack, useAsCString, packCString)
+import qualified Data.ByteString as BS
 import Data.Maybe
 import Foreign
 import Foreign.C.String
@@ -94,7 +95,8 @@
                  -> QREncodeMode  -- ^ Encode Mode
                  -> Bool          -- ^ Case-sensative
                  -> IO QRcode     
-encodeByteString str version level mode casesensitive = 
+encodeByteString str version level mode casesensitive = do
+    when (BS.null str) $ error "empty bytestring provided" 
     useAsCString str $ \s-> encoder s version level mode casesensitive
 
 -- | create a QR code from a String
@@ -104,7 +106,8 @@
              -> QREncodeMode  -- ^ Encode Mode
              -> Bool          -- ^ Case-sensative
              -> IO QRcode
-encodeString str version  level mode casesensitive = 
+encodeString str version  level mode casesensitive = do
+    when (null str) $ error "empty string provided" 
     newCAString str >>= \s-> encoder s version level mode casesensitive
     
 encoder :: CString -> Maybe Int -> QREncodeLevel -> QREncodeMode -> Bool -> IO QRcode
