diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## [0.4.5]
+### Changed
+- (#78) Chipmunk bumped to `v7.0.3`, fixes the `sysctl.h` deprecation reported in #77
+
 ## [0.4.4]
 ### Changed
 - Increased upper bound `apecs` dependency
diff --git a/Chipmunk2D/include/chipmunk/chipmunk.h b/Chipmunk2D/include/chipmunk/chipmunk.h
--- a/Chipmunk2D/include/chipmunk/chipmunk.h
+++ b/Chipmunk2D/include/chipmunk/chipmunk.h
@@ -125,10 +125,10 @@
 
 #include "cpSpace.h"
 
-// Chipmunk 7.0.2
+// Chipmunk 7.0.3
 #define CP_VERSION_MAJOR 7
 #define CP_VERSION_MINOR 0
-#define CP_VERSION_RELEASE 2
+#define CP_VERSION_RELEASE 3
 
 /// Version string.
 CP_EXPORT extern const char *cpVersionString;
diff --git a/Chipmunk2D/include/chipmunk/chipmunk_private.h b/Chipmunk2D/include/chipmunk/chipmunk_private.h
--- a/Chipmunk2D/include/chipmunk/chipmunk_private.h
+++ b/Chipmunk2D/include/chipmunk/chipmunk_private.h
@@ -48,8 +48,8 @@
 
 //MARK: cpHashSet
 
-typedef cpBool (*cpHashSetEqlFunc)(void *ptr, void *elt);
-typedef void *(*cpHashSetTransFunc)(void *ptr, void *data);
+typedef cpBool (*cpHashSetEqlFunc)(const void *ptr, const void *elt);
+typedef void *(*cpHashSetTransFunc)(const void *ptr, void *data);
 
 cpHashSet *cpHashSetNew(int size, cpHashSetEqlFunc eqlFunc);
 void cpHashSetSetDefaultValue(cpHashSet *set, void *default_value);
@@ -57,9 +57,9 @@
 void cpHashSetFree(cpHashSet *set);
 
 int cpHashSetCount(cpHashSet *set);
-void *cpHashSetInsert(cpHashSet *set, cpHashValue hash, void *ptr, cpHashSetTransFunc trans, void *data);
-void *cpHashSetRemove(cpHashSet *set, cpHashValue hash, void *ptr);
-void *cpHashSetFind(cpHashSet *set, cpHashValue hash, void *ptr);
+const void *cpHashSetInsert(cpHashSet *set, cpHashValue hash, const void *ptr, cpHashSetTransFunc trans, void *data);
+const void *cpHashSetRemove(cpHashSet *set, cpHashValue hash, const void *ptr);
+const void *cpHashSetFind(cpHashSet *set, cpHashValue hash, const void *ptr);
 
 typedef void (*cpHashSetIteratorFunc)(void *elt, void *data);
 void cpHashSetEach(cpHashSet *set, cpHashSetIteratorFunc func, void *data);
diff --git a/Chipmunk2D/include/chipmunk/cpPolyline.h b/Chipmunk2D/include/chipmunk/cpPolyline.h
--- a/Chipmunk2D/include/chipmunk/cpPolyline.h
+++ b/Chipmunk2D/include/chipmunk/cpPolyline.h
@@ -23,7 +23,7 @@
 
 /**
 	Returns a copy of a polyline simplified by discarding "flat" vertexes.
-	This works well on straigt edged or angular shapes, not as well on smooth shapes.
+	This works well on straight edged or angular shapes, not as well on smooth shapes.
 */
 CP_EXPORT cpPolyline *cpPolylineSimplifyVertexes(cpPolyline *line, cpFloat tol);
 
diff --git a/Chipmunk2D/include/chipmunk/prime.h b/Chipmunk2D/include/chipmunk/prime.h
deleted file mode 100644
--- a/Chipmunk2D/include/chipmunk/prime.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Copyright (c) 2013 Scott Lembcke and Howling Moon Software
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-// Used for resizing hash tables.
-// Values approximately double.
-// http://planetmath.org/encyclopedia/GoodHashTablePrimes.html
-static int primes[] = {
-	5,
-	13,
-	23,
-	47,
-	97,
-	193,
-	389,
-	769,
-	1543,
-	3079,
-	6151,
-	12289,
-	24593,
-	49157,
-	98317,
-	196613,
-	393241,
-	786433,
-	1572869,
-	3145739,
-	6291469,
-	12582917,
-	25165843,
-	50331653,
-	100663319,
-	201326611,
-	402653189,
-	805306457,
-	1610612741,
-	0,
-};
-
-static inline int
-next_prime(int n)
-{
-	int i = 0;
-	while(n > primes[i]){
-		i++;
-		cpAssertHard(primes[i], "Tried to resize a hash table to a size greater than 1610612741 O_o"); // realistically this should never happen
-	}
-	
-	return primes[i];
-}
diff --git a/Chipmunk2D/src/chipmunk.c b/Chipmunk2D/src/chipmunk.c
--- a/Chipmunk2D/src/chipmunk.c
+++ b/Chipmunk2D/src/chipmunk.c
@@ -89,7 +89,7 @@
 }
 
 cpFloat
