diff --git a/SConstruct b/SConstruct
index 429b0d8b5a907e14efa7b66a5b1466601c1e4628..84a6991cbfd2880120280542c9426e5f2ed65286 100644
--- a/SConstruct
+++ b/SConstruct
@@ -1,5 +1,6 @@
 # -*- python -*-
 import os
+import os.path
 env = Environment()
 
 env.MergeFlags("-std=gnu99 -Wall -Wextra -Werror -Wno-unused-parameter -Wno-attributes -lrt")
@@ -28,8 +29,13 @@ else:
 if os.getenv("CC") == "clang":
     env.Replace(CC="clang",
                 CXX="clang++")
+
+#rootpath = env['ROOTPATH'] = os.path.abspath('.')
+#env.Append(CPPPATH=os.path.join('#', "hammer"))
+
 Export('env')
 
+
 env.SConscript(["src/SConscript"], variant_dir='build/$VARIANT/src')
 env.SConscript(["examples/SConscript"], variant_dir='build/$VARIANT/examples')
 
diff --git a/src/SConscript b/src/SConscript
index e87a038cb85568a2d23843be1c52ec0a7ee46c46..e825df277e06d1d9ba00f35b770066a59498b1a7 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -1,6 +1,8 @@
 # -*- python -*-
 Import('env')
 
+bindings = ['cpp']
+
 parsers = ['parsers/%s.c'%s for s in
            ['action',
             'and',
@@ -50,11 +52,17 @@ tests = ['t_benchmark.c',
          't_grammar.c',
          't_misc.c']
 
-libhammer = env.SharedLibrary('hammer', parsers + backends + misc_hammer_parts)
-libhammer = env.StaticLibrary('hammer', parsers + backends + misc_hammer_parts)
+libhammer_shared = env.SharedLibrary('hammer', parsers + backends + misc_hammer_parts)
+libhammer_static = env.StaticLibrary('hammer', parsers + backends + misc_hammer_parts)
+
+
 
 testenv = env.Clone()
 testenv.ParseConfig('pkg-config --cflags --libs glib-2.0')
 testenv.Append(LIBS=['hammer'], LIBPATH=['.'])
 testenv.Program('test_suite', tests + ['test_suite.c'])
     
+Export("libhammer_static libhammer_shared")
+
+for b in bindings:
+    env.SConscript(["bindings/%s/SConscript" % b])
diff --git a/src/bindings/cpp/SConscript b/src/bindings/cpp/SConscript
new file mode 100644
index 0000000000000000000000000000000000000000..67c93fbfe9043b7a4039f76d93275111ce17c173
--- /dev/null
+++ b/src/bindings/cpp/SConscript
@@ -0,0 +1,14 @@
+# -*- python -*-
+
+print "In CPP"
+
+Import("libhammer_shared")
+Import("libhammer_static")
+Import("env")
+
+env.Append(CPPPATH=["../.."])
+
+binding_sources = ['hammer.cxx']
+
+libhammerxx_shared = env.SharedLibrary("hammer++", binding_sources + [libhammer_shared])
+libhammerxx_static = env.StaticLibrary("hammer++", binding_sources + [libhammer_static])
diff --git a/src/hammer.cxx b/src/bindings/cpp/hammer.cxx
similarity index 100%
rename from src/hammer.cxx
rename to src/bindings/cpp/hammer.cxx
diff --git a/src/hammer.hxx b/src/bindings/cpp/hammer.hxx
similarity index 100%
rename from src/hammer.hxx
rename to src/bindings/cpp/hammer.hxx