diff --git a/.hg_archival.txt b/.hg_archival.txt
--- a/.hg_archival.txt
+++ b/.hg_archival.txt
@@ -1,2 +1,2 @@
 repo: 98941e61c842f8b0ee8011f6a907f7e5f55fe0ac
-node: e78f6e286c68a17bdd4e10f04a2e864e1b5390a6
+node: 64fa5d451fc22872970e333809c1611ada432698
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -1,1 +1,2 @@
 8320ac5d2e07378ebe7d6568e5d87345dd1bdfe9 0.0.6
+ee15d2bf21e291d48564fa85173f54e65404d5e6 0.0.7
diff --git a/bindings-libusb.cabal b/bindings-libusb.cabal
--- a/bindings-libusb.cabal
+++ b/bindings-libusb.cabal
@@ -3,7 +3,7 @@
 homepage: http://bitbucket.org/mauricio/bindings
 synopsis:
   Check bindings-common package for directions.
-version: 0.0.6
+version: 0.0.7
 license: BSD3
 license-file: LICENSE
 maintainer: Maurício C. Antunes <mauricio.antunes@gmail.com>
@@ -28,11 +28,11 @@
     LibusbConstants
     LibusbFunctions
     LibusbTypes
--- This has to be commented out so that hackage
--- won't complain about a missing library.
---c-sources:
---  src/constants.c
---  src/functions.c
---  src/types.c
---pkgconfig-depends:
---  libusb-1.0 >= 1.0.0
+-- This has to be commented so hackage won't complain
+-- about a missing library.
+--  c-sources:
+--    src/constants.c
+--    src/functions.c
+--    src/types.c
+--  pkgconfig-depends:
+--    libusb-1.0 >= 1.0.0
diff --git a/src/LibusbFunctions.hs b/src/LibusbFunctions.hs
--- a/src/LibusbFunctions.hs
+++ b/src/LibusbFunctions.hs
@@ -127,11 +127,11 @@
  libusb_get_string_descriptor_ascii
     :: Ptr Libusb_device_handle -> Word8 -> Ptr CUChar -> CInt -> IO CInt
 
-foreign import ccall "libusb_get_descriptor" libusb_get_descriptor
+foreign import ccall "libusb_get_descriptor2" libusb_get_descriptor
     :: Ptr Libusb_device_handle -> Word8 -> Word8 -> Ptr CUChar ->
        CInt -> IO CInt
 
-foreign import ccall "libusb_get_string_descriptor"
+foreign import ccall "libusb_get_string_descriptor2"
  libusb_get_string_descriptor
     :: Ptr Libusb_device_handle -> Word8 ->
        Word16 -> Ptr CUChar -> CInt -> IO CInt
@@ -148,52 +148,52 @@
 foreign import ccall "libusb_cancel_transfer" libusb_cancel_transfer
     :: Ptr (Libusb_transfer a) -> IO CInt
 
-foreign import ccall "libusb_control_transfer_get_data"
+foreign import ccall "libusb_control_transfer_get_data2"
  libusb_control_transfer_get_data
     :: Ptr (Libusb_transfer a) -> IO (Ptr CUChar)
 
-foreign import ccall "libusb_control_transfer_get_setup"
+foreign import ccall "libusb_control_transfer_get_setup2"
  libusb_control_transfer_get_setup
     :: Ptr (Libusb_transfer a) -> IO (Ptr Libusb_control_setup)
 
-foreign import ccall "libusb_fill_control_setup"
+foreign import ccall "libusb_fill_control_setup2"
  libusb_fill_control_setup
     :: Ptr CUChar -> Word8 -> Word8 ->
        Word16 -> Word16 -> Word16 -> IO ()
 
-foreign import ccall "libusb_fill_control_transfer"
+foreign import ccall "libusb_fill_control_transfer2"
  libusb_fill_control_transfer
     :: Ptr (Libusb_transfer a) -> Ptr Libusb_device_handle ->
        Ptr CUChar -> FunPtr (Libusb_transfer_cb_fn a) ->
        Ptr a -> CUInt -> IO ()
 
-foreign import ccall "libusb_fill_bulk_transfer"
+foreign import ccall "libusb_fill_bulk_transfer2"
  libusb_fill_bulk_transfer
     :: Ptr (Libusb_transfer a) -> Ptr Libusb_device_handle -> CUChar ->
        Ptr CUChar -> CInt -> FunPtr (Libusb_transfer_cb_fn a) ->
        Ptr a -> CUInt -> IO ()
 
-foreign import ccall "libusb_fill_interrupt_transfer"
+foreign import ccall "libusb_fill_interrupt_transfer2"
  libusb_fill_interrupt_transfer
     :: Ptr (Libusb_transfer a) -> Ptr Libusb_device_handle -> CUChar ->
        Ptr CUChar -> CInt -> FunPtr (Libusb_transfer_cb_fn a) ->
        Ptr a -> CUInt -> IO ()
 
-foreign import ccall "libusb_fill_iso_transfer"
+foreign import ccall "libusb_fill_iso_transfer2"
  libusb_fill_iso_transfer
     :: Ptr (Libusb_transfer a) -> Ptr Libusb_device_handle -> CUChar ->
        Ptr CUChar -> CInt -> CInt -> FunPtr (Libusb_transfer_cb_fn a) ->
        Ptr a -> CUInt -> IO ()
 
