diff --git a/.hg_archival.txt b/.hg_archival.txt
--- a/.hg_archival.txt
+++ b/.hg_archival.txt
@@ -1,2 +1,2 @@
 repo: db8906263ec6e2f02cd51ed9b583ad96027042e9
-node: 4bee277a9ada33a58f1ac429c655630bc8882c33
+node: c8d01e33958c5c9bfd6252905c735c6663af2afc
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -21,3 +21,4 @@
 dae097e9f947f25b42e3776d67baafbfeb735491 0.2.3
 a8e59855e1a64081989a814a52193670e6192a8a 0.2.4
 f1ae56619abf50c66674868a9bf5fd5d4c6aeabc 0.2.4
+8faa7e11e3f3b025ef86b6921bfeafabf53c4bed 0.2.5
diff --git a/bindings-common.cabal b/bindings-common.cabal
--- a/bindings-common.cabal
+++ b/bindings-common.cabal
@@ -8,7 +8,7 @@
   modules that can be used to write C library
   bindings according to a well defined standard. See
   "Bindings" module documentation for details.
-version: 0.2.4
+version: 0.2.5
 license: BSD3
 license-file: LICENSE
 maintainer: Maurício C. Antunes <mauricio.antunes@gmail.com>
diff --git a/src/Bindings.hs b/src/Bindings.hs
--- a/src/Bindings.hs
+++ b/src/Bindings.hs
@@ -28,41 +28,41 @@
 -- provides many @hsc2hs@ macros to easy C binding.
 -- Here we list the most important.
 --
