diff --git a/CMakeLists.txt b/CMakeLists.txt
index 30d5d68f61d01f6373e64cc076c5d9bbbc5d99fb..da9f297e2e1e91ad17fd25fde9ac42523eb43756 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,7 +7,8 @@ if(COMMAND cmake_policy)
 endif(COMMAND cmake_policy)
 
 # The project name and the type of project
-PROJECT(segway-rmp-400)
+PROJECT(segway_rmp_400)
+SET(PACKAGE_NAME segway-rmp-400)
 
 SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin)
 SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib)
@@ -72,22 +73,25 @@ ELSE(UNIX)
   )
 ENDIF(UNIX)
 
-
 IF (UNIX)
-  SET(CPACK_PACKAGE_FILE_NAME "iri-${PROJECT_NAME}-dev-${CPACK_PACKAGE_VERSION}${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
-  SET(CPACK_PACKAGE_NAME "iri-${PROJECT_NAME}-dev")
-  SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Part of IRI-laboratory libraries. More information at http://wikiri.upc.es/index.php/Robotics_Lab")
-  SET(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
-  SET(CPACK_GENERATOR "DEB")
-  SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "galenya - labrobotica@iri.upc.edu")
-  SET(CPACK_SET_DESTDIR "ON")  # Necessary because of the absolute install paths
-  SET(CPACK_DEBIAN_PACKAGE_DEPENDS "iri-iriutils-dev (>= 1.0~${DISTRIB}), iri-comm-dev (>= 1.0~${DISTRIB}), iri-segway-rmp-200-dev (>= 1.0~${DISTRIB})")
-
-  INCLUDE(CPack)
-ELSE(UNIX)
-  ADD_CUSTOM_COMMAND(
-    COMMENT "packaging only implemented in unix"
-    TARGET  uninstall
-  )
-ENDIF(UNIX)
-
+    SET(CPACK_PACKAGE_FILE_NAME "iri-${PACKAGE_NAME}-dev-${CPACK_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
+    SET(CPACK_PACKAGE_NAME "iri-${PACKAGE_NAME}-dev")
+    SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Part of IRI-laboratory libraries. More information at https://gitlab.iri.upc.edu/labrobotica")
+    SET(CPACK_PACKAGING_INSTALL_PREFIX /usr)
+    SET(CPACK_GENERATOR "DEB")
+    SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "labrobotica - labrobotica@iri.upc.edu")
+
+  # Uncomment to add the necessary mantainer scripts
+  #   SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/scripts/debian/preinst;${CMAKE_SOURCE_DIR}/scripts/debian/postinst;${CMAKE_SOURCE_DIR}/scripts/debian/prerm;${CMAKE_SOURCE_DIR}/scripts/debian/postrm")
+
+  # Uncomment to add dependencies comma separated
+  # SET(CPACK_DEBIAN_PACKAGE_DEPENDS "iri-<package_name>-dev (>= 1.0~${DISTRIB})")
+    SET(CPACK_DEBIAN_PACKAGE_DEPENDS "iri-iriutils-dev (>= 1.0~${DISTRIB}), iri-comm-dev (>= 1.0~${DISTRIB})")
+
+    INCLUDE(CPack)
+  ELSE(UNIX)
+    ADD_CUSTOM_COMMAND(
+      COMMENT "packaging only implemented in unix"
+      TARGET  uninstall
+    )
+  ENDIF(UNIX)
\ No newline at end of file
diff --git a/Findsegway_rmp_400.cmake b/Findsegway_rmp_400.cmake
index a95fa4da46921ce014311394dc92bcaefd633326..d1502fd183998df5b157c4a907d2ed9e81ec96d2 100644
--- a/Findsegway_rmp_400.cmake
+++ b/Findsegway_rmp_400.cmake
@@ -1,20 +1,26 @@
-FIND_PATH(segway_rmp_400_INCLUDE_DIR segway_RMP400.h segway_RMP400_exceptions.h /usr/include/iridrivers /usr/local/include/iridrivers)
+SET(name segway_rmp_400)
+#edit the following line to add the librarie's header files
+SET(header_files segway_RMP400.h segway_RMP400_exceptions.h)
 
-FIND_LIBRARY(segway_rmp_400_LIBRARY
-    NAMES segway_rmp_400
-    PATHS /usr/lib/iridrivers /usr/local/lib /usr/local/lib/iridrivers) 
+FIND_PATH(${name}_INCLUDE_DIRS ${header_files} /usr/include/iri/${name} /usr/local/include/iri/${name})
 
-IF (segway_rmp_400_INCLUDE_DIR AND segway_rmp_400_LIBRARY)
-   SET(segway_rmp_400_FOUND TRUE)
-ENDIF (segway_rmp_400_INCLUDE_DIR AND segway_rmp_400_LIBRARY)
+FIND_LIBRARY(${name}_LIBRARIES
+    NAMES ${name}
+    PATHS /usr/lib /usr/lib/iri/${name} /usr/local/lib /usr/local/lib/iri/${name})
 
-IF (segway_rmp_400_FOUND)
-   IF (NOT segway_rmp_400_FIND_QUIETLY)
-      MESSAGE(STATUS "Found Segway RMP400 driver: ${segway_rmp_400_LIBRARY}")
-   ENDIF (NOT segway_rmp_400_FIND_QUIETLY)
-ELSE (segway_rmp_400_FOUND)
-   IF (segway_rmp_400_FIND_REQUIRED)
-      MESSAGE(FATAL_ERROR "Could not find segway RMP200 driver")
-   ENDIF (segway_rmp_400_FIND_REQUIRED)
-ENDIF (segway_rmp_400_FOUND)
+SET(${name}_INCLUDE_DIR ${${name}_INCLUDE_DIRS})
+SET(${name}_LIBRARY     ${${name}_LIBRARIES})
 
+IF (${name}_INCLUDE_DIRS AND ${name}_LIBRARIES)
+   SET(${name}_FOUND TRUE)
+ENDIF (${name}_INCLUDE_DIRS AND ${name}_LIBRARIES)
+
+IF (${name}_FOUND)
+   IF (NOT ${name}_FIND_QUIETLY)
+      MESSAGE(STATUS "Found ${name}: ${${name}_LIBRARIES}")
+   ENDIF (NOT ${name}_FIND_QUIETLY)
+ELSE (${name}_FOUND)
+   IF (${name}_FIND_REQUIRED)
+      MESSAGE(FATAL_ERROR "Could not find ${name}")
+   ENDIF (${name}_FIND_REQUIRED)
+ENDIF (${name}_FOUND)
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..997ae5d4fe6e450f2f274f995778b8dd51aa4934
--- /dev/null
+++ b/README.md
@@ -0,0 +1,136 @@
+segway_rmp_400 library                         {#mainpage}
+============
+
+## Description
+
+This driver is in charge to operate motion of a SegwayRMP400 and as well as monitoring.
+
+  The main class is SegwayRMP400,
+
+  - The class has an FTDI driver object to ensure USB communication with the segway.
+  - It also launches two threads for reading data and sending commands to the segway.
+  - Uses a mutex variable, to ensure that only one thread is accessing ftdi object at a time.
+	
+  Segway parameters such as position and velocities paramaters are internal variables of the class, 
+  and updated every 10ms approx, by the read thread.
+	
+  The read thread waits for a reception event coming from FTDI device. Once received it reads data stored into
+  receiving buffer of FTDI device. A reference of reception event of FTDI device is retrieved at constructor so 
+  as to wait upon it.
+
+  Comanding the segway on the ohter hand is done at 50 Hz approx by the command thread, i.e one new command each
+  20 ms.Actually, segway must receive a command at least every 0.4 seconds (2.5 Hz) in order to keep it moving.
+  Otherwise it will automatically set motors to zero. 
+
+
+## Installation
+
+* Add the labrobotica repository if it is not already added:
+
+``` sudo sh -c 'echo "deb [arch=amd64] http://147.83.76.226/~irilabo/packages xenial main" > /etc/apt/sources.list.d/labrobotica_repo.list' ```
+
+``` wget -O - http://147.83.76.226/~irilabo/labrobotica_repo.gpg.key | sudo apt-key add - ```
+
+* Install the package:
+
+``` sudo apt update && sudo apt install iri-segway-rmp-400-dev ```
+
+## Scripts
+
+A script is provided to add the Segway manufacturer devices to the dialout group. 
+See [comm/scripts/add_manufacturer to_group_udev.md](https://gitlab.iri.upc.edu/labrobotica/drivers/comm/blob/install_path/scripts/add_manufacturer_to_group_udev.sh)
+
+
+## Disclaimer  
+
+Copyright (C) 2009-2018 Institut de Robòtica i Informàtica Industrial, CSIC-UPC.
+Mantainer IRI labrobotics (labrobotica@iri.upc.edu)
+
+This package is distributed in the hope that it will be useful, but without any warranty. It is provided "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the program is with you. should the program prove defective, the GMR group does not assume the cost of any necessary servicing, repair  or correction.
+
+In no event unless required by applicable law the author will be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use the program (including but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of the program to operate with any other programs), even if the author has been advised of the possibility of such damages.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>
+
+## For developers
+
+<details><summary>click here</summary>
+<p>
+
+## Dependencies
+
+This package requires of the following system libraries and packages
+
+* [cmake](https://www.cmake.org "CMake's Homepage"), a cross-platform build system.
+* [doxygen](http://www.doxygen.org "Doxygen's Homepage") and [graphviz](http://www.graphviz.org "Graphviz's Homepage") to generate the documentation.
+* stdc++ and pthread libraries.
+
+Under linux all of these utilities are available in ready-to-use packages.
+
+This package also requires of the following IRI libraries:
+
+* [iriutils](https://gitlab.iri.upc.edu/labrobotica/algorithms/iriutils "iriutils gitlab page"), a set of basic tools.
+* [comm](https://gitlab.iri.upc.edu/labrobotica/drivers/comm "comm gitlab page"), a set of drivers for standard communication devices.
+
+## Compilation and installation from source
+
+Clone this repository and create a build folder inside:
+
+``` mkdir build ```
+
+Inside the build folder execute the following commands:
+
+``` cmake .. ```
+
+The default build mode is DEBUG. That is, objects and executables include debug information.
+
+The RELEASE build mode optimizes for speed. To build in this mode execute instead
+``` cmake .. -DCMAKE_BUILD_TYPE=RELEASE ```
+
+The release mode will be kept until next time cmake is executed.
+
+``` make -j $(nproc)``` 
+
+In case no errors are reported, the generated libraries (if any) will be located at the
+_lib_ folder and the executables (if any) will be located at the _bin_ folder.
+
+In order to be able to use the library, it it necessary to copy it into the system.
+To do that, execute
+
+``` make install ```
+
+as root and the shared libraries will be copied to */usr/local/lib/iri/segway_rmp_400* directory
+and the header files will be copied to */usr/local/include/iri/segway_rmp_400* directory. At
+this point, the library may be used by any user.
+
+To remove the library from the system, exceute
+
+``` make uninstall ```
+
+as root, and all the associated files will be removed from the system.
+
+To generate the documentation execute the following command:
+
+``` make doc ```
+
+## How to use it
+
+To use this library in another library or application, in the CMakeLists.txt file, first it is necessary to locate if the library has been installed or not using the following command
+
+``` FIND_PACKAGE(segway_rmp_400) ```
+
+In the case that the package is present, it is necessary to add the header files directory to the include directory path by using
+
+``` INCLUDE_DIRECTORIES(${segway_rmp_400_INCLUDE_DIR}) ```
+
+and it is also necessary to link with the desired libraries by using the following command
+
+``` TARGET_LINK_LIBRARIES(<executable name> ${segway_rmp_400_LIBRARY}) ```
+
+## Examples
+
+There are several examples that show how to use it.
+
+</p>
+</details>
\ No newline at end of file
diff --git a/ReadMe.txt b/ReadMe.txt
deleted file mode 100644
index d598803afb1927a434e90332e4479694a76c55ec..0000000000000000000000000000000000000000
--- a/ReadMe.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (C) 2009-2010 Institut de Robòtica i Informàtica Industrial, CSIC-UPC.
-Author cetto (cetto@iri.upc.edu)
-All rights reserved.
-
-This file is part of Segway RMP 400 driver library
-Segway RMP400 driver library is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>
-
-