diff --git a/bfps/__init__.py b/bfps/__init__.py
index 9e09fc18d72d51bf0b91c56dfc115272b6e1c745..f6e1bf14d79596c25e05e38fc47cde4d143d571f 100644
--- a/bfps/__init__.py
+++ b/bfps/__init__.py
@@ -31,14 +31,14 @@ try:
     if not here.startswith(os.path.join(dist_loc, 'bfps')):
         # not installed, but there is another version that *is*
         raise DistributionNotFound
-    header_dir = _dist.location
-    lib_dir = header_dir
+    header_dir = os.path.join(os.path.join(dist_loc, 'bfps'), 'cpp')
+    lib_dir = _dist.location
 except DistributionNotFound:
     #__version__ = 'Please install this project with setup.py'
     import subprocess
     __version__ = 'git revision ' + subprocess.check_output(['git', 'rev-parse', 'HEAD']).strip()
-    header_dir = './src'
-    lib_dir = './lib'
+    header_dir = './bfps/cpp'
+    lib_dir = './'
     if not os.path.isfile(os.path.join(header_dir, 'base.hpp')):
         tdir = os.path.dirname(os.path.realpath(__file__))
         header_dir = os.path.join(tdir, os.pardir)
diff --git a/bfps/code.py b/bfps/code.py
index ebeb404109fd3b30eb10be6ea467b191320d512d..e7b205c0b5145f6a23ffebe639f11d8c1a8a6713 100644
--- a/bfps/code.py
+++ b/bfps/code.py
@@ -98,6 +98,10 @@ class code(base):
         include_dirs = [bfps.header_dir,
                         '/usr/lib64/mpi/gcc/openmpi/include',
                         os.path.join(local_install_dir, 'include')]
+        if not os.path.isfile(os.path.join(bfps.header_dir, 'base.hpp')):
+            raise IOError('header not there:\n' +
+                          '{0}\n'.format(os.path.join(bfps.header_dir, 'base.hpp')) +
+                          '{0}\n'.format(bfps.dist_loc))
         libraries = ['fftw3_mpi',
                      'fftw3',
                      'fftw3f_mpi',
@@ -108,6 +112,7 @@ class code(base):
         for idir in include_dirs:
             command_strings += ['-I{0}'.format(idir)]
         command_strings += ['-L' + os.path.join(local_install_dir, 'lib')]
+        command_strings += ['-L' + os.path.join(local_install_dir, 'lib64')]
         command_strings.append('-L' + bfps.lib_dir)
         for libname in libraries:
             command_strings += ['-l' + libname]
@@ -119,7 +124,7 @@ class code(base):
             ncpu = 2,
             simname = 'test',
             iter0 = 0):
-        if self.compile_code():
+        if self.compile_code() == 0:
             current_dir = os.getcwd()
             if not os.path.isdir(self.work_dir):
                 os.makedirs(self.work_dir)
@@ -132,7 +137,7 @@ class code(base):
                              'mpirun',
                              '-np',
                              '{0}'.format(ncpu),
-                             './' + self.name + '.elf',
+                             './' + self.name,
                              simname,
                              '{0}'.format(iter0)])
             os.chdir(current_dir)