-cpMomentForPoly(cpFloat m, const int count, const cpVect *verts, cpVect offset, cpFloat r)
+cpMomentForPoly(cpFloat m, int count, const cpVect *verts, cpVect offset, cpFloat r)
 {
 	// TODO account for radius.
 	if(count == 2) return cpMomentForSegment(m, verts[0], verts[1], 0.0f);
diff --git a/Chipmunk2D/src/cpArbiter.c b/Chipmunk2D/src/cpArbiter.c
--- a/Chipmunk2D/src/cpArbiter.c
+++ b/Chipmunk2D/src/cpArbiter.c
@@ -231,9 +231,11 @@
 cpArbiterGetShapes(const cpArbiter *arb, cpShape **a, cpShape **b)
 {
 	if(arb->swapped){
-		(*a) = (cpShape *)arb->b, (*b) = (cpShape *)arb->a;
+		(*a) = (cpShape *)arb->b;
+		(*b) = (cpShape *)arb->a;
 	} else {
-		(*a) = (cpShape *)arb->a, (*b) = (cpShape *)arb->b;
+		(*a) = (cpShape *)arb->a;
+		(*b) = (cpShape *)arb->b;
 	}
 }
 
diff --git a/Chipmunk2D/src/cpBBTree.c b/Chipmunk2D/src/cpBBTree.c
--- a/Chipmunk2D/src/cpBBTree.c
+++ b/Chipmunk2D/src/cpBBTree.c
@@ -24,7 +24,7 @@
 
 #include "chipmunk_private.h"
 
-static inline cpSpatialIndexClass *Klass();
+static inline cpSpatialIndexClass *Klass(void);
 
 typedef struct Node Node;
 typedef struct Pair Pair;
diff --git a/Chipmunk2D/src/cpBody.c b/Chipmunk2D/src/cpBody.c
--- a/Chipmunk2D/src/cpBody.c
+++ b/Chipmunk2D/src/cpBody.c
@@ -258,7 +258,7 @@
 	
 	cpBodyActivate(body);
 	body->m = mass;
-	body->m_inv = 1.0f/mass;
+	body->m_inv = mass == 0.0f ? INFINITY : 1.0f/mass;
 	cpAssertSaneBody(body);
 }
 
@@ -275,7 +275,7 @@
 	
 	cpBodyActivate(body);
 	body->i = moment;
-	body->i_inv = 1.0f/moment;
+	body->i_inv = moment == 0.0f ? INFINITY : 1.0f/moment;
 	cpAssertSaneBody(body);
 }
 
