diff --git a/CMakeModules/FCLVersion.cmake b/CMakeModules/FCLVersion.cmake
index cf8e02354450d6f369bfa1176e20be797c16dc4c..5df53618b9a02b73c7a00c25a244c2a66e2ee237 100644
--- a/CMakeModules/FCLVersion.cmake
+++ b/CMakeModules/FCLVersion.cmake
@@ -1,7 +1,7 @@
 # set the version in a way CMake can use
 set(FCL_MAJOR_VERSION 0)
 set(FCL_MINOR_VERSION 2)
-set(FCL_PATCH_VERSION 7)
+set(FCL_PATCH_VERSION 8)
 set(FCL_VERSION "${FCL_MAJOR_VERSION}.${FCL_MINOR_VERSION}.${FCL_PATCH_VERSION}")
 
 # increment this when we have ABI changes
diff --git a/include/fcl/broadphase/hierarchy_tree.hxx b/include/fcl/broadphase/hierarchy_tree.hxx
index 05e01cde22a9bd697f7dfb34919c3b410e8f5c97..07b6291211d654e61edf3df346f2850f193dee9f 100644
--- a/include/fcl/broadphase/hierarchy_tree.hxx
+++ b/include/fcl/broadphase/hierarchy_tree.hxx
@@ -1032,7 +1032,7 @@ void HierarchyTree<BV>::init_1(NodeType* leaves, int n_leaves_)
   SortByMorton comp;
   comp.nodes = nodes;
   std::sort(ids, ids + n_leaves, comp);
-  root_node = mortonRecurse_0(ids, ids + n_leaves, (1 << coder.bits()-1), coder.bits()-1);
+  root_node = mortonRecurse_0(ids, ids + n_leaves, (1 << (coder.bits()-1)), coder.bits()-1);
   delete [] ids;
 
   refit();
@@ -1076,7 +1076,7 @@ void HierarchyTree<BV>::init_2(NodeType* leaves, int n_leaves_)
   SortByMorton comp;
   comp.nodes = nodes;
   std::sort(ids, ids + n_leaves, comp);
-  root_node = mortonRecurse_1(ids, ids + n_leaves, (1 << coder.bits()-1), coder.bits()-1);
+  root_node = mortonRecurse_1(ids, ids + n_leaves, (1 << (coder.bits()-1)), coder.bits()-1);
   delete [] ids;
 
   refit();
diff --git a/src/BVH/BVH_model.cpp b/src/BVH/BVH_model.cpp
index 4333af68f0630cb3c9cbec02829c555aa532abb5..9d42558837ce6124f961b436b13f281d0dc141b3 100644
--- a/src/BVH/BVH_model.cpp
+++ b/src/BVH/BVH_model.cpp
@@ -44,6 +44,7 @@ namespace fcl
 
 template<typename BV>
 BVHModel<BV>::BVHModel(const BVHModel<BV>& other) : CollisionGeometry(other),
+                                                    boost::noncopyable(),
                                                     num_tris(other.num_tris),
                                                     num_vertices(other.num_vertices),
                                                     build_state(other.build_state),
