diff --git a/include/hpp/fcl/internal/traversal_node_base.h b/include/hpp/fcl/internal/traversal_node_base.h
index 8c5fcadb5befdda376cd37ffd9eb16d437498174..441df058576a2032c4f8667b4107776c1ecb4b53 100644
--- a/include/hpp/fcl/internal/traversal_node_base.h
+++ b/include/hpp/fcl/internal/traversal_node_base.h
@@ -54,41 +54,46 @@ namespace fcl
 class TraversalNodeBase
 {
 public:
-  virtual ~TraversalNodeBase();
+  TraversalNodeBase () : enable_statistics(false) {}
+
+  virtual ~TraversalNodeBase() {}
 
   virtual void preprocess() {}
   
   virtual void postprocess() {}
 
   /// @brief Whether b is a leaf node in the first BVH tree 
-  virtual bool isFirstNodeLeaf(int b) const;
+  virtual bool isFirstNodeLeaf(int /*b*/) const { return true; }
 
   /// @brief Whether b is a leaf node in the second BVH tree
-  virtual bool isSecondNodeLeaf(int b) const;
+  virtual bool isSecondNodeLeaf(int /*b*/) const { return true; }
 
   /// @brief Traverse the subtree of the node in the first tree first
-  virtual bool firstOverSecond(int b1, int b2) const;
+  virtual bool firstOverSecond(int /*b1*/, int /*b2*/) const { return true; }
 
   /// @brief Get the left child of the node b in the first tree
-  virtual int getFirstLeftChild(int b) const;
+  virtual int getFirstLeftChild(int b) const { return b; }
 
   /// @brief Get the right child of the node b in the first tree
-  virtual int getFirstRightChild(int b) const;
+  virtual int getFirstRightChild(int b) const { return b; }
 
   /// @brief Get the left child of the node b in the second tree
-  virtual int getSecondLeftChild(int b) const;
+  virtual int getSecondLeftChild(int b) const { return b; }
 
   /// @brief Get the right child of the node b in the second tree
-  virtual int getSecondRightChild(int b) const;
+  virtual int getSecondRightChild(int b) const { return b; }
 
-  /// @brief Enable statistics (verbose mode)
-  virtual void enableStatistics(bool enable) = 0;
+  /// @brief Whether store some statistics information during traversal
+  void enableStatistics(bool enable) { enable_statistics = enable; }
 
   /// @brief configuation of first object
   Transform3f tf1;
 
   /// @brief configuration of second object
   Transform3f tf2;
+
+  /// @brief Whether stores statistics
+  bool enable_statistics;
 };
 
 /// @defgroup Traversal_For_Collision
@@ -100,9 +105,9 @@ class CollisionTraversalNodeBase : public TraversalNodeBase
 {
 public:
   CollisionTraversalNodeBase (const CollisionRequest& request_) :
-  request (request_), result(NULL), enable_statistics(false) {}
+  request (request_), result(NULL) {}
 
-  virtual ~CollisionTraversalNodeBase();
+  virtual ~CollisionTraversalNodeBase() {}
 
   /// @brief BV test between b1 and b2
   virtual bool BVDisjoints(int b1, int b2) const = 0;
@@ -120,10 +125,7 @@ public:
   }
 
   /// @brief Check whether the traversal can stop
-  virtual bool canStop() const;
-
-  /// @brief Whether store some statistics information during traversal
-  void enableStatistics(bool enable) { enable_statistics = enable; }
+  bool canStop() const { return this->request.isSatisfied(*(this->result)); }
 
   /// @brief request setting for collision
   const CollisionRequest& request;
@@ -145,32 +147,30 @@ public:
 class DistanceTraversalNodeBase : public TraversalNodeBase
 {
 public:
-  DistanceTraversalNodeBase() : result(NULL), enable_statistics(false) {}
+  DistanceTraversalNodeBase() : result(NULL) {}
 
-  virtual ~DistanceTraversalNodeBase();
+  virtual ~DistanceTraversalNodeBase() {}
 
   /// @brief BV test between b1 and b2
   /// @return a lower bound of the distance between the two BV.
   /// @note except for OBB, this method returns the distance.
-  virtual FCL_REAL BVDistanceLowerBound(int b1, int b2) const;
+  virtual FCL_REAL BVDistanceLowerBound(int /*b1*/, int /*b2*/) const
+  {
+    return std::numeric_limits<FCL_REAL>::max();
+  }
 
   /// @brief Leaf test between node b1 and b2, if they are both leafs
   virtual void leafComputeDistance(int b1, int b2) const = 0;
 
   /// @brief Check whether the traversal can stop
-  virtual bool canStop(FCL_REAL c) const;
-
-  /// @brief Whether store some statistics information during traversal
-  void enableStatistics(bool enable) { enable_statistics = enable; }
+  virtual bool canStop(FCL_REAL /*c*/) const
+  { return false; }
 
   /// @brief request setting for distance
   DistanceRequest request;
 
   /// @brief distance result kept during the traversal iteration
   DistanceResult* result;
-
-  /// @brief Whether stores statistics 
-  bool enable_statistics;
 };
 
 ///@}
