diff --git a/jafar-rtslam/Makefile b/jafar-rtslam/Makefile
index bed549d363450ad366166385b3e162e0d4aab210..14cea71ca6cad90639ebbf7422dd9c0a37be3747 100644
--- a/jafar-rtslam/Makefile
+++ b/jafar-rtslam/Makefile
@@ -2,8 +2,7 @@
 # Created:			Cyril Roussillon on Wed, 15 Jun 2011
 #
 
-JAFAR_PKG=		rtslam-0.2
-PKGREVISION= 	6
+JAFAR_PKG=		rtslam-0.3
 CATEGORIES=		wip
 JAFAR_COMMENT=		Jafar module to do fast and generic EKF Slam.
 
@@ -74,10 +73,14 @@ define PKG_OPTION_UNSET.posterLib
   CMAKE_ARGS+=			-DHAVE_POSTERLIB=OFF
 endef
 
+CMAKE_ARGS+= -DPATH_TO_BOOST_SANDBOX=${PREFIX.boost-numeric-bindings}/include
+
 include ../../devel/jafar-kernel/depend.mk
 include ../../image/jafar-image/depend.mk
 include ../../math/jafar-jmath/depend.mk
 include ../../image/jafar-correl/depend.mk
+include ../../math/boost-numeric-bindings/depend.mk
+include ../../math/lapack/depend.mk
 
 include ../../mk/language/c.mk
 include ../../mk/robotpkg.mk
diff --git a/jafar-rtslam/PLIST b/jafar-rtslam/PLIST
index 4733496295afc0bb695a3138c03f6f5f3a3fe59e..f5239f7b855fa579170570fc05d3f3245257d5b7 100644
--- a/jafar-rtslam/PLIST
+++ b/jafar-rtslam/PLIST
@@ -1,4 +1,4 @@
-@comment Fri Dec 14 12:05:08 CET 2012
+@comment Wed Nov 13 16:12:39 CET 2013
 include/jafar/rtslam/activeSearch.hpp
 include/jafar/rtslam/activeSegmentSearch.hpp
 include/jafar/rtslam/ahpTools.hpp
@@ -39,6 +39,7 @@ include/jafar/rtslam/hardwareSensorInertialAdhocSimulator.hpp
 include/jafar/rtslam/hardwareSensorMocap.hpp
 include/jafar/rtslam/hardwareSensorMti.hpp
 include/jafar/rtslam/hardwareSensorOdomRmp400Genom.hpp
+include/jafar/rtslam/historyManager.hpp
 include/jafar/rtslam/imageTools.hpp
 include/jafar/rtslam/innovation.hpp
 include/jafar/rtslam/kalmanFilter.hpp
@@ -71,6 +72,7 @@ include/jafar/rtslam/rawProcessors.hpp
 include/jafar/rtslam/rawSegProcessors.hpp
 include/jafar/rtslam/robotAbstract.hpp
 include/jafar/rtslam/robotCenteredConstantVelocity.hpp
+include/jafar/rtslam/robotConstantMotionModel.hpp
 include/jafar/rtslam/robotConstantVelocity.hpp
 include/jafar/rtslam/robotInertial.hpp
 include/jafar/rtslam/robotOdometry.hpp
@@ -86,6 +88,7 @@ include/jafar/rtslam/simuRawProcessors.hpp
 include/jafar/rtslam/simulator.hpp
 include/jafar/rtslam/simulatorObjects.hpp
 include/jafar/rtslam/spaceGrid.hpp
+include/jafar/rtslam/timestampManager.hpp
 include/jafar/rtslam/visibilityMap.hpp
 include/jafar/rtslam/worldAbstract.hpp
 lib/libjafar-rtslam.so
diff --git a/jafar-rtslam/depend.mk b/jafar-rtslam/depend.mk
index 9cdb7583f4be2d74c9909cce0d0bf89fd4502cf6..2c0190530f17c794c79b856836439451cf4fb5b4 100644
--- a/jafar-rtslam/depend.mk
+++ b/jafar-rtslam/depend.mk
@@ -14,7 +14,7 @@ ifeq (+,$(jafar-rtslam_DEPEND_MK)) # -------------------------------------------
 PREFER.jafar-rtslam?=		robotpkg
 
 DEPEND_USE+=		jafar-rtslam
