diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000000000000000000000000000000000..35cc5bb05d3992f61e5adc513da53bae395bcb60
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "qhull"]
+	path = qhull
+	url = git://gitorious.org/qhull/qhull.git
diff --git a/qhull b/qhull
new file mode 160000
index 0000000000000000000000000000000000000000..4e8d39599056d97dbf68e26ac2dd840b6eb748ec
--- /dev/null
+++ b/qhull
@@ -0,0 +1 @@
+Subproject commit 4e8d39599056d97dbf68e26ac2dd840b6eb748ec
diff --git a/src/nifqhull.cpp b/src/nifqhull.cpp
index 453f9d7aa85b15d5f2d7c75858f26c32771b85f6..f0970e756a7f12c7d10141934469a26495a14bac 100644
--- a/src/nifqhull.cpp
+++ b/src/nifqhull.cpp
@@ -10,27 +10,24 @@ using namespace Niflib;
 
 extern "C"
 {
-#include "../qhull/qhull.h"
-#include "../qhull/mem.h"
-#include "../qhull/qset.h"
-#include "../qhull/geom.h"
-#include "../qhull/merge.h"
-#include "../qhull/poly.h"
-#include "../qhull/io.h"
-#include "../qhull/stat.h"
+#include "../qhull/src/qhull_a.h"
 
-#include "../qhull/qhull.c"
-#include "../qhull/mem.c"
-#include "../qhull/qset.c"
-#include "../qhull/geom.c"
-#include "../qhull/merge.c"
-#include "../qhull/poly.c"
-#include "../qhull/io.c"
-#include "../qhull/stat.c"
-#include "../qhull/global.c"
-#include "../qhull/user.c"
-#include "../qhull/poly2.c"
-#include "../qhull/geom2.c"
+#include "../qhull/src/libqhull.c"
+#include "../qhull/src/mem.c"
+#include "../qhull/src/qset.c"
+#include "../qhull/src/geom.c"
+#include "../qhull/src/merge.c"
+#include "../qhull/src/poly.c"
+#include "../qhull/src/io.c"
+#include "../qhull/src/stat.c"
+#include "../qhull/src/global.c"
+#include "../qhull/src/user.c"
+#include "../qhull/src/poly2.c"
+#include "../qhull/src/geom2.c"
+#include "../qhull/src/userprintf.c"
+#include "../qhull/src/usermem.c"
+#include "../qhull/src/random.c"
+#include "../qhull/src/rboxlib.c"
 };
 
 using namespace Niflib;