diff --git a/src/Morton_shuffler.cpp b/bfps/cpp/Morton_shuffler.cpp
similarity index 100%
rename from src/Morton_shuffler.cpp
rename to bfps/cpp/Morton_shuffler.cpp
diff --git a/src/Morton_shuffler.hpp b/bfps/cpp/Morton_shuffler.hpp
similarity index 100%
rename from src/Morton_shuffler.hpp
rename to bfps/cpp/Morton_shuffler.hpp
diff --git a/src/base.hpp b/bfps/cpp/base.hpp
similarity index 100%
rename from src/base.hpp
rename to bfps/cpp/base.hpp
diff --git a/src/fftw_tools.cpp b/bfps/cpp/fftw_tools.cpp
similarity index 100%
rename from src/fftw_tools.cpp
rename to bfps/cpp/fftw_tools.cpp
diff --git a/src/fftw_tools.hpp b/bfps/cpp/fftw_tools.hpp
similarity index 100%
rename from src/fftw_tools.hpp
rename to bfps/cpp/fftw_tools.hpp
diff --git a/src/field_descriptor.cpp b/bfps/cpp/field_descriptor.cpp
similarity index 100%
rename from src/field_descriptor.cpp
rename to bfps/cpp/field_descriptor.cpp
diff --git a/src/field_descriptor.hpp b/bfps/cpp/field_descriptor.hpp
similarity index 100%
rename from src/field_descriptor.hpp
rename to bfps/cpp/field_descriptor.hpp
diff --git a/src/fluid_solver.cpp b/bfps/cpp/fluid_solver.cpp
similarity index 100%
rename from src/fluid_solver.cpp
rename to bfps/cpp/fluid_solver.cpp
diff --git a/src/fluid_solver.hpp b/bfps/cpp/fluid_solver.hpp
similarity index 100%
rename from src/fluid_solver.hpp
rename to bfps/cpp/fluid_solver.hpp
diff --git a/src/fluid_solver_base.cpp b/bfps/cpp/fluid_solver_base.cpp
similarity index 100%
rename from src/fluid_solver_base.cpp
rename to bfps/cpp/fluid_solver_base.cpp
diff --git a/src/fluid_solver_base.hpp b/bfps/cpp/fluid_solver_base.hpp
similarity index 100%
rename from src/fluid_solver_base.hpp
rename to bfps/cpp/fluid_solver_base.hpp
diff --git a/src/main_fluid_solver.cpp b/bfps/cpp/main_fluid_solver.cpp
similarity index 100%
rename from src/main_fluid_solver.cpp
rename to bfps/cpp/main_fluid_solver.cpp
diff --git a/src/main_p3DFFT_to_Morton.cpp b/bfps/cpp/main_p3DFFT_to_Morton.cpp
similarity index 100%
rename from src/main_p3DFFT_to_Morton.cpp
rename to bfps/cpp/main_p3DFFT_to_Morton.cpp
diff --git a/src/p3DFFT_to_iR.cpp b/bfps/cpp/p3DFFT_to_iR.cpp
similarity index 100%
rename from src/p3DFFT_to_iR.cpp
rename to bfps/cpp/p3DFFT_to_iR.cpp
diff --git a/src/p3DFFT_to_iR.hpp b/bfps/cpp/p3DFFT_to_iR.hpp
similarity index 100%
rename from src/p3DFFT_to_iR.hpp
rename to bfps/cpp/p3DFFT_to_iR.hpp
diff --git a/src/slab_field_particles.cpp b/bfps/cpp/slab_field_particles.cpp
similarity index 100%
rename from src/slab_field_particles.cpp
rename to bfps/cpp/slab_field_particles.cpp
diff --git a/src/slab_field_particles.hpp b/bfps/cpp/slab_field_particles.hpp
similarity index 100%
rename from src/slab_field_particles.hpp
rename to bfps/cpp/slab_field_particles.hpp
diff --git a/src/spline_n1.cpp b/bfps/cpp/spline_n1.cpp
similarity index 100%
rename from src/spline_n1.cpp
rename to bfps/cpp/spline_n1.cpp
diff --git a/src/spline_n1.hpp b/bfps/cpp/spline_n1.hpp
similarity index 100%
rename from src/spline_n1.hpp
rename to bfps/cpp/spline_n1.hpp
diff --git a/src/spline_n2.cpp b/bfps/cpp/spline_n2.cpp
similarity index 100%
rename from src/spline_n2.cpp
rename to bfps/cpp/spline_n2.cpp
diff --git a/src/spline_n2.hpp b/bfps/cpp/spline_n2.hpp
similarity index 100%
rename from src/spline_n2.hpp
rename to bfps/cpp/spline_n2.hpp
diff --git a/src/spline_n3.cpp b/bfps/cpp/spline_n3.cpp
similarity index 100%
rename from src/spline_n3.cpp
rename to bfps/cpp/spline_n3.cpp
diff --git a/src/spline_n3.hpp b/bfps/cpp/spline_n3.hpp
similarity index 100%
rename from src/spline_n3.hpp
rename to bfps/cpp/spline_n3.hpp
diff --git a/src/tracers.cpp b/bfps/cpp/tracers.cpp
similarity index 100%
rename from src/tracers.cpp
rename to bfps/cpp/tracers.cpp
diff --git a/src/tracers.hpp b/bfps/cpp/tracers.hpp
similarity index 100%
rename from src/tracers.hpp
rename to bfps/cpp/tracers.hpp
diff --git a/src/vector_field.cpp b/bfps/cpp/vector_field.cpp
similarity index 100%
rename from src/vector_field.cpp
rename to bfps/cpp/vector_field.cpp
diff --git a/src/vector_field.hpp b/bfps/cpp/vector_field.hpp
similarity index 100%
rename from src/vector_field.hpp
rename to bfps/cpp/vector_field.hpp
diff --git a/setup.py b/setup.py
index eeb7f755af3d30be830e881f6d900b8cc46cf1c5..0f9acb0013b26015906bd073f97b727a2b1ff47d 100644
--- a/setup.py
+++ b/setup.py
@@ -35,6 +35,9 @@ include_dirs = ['src',
 ########################################################################
 
 
+AUTHOR = 'Cristian C Lalescu'
+AUTHOR_EMAIL = 'Cristian.Lalescu@ds.mpg.de'
+
 import datetime
 now = datetime.datetime.now()
 date_name = '{0:0>4}{1:0>2}{2:0>2}'.format(now.year, now.month, now.day)
@@ -51,11 +54,11 @@ src_file_list = ['field_descriptor',
                  'spline_n2',
                  'spline_n3']
 
-header_list = ['src/base.hpp'] + ['src/' + fname + '.hpp' for fname in src_file_list]
+header_list = ['cpp/base.hpp'] + ['cpp/' + fname + '.hpp' for fname in src_file_list]
 
 # not sure we need the MANIFEST.in file, but I might as well
 with open('MANIFEST.in', 'w') as manifest_in_file:
-    for fname in ['src/' + fname + '.cpp' for fname in src_file_list] + header_list:
+    for fname in ['cpp/' + fname + '.cpp' for fname in src_file_list] + header_list:
         manifest_in_file.write('include {0}\n'.format(fname))
 
 libraries = ['fftw3_mpi',
@@ -67,20 +70,23 @@ from setuptools import setup, Extension
 
 libbfps = Extension(
         'libbfps',
-        sources = ['src/' + fname + '.cpp' for fname in src_file_list],
+        sources = ['bfps/cpp/' + fname + '.cpp' for fname in src_file_list],
         include_dirs = include_dirs,
         libraries = libraries,
-        library_dirs = [os.path.join(local_install_dir, 'lib')])
+        library_dirs = [os.path.join(local_install_dir, 'lib'),
+                        os.path.join(local_install_dir, 'lib64')])
 
 setup(
         name = 'bfps',
         packages = ['bfps'],
         install_requires = ['numpy>=1.8', 'matplotlib>=1.3'],
         ext_modules = [libbfps],
-        data_files = header_list,
+        package_data = {'bfps': header_list},
 ########################################################################
 # useless stuff folows
 ########################################################################
+        author = AUTHOR,
+        author_email = AUTHOR_EMAIL,
         version = VERSION,
         license = 'Apache Version 2.0')
 
diff --git a/tox.ini b/tox.ini
index 73a8aa1b7c5188ffecca624d89356fafed38df4f..1243a0e34e18c4e01098dcc9b8107fa7c0545723 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,10 +1,17 @@
 [tox]
 envlist = py27
 [testenv]
+whitelist_externals =
+    echo
+    cp
+passenv = LD_LIBRARY_PATH
+setenv =
+    LD_LIBRARY_PATH = {env:LD_LIBRARY_PATH}:{envtmpdir}/../lib/python2.7/site-packages
 sitepackages = True
 changedir =
     {envtmpdir}
 commands =
+    echo $LD_LIBRARY_PATH
     cp {toxinidir}/test.py {envtmpdir}
     python test.py --run --particles