diff --git a/Chipmunk2D/src/cpCollision.c b/Chipmunk2D/src/cpCollision.c
--- a/Chipmunk2D/src/cpCollision.c
+++ b/Chipmunk2D/src/cpCollision.c
@@ -200,7 +200,7 @@
 ClosestT(const cpVect a, const cpVect b)
 {
 	cpVect delta = cpvsub(b, a);
-	return -cpfclamp(cpvdot(delta, cpvadd(a, b))/cpvlengthsq(delta), -1.0f, 1.0f);
+	return -cpfclamp(cpvdot(delta, cpvadd(a, b))/(cpvlengthsq(delta) + CPFLOAT_MIN), -1.0f, 1.0f);
 }
 
 // Basically the same as cpvlerp(), except t = [-1, 1]
@@ -674,7 +674,7 @@
 	// If the closest points are nearer than the sum of the radii...
 	if(points.d <= circle->r + poly->r){
 		cpVect n = info->n = points.n;
-		cpCollisionInfoPushContact(info, cpvadd(points.a, cpvmult(n, circle->r)), cpvadd(points.b, cpvmult(n, poly->r)), 0);
+		cpCollisionInfoPushContact(info, cpvadd(points.a, cpvmult(n, circle->r)), cpvadd(points.b, cpvmult(n, -poly->r)), 0);
 	}
 }
 
diff --git a/Chipmunk2D/src/cpHashSet.c b/Chipmunk2D/src/cpHashSet.c
--- a/Chipmunk2D/src/cpHashSet.c
+++ b/Chipmunk2D/src/cpHashSet.c
@@ -149,8 +149,8 @@
 	return set->entries;
 }
 
-void *
-cpHashSetInsert(cpHashSet *set, cpHashValue hash, void *ptr, cpHashSetTransFunc trans, void *data)
+const void *
+cpHashSetInsert(cpHashSet *set, cpHashValue hash, const void *ptr, cpHashSetTransFunc trans, void *data)
 {
 	cpHashValue idx = hash%set->size;
 	
@@ -175,8 +175,8 @@
 	return bin->elt;
 }
 
-void *
-cpHashSetRemove(cpHashSet *set, cpHashValue hash, void *ptr)
+const void *
+cpHashSetRemove(cpHashSet *set, cpHashValue hash, const void *ptr)
 {
 	cpHashValue idx = hash%set->size;
 	
@@ -195,7 +195,7 @@
 		(*prev_ptr) = bin->next;
 		set->entries--;
 		
-		void *elt = bin->elt;
+		const void *elt = bin->elt;
 		recycleBin(set, bin);
 		
 		return elt;
@@ -204,8 +204,8 @@
 	return NULL;
 }
 
