diff --git a/sot-dyninv-v3/Makefile b/sot-dyninv-v3/Makefile
index 7a3264c6e6b96799766ec53aeacdea1d7fc621d9..a627772f00eff27357813754834e126a6e7b5a17 100644
--- a/sot-dyninv-v3/Makefile
+++ b/sot-dyninv-v3/Makefile
@@ -2,25 +2,29 @@
 # Created:			Rohan Budhiraja on Thu, 08 Sep 2016
 #
 
-VERSION=		3.0.0
-PKGREVISION=		0
-PKGNAME=		sot-dyninv-v3-${VERSION}
-DISTNAME=		sot-dyninv-v3-${VERSION}
+ORG=			stack-of-tasks
+NAME=			sot-dyninv
+VERSION=		3.1.0
 
-MASTER_SITES=		${MASTER_SITE_OPENROBOTS:=sot-dyninv-v3/}
-MASTER_REPOSITORY=	${MASTER_REPOSITORY_GITHUB}/stack-of-tasks/sot-dyninv
+DISTNAME=		${NAME}-${VERSION}
+PKGNAME=		${NAME}-v3-${VERSION}
 
-MAINTAINER=	hpp@laas.fr
-CATEGORIES=	wip
-LICENSE=	gnu-lgpl-v3
+MASTER_SITES=		${MASTER_SITE_OPENROBOTS:=${NAME}/}
+MASTER_REPOSITORY=	${MASTER_REPOSITORY_GITHUB}${ORG}/${NAME}.git
+CHECKOUT_VCS_OPTS+=	--recursive
 
-CONFLICTS+=		sot-dyninv
-DYNAMIC_PLIST_DIRS+=	share/doc/sot-dyninv
-DEPEND_ABI.python+= python<3.0
+CATEGORIES=		wip
+COMMENT=		Resolve the inverse of the dynamics of a free-floating robot
+LICENSE=		2-clause-bsd
+MAINTAINER=		gepetto-soft@laas.fr
 
-include ../../wip/soth/depend.mk
+CONFLICTS+=		${NAME}
+
+CMAKE_ARGS+=		-DBUILD_PYTHON_INTERFACE=OFF
 
-include ../../wip/py-dynamic-graph-v3/depend.mk
+DYNAMIC_PLIST_DIRS+=	share/doc/${NAME}
+
+include ../../wip/soth/depend.mk
 include ../../wip/sot-core-v3/depend.mk
 include ../../pkgtools/pkg-config/depend.mk
 include ../../mk/sysdep/cmake.mk