diff --git a/include/hpp/fcl/internal/traversal_node_bvh_shape.h b/include/hpp/fcl/internal/traversal_node_bvh_shape.h
index 9f5b9e7938bc7847047736da3f953d2bd862c662..3613874ba2d1b417624ee950ab988ef6e0f23e30 100644
--- a/include/hpp/fcl/internal/traversal_node_bvh_shape.h
+++ b/include/hpp/fcl/internal/traversal_node_bvh_shape.h
@@ -253,12 +253,6 @@ public:
     assert (!this->result->isCollision () || sqrDistLowerBound > 0);
   }
 
-  /// @brief Whether the traversal process can stop early
-  bool canStop() const
-  {
-    return this->request.isSatisfied(*(this->result));
-  }
-
   Vec3f* vertices;
   Triangle* tri_indices;
 
@@ -366,12 +360,6 @@ public:
     assert (!this->result->isCollision () || sqrDistLowerBound > 0);
   }
 
-  /// @brief Whether the traversal process can stop early
-  bool canStop() const
-  {
-    return this->request.isSatisfied(*(this->result));
-  }
-
   Vec3f* vertices;
   Triangle* tri_indices;
 
diff --git a/include/hpp/fcl/internal/traversal_node_bvhs.h b/include/hpp/fcl/internal/traversal_node_bvhs.h
index 39f3abff8479bef76e5b145f797a36df3e2f4481..4c35a542ebcac90e994f93928f8f3fa6a7b1f34f 100644
--- a/include/hpp/fcl/internal/traversal_node_bvhs.h
+++ b/include/hpp/fcl/internal/traversal_node_bvhs.h
@@ -252,12 +252,6 @@ public:
     }
   }
 
-  /// @brief Whether the traversal process can stop early
-  bool canStop() const
-  {
-    return this->request.isSatisfied(*(this->result));
-  }
-
   Vec3f* vertices1;
   Vec3f* vertices2;
 
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9e4e1dc2a76000042985368d4cfa91d83842fd4c..1ed2ace31dea793f9d60954e18d6726a22fe4ea7 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -66,10 +66,7 @@ set(${LIBRARY_NAME}_SOURCES
   distance_sphere_plane.cpp
   intersect.cpp
   math/transform.cpp
-  traversal/traversal_node_setup.cpp
-  traversal/traversal_node_bvhs.cpp
   traversal/traversal_recurse.cpp
-  traversal/traversal_node_base.cpp
   profile.cpp
   distance.cpp
   BVH/BVH_utility.cpp
diff --git a/src/traversal/traversal_node_base.cpp b/src/traversal/traversal_node_base.cpp
deleted file mode 100644
index 7ae6ab13286f29f06c8035d2f117a933255d9f7e..0000000000000000000000000000000000000000
--- a/src/traversal/traversal_node_base.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Software License Agreement (BSD License)
- *
- *  Copyright (c) 2011-2014, Willow Garage, Inc.
- *  Copyright (c) 2014-2015, Open Source Robotics Foundation
- *  All rights reserved.
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions
- *  are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the following
- *     disclaimer in the documentation and/or other materials provided
- *     with the distribution.
- *   * Neither the name of Open Source Robotics Foundation nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- *  POSSIBILITY OF SUCH DAMAGE.
- */
-
-/** \author Jia Pan */
-
-
-#include <hpp/fcl/internal/traversal_node_base.h>
-#include <limits>
-
-namespace hpp
-{
-namespace fcl
-{
-
-TraversalNodeBase::~TraversalNodeBase()
-{
-}
-
-  bool TraversalNodeBase::isFirstNodeLeaf(int /*b*/) const
-{
-  return true;
-}
-
-  bool TraversalNodeBase::isSecondNodeLeaf(int /*b*/) const
-{
-  return true;
-}
-
-  bool TraversalNodeBase::firstOverSecond(int /*b1*/, int /*b2*/) const
-{
-  return true;
-}
-
-int TraversalNodeBase::getFirstLeftChild(int b) const
-{
-  return b;
-}
-
-int TraversalNodeBase::getFirstRightChild(int b) const
-{
-  return b;
-}
-
-int TraversalNodeBase::getSecondLeftChild(int b) const
-{
-  return b;
-}
-
-int TraversalNodeBase::getSecondRightChild(int b) const
-{
-  return b;
-}
-
-CollisionTraversalNodeBase::~CollisionTraversalNodeBase()
-{
-}
-
-bool CollisionTraversalNodeBase::canStop() const
-{
-  return false;
-}
-
-
-DistanceTraversalNodeBase::~DistanceTraversalNodeBase()
-{
-}
-
-  FCL_REAL DistanceTraversalNodeBase::BVDistanceLowerBound(int /*b1*/, int /*b2*/) const
-{
-  return std::numeric_limits<FCL_REAL>::max();
-}
-
-  bool DistanceTraversalNodeBase::canStop(FCL_REAL /*c*/) const
-{
-  return false;
-}
-
-}
-
-} // namespace hpp