diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7bbac43e6aadc040886f8d4ffdcb9b5a023c3e19..61dc6b9cfcc919f6062ba4270931005dc8a6f9d0 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -416,7 +416,6 @@ IF (vision_utils_FOUND)
         capture_image.h
         feature_point_image.h
         landmark_AHP.h
-        landmark_point_3D.h
         processor_params_image.h
         processor_tracker_feature_image.h
         processor_tracker_landmark_image.h
@@ -425,7 +424,6 @@ IF (vision_utils_FOUND)
         capture_image.cpp
         feature_point_image.cpp
         landmark_AHP.cpp
-        landmark_point_3D.cpp
         processor_tracker_feature_image.cpp
         processor_tracker_landmark_image.cpp
         )
@@ -440,10 +438,13 @@ ADD_SUBDIRECTORY(constraints)
 # Add the features sub-directory
 ADD_SUBDIRECTORY(features)
 
-# Add the processor sub-directory
+# Add the landmarks sub-directory
+ADD_SUBDIRECTORY(landmarks)
+
+# Add the processors sub-directory
 ADD_SUBDIRECTORY(processors)
 
-# Add the sensor sub-directory
+# Add the sensors sub-directory
 ADD_SUBDIRECTORY(sensors)
 
 # Add the hello_wolf sub-directory
diff --git a/src/captures/CMakeLists.txt b/src/captures/CMakeLists.txt
index 008619d7b78511d7deb0bbd1d9133845b667a140..57f34f813a42268bc2600eb53e65ba7b7f73f2ca 100644
--- a/src/captures/CMakeLists.txt
+++ b/src/captures/CMakeLists.txt
@@ -1,6 +1,14 @@
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
 