-foreign import ccall "libusb_set_iso_packet_lengths"
+foreign import ccall "libusb_set_iso_packet_lengths2"
  libusb_set_iso_packet_lengths
     :: Ptr (Libusb_transfer a) -> CUInt -> IO ()
 
-foreign import ccall "libusb_get_iso_packet_buffer"
+foreign import ccall "libusb_get_iso_packet_buffer2"
  libusb_get_iso_packet_buffer
     :: Ptr (Libusb_transfer a) -> CUInt -> IO (Ptr CUChar)
 
-foreign import ccall "libusb_get_iso_packet_buffer_simple"
+foreign import ccall "libusb_get_iso_packet_buffer_simple2"
  libusb_get_iso_packet_buffer_simple
     :: Ptr (Libusb_transfer a) -> CUInt -> IO (Ptr CUChar)
 
diff --git a/src/functions.c b/src/functions.c
--- a/src/functions.c
+++ b/src/functions.c
@@ -9,3 +9,121 @@
 {
     return libusb_le16_to_cpu (x);
 }
+
+
+int libusb_get_descriptor2 ( libusb_device_handle * dev,
+ uint8_t desc_type,
+ uint8_t desc_index,
+ unsigned char * data,
+ int length 
+ )
+{
+ libusb_get_descriptor (dev,desc_type,desc_index,data,length);
+}
+ 
+
+int libusb_get_string_descriptor2 ( libusb_device_handle * dev,
+ uint8_t desc_index,
+ uint16_t langid,
+ unsigned char * data,
+ int length 
+ )
+{
+ libusb_get_string_descriptor(dev,desc_index,langid,data,length);
+}
+
+unsigned char* libusb_control_transfer_get_data2 ( struct libusb_transfer * transfer )
+{
+  libusb_control_transfer_get_data(transfer);
+}
+
+struct libusb_control_setup* libusb_control_transfer_get_setup2 ( struct libusb_transfer * transfer )
+{
+ libusb_control_transfer_get_setup (transfer);
+}
+
+void libusb_fill_control_setup2 ( unsigned char * buffer,
+ uint8_t bmRequestType,
+ uint8_t bRequest,
+ uint16_t wValue,
+ uint16_t wIndex,
+ uint16_t wLength 
+ )
+{
+ libusb_fill_control_setup(buffer,bmRequestType,bRequest,wValue,wIndex,wLength);
+}
+
+void libusb_fill_control_transfer2 ( struct libusb_transfer * transfer,
+ libusb_device_handle * dev_handle,
+ unsigned char * buffer,
+ libusb_transfer_cb_fn callback,
+ void * user_data,
+ unsigned int timeout 
+ )
+{
+  libusb_fill_control_transfer(transfer,dev_handle,buffer,callback,user_data,timeout);
+}
+
+void libusb_fill_bulk_transfer2 ( struct libusb_transfer * transfer,
+ libusb_device_handle * dev_handle,
+ unsigned char endpoint,
+ unsigned char * buffer,
+ int length,
+ libusb_transfer_cb_fn callback,
+ void * user_data,
+ unsigned int timeout 
+ )
+{
+ libusb_fill_bulk_transfer(transfer,dev_handle,endpoint,buffer,length,callback,user_data,timeout);
+}
+ 
+void libusb_fill_interrupt_transfer2 ( struct libusb_transfer * transfer,
+ libusb_device_handle * dev_handle,
+ unsigned char endpoint,
+ unsigned char * buffer,
+ int length,
+ libusb_transfer_cb_fn callback,
+ void * user_data,
+ unsigned int timeout 
+ )
+{
+  libusb_fill_interrupt_transfer(transfer,dev_handle,endpoint,buffer,length,callback,user_data,timeout);
+}
+ 
+void libusb_fill_iso_transfer2 ( struct libusb_transfer * transfer,
+ libusb_device_handle * dev_handle,
+ unsigned char endpoint,
+ unsigned char * buffer,
+ int length,
+ int num_iso_packets,
+ libusb_transfer_cb_fn callback,
+ void * user_data,
+ unsigned int timeout 
+ )
+{
+ libusb_fill_iso_transfer(transfer,dev_handle,endpoint,buffer,length,num_iso_packets,callback,user_data,timeout);
+}
+ 
+void libusb_set_iso_packet_lengths2 ( struct libusb_transfer * transfer,
+ unsigned int length 
+ )
+{
+ libusb_set_iso_packet_lengths(transfer,length);
+}
+ 
+unsigned char* libusb_get_iso_packet_buffer2 ( struct libusb_transfer * transfer,
+ unsigned int packet 
+ ) 
+{
+ libusb_get_iso_packet_buffer(transfer,packet);
+}
+
+unsigned char* libusb_get_iso_packet_buffer_simple2 ( struct libusb_transfer * transfer,
+
+ unsigned int packet 
+ )
+{
+ libusb_get_iso_packet_buffer_simple(transfer,packet);
+}
+
+
