diff --git a/fb.cabal b/fb.cabal
--- a/fb.cabal
+++ b/fb.cabal
@@ -1,5 +1,5 @@
 name:              fb
-version:           0.7.3
+version:           0.7.4
 license:           BSD3
 license-file:      LICENSE
 author:            Felipe Lessa
@@ -85,7 +85,7 @@
       -- Library dependencies used on the tests.  No need to
       -- specify versions since they'll use the same as above.
       base, lifted-base, transformers, bytestring,
-      http-conduit, text, time, aeson
+      http-conduit, http-types, text, time, aeson
 
       -- Test-only dependencies
     , HUnit
diff --git a/src/Facebook/OpenGraph.hs b/src/Facebook/OpenGraph.hs
--- a/src/Facebook/OpenGraph.hs
+++ b/src/Facebook/OpenGraph.hs
@@ -21,7 +21,7 @@
 
 -- import qualified Control.Exception.Lifted as E
 -- import qualified Data.Aeson as A
--- import qualified Data.ByteString.Char8 as B
+import qualified Data.ByteString.Char8 as B
 import qualified Data.Conduit as C
 import qualified Data.Text as T
 import qualified Data.Text.Encoding as TE
@@ -106,7 +106,7 @@
 -- | Create an 'Argument' with a 'SimpleType'.  See the docs on
 -- 'createAction' for an example.
 (#=) :: SimpleType a => Ascii -> a -> Argument
-p #= v = (p, TE.encodeUtf8 (encodeFbParam v))
+p #= v = (p, encodeFbParam v)
 
 
 
@@ -114,7 +114,7 @@
 -- simple type. (see
 -- <https://developers.facebook.com/docs/opengraph/simpletypes/>).
 class SimpleType a where
-    encodeFbParam :: a -> Text
+    encodeFbParam :: a -> B.ByteString
 
 -- | Facebook's simple type @Boolean@.
 instance SimpleType Bool where
@@ -122,10 +122,10 @@
 
 -- | Facebook's simple type @DateTime@ with only the date.
 instance SimpleType TI.Day where
-    encodeFbParam = T.pack . TI.formatTime defaultTimeLocale "%Y-%m-%d"
+    encodeFbParam = B.pack . TI.formatTime defaultTimeLocale "%Y-%m-%d"
 -- | Facebook's simple type @DateTime@.
 instance SimpleType TI.UTCTime where
-    encodeFbParam = T.pack . TI.formatTime defaultTimeLocale "%Y%m%dT%H%MZ"
+    encodeFbParam = B.pack . TI.formatTime defaultTimeLocale "%Y%m%dT%H%MZ"
 -- | Facebook's simple type @DateTime@.
 instance SimpleType TI.ZonedTime where
     encodeFbParam = encodeFbParam . TI.zonedTimeToUTC
@@ -134,40 +134,44 @@
 
 -- | Facebook's simple type @Float@ with less precision than supported.
 instance SimpleType Float where
-    encodeFbParam = showT
+    encodeFbParam = showBS
 -- | Facebook's simple type @Float@.
 instance SimpleType Double where
-    encodeFbParam = showT
+    encodeFbParam = showBS
 
 -- | Facebook's simple type @Integer@.
 instance SimpleType Int where
-    encodeFbParam = showT
+    encodeFbParam = showBS
 -- | Facebook's simple type @Integer@.
 instance SimpleType Word where
-    encodeFbParam = showT
+    encodeFbParam = showBS
 -- | Facebook's simple type @Integer@.
 instance SimpleType Int8 where
-    encodeFbParam = showT
+    encodeFbParam = showBS
 -- | Facebook's simple type @Integer@.
 instance SimpleType Word8 where
-    encodeFbParam = showT
+    encodeFbParam = showBS
 -- | Facebook's simple type @Integer@.
 instance SimpleType Int16 where
-    encodeFbParam = showT
+    encodeFbParam = showBS
 -- | Facebook's simple type @Integer@.
 instance SimpleType Word16 where
-    encodeFbParam = showT
+    encodeFbParam = showBS
 -- | Facebook's simple type @Integer@.
 instance SimpleType Int32 where
-    encodeFbParam = showT
+    encodeFbParam = showBS
 -- | Facebook's simple type @Integer@.
 instance SimpleType Word32 where
-    encodeFbParam = showT
+    encodeFbParam = showBS
 
 -- | Facebook's simple type @String@.
 instance SimpleType Text where
-    encodeFbParam = id
+    encodeFbParam = TE.encodeUtf8
 
+-- | An object's 'Id' code.
+instance SimpleType Id where
+    encodeFbParam = idCode
+
 -- | A comma-separated list of simple types.  This definition
 -- doesn't work everywhere, just for a few combinations that
 -- Facebook uses (e.g. @[Int]@).  Also, encoding a list of lists
@@ -175,7 +179,7 @@
 -- other words, this instance is here more for your convenience
 -- than to make sure your code is correct.
 instance SimpleType a => SimpleType [a] where
-    encodeFbParam = T.concat . intersperse "," . map encodeFbParam
+    encodeFbParam = B.concat . intersperse "," . map encodeFbParam
 
-showT :: Show a => a -> Text
-showT = T.pack . show
+showBS :: Show a => a -> B.ByteString
+showBS = B.pack . show
diff --git a/tests/runtests.hs b/tests/runtests.hs
--- a/tests/runtests.hs
+++ b/tests/runtests.hs
@@ -7,14 +7,17 @@
 import Data.Text (Text)
 import Data.Time (parseTime)
 import Data.Word (Word8, Word16, Word32, Word)
+import Network.HTTP.Types (Ascii)
 import System.Environment (getEnv)
 import System.Exit (exitFailure)
 import System.IO.Error (isDoesNotExistError)
+import Unsafe.Coerce (unsafeCoerce)
 
 import qualified Data.Aeson as A
 import qualified Data.Aeson.Types as A
 import qualified Data.ByteString.Char8 as B
 import qualified Data.Text as T
+import qualified Data.Text.Encoding as TE
 import qualified Data.Time as TI
 import qualified Control.Exception.Lifted as E
 import qualified Facebook as FB
@@ -158,7 +161,7 @@
     it "works for ZonedTime" $ FB.encodeFbParam zonedTime @?= "20121221T1107Z"
 
     let propShowRead :: (Show a, Read a, Eq a, FB.SimpleType a) => a -> Bool
-        propShowRead x = read (T.unpack $ FB.encodeFbParam x) == x
+        propShowRead x = read (B.unpack $ FB.encodeFbParam x) == x
     prop "works for Float"  (propShowRead :: Float  -> Bool)
     prop "works for Double" (propShowRead :: Double -> Bool)
     prop "works for Int"    (propShowRead :: Int    -> Bool)
@@ -171,7 +174,7 @@
     prop "works for Word32" (propShowRead :: Word32 -> Bool)
 
     let propShowReadL :: (Show a, Read a, Eq a, FB.SimpleType a) => [a] -> Bool
-        propShowReadL x = read ('[' : T.unpack (FB.encodeFbParam x) ++ "]") == x
+        propShowReadL x = read ('[' : B.unpack (FB.encodeFbParam x) ++ "]") == x
     prop "works for [Float]"  (propShowReadL :: [Float]  -> Bool)
     prop "works for [Double]" (propShowReadL :: [Double] -> Bool)
     prop "works for [Int]"    (propShowReadL :: [Int]    -> Bool)
@@ -183,7 +186,15 @@
     prop "works for [Word16]" (propShowReadL :: [Word16] -> Bool)
     prop "works for [Word32]" (propShowReadL :: [Word32] -> Bool)
 
-    prop "works for Text" (\t -> FB.encodeFbParam t == t)
+    prop "works for Text" (\t -> FB.encodeFbParam t == TE.encodeUtf8 t)
+
+    prop "works for Id" $ \i ->
+      let toId :: Int -> FB.Id
+          toId = id' . B.pack . show
+            where id' :: Ascii -> FB.Id
+                  id' = unsafeCoerce
+          j = abs i
+      in FB.encodeFbParam (toId j) == FB.encodeFbParam j
 
 
 -- Wrappers for HUnit operators using MonadIO
