diff --git a/example-robot-data/Makefile b/example-robot-data/Makefile
index d11e587cec4d0b62f1ff88573b431bdd25f20565..7f942254ad4840374be864d3c57b1b2acb157308 100644
--- a/example-robot-data/Makefile
+++ b/example-robot-data/Makefile
@@ -4,25 +4,16 @@
 
 ORG=			gepetto
 NAME=			example-robot-data
-VERSION=		2.0.0
-
-DISTNAME=		${NAME}-${VERSION}
-
-MASTER_SITES=		${MASTER_SITE_OPENROBOTS:=${NAME}/}
-MASTER_REPOSITORY=	git https://gepgitlab.laas.fr/${ORG}/${NAME}.git
-CHECKOUT_VCS_OPTS+=	--recursive
+VERSION=		2.1.0
 
 CATEGORIES=		wip
 COMMENT=		Set of robot URDFs for benchmarking and developed examples.
-
 LICENSE=		2-clause-bsd
 MAINTAINER=		gepetto@laas.fr
 
-CMAKE_ARGS+=		-DCMAKE_INSTALL_LIBDIR=lib
 CMAKE_ARGS+=		-DBUILD_PYTHON_INTERFACE=OFF
 
-DYNAMIC_PLIST_DIRS+=	share/doc/${NAME}
-
+include ../../wip/jrl-cmakemodules/Makefile.common
 include ../../pkgtools/pkg-config/depend.mk
 include ../../mk/sysdep/cmake.mk
 include ../../mk/language/c.mk
diff --git a/example-robot-data/PLIST b/example-robot-data/PLIST
index e2cc36e87c37b17c76674b1db4a4303a08dd37cd..166b21edcdac9addd1ccd6578cab82f5dabf3c76 100644
--- a/example-robot-data/PLIST
+++ b/example-robot-data/PLIST
@@ -68,6 +68,37 @@ share/example-robot-data/icub_description/meshes/upmc/visual/icub_root_link.dae
 share/example-robot-data/icub_description/robots/icub.urdf
 share/example-robot-data/icub_description/robots/icub_reduced.urdf
 share/example-robot-data/icub_description/srdf/icub.srdf
+share/example-robot-data/solo_description/meshes/checker_blue.png
+share/example-robot-data/solo_description/meshes/cube.obj
+share/example-robot-data/solo_description/meshes/cylinder.obj
+share/example-robot-data/solo_description/meshes/obj/with_foot/solo_body.obj
+share/example-robot-data/solo_description/meshes/obj/with_foot/solo_foot.obj
+share/example-robot-data/solo_description/meshes/obj/with_foot/solo_lower_leg_left_side.obj
+share/example-robot-data/solo_description/meshes/obj/with_foot/solo_lower_leg_right_side.obj
+share/example-robot-data/solo_description/meshes/obj/with_foot/solo_upper_leg_left_side.obj
+share/example-robot-data/solo_description/meshes/obj/with_foot/solo_upper_leg_right_side.obj
+share/example-robot-data/solo_description/meshes/obj/without_foot/solo_body.obj
+share/example-robot-data/solo_description/meshes/obj/without_foot/solo_lower_leg_left_side.obj
+share/example-robot-data/solo_description/meshes/obj/without_foot/solo_lower_leg_right_side.obj
+share/example-robot-data/solo_description/meshes/obj/without_foot/solo_upper_leg_left_side.obj
+share/example-robot-data/solo_description/meshes/obj/without_foot/solo_upper_leg_right_side.obj
+share/example-robot-data/solo_description/meshes/plane.mtl
+share/example-robot-data/solo_description/meshes/plane.obj
+share/example-robot-data/solo_description/meshes/sphere.obj
+share/example-robot-data/solo_description/meshes/stl/with_foot/solo_body.stl
+share/example-robot-data/solo_description/meshes/stl/with_foot/solo_foot.stl
+share/example-robot-data/solo_description/meshes/stl/with_foot/solo_lower_leg_left_side.stl
+share/example-robot-data/solo_description/meshes/stl/with_foot/solo_lower_leg_right_side.stl
+share/example-robot-data/solo_description/meshes/stl/with_foot/solo_upper_leg_left_side.stl
+share/example-robot-data/solo_description/meshes/stl/with_foot/solo_upper_leg_right_side.stl
+share/example-robot-data/solo_description/meshes/stl/without_foot/solo_body.stl
+share/example-robot-data/solo_description/meshes/stl/without_foot/solo_lower_leg_left_side.stl
+share/example-robot-data/solo_description/meshes/stl/without_foot/solo_lower_leg_right_side.stl
+share/example-robot-data/solo_description/meshes/stl/without_foot/solo_upper_leg_left_side.stl
+share/example-robot-data/solo_description/meshes/stl/without_foot/solo_upper_leg_right_side.stl
+share/example-robot-data/solo_description/robots/solo.urdf
+share/example-robot-data/solo_description/robots/solo12.urdf
+share/example-robot-data/solo_description/srdf/solo.srdf
 share/example-robot-data/talos_data/meshes/arm/arm_1.stl
 share/example-robot-data/talos_data/meshes/arm/arm_1_collision.STL
 share/example-robot-data/talos_data/meshes/arm/arm_2.stl