-# Forward var to parent scope
+#=========================================
+#=========================================
+# Add in this section the CONDITIONAL CLUES [IF/ELSE]  
+# for external libraries and move inside them the respective lines from above.  
+
+
+
+#=========================================
+#=========================================
 
 SET(HDRS_CAPTURE ${HDRS_CAPTURE}
   ${CMAKE_CURRENT_SOURCE_DIR}/capture_velocity.h
@@ -12,11 +20,7 @@ SET(SRCS_CAPTURE ${SRCS_CAPTURE}
   ${CMAKE_CURRENT_SOURCE_DIR}/capture_wheel_joint_position.cpp 
   )
 
-
-
-
-
-
+# Forward var to parent scope
 # These lines always at the end
 SET(HDRS_CAPTURE ${HDRS_CAPTURE}  PARENT_SCOPE)
 SET(SRCS_CAPTURE ${SRCS_CAPTURE}  PARENT_SCOPE)
diff --git a/src/constraints/CMakeLists.txt b/src/constraints/CMakeLists.txt
index 587c9b9d99a1f12f6a6f3035801d7657defa33f7..8d9661d2c7d598c4ae26ea543ac1f3b573db5bbf 100644
--- a/src/constraints/CMakeLists.txt
+++ b/src/constraints/CMakeLists.txt
@@ -1,6 +1,14 @@
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
 
-# Forward var to parent scope
+#=========================================
+#=========================================
+# Add in this section the CONDITIONAL CLUES [IF/ELSE]  
+# for external libraries and move inside them the respective lines from above.  
+
+
+
+#=========================================
+#=========================================
 
 SET(HDRS_CONSTRAINT ${HDRS_CONSTRAINT}
   ${CMAKE_CURRENT_SOURCE_DIR}/constraint_autodiff_distance_3D.h
@@ -11,7 +19,7 @@ SET(HDRS_CONSTRAINT ${HDRS_CONSTRAINT}
 SET(SRCS_CONSTRAINT ${SRCS_CONSTRAINT} 
   )
 
-
+# Forward var to parent scope
 # These lines always at the end
 SET(HDRS_CONSTRAINT ${HDRS_CONSTRAINT}  PARENT_SCOPE)
 SET(SRCS_CONSTRAINT ${SRCS_CONSTRAINT}   PARENT_SCOPE)
diff --git a/src/features/CMakeLists.txt b/src/features/CMakeLists.txt
index dd0b75aa447b2bd2a09c127e8b7a4abc0064ee58..316731a39f5dd8e3721e70d6b23ceec4186e523e 100644
--- a/src/features/CMakeLists.txt
+++ b/src/features/CMakeLists.txt
@@ -1,7 +1,15 @@
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
 
-# Forward var to parent scope
+#=========================================
+#=========================================
+# Add in this section the CONDITIONAL CLUES [IF/ELSE]  
+# for external libraries and move inside them the respective lines from above.  
+
 
+
+#=========================================
+#=========================================
+  
 SET(HDRS_FEATURE ${HDRS_FEATURE}
   ${CMAKE_CURRENT_SOURCE_DIR}/feature_diff_drive.h 
   )
@@ -9,9 +17,8 @@ SET(HDRS_FEATURE ${HDRS_FEATURE}
 SET(SRCS_FEATURE ${SRCS_FEATURE}
   ${CMAKE_CURRENT_SOURCE_DIR}/feature_diff_drive.cpp 
   )
-
-  
   
+# Forward var to parent scope
 # These lines always at the end
 SET(HDRS_FEATURE ${HDRS_FEATURE}  PARENT_SCOPE)
 SET(SRCS_FEATURE ${SRCS_FEATURE}  PARENT_SCOPE)
diff --git a/src/landmarks/CMakeLists.txt b/src/landmarks/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bdfe8f65b174218926f12aa3d3c8211f4e069569
--- /dev/null
+++ b/src/landmarks/CMakeLists.txt
@@ -0,0 +1,24 @@
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
+
+#=========================================
+#=========================================
+# Add in this section the CONDITIONAL CLUES [IF/ELSE]  
+# for external libraries and move inside them the respective lines from above.  
+
+
+
+#=========================================
+#=========================================
+  
+SET(HDRS_LANDMARK ${HDRS_LANDMARK}
+  ${CMAKE_CURRENT_SOURCE_DIR}/landmark_point_3D.h
+  )
+
+SET(SRCS_LANDMARK ${SRCS_LANDMARK}
+  ${CMAKE_CURRENT_SOURCE_DIR}/landmark_point_3D.cpp
+  )
+
+# Forward var to parent scope
+# These lines always at the end
+SET(HDRS_LANDMARK ${HDRS_LANDMARK}  PARENT_SCOPE)
+SET(SRCS_LANDMARK ${SRCS_LANDMARK}  PARENT_SCOPE)
\ No newline at end of file
diff --git a/src/landmark_point_3D.cpp b/src/landmarks/landmark_point_3D.cpp
similarity index 91%
rename from src/landmark_point_3D.cpp
rename to src/landmarks/landmark_point_3D.cpp
index 7a83341ecdf1ed2afc441ffb766e2b8006e71dfd..0deed3861479174eb87e5e2bb2ee4d1d0b6fa714 100644
--- a/src/landmark_point_3D.cpp
+++ b/src/landmarks/landmark_point_3D.cpp
@@ -1,4 +1,4 @@
-#include "landmark_point_3D.h"
+#include "landmarks/landmark_point_3D.h"
 
 namespace wolf {
 
diff --git a/src/landmark_point_3D.h b/src/landmarks/landmark_point_3D.h
similarity index 100%
rename from src/landmark_point_3D.h
rename to src/landmarks/landmark_point_3D.h
diff --git a/src/processors/CMakeLists.txt b/src/processors/CMakeLists.txt
index c5902ad9c399c4055ad41fd8a5ac20fe29186933..5c223e4f28ff54f4c62267f980124d62f3d6ccda 100644
--- a/src/processors/CMakeLists.txt
+++ b/src/processors/CMakeLists.txt
@@ -1,14 +1,9 @@
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
 
-# Forward var to parent scope
-
-SET(HDRS_PROCESSOR ${HDRS_PROCESSOR}
-  ${CMAKE_CURRENT_SOURCE_DIR}/processor_diff_drive.h 
-  )
-
-SET(SRCS_PROCESSOR ${SRCS_PROCESSOR}
-  ${CMAKE_CURRENT_SOURCE_DIR}/processor_diff_drive.cpp 
-  )
+#=========================================
+#=========================================
+# Add in this section the CONDITIONAL CLUES [IF/ELSE]  
+# for external libraries and move inside them the respective lines from above.  
 
 IF (vision_utils_FOUND)
 SET(HDRS_PROCESSOR ${HDRS_PROCESSOR}
@@ -20,8 +15,19 @@ SET(SRCS_PROCESSOR ${SRCS_PROCESSOR}
   )
 ENDIF (vision_utils_FOUND)
 
+#=========================================
+#=========================================
+  
+  
+SET(HDRS_PROCESSOR ${HDRS_PROCESSOR}
+  ${CMAKE_CURRENT_SOURCE_DIR}/processor_diff_drive.h 
+  )
 
+SET(SRCS_PROCESSOR ${SRCS_PROCESSOR}
+  ${CMAKE_CURRENT_SOURCE_DIR}/processor_diff_drive.cpp 
+  )
 
+# Forward var to parent scope
 # These lines always at the end
 SET(HDRS_PROCESSOR ${HDRS_PROCESSOR} PARENT_SCOPE)
 SET(SRCS_PROCESSOR ${SRCS_PROCESSOR} PARENT_SCOPE)
diff --git a/src/sensors/CMakeLists.txt b/src/sensors/CMakeLists.txt
index 48a27e6003eeba7d9bff033c682a187057d61789..661731d27c433e5b0d9e3c14a81d6c0dd0ac6737 100644
--- a/src/sensors/CMakeLists.txt
+++ b/src/sensors/CMakeLists.txt
@@ -1,7 +1,15 @@
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
 
-# Forward var to parent scope
+#=========================================
+#=========================================
+# Add in this section the CONDITIONAL CLUES [IF/ELSE]  
+# for external libraries and move inside them the respective lines from above.  
+
+
 
+#=========================================
+#=========================================
+  
 SET(HDRS_SENSOR ${HDRS_SENSOR}
   ${CMAKE_CURRENT_SOURCE_DIR}/diff_drive_tools.h
   ${CMAKE_CURRENT_SOURCE_DIR}/diff_drive_tools.hpp
@@ -12,8 +20,7 @@ SET(SRCS_SENSOR ${SRCS_SENSOR}
   ${CMAKE_CURRENT_SOURCE_DIR}/sensor_diff_drive.cpp 
   )
 
-
-
+# Forward var to parent scope
 # These lines always at the end
 SET(HDRS_SENSOR ${HDRS_SENSOR}  PARENT_SCOPE)
 SET(SRCS_SENSOR ${SRCS_SENSOR}  PARENT_SCOPE)
diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt
index 985471013c0f232b742259fa2c66af823a5968a1..4827de183a9a53fbb22bcc72d553aefbf2e6a33a 100644
--- a/src/test/CMakeLists.txt
+++ b/src/test/CMakeLists.txt
@@ -68,10 +68,6 @@ target_link_libraries(gtest_frame_base ${PROJECT_NAME})
 wolf_add_gtest(gtest_IMU_tools gtest_IMU_tools.cpp)
 # target_link_libraries(gtest_IMU_tools ${PROJECT_NAME}) // WOLF library not needed
 
-# IMU tools test
-wolf_add_gtest(gtest_pack_KF_buffer gtest_pack_KF_buffer.cpp)
-target_link_libraries(gtest_pack_KF_buffer ${PROJECT_NAME})
-
 # LocalParametrizationXxx classes test
 wolf_add_gtest(gtest_local_param gtest_local_param.cpp)
 target_link_libraries(gtest_local_param ${PROJECT_NAME})
@@ -80,6 +76,10 @@ target_link_libraries(gtest_local_param ${PROJECT_NAME})
 wolf_add_gtest(gtest_motion_buffer gtest_motion_buffer.cpp)
 target_link_libraries(gtest_motion_buffer ${PROJECT_NAME})
 
+# PackKFBuffer
+wolf_add_gtest(gtest_pack_KF_buffer gtest_pack_KF_buffer.cpp)
+target_link_libraries(gtest_pack_KF_buffer ${PROJECT_NAME})
+
 # Problem class test
 wolf_add_gtest(gtest_problem gtest_problem.cpp)
 target_link_libraries(gtest_problem ${PROJECT_NAME})
@@ -179,7 +179,7 @@ wolf_add_gtest(gtest_processor_IMU_jacobians gtest_processor_IMU_jacobians.cpp)
 target_link_libraries(gtest_processor_IMU_jacobians ${PROJECT_NAME})
 
 IF(vision_utils_FOUND)
-# ProcessorIMUJacobians test
+# ProcessorFeatureTrifocal test
 wolf_add_gtest(gtest_processor_tracker_feature_trifocal gtest_processor_tracker_feature_trifocal.cpp)
 target_link_libraries(gtest_processor_tracker_feature_trifocal ${PROJECT_NAME})
 ENDIF(vision_utils_FOUND)
diff --git a/wolf_scripts/ReadMe.md b/wolf_scripts/ReadMe.md
index 566576017536936977047203faada2a75db09a1a..72cadef66612e9f8603e6ada687848e3d8a30686 100644
--- a/wolf_scripts/ReadMe.md
+++ b/wolf_scripts/ReadMe.md
@@ -77,17 +77,18 @@ Helpful scripts to create WOLF tree elements (e.g. processors)
   
 #### SCRIPTS installation  
 
-  * Move to the scripts folder
+  * Move to the WOLF scripts folder 
   
-    ```
-    cd $WOLF_ROOT/wolf_scripts
-    ```
+  ..*`cd <WOLF_DIRECTORY>/wolf_scripts`  
 
-  * Run the following line to set your `bashrc`. This will allow you to execute the scripts from any console path.
+  * Run the following lines to set your `bashrc`. This will allow you to execute the scripts from any console path.
   
-    ```
-    echo "source $WOLF_ROOT/wolf_scripts/setup.bash" >> ~/.bashrc
-    ```
+  ..*`echo "export WOLF_ROOT=$PWD/../." >> ~/.bashrc`
+  ..*`echo "source $PWD/setup.bash" >> ~/.bashrc`
+   
+  * Source your `bashrc`.
+  
+  ..*`source ~/.bashrc` 
 
 ## Usage
 
@@ -111,6 +112,9 @@ Creates the main structure including .cpp and .h files, and a gtest for the new
     and modify the `CMakeLists.txt` files in the directories `src/processors/` and `src/test/`.
 
   * Options:
-    - t: Type. Any of the following "[ capture | constraint | feature | processor | sensor ]"
+    - t: Type. Any of the following [ capture | constraint | feature | landmark | processor | sensor ]"
     - n: Name 
-    - b: Base class (inherited from this class)
\ No newline at end of file
+    - b: Base class (inherited from this class)
+  
+  *__[WARNING]__: If you are using external libraries, you will have to manually modify some files. Please check the yellow [WARN] messages shown after executing the script.  
+    
\ No newline at end of file
diff --git a/wolf_scripts/generic_func/functions.sh b/wolf_scripts/generic_func/functions.sh
index e043f05cb249a06fa2cc5d9addb8fa5d9566e019..f5bd5c20f9d2996538c3f9ebc03575ebb2df77ac 100755
--- a/wolf_scripts/generic_func/functions.sh
+++ b/wolf_scripts/generic_func/functions.sh
@@ -12,66 +12,66 @@ NC=$(tput sgr 0) # No Color
 
 askIfGitBranch()
 {
- read -p "${CYAN}Do you want to create a new git branch (y/n)?  ${NC}" ANSWER
- DOIT=${ANSWER:-y}
- OK=0
+    read -p "${CYAN}Do you want to create a new git branch (y/n)?  ${NC}" ANSWER
+    DOIT=${ANSWER:-y}
+    OK=0
  
- while [ $OK -eq 0 ];
- do
-   case "$ANSWER" in
-     "y" | "Y")
- 	   DOIT="y"
- 	   OK=1
- 	   ;;
-     "n" | "N")
-       DOIT="n"
-       OK=1
-       ;; 
-     *)
-       OK=0
-       echo "${RED}  [ERROR]: Incorrect answer.${NC} Please type y or n"
-       exit
-       ;;
-  esac
-done   
-
-if [ "$DOIT" == "y" ];
-then
-  if [ -z "$1" ]
-  then
-    echo "${RED}  [ERROR]: No argument supplied.${NC}"
-  fi
-  cd $WOLF_ROOT 
-  git checkout -b $1
-  echo "${GREEN} \--> Created git branch $1${NC}"
-fi
-echo ""    
+    while [ $OK -eq 0 ];
+    do
+        case "$ANSWER" in
+            "y" | "Y")
+ 	 	  		DOIT="y"
+ 	   			OK=1
+ 	   			;;
+     		"n" | "N")
+       			DOIT="n"
+       			OK=1
+       			;; 
+     		*)
+       			OK=0
+       			echo "${RED}  [ERROR]: Incorrect answer.${NC} Please type y or n"
+       			exit
+       			;;
+  		esac
+	done   
+
+	if [ "$DOIT" == "y" ];
+	then
+  		if [ -z "$1" ]
+  		then
+    		echo "${RED}  [ERROR]: No argument supplied.${NC}"
+  		fi
+  		cd $WOLF_ROOT 
+  		git checkout -b $1
+  		echo "${GREEN} \--> Created git branch $1${NC}"
+	fi
+	echo ""    
 }
 
 getEnvVariable()
 {
-  local var=`echo "${!1}"`
-  if [ -z "${var}" ]
-  then
-    echo "${RED}  [ERROR]: The environment variable ${1} has not been defined.${NC} Please see the wiki documentation for instructions on how to create it." >&2
-    exit
-  fi
-  echo $var
+	local var=`echo "${!1}"`
+  	if [ -z "${var}" ]
+  	then
+    	echo "${RED}  [ERROR]: The environment variable ${1} has not been defined.${NC} Please see the wiki documentation for instructions on how to create it." >&2
+    	exit
+  	fi
+  	echo $var
 }
 
 showHelp() 
 {
-  echo "******************************************"  
-  echo "${BLUE}Script to generate a WOLF $1 class${NC}"
-  echo "******************************************"
-  echo " Required parameters:"
-  echo "  -${CYAN}t${NC}: type. Any of the following [ ${CYAN}capture${NC} | ${CYAN}constraint${NC} | ${CYAN}feature${NC} | ${CYAN}processor${NC} | ${CYAN}sensor${NC}]"
-  echo "  -${CYAN}n${NC}: name"
-  echo "  -${CYAN}b${NC}: base class (inheritance)"
-  echo ""  
-  echo "Example of usage:"
-  echo "wolf_create.sh -t processor -n processor_example -b processor_tracker" 
-  echo ""
+  	echo "******************************************"  
+  	echo "${BLUE}Script to generate a WOLF $1 class${NC}"
+  	echo "******************************************"
+  	echo " Required parameters:"
+  	echo "  -${CYAN}t${NC}: type. Any of the following [ ${CYAN}capture${NC} | ${CYAN}constraint${NC} | ${CYAN}feature${NC} | ${CYAN}landmark${NC} | ${CYAN}processor${NC} | ${CYAN}sensor${NC}]"
+  	echo "  -${CYAN}n${NC}: name"
+  	echo "  -${CYAN}b${NC}: base class (inheritance)"
+  	echo ""  
+  	echo "Example of usage:"
+  	echo "wolf_create.sh -t processor -n processor_example -b processor_tracker" 
+  	echo ""
 }
 
 LowerCase()
@@ -98,429 +98,448 @@ UpperCase()
 
 UpperCaseFirstLetter()
 {
-  echo "$(echo "$1" | sed 's/.*/\u&/')"
+  	echo "$(echo "$1" | sed 's/.*/\u&/')"
 }
 
 capitalizeDiminutives()
 {
-  RES=$1
-  if [[ $1 =~ .*"2d"*. ]] ;  
-  then
-    RES=$(echo "${1/2d/2D}")
-  fi
-  if [[ $1 =~ .*"3d"*. ]] ;
-  then
-    RES=$(echo "${RES/3d/3D}")
-  fi
-  if [[ $1 =~ .*"gps"*. ]] ;
-  then
-    RES=$(echo "${RES/gps/GPS}")
-  fi  
-  if [[ $1 =~ .*"imu"*. ]] ;
-  then
-    RES=$(echo "${RES/imu/IMU}")    
-  fi
-  echo $RES
+ 	RES=$1
+  	if [[ $1 =~ .*"2d"*. ]] ;  
+  	then
+    	RES=$(echo "${1/2d/2D}")
+  	fi
+  	if [[ $1 =~ .*"3d"*. ]] ;
+  	then
+    	RES=$(echo "${RES/3d/3D}")
+  	fi
+  	if [[ $1 =~ .*"gps"*. ]] ;
+  	then
+    	RES=$(echo "${RES/gps/GPS}")
+  	fi  
+  	if [[ $1 =~ .*"imu"*. ]] ;
+  	then
+    	RES=$(echo "${RES/imu/IMU}")    
+  	fi
+  	echo $RES
 }
 
 getFilePath()
 {
-  if find $WOLF_ROOT -name "${1}" -print -quit | grep -q '^'; 
-  then
-    echo "$(find "$WOLF_ROOT/src" -name ${1} )"
-  else
-    echo ""
-  fi
+  	if find $WOLF_ROOT -name "${1}" -print -quit | grep -q '^'; 
+  	then
+    	echo "$(find "$WOLF_ROOT/src" -name ${1} )"
+  	else
+    	echo ""
+  	fi
 }
 
 fillWithBaseConstructorParameters()
 {
-  # Header: class constructor with base class parameters	
-  H_TXT=$(cat $BASE_H_PATH)
-  H_TXT="${H_TXT#*class $BASECLASSNAME :}"
-  BASECLASS_TXT="${H_TXT%%\n\};*}"
-  PARAMS="${BASECLASS_TXT#*$BASECLASSNAME(}"
-
-  BASE_DERIVES_FROM_AUTODIFF=""
-  if [[ $PARAMS =~ .*ConstraintAutodiff*. ]] && ! [[ $BASECLASSNAME =~ .*ConstraintAutodiff*. ]] ;
-  then
-    BASE_DERIVES_FROM_AUTODIFF="TRUE"
-  fi    
-
-  PARAMS="${PARAMS%%\) :*}" # in case of inheritance
-  PARAMS="${PARAMS%%\);*}"
-
-  if [[ "$PARAMS" == *"const std::string& _type"* ]] ;
-  then
-  	PARAMS="${PARAMS#*_type,}"
-   	NAME_STR="${NAME#${TYPE}_}"
-   	NAME_STR=$(UpperCase $NAME_STR)
-  fi
-
-  OLD=" class_name();"
-  NEW="\ \ \ \ \ \ \ \ ${CLASSNAME}(${PARAMS});"
-  NEW=${NEW//$'\n'/} # Remove all newlines.
-  NEW=${NEW%$'\n'}   # Remove a trailing newline.
-  NEW=$(echo $NEW | sed 's/^ *//g' | sed 's/ *$//g') # remove extra whitespaces
-  sed '/'"${OLD}"'/c'"${NEW}"'' "${TEMPLATES_PATH}"/class_template.h > "${TEMPLATES_PATH}"/tmp.h
-
-  # CPP: class constructor with base class parameters	
-  PARAMS="$PARAMS," # add , at the end to ease things
-  PARAMS=$(echo "$PARAMS" | sed 's/\ =.*,\ /,\ /g')
-  PARAMS=$(echo "$PARAMS" | sed 's/\ =.*,/,/g')    
-  PARAMS="${PARAMS::-1}" # remove , from the end
-
-  OLD="class_name::class_name() :"
-  NEW="class_name::class_name(${PARAMS}) :"
-  NEW=${NEW//$'\n'/} # Remove all newlines.
-  NEW=${NEW%$'\n'}   # Remove a trailing newline.
-  NEW=$(echo $NEW | sed 's/^ *//g' | sed 's/ *$//g') # remove extra whitespaces
-  sed '/'"${OLD}"'/c'"${NEW}"'' "${TEMPLATES_PATH}"/class_template.cpp > "${TEMPLATES_PATH}"/tmp.cpp           
-
-  # get only the variable names
-  PARAMS_CLEAN=$(echo $PARAMS | sed -r 's/'","'/ /g')
-  ar=($PARAMS_CLEAN)
-  PARAMS_OBJ=
-  for el in "${ar[@]}"; do
-    if [[ $el == _* ]] 
-    then
-      PARAMS_OBJ+=", ${el}"
-    fi
-  done
-  PARAMS_OBJ=${PARAMS_OBJ#","}
-  if ! [[ -z $NAME_STR ]] ;
-  then
-    PARAMS_OBJ="\"$NAME_STR\", $PARAMS_OBJ"
-  fi
-  OLD="\        base_class()"
-  NEW="\        base_class(${PARAMS_OBJ} )"
-  sed '/'"${OLD}"'/c'"${NEW}"'' "${TEMPLATES_PATH}"/tmp.cpp > "${TEMPLATES_PATH}"/tmp2.cpp 
-  rm "${TEMPLATES_PATH}"/tmp.cpp
-  mv "${TEMPLATES_PATH}"/tmp2.cpp "${TEMPLATES_PATH}"/tmp.cpp
+  	# Header: class constructor with base class parameters	
+  	H_TXT=$(cat $BASE_H_PATH)
+  	H_TXT="${H_TXT#*class $BASECLASSNAME :}"
+  	BASECLASS_TXT="${H_TXT%%\n\};*}"
+  	PARAMS="${BASECLASS_TXT#*$BASECLASSNAME(}"
+
+  	BASE_DERIVES_FROM_AUTODIFF=""
+  	if [[ $PARAMS =~ .*ConstraintAutodiff*. ]] && ! [[ $BASECLASSNAME =~ .*ConstraintAutodiff*. ]] ;
+  	then
+	    BASE_DERIVES_FROM_AUTODIFF="TRUE"
+	fi    
+
+  	PARAMS="${PARAMS%%\) :*}" # in case of inheritance
+  	PARAMS="${PARAMS%%\);*}"
+
+  	if [[ "$PARAMS" == *"const std::string& _type"* ]] ;
+  	then
+	  	PARAMS="${PARAMS#*_type,}"
+   		NAME_STR="${NAME#${TYPE}_}"
+   		NAME_STR=$(UpperCase $NAME_STR)
+  	fi
+
+  	if [[ $BASECLASSNAME =~ .*ConstraintAutodiff*. ]] ;
+  	then
+		PARAMS="${PARAMS::-530}" # remove , from the end
+  	fi   
+
+	  OLD=" class_name();"
+  	NEW="\ \ \ \ \ \ \ \ ${CLASSNAME}(${PARAMS});"
+  	NEW=${NEW//$'\n'/} # Remove all newlines.
+  	NEW=${NEW%$'\n'}   # Remove a trailing newline.
+  	NEW=$(echo $NEW | sed 's/^ *//g' | sed 's/ *$//g') # remove extra whitespaces
+  	sed '/'"${OLD}"'/c'"${NEW}"'' "${TEMPLATES_PATH}"/class_template.h > "${TEMPLATES_PATH}"/tmp.h
+
+  	# CPP: class constructor with base class parameters	
+  	PARAMS="$PARAMS," # add , at the end to ease things
+  	PARAMS=$(echo "$PARAMS" | sed 's/\ =.*,\ /,\ /g')
+  	PARAMS=$(echo "$PARAMS" | sed 's/\ =.*,/,/g')    
+  	PARAMS="${PARAMS::-1}" # remove , from the end
+
+  	OLD="class_name::class_name() :"
+  	NEW="class_name::class_name(${PARAMS}) :"
+  	NEW=${NEW//$'\n'/} # Remove all newlines.
+  	NEW=${NEW%$'\n'}   # Remove a trailing newline.
+  	NEW=$(echo $NEW | sed 's/^ *//g' | sed 's/ *$//g') # remove extra whitespaces
+  	sed '/'"${OLD}"'/c'"${NEW}"'' "${TEMPLATES_PATH}"/class_template.cpp > "${TEMPLATES_PATH}"/tmp.cpp           
+
+  	# get only the variable names
+  	PARAMS_CLEAN=$(echo $PARAMS | sed -r 's/'","'/ /g')
+  	ar=($PARAMS_CLEAN)
+  	PARAMS_OBJ=
+  	for el in "${ar[@]}"; do
+    	if [[ $el == _* ]] 
+    	then
+     	 	PARAMS_OBJ+=", ${el}"
+    	fi
+  	done
+  	PARAMS_OBJ=${PARAMS_OBJ#","}
+  	if ! [[ -z $NAME_STR ]] ;
+  	then
+    	PARAMS_OBJ="\"$NAME_STR\", $PARAMS_OBJ"
+  	fi
+  	OLD="\        base_class()"
+  	NEW="\        base_class(${PARAMS_OBJ} )"
+  	sed '/'"${OLD}"'/c'"${NEW}"'' "${TEMPLATES_PATH}"/tmp.cpp > "${TEMPLATES_PATH}"/tmp2.cpp 
+  	rm "${TEMPLATES_PATH}"/tmp.cpp
+  	mv "${TEMPLATES_PATH}"/tmp2.cpp "${TEMPLATES_PATH}"/tmp.cpp
 }
 
 createHCPPFromTemplates()
 {
-  # Templates path
-  TEMPLATES_PATH=${WOLF_SCRIPTS_PATH}/templates
-
-  # ===== Create HEADER and CPP files =====
-
-  # Pick initialization parameters from base class
-  fillWithBaseConstructorParameters
-
-  # CPP only for non-autodiff
-  if ! [[ $BASECLASSNAME =~ .*ConstraintAutodiff*. ]] ;
-  then
-    #Set the TYPE and class names on the template files
-    sed 's/header_file/'"${NAME}.h"'/g' "${TEMPLATES_PATH}"/tmp.cpp > "${TEMPLATES_PATH}"/tmp2.cpp
-    sed 's/class_name/'"${CLASSNAME}"'/g' "${TEMPLATES_PATH}"/tmp2.cpp > "${TEMPLATES_PATH}"/tmp3.cpp
-    sed 's/base_class/'"${BASECLASSNAME}"'/g' "${TEMPLATES_PATH}"/tmp3.cpp > "${TEMPLATES_PATH}"/tmp4.cpp
-    rm "${TEMPLATES_PATH}"/tmp.cpp
-    rm "${TEMPLATES_PATH}"/tmp2.cpp
-    rm "${TEMPLATES_PATH}"/tmp3.cpp
-    # Rename and move files
-    NAME_CPP_PATH="$WOLF_ROOT"/src/"$TYPE"s/"$NAME".cpp
-    mv "${TEMPLATES_PATH}"/tmp4.cpp "$NAME_CPP_PATH"
-  fi
+  	# Templates path
+  	TEMPLATES_PATH=${WOLF_SCRIPTS_PATH}/templates
+
+	# ===== Create HEADER and CPP files =====
+
+  	# Pick initialization parameters from base class
+  	fillWithBaseConstructorParameters
+
+  	# CPP only for non-autodiff
+  	if ! [[ $BASECLASSNAME =~ .*ConstraintAutodiff*. ]] ;
+  	then
+    	#Set the TYPE and class names on the template files
+    	sed 's/header_file/'"${NAME}.h"'/g' "${TEMPLATES_PATH}"/tmp.cpp > "${TEMPLATES_PATH}"/tmp2.cpp
+    	sed 's/class_name/'"${CLASSNAME}"'/g' "${TEMPLATES_PATH}"/tmp2.cpp > "${TEMPLATES_PATH}"/tmp3.cpp
+    	sed 's/base_class/'"${BASECLASSNAME}"'/g' "${TEMPLATES_PATH}"/tmp3.cpp > "${TEMPLATES_PATH}"/tmp4.cpp
+    	rm "${TEMPLATES_PATH}"/tmp.cpp
+    	rm "${TEMPLATES_PATH}"/tmp2.cpp
+    	rm "${TEMPLATES_PATH}"/tmp3.cpp
+    	# Rename and move files
+    	NAME_CPP_PATH="$WOLF_ROOT"/src/"$TYPE"s/"$NAME".cpp
+    	mv "${TEMPLATES_PATH}"/tmp4.cpp "$NAME_CPP_PATH"
+  	fi
   
-  sed 's/base_header_file/'"${BASE}.h"'/g' "${TEMPLATES_PATH}"/tmp.h > "${TEMPLATES_PATH}"/tmp2.h
-  sed 's/name_cap/'"${TYPE_CAP}_${BASE_CAP}_${NAME_CAP}"'/g' "${TEMPLATES_PATH}"/tmp2.h > "${TEMPLATES_PATH}"/tmp3.h
-  sed 's/class_name/'"${CLASSNAME}"'/g' "${TEMPLATES_PATH}"/tmp3.h > "${TEMPLATES_PATH}"/tmp4.h
-  sed 's/base_class/'"${BASECLASSNAME}"'/g' "${TEMPLATES_PATH}"/tmp4.h > "${TEMPLATES_PATH}"/tmp5.h
-  rm "${TEMPLATES_PATH}"/tmp.h
-  rm "${TEMPLATES_PATH}"/tmp2.h
-  rm "${TEMPLATES_PATH}"/tmp3.h
-  rm "${TEMPLATES_PATH}"/tmp4.h
+  	sed 's/base_header_file/'"${BASE}.h"'/g' "${TEMPLATES_PATH}"/tmp.h > "${TEMPLATES_PATH}"/tmp2.h
+  	sed 's/name_cap/'"${TYPE_CAP}_${BASE_CAP}_${NAME_CAP}"'/g' "${TEMPLATES_PATH}"/tmp2.h > "${TEMPLATES_PATH}"/tmp3.h
+  	sed 's/class_name/'"${CLASSNAME}"'/g' "${TEMPLATES_PATH}"/tmp3.h > "${TEMPLATES_PATH}"/tmp4.h
+  	sed 's/base_class/'"${BASECLASSNAME}"'/g' "${TEMPLATES_PATH}"/tmp4.h > "${TEMPLATES_PATH}"/tmp5.h
+  	rm "${TEMPLATES_PATH}"/tmp.h
+  	rm "${TEMPLATES_PATH}"/tmp2.h
+  	rm "${TEMPLATES_PATH}"/tmp3.h
+  	rm "${TEMPLATES_PATH}"/tmp4.h
   
-  # Rename and move files
-  NAME_H_PATH="$WOLF_ROOT"/src/"$TYPE"s/"$NAME".h
-  mv "${TEMPLATES_PATH}"/tmp5.h "$NAME_H_PATH"
+  	# Rename and move files
+  	NAME_H_PATH="$WOLF_ROOT"/src/"$TYPE"s/"$NAME".h
+  	mv "${TEMPLATES_PATH}"/tmp5.h "$NAME_H_PATH"
 }
 
 addAutodiffSpecifics()
 {
-  # Number of parameters
-  echo ""
-  echo "${CYAN}To create the class $CLASSNAME, you have to provide some info:${NC}"
-  echo "" 
-
-  PROMPT="${CYAN}- What is the size (dimensions) of the residual?${NC} (1 integer, followed by [ENTER]):"
-  read -p "${PROMPT}" RESIDUAL_DIM; 
-  if ! [[ "$RESIDUAL_DIM" =~ ^[0-9]+$ ]] ;
-  then
-    echo "${RED}  [ERROR]: Invalid input.${NC} Expecting a numeric value. Aborting..."
-    exit 1.
-  fi
-  echo -en "\033[1A\033[2K"
-  echo -en "\033[1A\033[2K"
-  echo "${GREEN} \--> Setting residual size to $RESIDUAL_DIM.${NC}"
-  echo ""
-  PROMPT="${CYAN}- How many state blocks are going to be considered in the constraint?${NC} (1 integer, followed by [ENTER]):"
-  read -p "${PROMPT}" NUM_STATES; 
-  if ! [[ "$NUM_STATES" =~ ^[0-9]+$ ]] ;
-  then
-    echo "${RED}  [ERROR]: Invalid input.${NC} Expecting a numeric value. Aborting..."
-    exit 1.
-  fi
-  echo -en "\033[1A\033[2K"
-  echo -en "\033[1A\033[2K"
-  echo "${GREEN} \--> Setting $NUM_STATES state blocks.${NC}"
-  echo ""
+  	# Number of parameters
+  	echo ""
+  	echo "${CYAN}To create the class $CLASSNAME, you have to provide some info:${NC}"
+  	echo "" 
+
+  	PROMPT="${CYAN}- What is the size (dimensions) of the residual?${NC} (1 integer, followed by [ENTER]):"
+  	read -p "${PROMPT}" RESIDUAL_DIM; 
+  	if ! [[ "$RESIDUAL_DIM" =~ ^[0-9]+$ ]] ;
+  	then
+    	echo "${RED}  [ERROR]: Invalid input.${NC} Expecting a numeric value. Aborting..."
+    	exit 1.
+  	fi
+  	echo -en "\033[1A\033[2K"
+  	echo -en "\033[1A\033[2K"
+  	echo "${GREEN} \--> Setting residual size to $RESIDUAL_DIM.${NC}"
+  	echo ""
+  	PROMPT="${CYAN}- How many state blocks are going to be considered in the constraint?${NC} (1 integer, followed by [ENTER]):"
+  	read -p "${PROMPT}" NUM_STATES; 
+  	if ! [[ "$NUM_STATES" =~ ^[0-9]+$ ]] ;
+  	then
+    	echo "${RED}  [ERROR]: Invalid input.${NC} Expecting a numeric value. Aborting..."
+    	exit 1.
+  	fi
+  	echo -en "\033[1A\033[2K"
+  	echo -en "\033[1A\033[2K"
+  	echo "${GREEN} \--> Setting $NUM_STATES state blocks.${NC}"
+  	echo ""
   
-  for (( idx = 0; idx < $NUM_STATES; idx++ )); do
-     PROMPT="${CYAN}- Name of state $((idx+1))?${NC} (1 string, followed by [ENTER]):"
-     read -p "${PROMPT}" STATENAME;
-     PROMPT="${CYAN}- Size (dimensions) of state $((idx+1)) (${STATENAME})?${NC} (1 integer, followed by [ENTER]:"
-     read -p "${PROMPT}" STATESIZE; 
-     if ! [[ "$STATESIZE" =~ ^[0-9]+$ ]] ;
-     then
-       echo "${RED}  [ERROR]: Invalid input.${NC} Expecting a numeric value. Aborting..."
-       exit 1.
-     fi
-     echo -en "\033[1A\033[2K"
-     echo -en "\033[1A\033[2K"
-     NAMES+=( "${STATENAME}" )
-     SIZES+=( "${STATESIZE}" )
-  done
-
-  echo -en "\033[1A\033[2K"
-  echo -n "${GREEN} \--> Setting state blocks: ${NC}"
-  PARAMS=
-  for (( idx = 0; idx < ${#NAMES[@]}; idx++ )); do
-    echo -n "${GREEN}${NAMES[$idx]}(${SIZES[$idx]}) ${NC}"
-    PARAMS+=( "const T* const _${NAMES[idx]},")
-    PARAM_NUMS+=( "${SIZES[idx]},")
-  done
-  echo ""
+  	for (( idx = 0; idx < $NUM_STATES; idx++ )); do
+    	PROMPT="${CYAN}- Name of state $((idx+1))?${NC} (1 string, followed by [ENTER]):"
+     	read -p "${PROMPT}" STATENAME;
+    	PROMPT="${CYAN}- Size (dimensions) of state $((idx+1)) (${STATENAME})?${NC} (1 integer, followed by [ENTER]:"
+     	read -p "${PROMPT}" STATESIZE; 
+     	if ! [[ "$STATESIZE" =~ ^[0-9]+$ ]] ;
+     	then
+       		echo "${RED}  [ERROR]: Invalid input.${NC} Expecting a numeric value. Aborting..."
+       		exit 1.
+     	fi
+     	echo -en "\033[1A\033[2K"
+     	echo -en "\033[1A\033[2K"
+     	NAMES+=( "${STATENAME}" )
+     	SIZES+=( "${STATESIZE}" )
+  	done
+
+  	echo -en "\033[1A\033[2K"
+  	echo -n "${GREEN} \--> Setting state blocks: ${NC}"
+  	PARAMS=
+  	for (( idx = 0; idx < ${#NAMES[@]}; idx++ )); do
+    	echo -n "${GREEN}${NAMES[$idx]}(${SIZES[$idx]}) ${NC}"
+    	PARAMS+=( "const T* const _${NAMES[idx]},")
+    	PARAM_NUMS+=( "${SIZES[idx]},")
+  	done
+  	echo ""
   
-  PARAMS[-1]=${PARAMS[-1]%?}
-  PARAM_NUMS[-1]=${PARAM_NUMS[-1]%?}
+  	PARAMS[-1]=${PARAMS[-1]%?}
+  	PARAM_NUMS[-1]=${PARAM_NUMS[-1]%?}
 
-  sed -i "s/public $BASECLASSNAME/public $BASECLASSNAME<$CLASSNAME, $RESIDUAL_DIM, ${PARAM_NUMS[*]}>/g" "$NAME_H_PATH"
-  sed -i "/virtual \~$CLASSNAME/a\ \n\        \/\*\* \brief : compute the residual from the state blocks being iterated by the solver.\n \        \*\*\/\n\        template<typename T>\n\        bool operator ()(${PARAMS[*]}, T* _residuals) const;\n" "$NAME_H_PATH"
-  sed -i "/\} \/\/ namespace wolf/a\ \n\/\/ Include here all headers for this class\n\/\/\#include <YOUR_HEADERS.h>\n\nnamespace wolf\n\{\n\ntemplate<typename T> bool $CLASSNAME::operator ()(${PARAMS[*]}, T* _residuals) const\n\{\n    std::cout << \"\\033[1;33m [WARN]:\\033[0m ${CLASSNAME}::operator () is empty.\" << std::endl;\n    \/\/ TODO: Implement\n    return true;\n\}\n\n\} \/\/ namespace wolf" "$NAME_H_PATH"
+  	sed -i "s/public $BASECLASSNAME/public $BASECLASSNAME<$CLASSNAME, $RESIDUAL_DIM, ${PARAM_NUMS[*]}>/g" "$NAME_H_PATH"
+  	sed -i "/virtual \~$CLASSNAME/a\ \n\        \/\*\* \brief : compute the residual from the state blocks being iterated by the solver.\n \        \*\*\/\n\        template<typename T>\n\        bool operator ()(${PARAMS[*]}, T* _residuals) const;\n" "$NAME_H_PATH"
+  	sed -i "/\} \/\/ namespace wolf/a\ \n\/\/ Include here all headers for this class\n\/\/\#include <YOUR_HEADERS.h>\n\nnamespace wolf\n\{\n\ntemplate<typename T> bool $CLASSNAME::operator ()(${PARAMS[*]}, T* _residuals) const\n\{\n    std::cout << \"\\033[1;33m [WARN]:\\033[0m ${CLASSNAME}::operator () is empty.\" << std::endl;\n    \/\/ TODO: Implement\n    return true;\n\}\n\n\} \/\/ namespace wolf" "$NAME_H_PATH"
 }
 
 fillWithBaseVirtualMethods()
 {
-  if ! [ -z $BASE_DERIVES_FROM_AUTODIFF ] ;
-  then
-    echo "${YELLOW} [ WARN]: Base class $BASECLASSNAME derives from AUTODIFF template. New .h and .cpp files are left without inherited functions."
-  else
-  
-    if [[ $BASECLASSNAME =~ .*ConstraintAutodiff*. ]] ;
-    then
-      addAutodiffSpecifics
-    else
-      # Get base class	
-      H_TXT=$(cat $BASE_H_PATH)
-      H_TXT="${H_TXT##*class $BASECLASSNAME :}"
-      BASECLASS_TXT="${H_TXT%%\n\};*}"
-
-      echo "class $BASECLASSNAME :$BASECLASS_TXT };" > "${WOLF_SCRIPTS_PATH}"/class.h
-
-      # H file Get Virtual function declarations with help
-      sed -e '/./{H;$!d;}' -e 'x;/ = 0;/!d;' "${WOLF_SCRIPTS_PATH}"/class.h > "${WOLF_SCRIPTS_PATH}"/tmp.h
-      sed -r 's/'" = 0"'//g' "${WOLF_SCRIPTS_PATH}"/tmp.h > "${WOLF_SCRIPTS_PATH}"/tmp2.h
-      sed -i -e "/virtual \~$CLASSNAME/r ${WOLF_SCRIPTS_PATH}/tmp2.h" "$NAME_H_PATH" 
-      rm "${WOLF_SCRIPTS_PATH}"/tmp.h	
-      rm ${WOLF_SCRIPTS_PATH}/tmp2.h
+  	if ! [ -z $BASE_DERIVES_FROM_AUTODIFF ] ;
+  	then
+    	echo "${YELLOW} [ WARN]: Base class $BASECLASSNAME derives from AUTODIFF template. New .h and .cpp files are left without inherited functions."
+  	else
+  		if [[ $BASECLASSNAME =~ .*ConstraintAutodiff*. ]] ;
+    	then
+      		addAutodiffSpecifics
+    	else
+      		# Get base class	
+      		H_TXT=$(cat $BASE_H_PATH)
+      		H_TXT="${H_TXT##*class $BASECLASSNAME :}"
+		    BASECLASS_TXT="${H_TXT%%\n\};*}"
+
+		    echo "class $BASECLASSNAME :$BASECLASS_TXT };" > "${WOLF_SCRIPTS_PATH}"/class.h
+
+      		# H file Get Virtual function declarations with help
+      		sed -e '/./{H;$!d;}' -e 'x;/ = 0;/!d;' "${WOLF_SCRIPTS_PATH}"/class.h > "${WOLF_SCRIPTS_PATH}"/tmp.h
+      		sed -r 's/'" = 0"'//g' "${WOLF_SCRIPTS_PATH}"/tmp.h > "${WOLF_SCRIPTS_PATH}"/tmp2.h
+      		sed -i -e "/virtual \~$CLASSNAME/r ${WOLF_SCRIPTS_PATH}/tmp2.h" "$NAME_H_PATH" 
+      		rm "${WOLF_SCRIPTS_PATH}"/tmp.h	
+      		rm ${WOLF_SCRIPTS_PATH}/tmp2.h
     
-      # CPP file  
-      FuncInBase=$(grep -e " = 0;" -e "=0;" "${WOLF_SCRIPTS_PATH}/class.h")
-      rm "${WOLF_SCRIPTS_PATH}"/class.h
+      		# CPP file  
+      		FuncInBase=$(grep -e " = 0;" -e "=0;" "${WOLF_SCRIPTS_PATH}/class.h")
+      		rm "${WOLF_SCRIPTS_PATH}"/class.h
     
-      D=";"   #Multi Character Delimiter
-      FuncList=($(echo $FuncInBase | sed -e 's/'"$D"'/\n/g' | while read line; do echo $line | sed 's/[\t ]/'"$D"'/g'; done))
-
-      for (( idx = $((${#FuncList[@]}-1)); idx > -1; idx-- )); do
-  	    TMP=$(echo ${FuncList[idx]} | sed -r 's/'"$D"'/ /g')
-        TMP=$(echo $TMP | sed -r 's/'"virtual"'/ /g')
-        TMP=$(echo $TMP | sed -r 's/'"=0"'/ /g')
-        TMP=$(echo $TMP | sed -r 's/'" = 0"'/ /g')
-        TXTH=${TMP%$TMP##*[![:space:]]}
-        TXTCPP_3=$(echo $TXTH | sed 's/.*(//g')
-        TXTCPP_2=$(echo $TXTH | sed 's/(.*//g' | sed 's/.* //g')
-        TXTCPP_1=$(echo $TXTH | sed 's/'"$TXTCPP_2"'.*//g')
+		    D=";"   #Multi Character Delimiter
+      		FuncList=($(echo $FuncInBase | sed -e 's/'"$D"'/\n/g' | while read line; do echo $line | sed 's/[\t ]/'"$D"'/g'; done))
+
+      		for (( idx = $((${#FuncList[@]}-1)); idx > -1; idx-- )); do
+  	    		TMP=$(echo ${FuncList[idx]} | sed -r 's/'"$D"'/ /g')
+		        TMP=$(echo $TMP | sed -r 's/'"virtual"'/ /g')
+        		TMP=$(echo $TMP | sed -r 's/'"=0"'/ /g')
+        		TMP=$(echo $TMP | sed -r 's/'" = 0"'/ /g')
+        		TXTH=${TMP%$TMP##*[![:space:]]}
+        		TXTCPP_3=$(echo $TXTH | sed 's/.*(//g')
+        		TXTCPP_2=$(echo $TXTH | sed 's/(.*//g' | sed 's/.* //g')
+        		TXTCPP_1=$(echo $TXTH | sed 's/'"$TXTCPP_2"'.*//g')
  
-        # CPP file
-        TXTCPP_3=$(echo "$TXTCPP_3" | sed -r 's/\*\*+/XXXX/g') ## remove **
-        TXTCPP_3=$(echo "$TXTCPP_3" | sed -r 's/\*+/YYYY/g') ## remove *
-        sed -i "/\} \/\/ namespace wolf/i ${TXTCPP_1}${CLASSNAME}::${TXTCPP_2}(${TXTCPP_3}" "$NAME_CPP_PATH"
-        if ! [[ $TXTCPP_1 =~ .*void*. ]]
-        then
-          sed -i "/${CLASSNAME}::${TXTCPP_2}(${TXTCPP_3}/a \{\n  std::cout << \"\\033[1;33m [WARN]:\\033[0m ${CLASSNAME}::${TXTCPP_2} is empty.\" << std::endl;\n  ${TXTCPP_1}return_var\{\}; \/\/TODO: fill this variable\n  return return_var;\n\}\n" "$NAME_CPP_PATH"
-        else 
-          sed -i "/${CLASSNAME}::${TXTCPP_2}(${TXTCPP_3}/a \{\n  std::cout << \"\\033[1;33m [WARN]:\\033[0m ${CLASSNAME}::${TXTCPP_2} is empty.\" << std::endl;\n\}\n" "$NAME_CPP_PATH"
-        fi
-        sed -i -r 's/'"XXXX"'/'"**"'/g' "$NAME_CPP_PATH" # add again **
-        sed -i -r 's/'"YYYY"'/'"*"'/g' "$NAME_CPP_PATH" # add again *
-      done    
-    fi
-  fi  
+        		# CPP file
+        		if ! [[ ${TXTCPP_2:0:1} == "_" ]] ## Avoid considering lines where its just a part of the declaration with initial input params _aa"
+        		then
+          			TXTCPP_3=$(echo "$TXTCPP_3" | sed -r 's/\*\*+/XXXX/g') ## remove **
+          			TXTCPP_3=$(echo "$TXTCPP_3" | sed -r 's/\*+/YYYY/g') ## remove *
+          			sed -i "/\} \/\/ namespace wolf/i ${TXTCPP_1}${CLASSNAME}::${TXTCPP_2}(${TXTCPP_3}" "$NAME_CPP_PATH"
+          			if ! [[ $TXTCPP_1 =~ .*void*. ]]
+          			then
+            			sed -i "/${CLASSNAME}::${TXTCPP_2}(${TXTCPP_3}/a \{\n  std::cout << \"\\033[1;33m [WARN]:\\033[0m ${CLASSNAME}::${TXTCPP_2} is empty.\" << std::endl;\n  ${TXTCPP_1}return_var\{\}; \/\/TODO: fill this variable\n  return return_var;\n\}\n" "$NAME_CPP_PATH"
+          			else 
+            			sed -i "/${CLASSNAME}::${TXTCPP_2}(${TXTCPP_3}/a \{\n  std::cout << \"\\033[1;33m [WARN]:\\033[0m ${CLASSNAME}::${TXTCPP_2} is empty.\" << std::endl;\n\}\n" "$NAME_CPP_PATH"
+          			fi
+          			sed -i -r 's/'"XXXX"'/'"**"'/g' "$NAME_CPP_PATH" # add again **
+          			sed -i -r 's/'"YYYY"'/'"*"'/g' "$NAME_CPP_PATH" # add again *
+    			fi
+      		done    
+    	fi
+  	fi  
 }
 
 updateCMakeLists()
 {	
-  CML_PATH="${WOLF_ROOT}/src/${TYPE}s/CMakeLists.txt"
+  	CML_PATH="${WOLF_ROOT}/src/${TYPE}s/CMakeLists.txt"
 
-  # Add Header source
-  Hsources=( $(grep -e ".h" "${CML_PATH}") )
-  NewH="\${CMAKE_CURRENT_SOURCE_DIR}/$NAME.h"
-  
-  # Check if already exists
-  EXISTS=0
-  for (( idx = 0; idx < ${#Hsources[@]}; idx++ )); do
-   if [ "${Hsources[idx]}" == "\${CMAKE_CURRENT_SOURCE_DIR}/"$NAME".h" ] ;
-   then
-     EXISTS=1
-   fi
-  done
-
-  if [ $EXISTS == 0 ] ;
-  then
-    Hsources=( "${Hsources[@]}" $NewH )
-    IFS=$'\n' 
-    sorted=($(sort <<<"${Hsources[*]}"))
-    unset IFS
-    SET_AFTER_POS=-2
+  	# Add Header source
+  	NewH="\${CMAKE_CURRENT_SOURCE_DIR}/$NAME.h"
+
+  	# get file names after conditionals ENDIF is the match
+  	sed '1,/ENDIF/d' "${CML_PATH}" > "${WOLF_SCRIPTS_PATH}"/tmp.h
+  	Hsources=( $(grep -e "\.h" "${WOLF_SCRIPTS_PATH}"/tmp.h) )
+  	rm "${WOLF_SCRIPTS_PATH}"/tmp.h
+    
+  	# Check if already exists
+  	EXISTS=0
+  	for (( idx = 0; idx < ${#Hsources[@]}; idx++ )); do
+   		if [ "${Hsources[idx]}" == "\${CMAKE_CURRENT_SOURCE_DIR}/"$NAME".h" ] ;
+   		then
+     		EXISTS=1
+   		fi
+  	done
+
+  	if [ $EXISTS == 0 ] ;
+  	then
+    	Hsources=( "${Hsources[@]}" $NewH )
+    	IFS=$'\n' 
+    	sorted=($(sort <<<"${Hsources[*]}"))
+    	unset IFS
+    	SET_AFTER_POS=-2
      
-    for (( idx = 0; idx < ${#sorted[@]}; idx++ )); do
-      if [ "${sorted[idx]}" == "\${CMAKE_CURRENT_SOURCE_DIR}/"$NAME".h" ] ;
-      then
-  	    SET_AFTER_POS=$(( idx-1 ))
-  	    if [ $SET_AFTER_POS == -1 ] ; 
-  	    then
-  	      if [ ${#sorted[@]} == 1 ] ;
-  	      then 
-  	        sed -i "\%HDRS_CONSTRAINT%a \  \${CMAKE_CURRENT_SOURCE_DIR}/$NAME.h" "$CML_PATH"
-  	      else
-    	    sed -i "\%${sorted[1]}%i \  \${CMAKE_CURRENT_SOURCE_DIR}/$NAME.h" "$CML_PATH"
-    	  fi
-  	    else
-  	  	  sed -i "\%${sorted[$SET_AFTER_POS]}%a \  \${CMAKE_CURRENT_SOURCE_DIR}/$NAME.h" "$CML_PATH"
-  	    fi
-      fi	  	
-    done
+    	for (( idx = 0; idx < ${#sorted[@]}; idx++ )); do
+      		if [ "${sorted[idx]}" == "\${CMAKE_CURRENT_SOURCE_DIR}/"$NAME".h" ] ;
+      		then
+  	    		SET_AFTER_POS=$(( idx-1 ))
+  	    		if [ $SET_AFTER_POS == -1 ] ; 
+  	    		then
+	  	      		if [ ${#sorted[@]} == 1 ] ;
+  		      		then 
+  	    	    		sed -i "\%HDRS_CONSTRAINT%a \  \${CMAKE_CURRENT_SOURCE_DIR}/$NAME.h" "$CML_PATH"
+  	      			else
+    	    			sed -i "\%${sorted[1]}%i \  \${CMAKE_CURRENT_SOURCE_DIR}/$NAME.h" "$CML_PATH"
+    	  			fi
+    			else
+  	  	  			sed -i "\%${sorted[$SET_AFTER_POS]}%a \  \${CMAKE_CURRENT_SOURCE_DIR}/$NAME.h" "$CML_PATH"
+  	    		fi
+      		fi	  	
+    	done
   
-    if ! [[ $BASECLASSNAME =~ .*ConstraintAutodiff*. ]] ;
-    then
-      # Add CPP source
-      Hsources=( $(grep -e ".cpp" "${CML_PATH}") )
-      NewCPP="\${CMAKE_CURRENT_SOURCE_DIR}/$NAME.cpp"
-      Hsources=( "${Hsources[@]}" $NewCPP )
-      IFS=$'\n' 
-      sorted=($(sort <<<"${Hsources[*]}"))
-      unset IFS
-      SET_AFTER_POS=-2
+		if ! [[ $BASECLASSNAME =~ .*ConstraintAutodiff*. ]] ;
+    	then
+    		# Add CPP source
+      		NewCPP="\${CMAKE_CURRENT_SOURCE_DIR}/$NAME.cpp"
       
-      for (( idx = 0; idx < ${#sorted[@]}; idx++ )); do
-        if [ "${sorted[idx]}" == "\${CMAKE_CURRENT_SOURCE_DIR}/"$NAME".cpp" ] ;
-        then
-          SET_AFTER_POS=$(( idx-1 ))
-  	      if [ $SET_AFTER_POS == -1 ] ; 
-  	      then
-  	        if [ ${#sorted[@]} == 1 ] ;
-  	        then 
-  	          sed -i "\%SRCS_CONSTRAINT%a \  \${CMAKE_CURRENT_SOURCE_DIR}/$NAME.cpp" "$CML_PATH"
-  	        else
-    	      sed -i "\%${sorted[1]}%i \  \${CMAKE_CURRENT_SOURCE_DIR}/$NAME.cpp" "$CML_PATH"
-    	    fi
-  	      else
-  	  	    sed -i "\%${sorted[$SET_AFTER_POS]}%a \  \${CMAKE_CURRENT_SOURCE_DIR}/$NAME.cpp" "$CML_PATH"
-  	      fi
-        fi	  	
-      done
-    fi  
-    echo "$CML_PATH"
-  else
-    echo ""
-  fi
+      		# get file names after conditionals ENDIF is the match
+      		sed '1,/ENDIF/d' "${CML_PATH}" > "${WOLF_SCRIPTS_PATH}"/tmp.h
+      		Hsources=( $(grep -e "\.cpp" "${WOLF_SCRIPTS_PATH}"/tmp.h) )
+      		rm "${WOLF_SCRIPTS_PATH}"/tmp.h
+      		Hsources=( "${Hsources[@]}" $NewCPP )
+
+      		IFS=$'\n' 
+      		sorted=($(sort <<<"${Hsources[*]}"))
+      		unset IFS
+      		SET_AFTER_POS=-2
+      
+      		for (( idx = 0; idx < ${#sorted[@]}; idx++ )); do
+        		if [ "${sorted[idx]}" == "\${CMAKE_CURRENT_SOURCE_DIR}/"$NAME".cpp" ] ;
+        		then
+          			SET_AFTER_POS=$(( idx-1 ))
+  	      			if [ $SET_AFTER_POS == -1 ] ; 
+  	      			then
+  	        			if [ ${#sorted[@]} == 1 ] ;
+  	        			then 
+  	          				sed -i "\%SRCS_CONSTRAINT%a \  \${CMAKE_CURRENT_SOURCE_DIR}/$NAME.cpp" "$CML_PATH"
+  	        			else
+	    	      			sed -i "\%${sorted[1]}%i \  \${CMAKE_CURRENT_SOURCE_DIR}/$NAME.cpp" "$CML_PATH"
+    		    		fi
+  	    	  		else
+  	  	    			sed -i "\%${sorted[$SET_AFTER_POS]}%a \  \${CMAKE_CURRENT_SOURCE_DIR}/$NAME.cpp" "$CML_PATH"
+	  	      		fi
+    	    	fi	  	
+      		done
+		fi  
+    	echo "$CML_PATH"
+	else
+    	echo ""
+  	fi
 }
 
 createGtest()
 {
-  # ===== Create gtest file =====
-  # Templates path
-  TEMPLATES_PATH=${WOLF_SCRIPTS_PATH}/templates
-
-  # Set the include and class names on the template files
-  sed 's/header_file/'"${TYPE}s\/${NAME}.h"'/g' "${TEMPLATES_PATH}"/gtest_template.cpp > "${TEMPLATES_PATH}"/tmp.cpp
-  sed 's/class_name/'"${CLASSNAME}"'/g' "${TEMPLATES_PATH}"/tmp.cpp > "${TEMPLATES_PATH}"/tmp2.cpp
-  rm "${TEMPLATES_PATH}"/tmp.cpp
-
-  FUNC_NAMES=
-  # Insert dummy tests for all methods
-  for (( idx = $((${#FuncList[@]}-1)); idx > -1; idx-- )); do
-    TMP=$(echo ${FuncList[idx]} | sed -r 's/'"$D"'/ /g')
-    TMP=$(echo $TMP | sed -r 's/'"virtual"'/ /g')
-    TMP=$(echo $TMP | sed -r 's/'"=0"'/ /g')
-    TMP=$(echo $TMP | sed -r 's/'" = 0"'/ /g')
-    TMP=${TMP%$TMP##*[![:space:]]}
-    TMP=$(echo $TMP | sed 's/(.*//g' | sed 's/.* //g')
-    if ! grep -q "$TMP" "${TEMPLATES_PATH}"/tmp2.cpp
-    then
-      sed -i "/\[Class methods\]/a TEST($CLASSNAME, $TMP)\n\{\n  std::cout << \"\\033[1;33m [WARN]:\\033[0m gtest for ${CLASSNAME} ${TMP} is empty.\" << std::endl;\n\}\n" "${TEMPLATES_PATH}"/tmp2.cpp
-    fi
-  done
-
-  GTEST_PATH="${WOLF_ROOT}"/src/test/gtest_${NAME}.cpp
-  mv "${TEMPLATES_PATH}"/tmp2.cpp $GTEST_PATH
+  	# ===== Create gtest file =====
+  	# Templates path
+  	TEMPLATES_PATH=${WOLF_SCRIPTS_PATH}/templates
+
+  	# Set the include and class names on the template files
+  	sed 's/header_file/'"${TYPE}s\/${NAME}.h"'/g' "${TEMPLATES_PATH}"/gtest_template.cpp > "${TEMPLATES_PATH}"/tmp.cpp
+  	sed 's/class_name/'"${CLASSNAME}"'/g' "${TEMPLATES_PATH}"/tmp.cpp > "${TEMPLATES_PATH}"/tmp2.cpp
+  	rm "${TEMPLATES_PATH}"/tmp.cpp
+
+  	FUNC_NAMES=
+  	# Insert dummy tests for all methods
+  	for (( idx = $((${#FuncList[@]}-1)); idx > -1; idx-- )); do
+    	TMP=$(echo ${FuncList[idx]} | sed -r 's/'"$D"'/ /g')
+    	TMP=$(echo $TMP | sed -r 's/'"virtual"'/ /g')
+    	TMP=$(echo $TMP | sed -r 's/'"=0"'/ /g')
+    	TMP=$(echo $TMP | sed -r 's/'" = 0"'/ /g')
+    	TMP=${TMP%$TMP##*[![:space:]]}
+    	TMP=$(echo $TMP | sed 's/(.*//g' | sed 's/.* //g')
+    	if ! grep -q "$TMP" "${TEMPLATES_PATH}"/tmp2.cpp
+    	then
+     		if ! [[ ${TMP:0:1} == "_" ]] ## Avoid considering lines where its just a part of the declaration with initial input params _aa"
+      		then
+        		sed -i "/\[Class methods\]/a TEST($CLASSNAME, $TMP)\n\{\n  std::cout << \"\\033[1;33m [WARN]:\\033[0m gtest for ${CLASSNAME} ${TMP} is empty.\" << std::endl;\n\}\n" "${TEMPLATES_PATH}"/tmp2.cpp
+      		fi
+    	fi
+  	done
+
+  	GTEST_PATH="${WOLF_ROOT}"/src/test/gtest_${NAME}.cpp
+  	mv "${TEMPLATES_PATH}"/tmp2.cpp $GTEST_PATH
 }
 
 updateCMakeListsGTest()
 {
-  CML_GTEST_PATH="${WOLF_ROOT}/src/test/CMakeLists.txt"
-
-  DERIVED_TXT=$(cat $CML_GTEST_PATH  | sed '/^#/!d')
-  DERIVED_TXT="${DERIVED_TXT##*\# ------- Now Derived classes ----------}"
-  DERIVED_TXT="${DERIVED_TXT%%\# ------- Now Core classes Serialization ----------*}"
-  DERIVED_TXT=$(echo "$DERIVED_TXT" | sed '/^\s*$/d')
-  IFS=$'\n'
-  DERIVED_TXT=($(echo "$DERIVED_TXT" | sed -r 's/'"#\s"'/ /g'))
-  for (( idx = 0; idx < ${#DERIVED_TXT[@]}; idx++ )); do
-    DERIVED_TXT[idx]=${DERIVED_TXT[idx]#" "}
-    DERIVED_TXT[idx]=$(echo ${DERIVED_TXT[idx]} | sed 's/ .*//')
-  done
-
-  New="${CLASSNAME}"
-
-  # Check if already exists
-  EXISTS=0
-  for (( idx = 0; idx < ${#DERIVED_TXT[@]}; idx++ )); do
-   if [ "${DERIVED_TXT[idx]}" == "$New" ] ;
-   then
-     EXISTS=1
-   fi
-  done
+  	CML_GTEST_PATH="${WOLF_ROOT}/src/test/CMakeLists.txt"
+
+	DERIVED_TXT=$(cat $CML_GTEST_PATH  | sed '/^#/!d')
+  	DERIVED_TXT="${DERIVED_TXT##*\# ------- Now Derived classes ----------}"
+  	DERIVED_TXT="${DERIVED_TXT%%\# ------- Now Core classes Serialization ----------*}"
+  	DERIVED_TXT=$(echo "$DERIVED_TXT" | sed '/^\s*$/d')
+  	IFS=$'\n'
+  	DERIVED_TXT=($(echo "$DERIVED_TXT" | sed -r 's/'"#\s"'/ /g'))
+  	for (( idx = 0; idx < ${#DERIVED_TXT[@]}; idx++ )); do
+    	DERIVED_TXT[idx]=${DERIVED_TXT[idx]#" "}
+    	DERIVED_TXT[idx]=$(echo ${DERIVED_TXT[idx]} | sed 's/ .*//')
+  	done
+
+  	New="${CLASSNAME}"
+
+	# Check if already exists
+  	EXISTS=0
+  	for (( idx = 0; idx < ${#DERIVED_TXT[@]}; idx++ )); do
+   		if [ "${DERIVED_TXT[idx]}" == "$New" ] ;
+   		then
+     		EXISTS=1
+   		fi
+  	done
   
-  if [ $EXISTS == 0 ] ;
-  then
-    DERIVED_TXT=( "${DERIVED_TXT[@]}" $New )
-    IFS=$'\n' 
-    sorted=($(sort <<<"${DERIVED_TXT[*]}"))
-    unset IFS
-    SET_BEFORE_POS=-2
-    for (( idx = 0; idx < ${#sorted[@]}; idx++ )); do
-      if [ "${sorted[idx]}" == "$New" ] ;
-      then
-        SET_BEFORE_POS=$(( idx+1 ))
-        if [ $SET_BEFORE_POS == ${#sorted[@]} ] ; 
-        then
-          SET_BEFORE_POS=$(( idx ))
-        fi
-      fi	  	
-    done
-    if [[ $SET_BEFORE_POS = $(( ${#sorted[@]}-1 )) ]] ;    
-    then
-      sed -i "\%------- Now Core classes Serialization ----------%i # $New test\nwolf_add_gtest(gtest_$NAME gtest_$NAME.cpp)\ntarget_link_libraries(gtest_$NAME \$\{PROJECT_NAME\})\n" "${CML_GTEST_PATH}"
-    else
-      sed -i "\%${sorted[$SET_BEFORE_POS]}%i # $New test\nwolf_add_gtest(gtest_$NAME gtest_$NAME.cpp)\ntarget_link_libraries(gtest_$NAME \$\{PROJECT_NAME\})\n" "${CML_GTEST_PATH}"
-    fi
-    echo "$CML_GTEST_PATH"
-  else
-    echo ""
+  	if [ $EXISTS == 0 ] ;
+  	then
+    	DERIVED_TXT=( "${DERIVED_TXT[@]}" $New )
+    	IFS=$'\n' 
+    	sorted=($(sort <<<"${DERIVED_TXT[*]}"))
+    	unset IFS
+    	SET_BEFORE_POS=-2
+    	for (( idx = 0; idx < ${#sorted[@]}; idx++ )); do
+      		if [ "${sorted[idx]}" == "$New" ] ;
+      		then
+        		SET_BEFORE_POS=$(( idx+1 ))
+        		if [ $SET_BEFORE_POS == ${#sorted[@]} ] ; 
+        		then
+          			SET_BEFORE_POS=$(( idx ))
+        		fi
+      		fi	  	
+    	done
+    	if [[ $SET_BEFORE_POS = $(( ${#sorted[@]}-1 )) ]] ;    
+    	then
+      		sed -i "\%------- Now Core classes Serialization ----------%i # $New test\nwolf_add_gtest(gtest_$NAME gtest_$NAME.cpp)\ntarget_link_libraries(gtest_$NAME \$\{PROJECT_NAME\})\n" "${CML_GTEST_PATH}"
+    	else
+      		sed -i "\%${sorted[$SET_BEFORE_POS]}%i # $New test\nwolf_add_gtest(gtest_$NAME gtest_$NAME.cpp)\ntarget_link_libraries(gtest_$NAME \$\{PROJECT_NAME\})\n" "${CML_GTEST_PATH}"
+    	fi
+    	echo "$CML_GTEST_PATH"
+  	else
+    	echo ""
   fi
 }
 
diff --git a/wolf_scripts/generic_func/user_menu.sh b/wolf_scripts/generic_func/user_menu.sh
index f873d755b7fcbcd8ede51d52af06d0ceefc22dda..11c74a27a2b432efbdc91701e53354ed270d8e32 100755
--- a/wolf_scripts/generic_func/user_menu.sh
+++ b/wolf_scripts/generic_func/user_menu.sh
@@ -3,60 +3,60 @@ BASE=
 TYPE=
 while getopts ":t:n:b:" OPTION
 do
-  case ${OPTION} in
-    t)
-       TYPE=${OPTARG}
-       ;;
-    n)
-       NAME=${OPTARG}
-       ;;
-    b)
-       BASE=${OPTARG}
-       ;;
-    *) 
-       showHelp 
-       exit
-       ;;
-  esac
+	case ${OPTION} in
+    	t)
+       		TYPE=${OPTARG}
+       		;;
+    	n)
+       		NAME=${OPTARG}
+       		;;
+    	b)
+       		BASE=${OPTARG}
+       		;;
+    	*) 
+       		showHelp 
+       		exit
+       		;;
+  	esac
 done
 if [ -z "$TYPE" ] && [ -z "$NAME" ] && [ -z "$BASE" ]
 then
-   showHelp	
-   exit
+	showHelp	
+   	exit
 fi
 if [ -z "$TYPE" ] ;
 then
-   echo ""
-   echo "${RED}  [ERROR]: Missing TYPE value (-t).${NC}"
-   echo ""
-   showHelp	
-   exit
+   	echo ""
+   	echo "${RED}  [ERROR]: Missing TYPE value (-t).${NC}"
+   	echo ""
+   	showHelp	
+   	exit
 fi
 
 if [ -z "$NAME" ] ;
 then
-   echo ""
-   echo "${RED}  [ERROR]: Missing NAME value (-n).${NC}"
-   echo ""
-   showHelp	
-   exit
+   	echo ""
+   	echo "${RED}  [ERROR]: Missing NAME value (-n).${NC}"
+   	echo ""
+   	showHelp	
+   	exit
 fi
 if [ -z "$BASE" ] ;
 then
-   echo ""
-   echo "${RED}  [ERROR]: Missing BASE value (-b).${NC}"
-   echo ""
-   showHelp	
-   exit
+   	echo ""
+   	echo "${RED}  [ERROR]: Missing BASE value (-b).${NC}"
+   	echo ""
+   	showHelp	
+   	exit
 fi
 
-if ! [ "$TYPE" == "capture" ] && ! [ "$TYPE" == "constraint" ] && ! [ "$TYPE" == "feature" ] && ! [ "$TYPE" == "processor" ] && ! [ "$TYPE" == "sensor" ]
+if ! [ "$TYPE" == "capture" ] && ! [ "$TYPE" == "constraint" ] && ! [ "$TYPE" == "feature" ] && ! [ "$TYPE" == "landmark" ] && ! [ "$TYPE" == "processor" ] && ! [ "$TYPE" == "sensor" ]
 then
-   echo ""
-   echo "${RED} --> Incorrect type \"$TYPE\". Please check the following instructions: ${NC}"
-   echo ""
-   showHelp
-   exit 1
+   	echo ""
+   	echo "${RED} --> Incorrect type \"$TYPE\". Please check the following instructions: ${NC}"
+   	echo ""
+   	showHelp
+   	exit 1
 fi
 
 NAME=$(LowerCase $NAME)
@@ -81,12 +81,12 @@ BASECLASSNAME=$TYPE_CAP1$(echo "$(echo "$BASECLASSNAME" | sed 's/.*/\u&/')")
 
 if ! [[ $NAME =~ $TYPE ]] ;
 then
-  if [[ $BASE =~ .*base*. ]] ;
-  then
-    NAME="$TYPE"_"$NAME";  
-  else
-    NAME="$TYPE"_"$BASE"_"$NAME";
-  fi
+  	if [[ $BASE =~ .*base*. ]] ;
+  	then
+    	NAME="$TYPE"_"$NAME";  
+  	else
+    	NAME="$TYPE"_"$BASE"_"$NAME";
+  	fi
 fi
 if ! [[ $BASE =~ $TYPE ]] ;
 then
diff --git a/wolf_scripts/wolf_create.sh b/wolf_scripts/wolf_create.sh
index caa95ec03ee55f33da3409daef37a1598b498db1..e5f4184f686a012009a81a6724811847ff353cb3 100755
--- a/wolf_scripts/wolf_create.sh
+++ b/wolf_scripts/wolf_create.sh
@@ -33,10 +33,10 @@ echo "- Generating CPP and H files."
 BASE_H_PATH=$(getFilePath $BASE.h)
 if [ -z "$BASE_H_PATH" ]
 then
-  echo ""
-  echo "${RED}  [ERROR]: Cannot find header file for base class ${BASE}.${NC}"
-  echo ""
-  exit
+  	echo ""
+  	echo "${RED}  [ERROR]: Cannot find header file for base class ${BASE}.${NC}"
+  	echo ""
+  	exit
 fi
 
 # Create Header and CPP files
@@ -56,9 +56,10 @@ echo "- Modifying CMakeLists.txt to include CPP and H files."
 DONE=$(updateCMakeLists)
 if [ -z "$DONE" ]
 then
-  echo "${YELLOW} \--x [WARN]: Not necessary. File entries already existing in CMakeLists.txt.${NC}"
+  	echo "${YELLOW} \--x [WARN]: Not necessary. File entries already existing in CMakeLists.txt.${NC}"
 else
-  echo "${GREEN} \--> Updated ${DONE} file.${NC}"
+  	echo "${GREEN} \--> Updated ${DONE} file.${NC}"
+  	echo "${YELLOW} \--> [WARN] Consider adding conditional clues [IF/ELSE] in the CMakeLists.txt if you use external dependencies, hence avoiding compilation if you don't have them installed${NC}"
 fi
 
 # ===== Create gtest =====
@@ -79,9 +80,10 @@ echo "- Modifying CMakeLists.txt to include gtest files."
 DONE=$(updateCMakeListsGTest)
 if [ -z "$DONE" ]
 then
-  echo "${YELLOW} \--x [WARN]: Not necessary. gtest file entry already existing in CMakeLists.txt.${NC}"
+  	echo "${YELLOW} \--x [WARN]: Not necessary. gtest file entry already existing in CMakeLists.txt.${NC}"
 else
-  echo "${GREEN} \--> Updated ${DONE} file.${NC}"
+  	echo "${GREEN} \--> Updated ${DONE} file.${NC}"
+ 	echo "${YELLOW} \--> [WARN] Consider adding conditional clues [IF/ELSE] in the CMakeLists.txt if you use external dependencies, hence avoiding compilation if you don't have them installed${NC}"
 fi
 
 #============================================