diff --git a/CMakeLists.txt b/CMakeLists.txt
index ea795503d6790c38d60fc8e95e4bf7ac48788ea7..e701cc6d22732b9695a778794c44515e5b0833be 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,62 +1,53 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3)
+CMAKE_MINIMUM_REQUIRED(VERSION 3.1)
 
+# Project properties
 SET(PROJECT_ORG pyrene-dev)
 SET(PROJECT_NAME talos_data)
 SET(PROJECT_DESCRIPTION "Talos urdf model, srdf model and other data")
 SET(PROJECT_URL "https://gepgitlab.laas.fr/${PROJECT_ORG}/${PROJECT_NAME}")
 
+# Project options
+OPTION(SUFFIX_SO_VERSION "Suffix library name with its version" ON)
+
+# Project configuration
 SET(PROJECT_USE_CMAKE_EXPORT TRUE)
-SET(CXX_DISABLE_WERROR True)
+SET(CXX_DISABLE_WERROR TRUE)
 SET(CMAKE_CXX_STANDARD 11)
+SET(PACKAGE_EXTRA_MACROS "set(TALOS_DATA_PREFIX ${CMAKE_INSTALL_PREFIX})")
 
-#include(cmake/ros.cmake)
+# JRL-cmakemodule setup
 INCLUDE(cmake/base.cmake)
 
-# Specify the project.
-COMPUTE_PROJECT_ARGS(PROJECT_ARGS LANGUAGES CXX)
+# Project definition
+COMPUTE_PROJECT_ARGS(PROJECT_ARGS LANGUAGES CXX C)
 PROJECT(${PROJECT_NAME} ${PROJECT_ARGS})
 
-find_package(catkin REQUIRED COMPONENTS
-  roscpp)
-
-catkin_package(
-  #  INCLUDE_DIRS include
-  #  LIBRARIES talos_description
-  #  CATKIN_DEPENDS roscpp
-  #  DEPENDS system_lib
-  )
-
-# Find xml_reflection
+# Project dependencies
 ADD_PROJECT_DEPENDENCY(urdfdom REQUIRED)
 ADD_PROJECT_DEPENDENCY(gazebo REQUIRED)
 ADD_PROJECT_DEPENDENCY(roscpp)
+find_package(catkin REQUIRED COMPONENTS roscpp)
 
-# Needed due to the CMakeTarget from gazebo.
-INCLUDE_DIRECTORIES(${GAZEBO_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES(${catkin_INCLUDE_DIRS})
-
-
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
-
-
-SET(LIBRARY_NAME ${PROJECT_NAME})
+# Main Library
+SET(${PROJECT_NAME}_HEADERS
+  )
 
-ADD_LIBRARY(${PROJECT_NAME}
-  SHARED
+SET(${PROJECT_NAME}_SOURCES
   src/SpringPlugin.cc
   )
 
-TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PRIVATE ${GAZEBO_INCLUDE_DIRS})
-TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PRIVATE ${catkin_INCLUDE_DIRS})
+ADD_LIBRARY(${PROJECT_NAME} SHARED
+  ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS})
+TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PRIVATE ${GAZEBO_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS})
 
-INSTALL(TARGETS
-  ${PROJECT_NAME}
-  EXPORT ${TARGETS_EXPORT_NAME}
-  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
-  LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
-  )
+IF(SUFFIX_SO_VERSION)
+  SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
+ENDIF(SUFFIX_SO_VERSION)
+
+INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib)
 
 FOREACH(dir config gazebo meshes robots urdf scripts srdf launch)
-  INSTALL(DIRECTORY ${dir}/
-    DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/${dir})
+  INSTALL(DIRECTORY ${dir} DESTINATION share/${PROJECT_NAME})
 ENDFOREACH(dir)
