--- a/setup.py
+++ b/setup.py
@@ -1,8 +1,14 @@
 """
 Setup script for Brian
 """
-
-from distutils.core import setup
+from os.path import join
+from distutils.core import setup, Extension
+# Optionally build and install extensions if numpy is available
+try:
+    import numpy
+    has_numpy = True
+except ImportError:
+    has_numpy = False
 
 version = '1.3.1'
 
@@ -43,6 +49,25 @@ extras_folders = ['tutorials/tutorial1_b
                   ]
 
 if __name__ == "__main__":
+    ext_modules = []
+    if has_numpy:
+        utils_path = join('brian', 'utils')
+        ext_modules.append(Extension('brian.utils.fastexp._fastexp',
+                                     sources=[join(utils_path, 'fastexp', x) for x in
+                                              ('fastexp_wrap.cxx',
+                                               'fastexp.cpp',
+                                               'fexp.c')],
+                                     include_dirs=[numpy.get_include()],
+                                     extra_compile_args=['-O3']
+                                     ))
+        ext_modules.append(Extension('brian.utils.ccircular._ccircular',
+                                     sources=[join(utils_path, 'ccircular', x) for x in
+                                              ('ccircular_wrap.cxx',
+                                               'circular.cpp')],
+                                     include_dirs=[numpy.get_include()],
+                                     extra_compile_args=['-O3']
+                                     ))
+
     setup(name='brian',
       version=version,
       py_modules=['brian_unit_prefs', 'brian_no_units', 'brian_no_units_no_warnings'],
@@ -73,8 +98,7 @@ if __name__ == "__main__":
                         'brian.utils.fastexp',
                         'brian.utils.sparse_patch',
                 ],
-      package_data={'brian.utils.ccircular':['*.cxx', '*.h', '*.i', '*.cpp', '*.bat'],
-                    'brian.utils.fastexp':['*.cxx', '*.h', '*.i', '*.cpp', '*.bat', '*.c']},
+      ext_modules=ext_modules,
       requires=['matplotlib(>=0.90.1)',
                 'numpy(>=1.3.0)',
                 'scipy(>=0.7.0)'
