diff --git a/CMakeLists.txt b/CMakeLists.txt
index 55f00d742fad6752985f3b4b2cdb458aa59d661b..e037da21d811c70279d50830dd9ec5a9b813cb8c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,6 +21,7 @@ INCLUDE(cmake/base.cmake)
 INCLUDE(cmake/boost.cmake)
 INCLUDE(cmake/eigen.cmake)
 INCLUDE(cmake/python.cmake)
+INCLUDE(CMakeDependentOption)
 
 SET(PROJECT_NAME pinocchio)
 SET(PROJECT_DESCRIPTION "Rigid multi body dynamics algorithms")
@@ -41,6 +42,16 @@ IF(APPLE)
   endif("${isSystemDir}" STREQUAL "-1")
 ENDIF(APPLE)
 
+# This should go to jrl-cmakemodules if accepted - Similar to ADD_DOC_DEPENDENC but with a requiered option
+# This macro is for requiered components which must not appear as a dependence of the main library
+MACRO(ADD_SEPARATE_DEPENDENCY PKG_CONFIG_STRING)
+  SET(PKG_CONFIG_DEBUG_STRING "")
+  FOREACH(ARG ${ARGN})
+    SET(PKG_CONFIG_DEBUG_STRING ${ARG})
+  ENDFOREACH()
+  ADD_DEPENDENCY(0 1 ${PKG_CONFIG_STRING} "${PKG_CONFIG_DEBUG_STRING}")
+ENDMACRO(ADD_SEPARATE_DEPENDENCY)
+
 # Disable -Werror on Unix for now.
 SET(CXX_DISABLE_WERROR True)
 SET(CMAKE_VERBOSE_MAKEFILE True)
@@ -60,12 +71,17 @@ OPTION (BUILD_UTILS "Build the utils" OFF)
 OPTION (INITIALIZE_WITH_NAN "Initialize Eigen entries with NaN" OFF)
 OPTION (BUILD_TESTS_WITH_HPP "Build geom tests and benchmarks with hpp to do comparisons" OFF)
 OPTION (BUILD_PYTHON_INTERFACE "Build the python binding" ON)
+CMAKE_DEPENDENT_OPTION(BUILD_PYTHON_PARSER "Build pinocchio with the Python parser" ON "BUILD_PYTHON_INTERFACE" ON)
 
 IF (INITIALIZE_WITH_NAN)
   MESSAGE (STATUS "Initialize with NaN all the Eigen entries.")
   ADD_DEFINITIONS(-DEIGEN_INITIALIZE_MATRICES_BY_NAN)
 ENDIF (INITIALIZE_WITH_NAN)
 
+IF(BUILD_PYTHON_PARSER)
+  SET(BUILD_PYTHON_INTERFACE ON)
+ENDIF(BUILD_PYTHON_PARSER)
+
 # ----------------------------------------------------
 # --- DEPENDANCIES -----------------------------------
 # ----------------------------------------------------
@@ -93,15 +109,19 @@ IF(URDFDOM_FOUND)
   ENDIF(${URDFDOM_VERSION} VERSION_LESS "0.3.0")
 ENDIF(URDFDOM_FOUND)
 
-SET(BOOST_COMPONENTS filesystem unit_test_framework system)
+SET(BOOST_REQUIERED_COMPONENTS filesystem system)
+SET(BOOST_BUILD_COMPONENTS unit_test_framework)
+SET(BOOST_OPTIONAL_COMPONENTS "")
+
 
 IF(BUILD_PYTHON_INTERFACE)
-  ADD_REQUIRED_DEPENDENCY("eigenpy >= 1.3.0")
-  SET(BOOST_COMPONENTS ${BOOST_COMPONENTS} python)
+  ADD_SEPARATE_DEPENDENCY("eigenpy >= 1.3.0")
+  SET(BOOST_OPTIONAL_COMPONENTS ${BOOST_OPTIONAL_COMPONENTS} python)
   FINDPYTHON(2.7 EXACT REQUIRED)
   INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS}) 
 ENDIF(BUILD_PYTHON_INTERFACE)
 
+SET(BOOST_COMPONENTS ${BOOST_REQUIERED_COMPONENTS} ${BOOST_OPTIONAL_COMPONENTS} ${BOOST_BUILD_COMPONENTS})
 SEARCH_FOR_BOOST()
 
 # Variable containing all the cflags definition relative to optional dependencies
@@ -204,11 +224,11 @@ SET(${PROJECT_NAME}_PARSERS_HEADERS
   parsers/srdf.hpp
   ) 
 
