diff --git a/bindings-common.cabal b/bindings-common.cabal
--- a/bindings-common.cabal
+++ b/bindings-common.cabal
@@ -1,35 +1,21 @@
 cabal-version: >= 1.2.3
 name: bindings-common
-homepage: http://bitbucket.org/mauricio/bindings-common
 synopsis:
-  Preprocessor DSL for low level FFI.
-description: 
-  Packages named @bindings-*@ contain low level bindings to well
-  known libraries, as a resource to be used by developers of
-  higher level modules. This @bindings-common@ package provides
-  @hsc2hs@ macros that allows writing code for such low level
-  bindings that is easy to write, read and maintain, while
-  keeping names and functionality as close as possible to the
-  base library. These macros can be used as a simple alternative
-  to, say, @c2hs@, or to @hsc2hs@ original macros. Bindings
-  for the standard C library are also provided, and its source
-  code shows how most macros are supposed to be used. More
-  examples and reference documentation can be found at project
-  homepage.
-version: 1.3.3
+  This package is obsolete. Look for bindings-DSL instead.
+version: 1.3.4
 license: BSD3
 license-file: LICENSE
-maintainer: Maurício C. Antunes <mauricio.antunes@gmail.com>
+maintainer: none
 author: Maurício C. Antunes
-stability: Stable, tested, maintained.
+stability: Obsolete
 build-type: Simple
-bug-reports: http://bitbucket.org/mauricio/bindings-common/issues
 category: FFI
 library
   hs-source-dirs: src
   include-dirs: src
   install-includes:
     bindings.macros.h
+    bindings.c_macros.h
   extensions:
     ForeignFunctionInterface
   build-depends: base >=3 && <5