diff --git a/src/BVH/BVH_utility.cpp b/src/BVH/BVH_utility.cpp
index 4377ad35ded008026e73e2e758ffa4701e87c58d..a72eaac268e1862024854ba2b4c8c5f6835197b5 100644
--- a/src/BVH/BVH_utility.cpp
+++ b/src/BVH/BVH_utility.cpp
@@ -659,7 +659,7 @@ static inline FCL_REAL maximumDistance_pointcloud(Vec3f* ps, Vec3f* ps2, unsigne
   if(!indices) indirect_index = false;
 
   FCL_REAL maxD = 0;
-  for(unsigned int i = 0; i < n; ++i)
+  for(int i = 0; i < n; ++i)
   {
     int index = indirect_index ? indices[i] : i;
 
diff --git a/src/broadphase/broadphase_SaP.cpp b/src/broadphase/broadphase_SaP.cpp
index c22af618ade49cfec6d890cbb9eddb543d9f4423..81cb7f86ebdf432cca5022c5916c5ab19443606d 100644
--- a/src/broadphase/broadphase_SaP.cpp
+++ b/src/broadphase/broadphase_SaP.cpp
@@ -123,7 +123,7 @@ void SaPCollisionManager::registerObjects(const std::vector<CollisionObject*>& o
 
       endpoints[0]->prev[coord] = NULL;
       endpoints[0]->next[coord] = endpoints[1];
-      for(int i = 1; i < endpoints.size() - 1; ++i)
+      for(size_t i = 1; i < endpoints.size() - 1; ++i)
       {
         endpoints[i]->prev[coord] = endpoints[i-1];
         endpoints[i]->next[coord] = endpoints[i+1];
@@ -498,7 +498,7 @@ bool SaPCollisionManager::collide_(CollisionObject* obj, void* cdata, CollisionC
   const AABB& obj_aabb = obj->getAABB();
 
   FCL_REAL min_val = obj_aabb.min_[axis];
-  FCL_REAL max_val = obj_aabb.max_[axis];
+  //  FCL_REAL max_val = obj_aabb.max_[axis];
 
   EndPoint dummy;
   SaPAABB dummy_aabb;
@@ -564,7 +564,7 @@ bool SaPCollisionManager::distance_(CollisionObject* obj, void* cdata, DistanceC
   {
     old_min_distance = min_dist;
     FCL_REAL min_val = aabb.min_[axis];
-    FCL_REAL max_val = aabb.max_[axis];
+    //    FCL_REAL max_val = aabb.max_[axis];
 
     EndPoint dummy; 
     SaPAABB dummy_aabb;
diff --git a/src/narrowphase/gjk.cpp b/src/narrowphase/gjk.cpp
index 8419d0103951c7b485aca20a478ff25a01e99dff..1df3231717de10a21dabdd16cb326d6f9b16d0a8 100644
--- a/src/narrowphase/gjk.cpp
+++ b/src/narrowphase/gjk.cpp
@@ -141,7 +141,7 @@ Vec3f getSupport(const ShapeBase* shape, const Vec3f& dir)
       FCL_REAL maxdot = - std::numeric_limits<FCL_REAL>::max();
       Vec3f* curp = convex->points;
       Vec3f bestv;
-      for(size_t i = 0; i < convex->num_points; ++i, curp+=1)
+      for(int i = 0; i < convex->num_points; ++i, curp+=1)
       {
         FCL_REAL dot = dir.dot(*curp);
         if(dot > maxdot)
@@ -402,6 +402,7 @@ GJK::Status GJK::evaluate(const MinkowskiDiff& shape_, const Vec3f& guess)
   {
   case Valid: distance = ray.length(); break;
   case Inside: distance = 0; break;
+  default: break;
   }
   return status;
 }
@@ -509,8 +510,6 @@ bool EPA::getEdgeDist(SimplexF* face, SimplexV* a, SimplexV* b, FCL_REAL& dist)
 
   if(a_dot_nab < 0) // the origin is on the outside part of ab
   {
-    FCL_REAL ba_l2 = ba.sqrLength();
-
     // following is similar to projectOrigin for two points
     // however, as we dont need to compute the parameterization, dont need to compute 0 or 1
     FCL_REAL a_dot_ba = a->w.dot(ba); 
diff --git a/src/narrowphase/gjk_libccd.cpp b/src/narrowphase/gjk_libccd.cpp
index bae4aaa5f87874d82f5e4122e7480ee78e1dcc05..2b18391cdb95320fc32e0a7fed0c873ca80d0043 100644
--- a/src/narrowphase/gjk_libccd.cpp
+++ b/src/narrowphase/gjk_libccd.cpp
@@ -87,6 +87,7 @@ struct ccd_triangle_t : public ccd_obj_t
   ccd_vec3_t c;
 };
 
+/*
 static void tripleCross(const ccd_vec3_t* a, const ccd_vec3_t* b, 
                         const ccd_vec3_t* c, ccd_vec3_t* d)
 {
@@ -338,6 +339,7 @@ static int doSimplex4Dist(ccd_simplex_t *simplex, ccd_vec3_t *dir, ccd_real_t* d
   return doSimplex3Dist(simplex, dir, dist);
 }
 
+
 static int doSimplexDist(ccd_simplex_t *simplex, ccd_vec3_t *dir, ccd_real_t* dist)
 {
   if(ccdSimplexSize(simplex) == 2)
@@ -360,6 +362,7 @@ static int doSimplexDist(ccd_simplex_t *simplex, ccd_vec3_t *dir, ccd_real_t* di
 }
 
 
+
 static ccd_real_t __ccdGJKDist(const void *obj1, const void *obj2,
                                const ccd_t *ccd, ccd_simplex_t *simplex,
                                ccd_real_t tolerance)
@@ -435,7 +438,7 @@ static ccd_real_t __ccdGJKDist(const void *obj1, const void *obj2,
   // intersection wasn't found
   return min_dist;
 }
-
+*/
 
 /** Basic shape to ccd shape */
 static void shapeToGJK(const ShapeBase& s, const Transform3f& tf, ccd_obj_t* o)