diff --git a/interpolate.cabal b/interpolate.cabal
--- a/interpolate.cabal
+++ b/interpolate.cabal
@@ -1,5 +1,5 @@
 name:             interpolate
-version:          0.0.0
+version:          0.0.1
 license:          MIT
 license-file:     LICENSE
 copyright:        (c) 2013 Simon Hengel
diff --git a/src/Data/String/Interpolate/Util.hs b/src/Data/String/Interpolate/Util.hs
--- a/src/Data/String/Interpolate/Util.hs
+++ b/src/Data/String/Interpolate/Util.hs
@@ -8,7 +8,11 @@
 
 toString :: Show a => a -> String
 toString a = let s = show a in fromMaybe s (readMaybe s)
-
+{-# RULES "toString/String" toString = id #-}
+{-# RULES "toString/Int" toString = show :: Int -> String #-}
+{-# RULES "toString/Integer" toString = show :: Integer -> String #-}
+{-# RULES "toString/Float" toString = show :: Float -> String #-}
+{-# RULES "toString/Double" toString = show :: Double -> String #-}
 
 -- Haskell 2010 character unescaping, see:
 -- http://www.haskell.org/onlinereport/haskell2010/haskellch2.html#x7-200002.6