+
+INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME})
diff --git a/cmake b/cmake
index 61344038b1352d5a8de1e20db710c83be805d2eb..321eb1ccf1d94570eb564f3659b13ef3ef82239e 160000
--- a/cmake
+++ b/cmake
@@ -1 +1 @@
-Subproject commit 61344038b1352d5a8de1e20db710c83be805d2eb
+Subproject commit 321eb1ccf1d94570eb564f3659b13ef3ef82239e
diff --git a/package.xml b/package.xml
index b7a924e7d6af7702e6204e1e7191af45b777364e..3666cd1e7c2315dbb61f281eaff8032509832429 100644
--- a/package.xml
+++ b/package.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <package format="2">
   <name>talos_data</name>
-  <version>1.2.0</version>
+  <version>1.2.1</version>
   <description>The talos_data package</description>
 
   <maintainer email="olivier.stasse@laas.fr">Olivier Stasse</maintainer>
@@ -15,11 +15,11 @@
   <exec_depend>talos_description_calibration</exec_depend>
   <exec_depend>talos_description_inertial</exec_depend>
   <exec_depend>roscpp</exec_depend>
-  
+
   <test_depend>rostest</test_depend>
   <test_depend>urdf_test</test_depend>
   <test_depend>roscpp</test_depend>
-  
+
   <export>
   </export>
 
diff --git a/scripts/start_talos_gazebo_16_04.py b/scripts/start_talos_gazebo_16_04.py
new file mode 100644
index 0000000000000000000000000000000000000000..3a73661699284d476789e8a71c5552584fdc30bb
--- /dev/null
+++ b/scripts/start_talos_gazebo_16_04.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+# O. Stasse 17/01/2020
+# LAAS, CNRS
+
+# This file is a temporary fix for the ubuntu version 16.04 of the script start_talos_gazebo.py
+# The path to talos_data cannot be retreive using the rospkg.RosPack() and get_path('talos_data') in 16.04.
+# This should be investigated (see issue #4 "Hardcoded talos_data path for 16.04 in script start_talos_gazebo_16_04.py")
+
+import os
+import rospy
+import time
+import roslaunch
+from std_srvs.srv import Empty
+
+# Start roscore
+import subprocess
+roscore = subprocess.Popen('roscore')
+time.sleep(1)
+
+# Start talos_gazebo
+rospy.init_node('starting_talos_gazebo', anonymous=True)
+uuid = roslaunch.rlutil.get_or_generate_uuid(None, False)
+roslaunch.configure_logging(uuid)
+
+launch_gazebo_alone = roslaunch.parent.ROSLaunchParent(uuid, ["/opt/openrobots/share/talos_data/launch/talos_gazebo_alone.launch"])
+launch_gazebo_alone.start()
+rospy.loginfo("talos_gazebo_alone started")
+
+rospy.wait_for_service("/gazebo/pause_physics")
+gazebo_pause_physics = rospy.ServiceProxy('/gazebo/pause_physics', Empty)
+gazebo_pause_physics()
+
+time.sleep(3)
+# Spawn talos model in gazebo
+launch_gazebo_spawn_hs = roslaunch.parent.ROSLaunchParent(uuid, ["/opt/openrobots/share/talos_data/launch/talos_gazebo_spawn_hs.launch"])
+launch_gazebo_spawn_hs.start()
+rospy.loginfo("talos_gazebo_spawn_hs started")
+
+rospy.wait_for_service("/gains/arm_left_1_joint/set_parameters")
+time.sleep(3)
+gazebo_unpause_physics = rospy.ServiceProxy('/gazebo/unpause_physics', Empty)
+gazebo_unpause_physics()
+
+# Start roscontrol
+launch_bringup = roslaunch.parent.ROSLaunchParent(uuid, ["/opt/openrobots/share/talos_bringup/launch/talos_bringup.launch"])
+launch_bringup.start()
+rospy.loginfo("talos_bringup started")
+
+# # Start sot
+# Start sot in another terminal with "roslaunch roscontrol_sot_talos sot_talos_controller_gazebo.launch"
+# in order to have the logs saved. Otherwise the data are not correctly dumped when the process is killed.
+
+
+rospy.spin()
+