diff --git a/CMakeLists.txt b/CMakeLists.txt
index 91bb6f45c5cb2d1f0339d5b22016bf3a80c407e8..d7f5aabb8de5feb5a4e30bdf3caeb5eaf1f4a420 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -98,8 +98,11 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/dynamic-graph.pc
   DESTINATION ${install_libdir_pkgconfig}	
   PERMISSIONS OWNER_READ GROUP_READ WORLD_READ OWNER_WRITE)
 
+ENABLE_TESTING()
+
 ADD_SUBDIRECTORY(src)
 ADD_SUBDIRECTORY(include)
+ADD_SUBDIRECTORY(tools)
 ADD_SUBDIRECTORY(unitTesting)
 
 #
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a764fc21f8d8aa85e9f98cba4aa2e08b88c9bc58
--- /dev/null
+++ b/tools/CMakeLists.txt
@@ -0,0 +1,30 @@
+# 
+#  Copyright 
+# 
+
+### tools
+SET(tools
+	test_shell
+)
+
+FOREACH(tool_name ${tools})
+	SET(EXECUTABLE_NAME ${tool_name})
+
+	ADD_DEFINITIONS(-DDEBUG=2)
+
+	ADD_EXECUTABLE(${EXECUTABLE_NAME}
+	  ${tool_name}.cpp)
+	
+	INCLUDE_DIRECTORIES(
+		${CMAKE_CURRENT_SOURCE_DIR}/../include 
+	)
+
+	LINK_DIRECTORIES(${${PROJECT_NAME}_BINARY_DIR}/lib)
+
+	TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME}
+	  ${PROJECT_NAME}
+	  dl)
+	  
+	INSTALL(TARGETS ${tool_name}
+		DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/${PROJECT_NAME})
+ENDFOREACH(tool_name)
\ No newline at end of file
diff --git a/unitTesting/test_shell.cpp b/tools/test_shell.cpp
similarity index 100%
rename from unitTesting/test_shell.cpp
rename to tools/test_shell.cpp
diff --git a/unitTesting/CMakeLists.txt b/unitTesting/CMakeLists.txt
index acdedd9b5b29a7b2e54fe02a928e3b7de2ad4598..57b60450cc381992e4adce1d4590c191bfcf2b87 100644
--- a/unitTesting/CMakeLists.txt
+++ b/unitTesting/CMakeLists.txt
@@ -4,7 +4,6 @@
 
 ### tests
 SET(tests
-	test_shell
 	test_pool
 	test_depend
 	test_signalcast)
@@ -27,6 +26,5 @@ FOREACH(test_name ${tests})
 	  ${PROJECT_NAME}
 	  dl)
 	  
-	INSTALL(TARGETS ${test_name}
-		DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/${PROJECT_NAME})
+	ADD_TEST(NAME ${test_name} COMMAND ${test_name})
 ENDFOREACH(test_name)
\ No newline at end of file
diff --git a/unitTesting/test_signalcast.cpp b/unitTesting/test_signalcast.cpp
index 45f3c15dd5eecef5da46afd23c139911b807fce5..ff828358826f17e4270dd8d7bcb9f04266e11687 100644
--- a/unitTesting/test_signalcast.cpp
+++ b/unitTesting/test_signalcast.cpp
@@ -37,13 +37,15 @@
 using namespace std;
 using namespace dynamicgraph;
 
-main() {
-	Signal<int, int> mySignal("out");
-	istringstream value("5");
+int main() {
+	Signal<double, int> mySignal("out");
+	istringstream value("42.0");
 	cout << "[cast] Setting signal value to " << value.str() << endl;
 	mySignal.set(value); // use "set" operation
 	cout << "[disp] The value read is ";
 	mySignal.get(cout);
 	cout << "[trace] Printing out trace: ";
 	mySignal.trace(cout);
+
+	return 0;
 }