-DEPEND_ABI.jafar-rtslam?=	jafar-rtslam>=0.1
+DEPEND_ABI.jafar-rtslam?=	jafar-rtslam>=0.3
 DEPEND_DIR.jafar-rtslam?=	../../wip/jafar-rtslam
 
 SYSTEM_SEARCH.jafar-rtslam=\
diff --git a/jafar-rtslam/distinfo b/jafar-rtslam/distinfo
index e3ff82e282d63b946bd838952188916b973329ac..e1a40f322eeb2699c3afefabf2904176b83d832f 100644
--- a/jafar-rtslam/distinfo
+++ b/jafar-rtslam/distinfo
@@ -1,9 +1,3 @@
-SHA1 (jafar-rtslam-0.2.tar.gz) = 1b4c9ef2fbc8c32259a48ef297a8baf6dd7d10f5
-RMD160 (jafar-rtslam-0.2.tar.gz) = b6840c5170beef8b4c409c86da74ac3cf9841353
-Size (jafar-rtslam-0.2.tar.gz) = 733290 bytes
-SHA1 (patch-aa) = 6d390a243ce4c0ba960c089573e4124f2d3961f8
-SHA1 (patch-ab) = fdaab1bc3511fdbb78b201782b8a0ffc76ed22ce
-SHA1 (patch-ac) = e9bf8fe7288a956fa84e00c9449831e28bb50a00
-SHA1 (patch-ad) = 4d0ae943a4ea8f97c65f31a056c5d0deaf5607f4
-SHA1 (patch-ae) = 7c1a788ca3c33430f5b6cb52ad10bdccd2f6a03a
-SHA1 (patch-af) = df658ab826f94bfb12ef984d9f8acf5fd2012fcb
+SHA1 (jafar-rtslam-0.3.tar.gz) = de6ce87c7bfb5b4c1a613301080fea7a6c776491
+RMD160 (jafar-rtslam-0.3.tar.gz) = dd97d607e1de192218f4a9ec621af9d11ffd6de7
+Size (jafar-rtslam-0.3.tar.gz) = 768877 bytes
diff --git a/jafar-rtslam/patches/patch-aa b/jafar-rtslam/patches/patch-aa
deleted file mode 100644
index a5048815abcb8fbe20bd02265af9733bac178660..0000000000000000000000000000000000000000
--- a/jafar-rtslam/patches/patch-aa
+++ /dev/null
@@ -1,11 +0,0 @@
---- jafar-rtslam.pc.in.orig	2013-06-10 18:03:26.782750072 +0200
-+++ jafar-rtslam.pc.in	2013-06-10 18:03:44.814749620 +0200
-@@ -6,6 +6,6 @@
- Name: jafar-rtslam
- Description: Jafar module to do fast and generic EKF Slam.
- Version: 0.2
--Requires: kernel;image;jmath;correl
--Libs: -L${CMAKE_INSTALL_PREFIX} -ljafar-rtslam
-+Requires: ${JAFAR_REQUIRES}
-+Libs: -L${CMAKE_INSTALL_PREFIX}/lib -ljafar-rtslam
- Cflags: -I${CMAKE_INSTALL_PREFIX}/include/jafar ${IMPORTED_HEADERS} ${EXTRA_COMPILE_FLAGS}
diff --git a/jafar-rtslam/patches/patch-ab b/jafar-rtslam/patches/patch-ab
deleted file mode 100644
index bd2cf04ca06ba2432c439da7432595370ca213f5..0000000000000000000000000000000000000000
--- a/jafar-rtslam/patches/patch-ab
+++ /dev/null
@@ -1,32 +0,0 @@
-Workaround against boost issue 7364
-
-https://svn.boost.org/trac/boost/ticket/7364
-
---- include/rtslam/sensorAbstract.hpp.orig	2013-03-19 22:13:31.000000000 +0000
-+++ include/rtslam/sensorAbstract.hpp	2013-03-19 22:31:29.000000000 +0000
-@@ -36,6 +36,7 @@
- 		class ObservationAbstract;
- 		class DataManagerAbstract;
- 
-+		static std::vector<RobotAbstract::Quantity> workaround_7364;
- 		/** 
- 			Base class for all types of sensors.
- 			\ingroup rtslam
-@@ -70,7 +71,7 @@
- 				 * \param poseInFilter flag indicating if the sensor pose is part of the filter (REMOTE).
- 				 */
- 				SensorAbstract(const robot_ptr_t & _robPtr, const filtered_obj_t poseInFilter = UNFILTERED, int extraStateFilterSize = 0,
--					std::vector<RobotAbstract::Quantity> robQuant = boost::assign::list_of(RobotAbstract::qPos)(RobotAbstract::qOriQuat));
-+					std::vector<RobotAbstract::Quantity> robQuant = boost::assign::list_of(RobotAbstract::qPos)(RobotAbstract::qOriQuat).to_container(workaround_7364));
- 				
- 				/**
- 				 * Mandatory virtual destructor.
-@@ -170,7 +171,7 @@
- 				hardware::hardware_sensorprop_ptr_t hardwareSensorPtr;
- 			public:
- 				SensorProprioAbstract(const robot_ptr_t & robPtr, const filtered_obj_t poseInFilter = UNFILTERED, int extraStateFilterSize = 0,
--					std::vector<RobotAbstract::Quantity> robQuant = boost::assign::list_of(RobotAbstract::qPos)(RobotAbstract::qOriQuat)):
-+					std::vector<RobotAbstract::Quantity> robQuant = boost::assign::list_of(RobotAbstract::qPos)(RobotAbstract::qOriQuat).to_container(workaround_7364)):
- 				  SensorAbstract(robPtr, poseInFilter, extraStateFilterSize, robQuant) { kind = PROPRIOCEPTIVE; }
- 
- 				void setHardwareSensor(hardware::hardware_sensorprop_ptr_t hardwareSensorPtr_)
diff --git a/jafar-rtslam/patches/patch-ac b/jafar-rtslam/patches/patch-ac
deleted file mode 100644
index d87c98d981669f945698071bca62236a43bbf859..0000000000000000000000000000000000000000
--- a/jafar-rtslam/patches/patch-ac
+++ /dev/null
@@ -1,15 +0,0 @@
-Change __sighandler_t into sig_t which is not platform dependant
-
-diff --git a/include/rtslam/main.hpp b/include/rtslam/main.hpp
-index 51cee4b..a9d9897 100644
---- include/rtslam/main.hpp
-+++ include/rtslam/main.hpp
-@@ -1435,7 +1435,7 @@ void demo_slam_stop(world_ptr_t *world)
- }
- 
- 
--void set_signals(__sighandler_t catcher)
-+void set_signals(sig_t catcher)
- {
- 	signal(SIGQUIT, catcher);
- 	signal(SIGTERM, catcher);
diff --git a/jafar-rtslam/patches/patch-ad b/jafar-rtslam/patches/patch-ad
deleted file mode 100644
index 4c81dcb0233ddc7a7b11801a087ce57839bf00d6..0000000000000000000000000000000000000000
--- a/jafar-rtslam/patches/patch-ad
+++ /dev/null
@@ -1,11 +0,0 @@
---- CMakeLists.txt.orig	2013-06-09 22:11:15.882757720 +0200
-+++ CMakeLists.txt	2013-06-09 22:11:00.742758100 +0200
-@@ -22,6 +22,8 @@
-   cmake_policy(SET CMP0003 NEW)
- endif(COMMAND cmake_policy)
- 
-+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
-+
- #-----------------------------------------------------------------------------
- # Compilation flags for release and debug
- #-----------------------------------------------------------------------------
diff --git a/jafar-rtslam/patches/patch-ae b/jafar-rtslam/patches/patch-ae
deleted file mode 100644
index d989ef78d074a91990aff5d7f96b9d3b3aaee0ee..0000000000000000000000000000000000000000
--- a/jafar-rtslam/patches/patch-ae
+++ /dev/null
@@ -1,10 +0,0 @@
---- CMakeLists.txt.orig	2013-06-10 18:06:30.130745479 +0200
-+++ CMakeLists.txt	2013-06-10 18:06:51.646744939 +0200
-@@ -65,6 +65,7 @@
- 	string(TOUPPER "${module}" MODULE)
- 	include(${CMAKE_INSTALL_PREFIX}/share/cmake/jafar/${module}.cmake)
- 	set(LIBS "${LIBS};jafar-${module}")
-+	set(JAFAR_REQUIRES "${JAFAR_REQUIRES},jafar-${module}")
- 	include_directories(${JAFAR_${module}_IMPORTED_HEADERS})
- 	set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -DHAVE_MODULE_${MODULE}")
- endmacro(link_jafar_module)
diff --git a/jafar-rtslam/patches/patch-af b/jafar-rtslam/patches/patch-af
deleted file mode 100644
index 6da50761da5b1c1e92f72b1ced1e2bcc06e0c550..0000000000000000000000000000000000000000
--- a/jafar-rtslam/patches/patch-af
+++ /dev/null
@@ -1,49 +0,0 @@
-Fix 5a8a7b7a backcompatibility with old config files
-
-diff --git a/include/rtslam/main.hpp b/include/rtslam/main.hpp
-index 44b28cb..a9a1de1 100644
---- include/rtslam/main.hpp
-+++ include/rtslam/main.hpp
-@@ -1972,10 +1972,10 @@ void ConfigSetup::processKeyValueFile(jafar::kernel::KeyValueFile& keyValueFile,
- 		{
- 			if (read && ncam == 1)
- 			{
--				keyValueFile.getItem("CAMERA_IMG_WIDTH_SIMU", CAMERA_IMG_WIDTH_SIMU[0]);
--				keyValueFile.getItem("CAMERA_IMG_HEIGHT_SIMU", CAMERA_IMG_HEIGHT_SIMU[0]);
--				keyValueFile.getItem("CAMERA_INTRINSIC_SIMU", CAMERA_INTRINSIC_SIMU[0]);
--				keyValueFile.getItem("CAMERA_DISTORTION_SIMU", CAMERA_DISTORTION_SIMU[0]);
-+				keyValueFile.getItem("IMG_WIDTH_SIMU", CAMERA_IMG_WIDTH_SIMU[0]);
-+				keyValueFile.getItem("IMG_HEIGHT_SIMU", CAMERA_IMG_HEIGHT_SIMU[0]);
-+				keyValueFile.getItem("INTRINSIC_SIMU", CAMERA_INTRINSIC_SIMU[0]);
-+				keyValueFile.getItem("DISTORTION_SIMU", CAMERA_DISTORTION_SIMU[0]);
- 			} else throw e;
- 		}
- 	} else
-@@ -1999,10 +1999,10 @@ void ConfigSetup::processKeyValueFile(jafar::kernel::KeyValueFile& keyValueFile,
- 				keyValueFile.getItem("CAMERA_TYPE", CAMERA_TYPE[0]);
- 				keyValueFile.getItem("CAMERA_FORMAT", CAMERA_FORMAT[0], "0");
- 				keyValueFile.getItem("CAMERA_DEVICE", CAMERA_DEVICE[0]);
--				keyValueFile.getItem("CAMERA_IMG_WIDTH", CAMERA_IMG_WIDTH[0]);
--				keyValueFile.getItem("CAMERA_IMG_HEIGHT", CAMERA_IMG_HEIGHT[0]);
--				keyValueFile.getItem("CAMERA_INTRINSIC", CAMERA_INTRINSIC[0]);
--				keyValueFile.getItem("CAMERA_DISTORTION", CAMERA_DISTORTION[0]);
-+				keyValueFile.getItem("IMG_WIDTH", CAMERA_IMG_WIDTH[0]);
-+				keyValueFile.getItem("IMG_HEIGHT", CAMERA_IMG_HEIGHT[0]);
-+				keyValueFile.getItem("INTRINSIC", CAMERA_INTRINSIC[0]);
-+				keyValueFile.getItem("DISTORTION", CAMERA_DISTORTION[0]);
- 			} else throw e;
- 		}
- 	}
-@@ -2121,8 +2121,10 @@ void ConfigEstimation::processKeyValueFile(jafar::kernel::KeyValueFile& keyValue
- 	KeyValueFile_processItem(KILL_SEARCH_SIZE);
- 	KeyValueFile_processItem(MATCH_TH);
- 	KeyValueFile_processItem(MIN_SCORE);
--	KeyValueFile_processItem(HI_MATCH_TH);
--	KeyValueFile_processItem(HI_LIMIT);
-+
-+	try { KeyValueFile_processItem(HI_MATCH_TH) } catch (kernel::KernelException &e) { if (read) HI_MATCH_TH = MATCH_TH; }
-+	try { KeyValueFile_processItem(HI_LIMIT) } catch (kernel::KernelException &e) { if (read) HI_LIMIT = 1000; }
-+
- 	KeyValueFile_processItem(PARTIAL_POSITION);
- }
-