diff --git a/example-robot-data/distinfo b/example-robot-data/distinfo
index 8883ba602fcd3a563f26877ef28d82002685dd90..217222dfaef8545871ca6bcbfced00c98c47e09a 100644
--- a/example-robot-data/distinfo
+++ b/example-robot-data/distinfo
@@ -1,3 +1,3 @@
-SHA1 (example-robot-data-2.0.0.tar.gz) = fb89d7fe41708eff9612d90ca1c5efd2085cede0
-RMD160 (example-robot-data-2.0.0.tar.gz) = 9ed6c240780cb1e9c9f20e3ce43fe76f62ba6223
-Size (example-robot-data-2.0.0.tar.gz) = 10801972 bytes
+SHA1 (example-robot-data-2.1.0.tar.gz) = bdbf255b0a732194b4bdb3cf73a9ee6bd2ed46d4
+RMD160 (example-robot-data-2.1.0.tar.gz) = d60b3bb59655f830f9977cde475f6baf6c8ffaef
+Size (example-robot-data-2.1.0.tar.gz) = 12183629 bytes
diff --git a/py-example-robot-data/Makefile b/py-example-robot-data/Makefile
index 286a781eed779c78d2c03638096ea454af18c5b2..d269d4fdf691b32afe80c2bb754d0a8046965975 100644
--- a/py-example-robot-data/Makefile
+++ b/py-example-robot-data/Makefile
@@ -4,25 +4,17 @@
 
 ORG=			gepetto
 NAME=			example-robot-data
-VERSION=		2.0.0
-
-DISTNAME=		${NAME}-${VERSION}
-PKGNAME=		${PKGTAG.python-}${DISTNAME}
-
-MASTER_SITES=		${MASTER_SITE_OPENROBOTS:=${NAME}/}
-MASTER_REPOSITORY=	git https://gepgitlab.laas.fr/${ORG}/${NAME}.git
-CHECKOUT_VCS_OPTS+=	--recursive
+VERSION=		2.1.0
 
 CATEGORIES=		wip
 COMMENT=		Set of robot URDFs for benchmarking and developed examples.
-
 LICENSE=		2-clause-bsd
 MAINTAINER=		gepetto@laas.fr
 
-CMAKE_ARGS+=		-DINSTALL_DATA=OFF
-CMAKE_ARGS+=		-DINSTALL_DOCUMENTATION=OFF
+USE_PYTHON_ONLY=	true
 
-include ../../wip/example-robot-data/depend.mk
+include ../../wip/jrl-cmakemodules/Makefile.common
+include ../../${CATEGORIES}/${NAME}/depend.mk
 
 include ../../graphics/urdfdom-headers/depend.mk
 include ../../graphics/urdfdom/depend.mk