-IF(BUILD_PYTHON_INTERFACE)
+IF(BUILD_PYTHON_PARSER)
   LIST(APPEND ${PROJECT_NAME}_PARSERS_HEADERS
      parsers/python.hpp
      )
-ENDIF(BUILD_PYTHON_INTERFACE)
+ENDIF(BUILD_PYTHON_PARSER)
 
 IF(URDFDOM_FOUND)
   LIST(APPEND ${PROJECT_NAME}_PARSERS_HEADERS
@@ -301,7 +321,10 @@ ADD_SUBDIRECTORY(benchmark)
 
 # --- PACKAGING ----------------------------------------------------------------
 PKG_CONFIG_APPEND_LIBS (${PROJECT_NAME})
-PKG_CONFIG_APPEND_BOOST_LIBS(${BOOST_COMPONENTS})
+PKG_CONFIG_APPEND_BOOST_LIBS(${BOOST_REQUIERED_COMPONENTS})
+IF(BUILD_PYTHON_PARSER)
+  PKG_CONFIG_APPEND_BOOST_LIBS(${BOOST_OPTIONAL_COMPONENTS})
+ENDIF(BUILD_PYTHON_PARSER)
 
 IF(EIGEN3_FUTURE)
   PKG_CONFIG_APPEND_CFLAGS("-DEIGEN3_FUTURE")
diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt
index e0feeef3eb03e8332f5e1855107ed94f16846d43..f18102a931a6b78ca83e9a5b23b4fabc4466a72c 100644
--- a/bindings/python/CMakeLists.txt
+++ b/bindings/python/CMakeLists.txt
@@ -132,7 +132,7 @@ IF(BUILD_PYTHON_INTERFACE)
     PKG_CONFIG_USE_DEPENDENCY(${PYWRAP} lua5.1)
   ENDIF(LUA5_1_FOUND)
 
-  TARGET_LINK_LIBRARIES(${PYWRAP} ${PROJECT_NAME} ${Boost_LIBRARIES})
+  TARGET_LINK_LIBRARIES(${PYWRAP} ${PROJECT_NAME})
   TARGET_LINK_BOOST_PYTHON(${PYWRAP})
 
   IF(APPLE)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index ca77208420ae27734aba2f5d3fa23cb0e6a28ecb..2cf9291bd5209366d5a6e13b65c0234891aefeae 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -51,11 +51,11 @@ SET(${PROJECT_NAME}_PARSERS_SOURCES
   parsers/sample-models.cpp
   )
 
-IF(BUILD_PYTHON_INTERFACE)
+IF(BUILD_PYTHON_PARSER)
   LIST(APPEND ${PROJECT_NAME}_PARSERS_SOURCES
     parsers/python.cpp
     )
-ENDIF(BUILD_PYTHON_INTERFACE)
+ENDIF(BUILD_PYTHON_PARSER)
 
 IF(URDFDOM_FOUND)
   LIST(APPEND ${PROJECT_NAME}_PARSERS_SOURCES
@@ -84,11 +84,11 @@ IF(UNIX)
     ADD_LIBRARY ( ${PROJECT_NAME} SHARED ${HEADERS} ${${PROJECT_NAME}_SOURCES} )
     SET_TARGET_PROPERTIES( ${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
     PKG_CONFIG_USE_DEPENDENCY(${PROJECT_NAME} eigen3)
-    TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${Boost_LIBRARIES})
+    TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY})
 
-    IF(BUILD_PYTHON_INTERFACE)
+    IF(BUILD_PYTHON_PARSER)
       TARGET_LINK_BOOST_PYTHON(${PROJECT_NAME})
-    ENDIF(BUILD_PYTHON_INTERFACE)
+    ENDIF(BUILD_PYTHON_PARSER)
 
     IF(URDFDOM_FOUND)
       PKG_CONFIG_USE_DEPENDENCY(${PROJECT_NAME} urdfdom)
diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt
index caaf613985a090492a6a6476227d2a7b82c3161c..34b468b45cb145ec37862006bec47047c423d5c2 100644
--- a/unittest/CMakeLists.txt
+++ b/unittest/CMakeLists.txt
@@ -34,6 +34,7 @@ MACRO(ADD_UNIT_TEST NAME PKGS)
   ENDIF(HPP_FCL_FOUND)
 
   TARGET_LINK_LIBRARIES(${NAME} ${PROJECT_NAME})
+  TARGET_LINK_LIBRARIES(${NAME} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
 
   IF(BUILD_PYTHON_INTERFACE)
     TARGET_LINK_BOOST_PYTHON(${NAME})