diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -117,7 +117,7 @@
     hastacheStr defaultConfig (encodeStr template) context >>= LZ.putStrLn) 
         [(template1, mkStrContext context1),
          (template1, context2),
-         (template2, context3)]
+         (template3, context3)]
 
 names = ["Nameless","Long Sky","Flying Snow","Broken Sword","Qin Shi Huang"]
 
@@ -137,7 +137,8 @@
 
 context2 = mkGenericContext $ Heroes $ map Hero names
 
-template2 = concat [
+-- With Generics (another way)
+template3 = concat [
     "{{heroName.3}}\n",
     "{{heroName.2}}\n"]
 
diff --git a/Text/Hastache.hs b/Text/Hastache.hs
--- a/Text/Hastache.hs
+++ b/Text/Hastache.hs
@@ -83,7 +83,7 @@
 import Control.Monad (guard, when)
 import Control.Monad.Reader (ask, runReaderT, MonadReader, ReaderT)
 import Control.Monad.Trans (lift, liftIO, MonadIO)
-import Data.AEq ((~==))
+import Data.AEq (AEq,(~==))
 import Data.ByteString hiding (map, foldl1)
 import Data.ByteString.Char8 (readInt)
 import Data.Char (ord)
@@ -102,7 +102,9 @@
 import qualified Data.ByteString.Lazy as LZ
 import qualified Data.List as List
 import qualified Data.Text as Text
+import qualified Data.Text.Encoding as TextEncoding
 import qualified Data.Text.Lazy as LText
+import qualified Data.Text.Lazy.Encoding as LTextEncoding
 import qualified Prelude
 
 (~>) :: a -> (a -> b) -> b
@@ -128,8 +130,11 @@
 instance MuVar LZ.ByteString where
     toLByteString = id
     isEmpty a = LZ.length a == 0
-    
+
+withShowToLBS :: Show a => a -> LZ.ByteString
 withShowToLBS a = show a ~> encodeStr ~> toLBS
+
+numEmpty :: (Num a,AEq a) => a -> Bool
 numEmpty a = a ~== 0
 
 instance MuVar Integer where {toLByteString = withShowToLBS; isEmpty = numEmpty}
@@ -147,11 +152,11 @@
 instance MuVar Word64  where {toLByteString = withShowToLBS; isEmpty = numEmpty}
 
 instance MuVar Text.Text where 
-    toLByteString t = Text.unpack t ~> encodeStr ~> toLBS
+    toLByteString t = TextEncoding.encodeUtf8 t ~> toLBS
     isEmpty a = Text.length a == 0
 
 instance MuVar LText.Text where 
-    toLByteString t = LText.unpack t ~> encodeStr ~> toLBS
+    toLByteString t = LTextEncoding.encodeUtf8 t
     isEmpty a = LText.length a == 0
     
 instance MuVar Char where
diff --git a/hastache.cabal b/hastache.cabal
--- a/hastache.cabal
+++ b/hastache.cabal
@@ -1,5 +1,5 @@
 name:            hastache
-version:         0.4.1
+version:         0.4.2
 license:         BSD3
 license-file:    LICENSE
 category:        Text
@@ -7,7 +7,9 @@
 author:          Sergey S Lymar <sergey.lymar@gmail.com>
 maintainer:      Sergey S Lymar <sergey.lymar@gmail.com>
 stability:       experimental
-tested-with:     GHC == 7.0.2, GHC == 7.0.3
+tested-with:     
+                 GHC == 7.0.2,
+                 GHC == 7.0.3
 synopsis:        Haskell implementation of Mustache templates
 cabal-version:   >= 1.8
 homepage:        http://github.com/lymar/hastache