diff --git a/py-example-robot-data/distinfo b/py-example-robot-data/distinfo
index 653fd44fd4dcc394294429fc9cde0ba5da3e8e0c..217222dfaef8545871ca6bcbfced00c98c47e09a 100644
--- a/py-example-robot-data/distinfo
+++ b/py-example-robot-data/distinfo
@@ -1,5 +1,3 @@
-SHA1 (example-robot-data-2.0.0.tar.gz) = fb89d7fe41708eff9612d90ca1c5efd2085cede0
-RMD160 (example-robot-data-2.0.0.tar.gz) = 9ed6c240780cb1e9c9f20e3ce43fe76f62ba6223
-Size (example-robot-data-2.0.0.tar.gz) = 10801972 bytes
-SHA1 (patch-aa) = 9731f90f2c33abec026a1d34cfaa653316b84427
-SHA1 (patch-ab) = 83aeb011c56e1d2a9d4da3efae6d2904b207cf06
+SHA1 (example-robot-data-2.1.0.tar.gz) = bdbf255b0a732194b4bdb3cf73a9ee6bd2ed46d4
+RMD160 (example-robot-data-2.1.0.tar.gz) = d60b3bb59655f830f9977cde475f6baf6c8ffaef
+Size (example-robot-data-2.1.0.tar.gz) = 12183629 bytes
diff --git a/py-example-robot-data/patches/patch-aa b/py-example-robot-data/patches/patch-aa
deleted file mode 100644
index 83ef8fe0054c7c19212a59d6abe3cc57a3f10707..0000000000000000000000000000000000000000
--- a/py-example-robot-data/patches/patch-aa
+++ /dev/null
@@ -1,40 +0,0 @@
-Don't install main headers
-
---- cmake/header.cmake~	2017-10-26 15:25:19.000000000 +0200
-+++ cmake/header.cmake	2018-04-26 18:37:42.582417765 +0200
-@@ -92,11 +92,6 @@
-     ${CMAKE_CURRENT_BINARY_DIR}/include/${HEADER_DIR}/deprecated.${PROJECT_CUSTOM_HEADER_EXTENSION}
-     @ONLY
-     )
--  INSTALL(FILES
--    ${CMAKE_CURRENT_BINARY_DIR}/include/${HEADER_DIR}/deprecated.${PROJECT_CUSTOM_HEADER_EXTENSION}
--    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${HEADER_DIR}
--    PERMISSIONS OWNER_READ GROUP_READ WORLD_READ OWNER_WRITE
--    )
-   # Generate warning.hh header.
-   CONFIGURE_FILE(
-     ${PROJECT_SOURCE_DIR}/cmake/warning.hh.cmake
-@@ -104,11 +99,6 @@
-     @ONLY
-     )
- 
--  INSTALL(FILES
--    ${CMAKE_CURRENT_BINARY_DIR}/include/${HEADER_DIR}/warning.${PROJECT_CUSTOM_HEADER_EXTENSION}
--    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${HEADER_DIR}
--    PERMISSIONS OWNER_READ GROUP_READ WORLD_READ OWNER_WRITE
--    )
- 
- 
-   # Generate config.h header.
-@@ -150,11 +140,6 @@
-     @ONLY
-     )
-   # Install it.
--  INSTALL(FILES
--    ${CMAKE_CURRENT_BINARY_DIR}/include/${HEADER_DIR}/${FILENAME}
--    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${HEADER_DIR}
--    PERMISSIONS OWNER_READ GROUP_READ WORLD_READ OWNER_WRITE
--    )
- ENDFUNCTION(GENERATE_CONFIGURATION_HEADER)
- 
- 
diff --git a/py-example-robot-data/patches/patch-ab b/py-example-robot-data/patches/patch-ab
deleted file mode 100644
index 5e1c7cb2121c018e8d5931c268b51d96573f05b6..0000000000000000000000000000000000000000
--- a/py-example-robot-data/patches/patch-ab
+++ /dev/null
@@ -1,13 +0,0 @@
-Don't install the .pc file, which is already installed by main package
-
---- cmake/base.cmake.orig	2018-07-11 10:41:37.000000000 +0200
-+++ cmake/base.cmake	2018-12-13 14:15:46.772836002 +0100
-@@ -226,7 +226,7 @@
- #   finalize the project setup.
- #
- MACRO(SETUP_PROJECT_FINALIZE)
--  _SETUP_PROJECT_PKG_CONFIG_FINALIZE()
-+  #_SETUP_PROJECT_PKG_CONFIG_FINALIZE()
-   _SETUP_PROJECT_DOCUMENTATION_FINALIZE()
-   _SETUP_PROJECT_HEADER_FINAlIZE()
-   _SETUP_DEBIAN()