diff --git a/src/bindings.c_macros.h b/src/bindings.c_macros.h
new file mode 100644
--- /dev/null
+++ b/src/bindings.c_macros.h
@@ -0,0 +1,262 @@
+#ifndef __BINDINGS_C_MACROS_H__
+#define __BINDINGS_C_MACROS_H__
+
+#define BC_GLOBALARRAY(name,type) \
+const type* array_##name () \
+{ \
+  return name; \
+} \
+
+#define BC_INLINE_(name,ret) \
+ret inline_##name () \
+{ \
+  return name; \
+} \
+
+#define BC_INLINE_VOID(name) \
+void inline_##name () \
+{ \
+  name; \
+} \
+
+#define BC_INLINE1(name,t1,ret) \
+ret inline_##name (t1 v1) \
+{ \
+  return name (v1); \
+} \
+
+#define BC_INLINE1VOID(name,t1) \
+void inline_##name (t1 v1) \
+{ \
+  name (v1); \
+} \
+
+#define BC_INLINE2(name,t1,t2,ret) \
+ret inline_##name (t1 v1,t2 v2) \
+{ \
+  return name (v1,v2); \
+} \
+
+#define BC_INLINE2VOID(name,t1,t2) \
+void inline_##name (t1 v1,t2 v2) \
+{ \
+  name (v1,v2); \
+} \
+
+#define BC_INLINE3(name,t1,t2,t3,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3) \
+{ \
+  return name (v1,v2,v3); \
+} \
+
+#define BC_INLINE3VOID(name,t1,t2,t3) \
+void inline_##name (t1 v1,t2 v2,t3 v3) \
+{ \
+  name (v1,v2,v3); \
+} \
+
+#define BC_INLINE4(name,t1,t2,t3,t4,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4) \
+{ \
+  return name (v1,v2,v3,v4); \
+} \
+
+#define BC_INLINE4VOID(name,t1,t2,t3,t4) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4) \
+{ \
+  name (v1,v2,v3,v4); \
+} \
+
+#define BC_INLINE5(name,t1,t2,t3,t4,t5,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5) \
+{ \
+  return name (v1,v2,v3,v4,v5); \
+} \
+
+#define BC_INLINE5VOID(name,t1,t2,t3,t4,t5) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5) \
+{ \
+  name (v1,v2,v3,v4,v5); \
+} \
+
+#define BC_INLINE6(name,t1,t2,t3,t4,t5,t6,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6) \
+{ \
+  return name (v1,v2,v3,v4,v5,v6); \
+} \
+
+#define BC_INLINE6VOID(name,t1,t2,t3,t4,t5,t6) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6) \
+{ \
+  name (v1,v2,v3,v4,v5,v6); \
+} \
+
+#define BC_INLINE7(name,t1,t2,t3,t4,t5,t6,t7,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7) \
+{ \
+  return name (v1,v2,v3,v4,v5,v6,v7); \
+} \
+
+#define BC_INLINE7VOID(name,t1,t2,t3,t4,t5,t6,t7) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7) \
+{ \
+  name (v1,v2,v3,v4,v5,v6,v7); \
+} \
+
+#define BC_INLINE8(name,t1,t2,t3,t4,t5,t6,t7,t8,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8) \
+{ \
+  return name (v1,v2,v3,v4,v5,v6,v7,v8); \
+} \
+
+#define BC_INLINE8VOID(name,t1,t2,t3,t4,t5,t6,t7,t8) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8) \
+{ \
+  name (v1,v2,v3,v4,v5,v6,v7,v8); \
+} \
+
+#define BC_INLINE9(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9) \
+{ \
+  return name (v1,v2,v3,v4,v5,v6,v7,v8,v9); \
+} \
+
+#define BC_INLINE9VOID(name,t1,t2,t3,t4,t5,t6,t7,t8,t9) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9) \
+{ \
+  name (v1,v2,v3,v4,v5,v6,v7,v8,v9); \
+} \
+
+#define BC_INLINE10(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10) \
+{ \
+  return name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10); \
+} \
+
+#define BC_INLINE10VOID(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10) \
+{ \
+  name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10); \
+} \
+
+#define BC_INLINE11(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11) \
+{ \
+  return name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11); \
+} \
+
+#define BC_INLINE11VOID(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11) \
+{ \
+  name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11); \
+} \
+
+#define BC_INLINE12(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12) \
+{ \
+  return name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12); \
+} \
+
+#define BC_INLINE12VOID(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12) \
+{ \
+  name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12); \
+} \
+
+#define BC_INLINE13(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13) \
+{ \
+  return name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13); \
+} \
+
+#define BC_INLINE13VOID(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13) \
+{ \
+  name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13); \
+} \
+
+#define BC_INLINE14(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13,t14 v14) \
+{ \
+  return name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14); \
+} \
+
+#define BC_INLINE14VOID(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13,t14 v14) \
+{ \
+  name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14); \
+} \
+
+#define BC_INLINE15(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13,t14 v14,t15 v15) \
+{ \
+  return name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15); \
+} \
+
+#define BC_INLINE15VOID(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13,t14 v14,t15 v15) \
+{ \
+  name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15); \
+} \
+
+#define BC_INLINE16(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13,t14 v14,t15 v15,t16 v16) \
+{ \
+  return name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16); \
+} \
+
+#define BC_INLINE16VOID(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13,t14 v14,t15 v15,t16 v16) \
+{ \
+  name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16); \
+} \
+
+#define BC_INLINE17(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13,t14 v14,t15 v15,t16 v16,t17 v17) \
+{ \
+  return name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17); \
+} \
+
+#define BC_INLINE17VOID(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13,t14 v14,t15 v15,t16 v16,t17 v17) \
+{ \
+  name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17); \
+} \
+
+#define BC_INLINE18(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13,t14 v14,t15 v15,t16 v16,t17 v17,t18 v18) \
+{ \
+  return name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18); \
+} \
+
+#define BC_INLINE18VOID(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13,t14 v14,t15 v15,t16 v16,t17 v17,t18 v18) \
+{ \
+  name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18); \
+} \
+
+#define BC_INLINE19(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13,t14 v14,t15 v15,t16 v16,t17 v17,t18 v18,t19 v19) \
+{ \
+  return name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19); \
+} \
+
+#define BC_INLINE19VOID(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13,t14 v14,t15 v15,t16 v16,t17 v17,t18 v18,t19 v19) \
+{ \
+  name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19); \
+} \
+
+#define BC_INLINE20(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20,ret) \
+ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13,t14 v14,t15 v15,t16 v16,t17 v17,t18 v18,t19 v19,t20 v20) \
+{ \
+  return name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20); \
+} \
+
+#define BC_INLINE20VOID(name,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20) \
+void inline_##name (t1 v1,t2 v2,t3 v3,t4 v4,t5 v5,t6 v6,t7 v7,t8 v8,t9 v9,t10 v10,t11 v11,t12 v12,t13 v13,t14 v14,t15 v15,t16 v16,t17 v17,t18 v18,t19 v19,t20 v20) \
+{ \
+  name (v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20); \
+} \
+
+#endif /* __BINDINGS_C_MACROS_H__ */
diff --git a/src/bindings.macros.h b/src/bindings.macros.h
--- a/src/bindings.macros.h
+++ b/src/bindings.macros.h
@@ -16,7 +16,7 @@
     { \
      char *p, *q, buffer_w[strlen(name)+1]; \
      strcpy(buffer_w,name); \
-     for (p=strtok(buffer_w," \t");q=strtok(NULL," \t");p=q); \
+     for (p=strtok(buffer_w," \t");(q=strtok(NULL," \t"));p=q); \
      printf("%s",p); \
     } \
 
@@ -233,32 +233,12 @@
      printf("    return ()\n"); \
     } \
 
-#define BC_GLOBALARRAY(name,type) \
-    type* array_##name () {return name;} \
 
-#define BC_INLINE_(name,ret) \
-    ret inline_##name () {return name;} \
-
-#define BC_INLINE0(name,ret) \
-    ret inline_##name () {return name();} \
-
-#define BC_INLINE1(name,t1,ret) \
-    ret inline_##name (t1 v1) {return name(v1);} \
-
-#define BC_INLINE1VOID(name,t1) \
-    void inline_##name (t1 v1) {name(v1);} \
-
-#define BC_INLINE2(name,t1,t2,ret) \
-    ret inline_##name (t1 v1,t2 v2) {return name(v1,v2);} \
-
-#define BC_INLINE2VOID(name,t1,t2) \
-    void inline_##name (t1 v1,t2 v2) {name(v1,v2);} \
-
-#define BC_INLINE3(name,t1,t2,t3,ret) \
-    ret inline_##name (t1 v1,t2 v2,t3 v3) {return name(v1,v2,v3);} \
-
-#define BC_INLINE4(name,t1,t2,t3,t4,ret) \
-    ret inline_##name (t1 v1,t2 v2,t3 v3,t4 v4) {return name(v1,v2,v3,v4);} \
+/* This re-export is deprecated. You should
+ * import <bindings.c_macros.h> directly in
+ * your C files.
+ */
+#include <bindings.c_macros.h>
 
 #endif /* __BINDINGS_MACROS_H__ */
 