-void *
-cpHashSetFind(cpHashSet *set, cpHashValue hash, void *ptr)
+const void *
+cpHashSetFind(cpHashSet *set, cpHashValue hash, const void *ptr)
 {	
 	cpHashValue idx = hash%set->size;
 	cpHashSetBin *bin = set->table[idx];
diff --git a/Chipmunk2D/src/cpHastySpace.c b/Chipmunk2D/src/cpHastySpace.c
--- a/Chipmunk2D/src/cpHastySpace.c
+++ b/Chipmunk2D/src/cpHastySpace.c
@@ -7,8 +7,14 @@
 //TODO: Move all the thread stuff to another file
 
 //#include <sys/param.h >
-#ifndef _WIN32
+
+#ifdef __APPLE__
 #include <sys/sysctl.h>
+#endif
+
+#ifndef _WIN32
+#include <pthread.h>
+#elif defined(__MINGW32__)
 #include <pthread.h>
 #else
 #ifndef WIN32_LEAN_AND_MEAN
diff --git a/Chipmunk2D/src/cpMarch.c b/Chipmunk2D/src/cpMarch.c
--- a/Chipmunk2D/src/cpMarch.c
+++ b/Chipmunk2D/src/cpMarch.c
@@ -44,8 +44,8 @@
 			cpFloat x0 = cpflerp(bb.l, bb.r, (i+0)*x_denom);
 			cpFloat x1 = cpflerp(bb.l, bb.r, (i+1)*x_denom);
 			
-			a = b, b = buffer[i + 1];
-			c = d, d = sample(cpv(x1, y1), sample_data);
+			a = b; b = buffer[i + 1];
+			c = d; d = sample(cpv(x1, y1), sample_data);
 			buffer[i + 1] = d;
 			
 			cell(t, a, b, c, d, x0, x1, y0, y1, segment, segment_data);
diff --git a/Chipmunk2D/src/cpPolyShape.c b/Chipmunk2D/src/cpPolyShape.c
--- a/Chipmunk2D/src/cpPolyShape.c
+++ b/Chipmunk2D/src/cpPolyShape.c
@@ -117,7 +117,8 @@
 		if(d < 0.0f) continue;
 		
 		cpFloat bn = cpvdot(b, n);
-		cpFloat t = d/(an - bn);
+		// Avoid divide by zero. (d is always positive)
+		cpFloat t = d/cpfmax(an - bn, CPFLOAT_MIN);
 		if(t < 0.0f || 1.0f < t) continue;
 		
 		cpVect point = cpvlerp(a, b, t);
diff --git a/Chipmunk2D/src/cpShape.c b/Chipmunk2D/src/cpShape.c
--- a/Chipmunk2D/src/cpShape.c
+++ b/Chipmunk2D/src/cpShape.c
@@ -303,7 +303,8 @@
 	cpFloat r = circle->r;
 	
 	info->shape = (cpShape *)circle;
-	info->point = cpvadd(circle->tc, cpvmult(delta, r/d)); // TODO: div/0
+	cpFloat r_over_d = d > 0.0f ? r/d : r;
+	info->point = cpvadd(circle->tc, cpvmult(delta, r_over_d)); // TODO: div/0
 	info->distance = d - r;
 	
 	// Use up for the gradient if the distance is very small.
diff --git a/Chipmunk2D/src/cpSimpleMotor.c b/Chipmunk2D/src/cpSimpleMotor.c
--- a/Chipmunk2D/src/cpSimpleMotor.c
+++ b/Chipmunk2D/src/cpSimpleMotor.c
@@ -110,14 +110,14 @@
 cpFloat
 cpSimpleMotorGetRate(const cpConstraint *constraint)
 {
-	cpAssertHard(cpConstraintIsSimpleMotor(constraint), "Constraint is not a pin joint.");
+	cpAssertHard(cpConstraintIsSimpleMotor(constraint), "Constraint is not a SimpleMotor.");
 	return ((cpSimpleMotor *)constraint)->rate;
 }
 
 void
 cpSimpleMotorSetRate(cpConstraint *constraint, cpFloat rate)
 {
-	cpAssertHard(cpConstraintIsSimpleMotor(constraint), "Constraint is not a pin joint.");
+	cpAssertHard(cpConstraintIsSimpleMotor(constraint), "Constraint is not a SimpleMotor.");
 	cpConstraintActivateBodies(constraint);
 	((cpSimpleMotor *)constraint)->rate = rate;
 }
diff --git a/Chipmunk2D/src/cpSpace.c b/Chipmunk2D/src/cpSpace.c
--- a/Chipmunk2D/src/cpSpace.c
+++ b/Chipmunk2D/src/cpSpace.c
@@ -64,27 +64,27 @@
 // Default collision functions.
 
 static cpBool
-DefaultBegin(cpArbiter *arb, cpSpace *space, void *data){
+DefaultBegin(cpArbiter *arb, cpSpace *space, cpDataPointer data){
 	cpBool retA = cpArbiterCallWildcardBeginA(arb, space);
 	cpBool retB = cpArbiterCallWildcardBeginB(arb, space);
 	return retA && retB;
 }
 
 static cpBool
-DefaultPreSolve(cpArbiter *arb, cpSpace *space, void *data){
+DefaultPreSolve(cpArbiter *arb, cpSpace *space, cpDataPointer data){
 	cpBool retA = cpArbiterCallWildcardPreSolveA(arb, space);
 	cpBool retB = cpArbiterCallWildcardPreSolveB(arb, space);
 	return retA && retB;
 }
 
 static void
-DefaultPostSolve(cpArbiter *arb, cpSpace *space, void *data){
+DefaultPostSolve(cpArbiter *arb, cpSpace *space, cpDataPointer data){
 	cpArbiterCallWildcardPostSolveA(arb, space);
 	cpArbiterCallWildcardPostSolveB(arb, space);
 }
 
 static void
-DefaultSeparate(cpArbiter *arb, cpSpace *space, void *data){
+DefaultSeparate(cpArbiter *arb, cpSpace *space, cpDataPointer data){
 	cpArbiterCallWildcardSeparateA(arb, space);
 	cpArbiterCallWildcardSeparateB(arb, space);
 }
@@ -95,8 +95,8 @@
 	DefaultBegin, DefaultPreSolve, DefaultPostSolve, DefaultSeparate, NULL
 };
 
-static cpBool AlwaysCollide(cpArbiter *arb, cpSpace *space, void *data){return cpTrue;}
-static void DoNothing(cpArbiter *arb, cpSpace *space, void *data){}
+static cpBool AlwaysCollide(cpArbiter *arb, cpSpace *space, cpDataPointer data){return cpTrue;}
+static void DoNothing(cpArbiter *arb, cpSpace *space, cpDataPointer data){}
 
 cpCollisionHandler cpCollisionHandlerDoNothing = {
 	CP_WILDCARD_COLLISION_TYPE, CP_WILDCARD_COLLISION_TYPE,
@@ -418,12 +418,13 @@
 cpShape *
 cpSpaceAddShape(cpSpace *space, cpShape *shape)
 {
-	cpBody *body = shape->body;
-	
 	cpAssertHard(shape->space != space, "You have already added this shape to this space. You must not add it a second time.");
 	cpAssertHard(!shape->space, "You have already added this shape to another space. You cannot add it to a second.");
-//	cpAssertHard(body->space == space, "The shape's body must be added to the space before the shape.");
+	cpAssertHard(shape->body, "The shape's body is not defined.");
+	cpAssertHard(shape->body->space == space, "The shape's body must be added to the space before the shape.");
 	cpAssertSpaceUnlocked(space);
+	
+	cpBody *body = shape->body;
 	
 	cpBool isStatic = (cpBodyGetType(body) == CP_BODY_TYPE_STATIC);
 	if(!isStatic) cpBodyActivate(body);
diff --git a/Chipmunk2D/src/cpSpaceHash.c b/Chipmunk2D/src/cpSpaceHash.c
--- a/Chipmunk2D/src/cpSpaceHash.c
+++ b/Chipmunk2D/src/cpSpaceHash.c
@@ -168,7 +168,7 @@
 	hash->table = (cpSpaceHashBin **)cpcalloc(numcells, sizeof(cpSpaceHashBin *));
 }
 
-static inline cpSpatialIndexClass *Klass();
+static inline cpSpatialIndexClass *Klass(void);
 
 cpSpatialIndex *
 cpSpaceHashInit(cpSpaceHash *hash, cpFloat celldim, int numcells, cpSpatialIndexBBFunc bbfunc, cpSpatialIndex *staticIndex)
diff --git a/Chipmunk2D/src/cpSweep1D.c b/Chipmunk2D/src/cpSweep1D.c
--- a/Chipmunk2D/src/cpSweep1D.c
+++ b/Chipmunk2D/src/cpSweep1D.c
@@ -21,7 +21,7 @@
 
 #include "chipmunk_private.h"
 
-static inline cpSpatialIndexClass *Klass();
+static inline cpSpatialIndexClass *Klass(void);
 
 //MARK: Basic Structures
 
diff --git a/Chipmunk2D/src/prime.h b/Chipmunk2D/src/prime.h
new file mode 100644
--- /dev/null
+++ b/Chipmunk2D/src/prime.h
@@ -0,0 +1,68 @@
+/* Copyright (c) 2013 Scott Lembcke and Howling Moon Software
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+// Used for resizing hash tables.
+// Values approximately double.
+// http://planetmath.org/encyclopedia/GoodHashTablePrimes.html
+static int primes[] = {
+	5,
+	13,
+	23,
+	47,
+	97,
+	193,
+	389,
+	769,
+	1543,
+	3079,
+	6151,
+	12289,
+	24593,
+	49157,
+	98317,
+	196613,
+	393241,
+	786433,
+	1572869,
+	3145739,
+	6291469,
+	12582917,
+	25165843,
+	50331653,
+	100663319,
+	201326611,
+	402653189,
+	805306457,
+	1610612741,
+	0,
+};
+
+static inline int
+next_prime(int n)
+{
+	int i = 0;
+	while(n > primes[i]){
+		i++;
+		cpAssertHard(primes[i], "Tried to resize a hash table to a size greater than 1610612741 O_o"); // realistically this should never happen
+	}
+	
+	return primes[i];
+}
diff --git a/apecs-physics.cabal b/apecs-physics.cabal
--- a/apecs-physics.cabal
+++ b/apecs-physics.cabal
@@ -1,50 +1,23 @@
-name:                apecs-physics
-version:             0.4.4
-synopsis:            2D physics for apecs
-description:         2D physics for apecs. Uses Chipmunk physics library under the hood.
-homepage:            https://github.com/jonascarpay/apecs#readme
-license:             BSD3
-license-file:        LICENSE
-author:              Jonas Carpay
-maintainer:          jonascarpay@gmail.com
-copyright:           MIT
-category:            Web
-build-type:          Custom
-cabal-version:       >=1.10
+name:               apecs-physics
+version:            0.4.5
+synopsis:           2D physics for apecs
+description:
+  2D physics for apecs. Uses Chipmunk physics library under the hood.
+
+homepage:           https://github.com/jonascarpay/apecs#readme
+license:            BSD3
+license-file:       LICENSE
+author:             Jonas Carpay
+maintainer:         jonascarpay@gmail.com
+copyright:          MIT
+category:           Web
+build-type:         Custom
+cabal-version:      >=1.10
 extra-source-files:
-  README.md,
-  CHANGELOG.md,
-  Chipmunk2D/include/chipmunk/prime.h,
-  Chipmunk2D/include/chipmunk/chipmunk_private.h,
-  Chipmunk2D/include/chipmunk/chipmunk_types.h,
-  Chipmunk2D/include/chipmunk/cpSlideJoint.h,
-  Chipmunk2D/include/chipmunk/cpBB.h,
-  Chipmunk2D/include/chipmunk/cpPolyline.h,
-  Chipmunk2D/include/chipmunk/cpBody.h,
-  Chipmunk2D/include/chipmunk/chipmunk_unsafe.h,
-  Chipmunk2D/include/chipmunk/cpSimpleMotor.h,
-  Chipmunk2D/include/chipmunk/chipmunk.h,
-  Chipmunk2D/include/chipmunk/cpSpatialIndex.h,
-  Chipmunk2D/include/chipmunk/cpRobust.h,
-  Chipmunk2D/include/chipmunk/chipmunk_structs.h,
-  Chipmunk2D/include/chipmunk/cpMarch.h,
-  Chipmunk2D/include/chipmunk/cpTransform.h,
-  Chipmunk2D/include/chipmunk/cpShape.h,
-  Chipmunk2D/include/chipmunk/cpConstraint.h,
-  Chipmunk2D/include/chipmunk/cpGrooveJoint.h,
-  Chipmunk2D/include/chipmunk/cpHastySpace.h,
-  Chipmunk2D/include/chipmunk/cpGearJoint.h,
-  Chipmunk2D/include/chipmunk/chipmunk_ffi.h,
-  Chipmunk2D/include/chipmunk/cpRatchetJoint.h,
-  Chipmunk2D/include/chipmunk/cpRotaryLimitJoint.h,
-  Chipmunk2D/include/chipmunk/cpVect.h,
-  Chipmunk2D/include/chipmunk/cpArbiter.h,
-  Chipmunk2D/include/chipmunk/cpSpace.h,
-  Chipmunk2D/include/chipmunk/cpDampedRotarySpring.h,
-  Chipmunk2D/include/chipmunk/cpPinJoint.h,
-  Chipmunk2D/include/chipmunk/cpDampedSpring.h,
-  Chipmunk2D/include/chipmunk/cpPolyShape.h,
-  Chipmunk2D/include/chipmunk/cpPivotJoint.h
+  CHANGELOG.md
+  Chipmunk2D/include/chipmunk/*.h
+  Chipmunk2D/src/prime.h
+  README.md
 
 source-repository HEAD
   type:     git
@@ -52,56 +25,54 @@
 
 custom-setup
   setup-depends:
-    base  >= 4.9 && < 5,
-    Cabal >= 1.14
+      base   >=4.9  && <5
+    , Cabal  >=1.14
 
 flag release
-  description: Release mode, better performance but no longer provides debug info on the command line.
-  Manual:  True
-  default: False
+  description:
+    Release mode, better performance but no longer provides debug info on the command line.
 
+  manual:      True
+  default:     False
+
 library
-  hs-source-dirs:
-    src
-  default-language:
-    Haskell2010
-  exposed-modules:
-    Apecs.Physics
+  hs-source-dirs:   src
+  default-language: Haskell2010
+  exposed-modules:  Apecs.Physics
   other-modules:
-    Apecs.Physics.Body,
-    Apecs.Physics.Constraint,
-    Apecs.Physics.Collision,
-    Apecs.Physics.Geometry,
-    Apecs.Physics.Shape,
-    Apecs.Physics.Space,
-    Apecs.Physics.Types
+    Apecs.Physics.Body
+    Apecs.Physics.Collision
+    Apecs.Physics.Constraint
+    Apecs.Physics.Geometry
     Apecs.Physics.Query
+    Apecs.Physics.Shape
+    Apecs.Physics.Space
+    Apecs.Physics.Types
+
   build-depends:
-    apecs            >= 0.7  && < 0.10,
-    base             >= 4.9  && < 5,
-    containers       >= 0.5  && < 0.8,
-    inline-c         >= 0.6  && < 1,
-    linear           >= 1.20 && < 2,
-    template-haskell >= 2.12 && < 3,
-    vector           >= 0.10 && < 0.13
+      apecs             >=0.7  && <0.10
+    , base              >=4.9  && <5
+    , containers        >=0.5  && <0.8
+    , inline-c          >=0.6  && <1
+    , linear            >=1.20 && <2
+    , template-haskell  >=2.12 && <3
+    , vector            >=0.10 && <0.13
+
   ghc-options:
-    -Wall
-    -O2
-    -Wno-orphans
-    -Wno-unused-do-bind
-    -Wno-name-shadowing
-  cc-options:
-    -std=c99
+    -Wall -O2 -Wno-orphans -Wno-unused-do-bind -Wno-name-shadowing
+
+  cc-options:       -std=c99
+
   if flag(release)
     cc-options: -DNDEBUG
-  include-dirs:
-    Chipmunk2D/include/chipmunk
+
+  include-dirs:     Chipmunk2D/include/chipmunk
   c-sources:
     Chipmunk2D/src/chipmunk.c
-    Chipmunk2D/src/cpBody.c
     Chipmunk2D/src/cpArbiter.c
     Chipmunk2D/src/cpArray.c
     Chipmunk2D/src/cpBBTree.c
+    Chipmunk2D/src/cpBody.c
     Chipmunk2D/src/cpCollision.c
     Chipmunk2D/src/cpConstraint.c
     Chipmunk2D/src/cpDampedRotarySpring.c
@@ -113,8 +84,8 @@
     Chipmunk2D/src/cpMarch.c
     Chipmunk2D/src/cpPinJoint.c
     Chipmunk2D/src/cpPivotJoint.c
-    Chipmunk2D/src/cpPolyShape.c
     Chipmunk2D/src/cpPolyline.c
+    Chipmunk2D/src/cpPolyShape.c
     Chipmunk2D/src/cpRatchetJoint.c
     Chipmunk2D/src/cpRobust.c
     Chipmunk2D/src/cpRotaryLimitJoint.c