diff --git a/sot-dyninv-v3/PLIST b/sot-dyninv-v3/PLIST
index 99896fec86cd24adf1d61a0cb14b437d07c97c64..a89dad84afdb27e1567981504ce98b4f99aa8096 100644
--- a/sot-dyninv-v3/PLIST
+++ b/sot-dyninv-v3/PLIST
@@ -28,80 +28,37 @@ include/sot-dyninv/col-piv-qr-solve-in-place.h
 include/sot-dyninv/contact-selecter.h
 lib/plugin/dynamic-integrator.so.${PKGVERSION}
 lib/plugin/dynamic-integrator.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/dynamic_integrator/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/dynamic_integrator/__init__.py
 lib/plugin/zmp-estimator.so.${PKGVERSION}
 lib/plugin/zmp-estimator.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/zmp_estimator/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/zmp_estimator/__init__.py
 lib/plugin/pseudo-robot-dynamic.so.${PKGVERSION}
 lib/plugin/pseudo-robot-dynamic.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/pseudo_robot_dynamic/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/pseudo_robot_dynamic/__init__.py
 lib/plugin/robot-dyn-simu.so.${PKGVERSION}
 lib/plugin/robot-dyn-simu.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/robot_dyn_simu/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/robot_dyn_simu/__init__.py
 lib/plugin/controller-pd.so.${PKGVERSION}
 lib/plugin/controller-pd.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/controller_pd/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/controller_pd/__init__.py
 lib/plugin/task-dyn-pd.so.${PKGVERSION}
 lib/plugin/task-dyn-pd.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_dyn_pd/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_dyn_pd/__init__.py
 lib/plugin/task-dyn-joint-limits.so.${PKGVERSION}
 lib/plugin/task-dyn-joint-limits.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_dyn_joint_limits/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_dyn_joint_limits/__init__.py
 lib/plugin/task-dyn-limits.so.${PKGVERSION}
 lib/plugin/task-dyn-limits.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_dyn_limits/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_dyn_limits/__init__.py
 lib/plugin/task-dyn-inequality.so.${PKGVERSION}
 lib/plugin/task-dyn-inequality.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_dyn_inequality/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_dyn_inequality/__init__.py
 lib/plugin/task-dyn-passing-point.so.${PKGVERSION}
 lib/plugin/task-dyn-passing-point.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_dyn_passing_point/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_dyn_passing_point/__init__.py
 lib/plugin/solver-op-space.so.${PKGVERSION}
 lib/plugin/solver-op-space.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/solver_op_space/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/solver_op_space/__init__.py
 lib/plugin/solver-dyn-reduced.so.${PKGVERSION}
 lib/plugin/solver-dyn-reduced.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/solver_dyn_reduced/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/solver_dyn_reduced/__init__.py
 lib/plugin/solver-kine.so.${PKGVERSION}
 lib/plugin/solver-kine.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/solver_kine/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/solver_kine/__init__.py
 lib/plugin/task-joint-limits.so.${PKGVERSION}
 lib/plugin/task-joint-limits.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_joint_limits/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_joint_limits/__init__.py
 lib/plugin/task-inequality.so.${PKGVERSION}
 lib/plugin/task-inequality.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_inequality/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_inequality/__init__.py
 lib/plugin/task-weight.so.${PKGVERSION}
 lib/plugin/task-weight.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_weight/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/task_weight/__init__.py
 lib/plugin/feature-projected-line.so.${PKGVERSION}
 lib/plugin/feature-projected-line.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/feature_projected_line/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/feature_projected_line/__init__.py
 lib/plugin/contact-selecter.so.${PKGVERSION}
 lib/plugin/contact-selecter.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/contact_selecter/wrap.so
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/contact_selecter/__init__.py
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/__init__.py
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/meta_task_dyn_6d.py
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/meta_task_dyn_passing_point.py
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/meta_tasks_dyn.py
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/meta_tasks_dyn_relative.py
-lib/python2.7/site-packages/dynamic_graph/sot/dyninv/robot_specific.py
-lib/python2.7/site-packages/dynamic_graph/tutorial/sot-concept.py
diff --git a/sot-dyninv-v3/depend.mk b/sot-dyninv-v3/depend.mk
index b88d7d898559511bb416d4fa2d36b6924dc0f476..644f1b31892a8760421e88481aacac5f938255af 100644
--- a/sot-dyninv-v3/depend.mk
+++ b/sot-dyninv-v3/depend.mk
@@ -19,7 +19,7 @@ SYSTEM_SEARCH.sot-dyninv-v3=\
 
 DEPEND_USE+=		sot-dyninv-v3
 
-DEPEND_ABI.sot-dyninv-v3?=	sot-dyninv-v3>=3.0.0
+DEPEND_ABI.sot-dyninv-v3?=	sot-dyninv-v3>=2.0.0
 DEPEND_DIR.sot-dyninv-v3?=	../../wip/sot-dyninv-v3
 
 endif # SOT_DYNINV_V3_DEPEND_MK -------------------------------------------------
diff --git a/sot-dyninv-v3/distinfo b/sot-dyninv-v3/distinfo
index 6cb17c980602fc7104570028b90a60be2c91ecaa..1c02f3fd167724bb1fab6f984aa7fdc3d38f6d6a 100644
--- a/sot-dyninv-v3/distinfo
+++ b/sot-dyninv-v3/distinfo
@@ -1,3 +1,3 @@
-SHA1 (sot-dyninv-v3-3.0.0.tar.gz) = 7ea7f2fa426dd578bdf490a4809ec6d5d035af0b
-RMD160 (sot-dyninv-v3-3.0.0.tar.gz) = 7560a9287f098d1d67820243c06dabb176413cb8
-Size (sot-dyninv-v3-3.0.0.tar.gz) = 1031376 bytes
+SHA1 (sot-dyninv-3.1.0.tar.gz) = 22b97b1765db7729d161d656e3d7f5f26939151f
+RMD160 (sot-dyninv-3.1.0.tar.gz) = c10d26cdb7927700ad8526c234af72d6ef3ff27b
+Size (sot-dyninv-3.1.0.tar.gz) = 918447 bytes