diff --git a/wolf_scripts/generic_func/functions.sh b/wolf_scripts/generic_func/functions.sh
index daa69897a05714e07ee5aa26891d4bbbcb874cf6..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}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 ""
+  	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,449 +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
-
-  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
+  	# 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
-        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  
+        		# 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
-  NewH="\${CMAKE_CURRENT_SOURCE_DIR}/$NAME.h"
+  	# 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
+  	# 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
+  	# 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
-      NewCPP="\${CMAKE_CURRENT_SOURCE_DIR}/$NAME.cpp"
+		if ! [[ $BASECLASSNAME =~ .*ConstraintAutodiff*. ]] ;
+    	then
+    		# Add CPP source
+      		NewCPP="\${CMAKE_CURRENT_SOURCE_DIR}/$NAME.cpp"
       
-      # 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
+      		# 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
+      		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
-      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
+  	# ===== 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
 }