diff --git a/friday-devil.cabal b/friday-devil.cabal
--- a/friday-devil.cabal
+++ b/friday-devil.cabal
@@ -2,7 +2,7 @@
 --                      +-+------- breaking API changes
 --                      | | +----- non-breaking API additions
 --                      | | | +--- code changes with no API change
-version:                0.1.0.1
+version:                0.1.1.0
 synopsis:               Uses the DevIL C library to read and write images from
                         and to files and memory buffers.
 homepage:               https://github.com/RaphaelJ/friday-devil
@@ -35,9 +35,10 @@
     ghc-options:        -Wall -O2
     hs-source-dirs:     src/
     default-language:   Haskell2010
+    default-extensions: UndecidableInstances
 
     build-depends:      base                    >= 4            && < 5
-                      , bytestring              >= 0.10         && < 1
+                      , bytestring              >= 0.10.2.0     && < 1
                       , convertible             >= 1            && < 2
                       , deepseq                 >= 1.3          && < 2
                       , friday                  >= 0.2          && < 0.3
diff --git a/src/Vision/Image/Storage/DevIL.hsc b/src/Vision/Image/Storage/DevIL.hsc
--- a/src/Vision/Image/Storage/DevIL.hsc
+++ b/src/Vision/Image/Storage/DevIL.hsc
@@ -53,11 +53,7 @@
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Unsafe as BS
 
-import Vision.Image.Class (nChannels)
-import Vision.Image.Grey (Grey, GreyDelayed)
-import Vision.Image.RGBA (RGBA, RGBADelayed)
-import Vision.Image.RGB (RGB, RGBDelayed)
-import Vision.Image.Type (Manifest (..), delay)
+import Vision.Image (Manifest (..), Grey, RGB, RGBA, nChannels)
 import Vision.Primitive (Z (..), (:.) (..), ix2)
 
 import Vision.Image.Storage.DevIL.ImageType
@@ -90,45 +86,26 @@
 
 instance Convertible StorageImage StorageImage where
     safeConvert = Right
+    {-# INLINE safeConvert #-}
 
 instance Convertible Grey StorageImage where
     safeConvert = Right . GreyStorage
+    {-# INLINE safeConvert #-}
 
 instance Convertible RGBA StorageImage where
     safeConvert = Right . RGBAStorage
+    {-# INLINE safeConvert #-}
 
 instance Convertible RGB StorageImage where
     safeConvert = Right . RGBStorage
-
-instance Convertible StorageImage Grey where
-    safeConvert (GreyStorage img) = Right img
-    safeConvert (RGBAStorage img) = Right $ convert img
-    safeConvert (RGBStorage img)  = Right $ convert img
-
-instance Convertible StorageImage RGBA where
-    safeConvert (GreyStorage img) = Right $ convert img
-    safeConvert (RGBAStorage img) = Right img
-    safeConvert (RGBStorage img)  = Right $ convert img
+    {-# INLINE safeConvert #-}
 
-instance Convertible StorageImage RGB where
+instance (Convertible Grey i, Convertible RGB i, Convertible RGBA i)
+    => Convertible StorageImage i where
     safeConvert (GreyStorage img) = Right $ convert img
     safeConvert (RGBAStorage img) = Right $ convert img
-    safeConvert (RGBStorage img)  = Right img
-
-instance Convertible StorageImage GreyDelayed where
-    safeConvert (GreyStorage img) = Right $ delay img
-    safeConvert (RGBAStorage img) = Right $ convert img
     safeConvert (RGBStorage img)  = Right $ convert img
-
-instance Convertible StorageImage RGBADelayed where
-    safeConvert (GreyStorage img) = Right $ convert img
-    safeConvert (RGBAStorage img) = Right $ delay img
-    safeConvert (RGBStorage img)  = Right $ convert img
-
-instance Convertible StorageImage RGBDelayed where
-    safeConvert (GreyStorage img) = Right $ convert img
-    safeConvert (RGBAStorage img) = Right $ convert img
-    safeConvert (RGBStorage img)  = Right $ delay img
+    {-# INLINE safeConvert #-}
 
 instance NFData StorageImage where
     rnf !(GreyStorage img) = rnf img
