diff --git a/parallel_worlds_0/src/CMakeLists.txt b/parallel_worlds_0/src/CMakeLists.txt
index 8be0ca1a96e9fcd81aca63479ac34e0f73ed6fd8..eb84a4631e368e9ac0bdaa29ea835afca261d47d 100644
--- a/parallel_worlds_0/src/CMakeLists.txt
+++ b/parallel_worlds_0/src/CMakeLists.txt
@@ -5,12 +5,12 @@ set( EXECUTABLE ${PROJECT_NAME} )
 
 if( MSVC )
 	message( "MSVC: adding compiler flags" )
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2 /I.")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Z7 /arch:SSE2 /I.")
 endif( MSVC )
 
 if( UNIX )
 	message( "UNIX-like system: adding compiler flags" )
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -I.")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -msse2 -I.")
 endif( UNIX )
 
 find_package( OpenCV REQUIRED )
diff --git a/parallel_worlds_1/src/CMakeLists.txt b/parallel_worlds_1/src/CMakeLists.txt
index 472549349f53a48400ab144a4e840e12af3b1588..3bf5481e9ec0f31f4d71fc0fb7bda2e0e8f8978b 100644
--- a/parallel_worlds_1/src/CMakeLists.txt
+++ b/parallel_worlds_1/src/CMakeLists.txt
@@ -5,12 +5,12 @@ set( EXECUTABLE ${PROJECT_NAME} )
 
 if( MSVC )
 	message( "MSVC: adding compiler flags" )
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2 /I.")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Z7 /arch:SSE2 /I.")
 endif( MSVC )
 
 if( UNIX )
 	message( "UNIX-like system: adding compiler flags" )
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -I.")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -msse2 -I.")
 endif( UNIX )
 
 find_package( OpenCV REQUIRED )
diff --git a/parallel_worlds_1/src/DeviceInterface.hpp b/parallel_worlds_1/src/DeviceInterface.hpp
index 6710bc67520fa43a82cb756385c5c43f1f377214..7ffc4137d76c1168361bf883ee5462969a4c05d2 100644
--- a/parallel_worlds_1/src/DeviceInterface.hpp
+++ b/parallel_worlds_1/src/DeviceInterface.hpp
@@ -82,7 +82,7 @@ private:
 	}
 
 	void init(cl_device_type requestedDevice=CL_DEVICE_TYPE_GPU | CL_DEVICE_TYPE_ACCELERATOR) {
-		devices = findDevices(CL_DEVICE_TYPE_GPU | CL_DEVICE_TYPE_ACCELERATOR);
+		devices = findDevices(requestedDevice);
 		// In order to execute a kernel (OpenCL program), it is necessary to first define
 		// some hardware presentations:
 		// 1. a context that defines the devices (and thus the usable binary code)
diff --git a/parallel_worlds_2/src/CMakeLists.txt b/parallel_worlds_2/src/CMakeLists.txt
index 67aabe56ca9d515638ccb021b44355ef0c84106e..63757bdd5074d1704695fc603cdbac6852aa9f69 100644
--- a/parallel_worlds_2/src/CMakeLists.txt
+++ b/parallel_worlds_2/src/CMakeLists.txt
@@ -5,12 +5,12 @@ set( EXECUTABLE ${PROJECT_NAME} )
 
 if( MSVC )
 	message( "MSVC: adding compiler flags" )
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2 /I.")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Z7 /arch:SSE2 /I.")
 endif( MSVC )
 
 if( UNIX )
 	message( "UNIX-like system: adding compiler flags" )
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -I.")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -msse2 -I.")
 endif( UNIX )
 
 find_package( OpenCV REQUIRED )
diff --git a/parallel_worlds_2/src/DeviceInterface.hpp b/parallel_worlds_2/src/DeviceInterface.hpp
index 6710bc67520fa43a82cb756385c5c43f1f377214..7ffc4137d76c1168361bf883ee5462969a4c05d2 100644
--- a/parallel_worlds_2/src/DeviceInterface.hpp
+++ b/parallel_worlds_2/src/DeviceInterface.hpp
@@ -82,7 +82,7 @@ private:
 	}
 
 	void init(cl_device_type requestedDevice=CL_DEVICE_TYPE_GPU | CL_DEVICE_TYPE_ACCELERATOR) {
-		devices = findDevices(CL_DEVICE_TYPE_GPU | CL_DEVICE_TYPE_ACCELERATOR);
+		devices = findDevices(requestedDevice);
 		// In order to execute a kernel (OpenCL program), it is necessary to first define
 		// some hardware presentations:
 		// 1. a context that defines the devices (and thus the usable binary code)
diff --git a/parallel_worlds_3/src/CMakeLists.txt b/parallel_worlds_3/src/CMakeLists.txt
index 8c23766af299ee321a03e75f7841834654f4cb5c..9b02220314c562237087a95d0bfd694ec2c33128 100644
--- a/parallel_worlds_3/src/CMakeLists.txt
+++ b/parallel_worlds_3/src/CMakeLists.txt
@@ -5,12 +5,12 @@ set( EXECUTABLE ${PROJECT_NAME} )
 
 if( MSVC )
 	message( "MSVC: adding compiler flags" )
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2 /I.")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Z7 /arch:SSE2 /I.")
 endif( MSVC )
 
 if( UNIX )
 	message( "UNIX-like system: adding compiler flags" )
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -I.")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -msse2 -I.")
 endif( UNIX )
 
 find_package( OpenCV REQUIRED )
diff --git a/parallel_worlds_3/src/DeviceInterface.hpp b/parallel_worlds_3/src/DeviceInterface.hpp
index 6710bc67520fa43a82cb756385c5c43f1f377214..7ffc4137d76c1168361bf883ee5462969a4c05d2 100644
--- a/parallel_worlds_3/src/DeviceInterface.hpp
+++ b/parallel_worlds_3/src/DeviceInterface.hpp
@@ -82,7 +82,7 @@ private:
 	}
 
 	void init(cl_device_type requestedDevice=CL_DEVICE_TYPE_GPU | CL_DEVICE_TYPE_ACCELERATOR) {
-		devices = findDevices(CL_DEVICE_TYPE_GPU | CL_DEVICE_TYPE_ACCELERATOR);
+		devices = findDevices(requestedDevice);
 		// In order to execute a kernel (OpenCL program), it is necessary to first define
 		// some hardware presentations:
 		// 1. a context that defines the devices (and thus the usable binary code)