diff --git a/create_driver_package.sh b/create_driver_package.sh
index 109d76caae1bdfebeb5ff263087e442264c2d9ef..806e64673ab24223c6e44df50968f2ffc7acd8d7 100755
--- a/create_driver_package.sh
+++ b/create_driver_package.sh
@@ -176,20 +176,25 @@ sed -e "s/template_driver/${driver_filename}/g" \
 eval "chmod 775 ${project_name}/cfg/${basename}.cfg"
 echo "Creating ${basename}.cfg file..."
 echo ""
+
+################################################################################
+#create launch/config directory
+mkdir -p ${project_name}/launch/
+
+sed -e "s/template/${project_name}/g" <${IRI_ROS_SCRIPTS_PATH}/common_templates/node.launch >"${project_name}/launch/node.launch"
+sed -e "s/template/${project_name}/g" <${IRI_ROS_SCRIPTS_PATH}/common_templates/test.launch >"${project_name}/launch/test.launch"
+
+mkdir -p ${project_name}/config/
+cp ${IRI_ROS_SCRIPTS_PATH}/common_templates/params.yaml ${project_name}/config/params.yaml
+################################################################################
+
+
+################################################################################
+#add license and readme
+cp ${IRI_ROS_SCRIPTS_PATH}/common_templates/LICENSE ${project_name}/LICENSE
+
+sed -e "s/template/${project_name}/g" < ${IRI_ROS_SCRIPTS_PATH}/common_templates/README.md > "${project_name}/README.md"
 ################################################################################
-+#create launch directory
-+mkdir -p ${project_name}/launch/
- 
--echo ""
-+sed -e "s/template/${project_name}/g" <${temps_folder}/node.launch >"${project_name}/launch/node.launch"
-+sed -e "s/template/${project_name}/g" <${temps_folder}/test.launch >"${project_name}/launch/test.launch"
-+################################################################################
-+#add license and readme
-+cp ${IRI_ROS_SCRIPTS_PATH}/common_templates/LICENSE ${project_name}/LICENSE
-+
-+sed -e "s/template/${project_name}/g" < ${temps_folder}/README.md > "${project_name}/README.md"
-+
-+################################################################################
 
 echo ""
 echo "Project ${project_name} has been successfully created!!"
diff --git a/driver_templates/template_driver.cfg b/driver_templates/template_driver.cfg
index e3f3bae720f4628831127f6b4e2388f21d1bf3e7..9fb9032377145d5eb9269965b3f9ac53f3562593 100644
--- a/driver_templates/template_driver.cfg
+++ b/driver_templates/template_driver.cfg
@@ -38,7 +38,7 @@ from dynamic_reconfigure.parameter_generator_catkin import *
 
 gen = ParameterGenerator()
 
-#       Name                       Type       Reconfiguration level            Description                       Default   Min   Max
-#gen.add("velocity_scale_factor",  double_t,  SensorLevels.RECONFIGURE_STOP,   "Maximum velocity scale factor",  0.5,      0.0,  1.0)
+#       Name     Type       Reconf.level Description             Default Min   Max
+gen.add("rate",  double_t,  0,           "Main loop rate (Hz)",  10.0,   0.1, 1000.0)
 
 exit(gen.generate(PACKAGE, "TemplateDriver", "Template"))
diff --git a/driver_templates/template_driver_node.cpp b/driver_templates/template_driver_node.cpp
index 091ae6985974cca2f100290596100982c3b2bd9c..39c7411f0130df03d94a921965beaded3333c77b 100644
--- a/driver_templates/template_driver_node.cpp
+++ b/driver_templates/template_driver_node.cpp
@@ -4,7 +4,12 @@ TemplateNode::TemplateNode(ros::NodeHandle &nh) :
   iri_base_driver::IriBaseNodeDriver<TemplateDriver>(nh)
 {
   //init class attributes if necessary
-  //this->setRate(10);//in [Hz]
+  if(!this->private_node_handle_.getParam("rate", this->config_.rate))
+  {
+    ROS_WARN("TemplateNode::TemplateNode: param 'rate' not found");
+  }
+  else
+    this->setRate(this->config_.rate);
 
   // [init publishers]
   
@@ -23,6 +28,7 @@ void TemplateNode::mainNodeThread(void)
 {
   //lock access to driver if necessary
   this->driver_.lock();
+  ROS_INFO("TemplateNode::mainNodeThread");
 
   // [fill msg Header if necessary]
 
@@ -60,6 +66,10 @@ void TemplateNode::addNodeDiagnostics(void)
 
 void TemplateNode::node_config_update(Config& new_cfg, uint32_t level)
 {
+  this->driver_.lock();
+  if(new_cfg.rate!=this->getRate())
+    this->setRate(new_cfg.rate);
+  this->driver_.unlock();
 }
 
 TemplateNode::~TemplateNode(void)