--- [@\#bindings_num@] Makes a C value into a Haskell
+-- [@#bindings_num@] Makes a C value into a Haskell
 -- name with type @(Num a) => a@. Used mostly to
 -- copy pre-processor macros. Note that here, as in
 -- all other macros, Haskell names are automatically
 -- derived from C names. Usage:
 --
--- > \#bindings_num MY_MACRO
+-- > #bindings_num MY_MACRO
 --
--- [@\#bindings_int@] Like @\#bindings_num@, but values
+-- [@\#bindings_int@] Like @#bindings_num@, but values
 -- are typed as @CInt@.
 --
--- [@\#bindings_frac@] Like @\#bindings_num@, but works
+-- [@\#bindings_frac@] Like @#bindings_num@, but works
 -- with floating point numbers. Values will have type
 -- @(Fractional a) => a@.
 --
--- [@\#bindings_function@] Wrap C functions. Usage:
+-- [@#bindings_function@] Wrap C functions. Usage:
 --
--- > \#bindings_function function_name , CInt -> CString -> IO ()
+-- > #bindings_function function_name , CInt -> CString -> IO ()
 --
--- [@\#bindings_startype , \#bindings_stoptype@] Declare a
+-- [@#bindings_startype , #bindings_stoptype@] Declare a
 -- Haskell @data@ type after a C type. You can wrap @struct@s,
 -- @union@s and types named with C @typedef@. Note that
 -- you can create types with no fields. This may be usefull
 -- when you don\'t need to reach fields, but your API requires
 -- you to create values of such types.
 --
--- > \#bindings_starttype struct my_type
--- > \#bindings_stoptype _
+-- > #bindings_starttype struct my_type
+-- > #bindings_stoptype _
 --
 -- You can replace @struct@ with @union@, or remove it
 -- when your type is defined with @typedef@. Note that
--- the @_@ after @\#bindings_stoptype@ is needed since
+-- the @_@ after @#bindings_stoptype@ is needed since
 -- @hsc2hs@ doesn\'t accept macros with no parameters.
 --
--- [@\#bindings_field , \#bindings_array_field@] Describe fields
+-- [@#bindings_field , #bindings_array_field@] Describe fields
 -- inside types. Supose you have a @struct@ like this:
 --
 -- > typedef struct my_struct {
@@ -73,36 +73,36 @@
 --
 -- You would mimic such type like this.
 --
--- > \#bindings_starttype my_struct_t
--- > \#bindings_field index , CInt
--- > \#bindings_field text , CString
--- > \#bindings_array_field , array , CChar , 10
--- > \#bindings_stoptype _
+-- > #bindings_starttype my_struct_t
+-- > #bindings_field index , CInt
+-- > #bindings_field text , CString
+-- > #bindings_array_field , array , CChar , 10
+-- > #bindings_stoptype _
 --
 -- You get a full instance for @Storable@.
 --
--- > v \<- peek p :: IO My_struct_t
--- > poke p $ v {my_struct_t\'index = 1 + (my_struct_t\'index v)}
+-- > v <- peek p :: IO My_struct_t
+-- > poke p $ v {my_struct_t'index = 1 + (my_struct_t'index v)}
 --
 -- As you can see from the example above, field names
--- are translated to Haskell using @type\'field@ pattern.
+-- are translated to Haskell using @type'field@ pattern.
 -- This is necessary to avoid name clashes since Haskell
 -- would not allow many types with similar records, as
 -- is common practice in C.
 --
--- [@\#bindings_equivalent_integer@] This gives you a Haskell
+-- [@#bindings_equivalent_integer@] This gives you a Haskell
 -- integer type that is the same size as a C type. Usage:
 --
--- > type CIntType = \#bindings_equivalent_integer int_type
+-- > type CIntType = #bindings_equivalent_integer int_type
 --
 -- This is actually equivalent to @hsc2hs@ 
--- @\#type@, except that it is safe to use on pointers
+-- @#type@, except that it is safe to use on pointers
 -- (but not on floating point types).
 --
--- [@\#bindings_globalvar@] Wraps a global variable, using
+-- [@#bindings_globalvar@] Wraps a global variable, using
 -- 'Bindings.Utilities.GlobalVariable'. Usage:
 --
--- > \#bindings_globalvar external_string , CString
+-- > #bindings_globalvar external_string , CString
 --
 -- Note that the internal type of that variable
 -- will be a pointer to a @CString@, as you\'ll be
@@ -132,8 +132,8 @@
 -- easier to write a UTF-8 handler in Haskell than
 -- this interface.
 --
--- > \#define UNICODE_2_UTF8 1
--- > \#define UTF8_2_UNICODE 2
+-- > #define UNICODE_2_UTF8 1
+-- > #define UTF8_2_UNICODE 2
 --
 -- > struct unicode_translator {
 -- >   uint32_t unicode;
@@ -152,16 +152,16 @@
 
 -- | Now we make use of @hsc2hs@ macros inside Haskell.
 --
--- > \#bindings_num UNICODE_2_UTF8
--- > \#bindings_num UTF8_2_UNICODE
+-- > #bindings_num UNICODE_2_UTF8
+-- > #bindings_num UTF8_2_UNICODE
 --
--- > \#bindings_starttype struct unicode_translator
--- > \#bindings_field unicode , Word32
--- > \#bindings_array_field eight_bits , Word8 , 4
--- > \#bindings_field nchars , CInt
--- > \#bindings_stoptype
+-- > #bindings_starttype struct unicode_translator
+-- > #bindings_field unicode , Word32
+-- > #bindings_array_field eight_bits , Word8 , 4
+-- > #bindings_field nchars , CInt
+-- > #bindings_stoptype
 --
--- > \#bindings_function translate , CInt -> Ptr Unicode_translator -> IO ()
+-- > #bindings_function translate , CInt -> Ptr Unicode_translator -> IO ()
 --
 -- This gives us a set of declarations as below.
 --
@@ -169,9 +169,9 @@
 -- > _UTF8_2_UNICODE :: (Num a) => a
 -- >
 -- > data Unicode_translator = Unicode_translator {
--- >   unicode_translator\'unicode :: Word32,
--- >   unicode_translator\'eight_bits :: [Word8],
--- >   unicode_translator\'nchars :: CInt
+-- >   unicode_translator'unicode :: Word32,
+-- >   unicode_translator'eight_bits :: [Word8],
+-- >   unicode_translator'nchars :: CInt
 -- > }
 -- >
 -- > translate :: CInt -> Ptr Unicode_translator -> IO ()
@@ -189,12 +189,12 @@
 -- > unicodeToUtf :: String -> IO String
 -- > unicodeToUtf string = liftM concat $ alloca $ \ptrUt ->
 -- >   (flip mapM) string $ \char -> do
--- >       ut \<- peek ptrUt
--- >       poke ptrUt (ut {/unicode_translator\'unicode/ = toChar char})
--- >       /translate _UNICODE_2_UTF8/ ptrUt
--- >       ut \<- peek ptrUt
--- >       let nChars = fromIntegral $ /unicode_translator\'nchars/ ut
--- >       let eightBits = /unicode_translator\'eight_bits/ ut
+-- >       ut <- peek ptrUt
+-- >       poke ptrUt (ut {unicode_translator'unicode = toChar char})
+-- >       translate _UNICODE_2_UTF8 ptrUt
+-- >       ut <- peek ptrUt
+-- >       let nChars = fromIntegral $ unicode_translator'nchars ut
+-- >       let eightBits = unicode_translator'eight_bits ut
 -- >       return $ (map toChar) $ reverse $ take nChars eightBits
 -- > 
 -- > utfToUnicode :: String -> IO String
@@ -202,25 +202,25 @@
 -- >  (. (map fromChar)) $
 -- >  (. splitCodes) $
 -- >  mapM $ \c -> do
--- >     let ut = /Unicode_translator/ {
--- >                /unicode_translator\'nchars/ =
+-- >     let ut = Unicode_translator {
+-- >                unicode_translator'nchars =
 -- >                   fromIntegral $ length c,
--- >                /unicode_translator\'eight_bits/ =
+-- >                unicode_translator'eight_bits =
 -- >                   reverse $ map fromChar c,
--- >                /unicode_translator\'unicode/ = 0
+-- >                unicode_translator'unicode = 0
 -- >               }
--- >     unicode \<- with ut $ \ptr -> do
--- >         /translate _UTF8_2_UNICODE/ ptr
--- >         liftM /unicode_translator\'unicode/ $ peek ptr
+-- >     unicode <- with ut $ \ptr -> do
+-- >         translate _UTF8_2_UNICODE ptr
+-- >         liftM unicode_translator'unicode $ peek ptr
 -- >     return $ toChar $ unicode
 -- >  where
 -- >      splitCodes :: [Word8] -> [[Word8]]
 -- >      splitCodes [] = []
--- >      splitCodes (a:t) = if (a \< 0x80)
+-- >      splitCodes (a:t) = if (a < 0x80)
 -- >        then
 -- >          [a]:(splitCodes t)
 -- >        else
--- >          let i = findIndex (\c -> c \< 0x80 || c > 0xBF) t
+-- >          let i = findIndex (\c -> c < 0x80 || c > 0xBF) t
 -- >              (t1,t2) = maybe ([],t) (flip splitAt t) i
 -- >          in (a:t1):(splitCodes t2)
 --
@@ -243,7 +243,7 @@
 -- > printAsInt s = putStrLn $ show $ map fromEnum s
 -- > 
 -- > main = do
--- >   let a = \"Exceção\"
+-- >   let a = "Exceção"
 -- >   printAsInt a
 -- >   printAsInt $ toUtf8 a
 -- >   printAsInt $ fromUtf8 $ toUtf8 a
