diff --git a/include/core/processor/track_matrix.h b/include/core/processor/track_matrix.h
index 2615ad411adbe9c32efea2bf543cb24657e5ed97..1d8bfb343d851a7c5890a8442d844d3bc7b44e9e 100644
--- a/include/core/processor/track_matrix.h
+++ b/include/core/processor/track_matrix.h
@@ -84,23 +84,23 @@ class TrackMatrix
         void            remove      (FeatureBasePtr _ftr);
         void            remove      (const SizeStd&  _track_id);
         void            remove      (CaptureBasePtr _cap);
-        SizeStd         numTracks   ();
-        SizeStd         trackSize   (const SizeStd&  _track_id);
-        Track           track       (const SizeStd& _track_id);
-        Snapshot        snapshot    (CaptureBasePtr _capture);
+        SizeStd         numTracks   () const;
+        SizeStd         trackSize   (const SizeStd&  _track_id) const;
+        Track           track       (const SizeStd& _track_id) const;
+        Snapshot        snapshot    (CaptureBasePtr _capture) const;
         vector<FeatureBasePtr>
-                        trackAsVector(const SizeStd& _track_id);
+                        trackAsVector(const SizeStd& _track_id) const;
         list<FeatureBasePtr>
-                        snapshotAsList(CaptureBasePtr _cap);
-        TrackMatches    matches     (CaptureBasePtr _cap_1, CaptureBasePtr _cap_2);
-        FeatureBasePtr  firstFeature(const SizeStd& _track_id);
-        FeatureBasePtr  lastFeature (const SizeStd& _track_id);
-        FeatureBasePtr  feature     (const SizeStd& _track_id, CaptureBasePtr _cap);
-        CaptureBasePtr  firstCapture(const SizeStd& _track_id);
+                        snapshotAsList(CaptureBasePtr _cap) const;
+        TrackMatches    matches     (CaptureBasePtr _cap_1, CaptureBasePtr _cap_2) const;
+        FeatureBasePtr  firstFeature(const SizeStd& _track_id) const;
+        FeatureBasePtr  lastFeature (const SizeStd& _track_id) const;
+        FeatureBasePtr  feature     (const SizeStd& _track_id, CaptureBasePtr _cap) const;
+        CaptureBasePtr  firstCapture(const SizeStd& _track_id) const;
 
         // tracks across captures that belong to keyframe
 //        SizeStd         numKeyframeTracks();
-        Track           trackAtKeyframes(size_t _track_id);
+        Track           trackAtKeyframes(size_t _track_id) const;
 //        bool            markKeyframe(CaptureBasePtr _capture);
 //        bool            unmarkKeyframe(CaptureBasePtr _capture);
 
diff --git a/src/processor/track_matrix.cpp b/src/processor/track_matrix.cpp
index 67c0b74964537f3824f13ef6d8b52050535527b9..6d7dd0f50da30dc79e3c5c9cca980bc3364a0349 100644
--- a/src/processor/track_matrix.cpp
+++ b/src/processor/track_matrix.cpp
@@ -22,7 +22,7 @@ TrackMatrix::~TrackMatrix()
     //
 }
 
-Track TrackMatrix::track(const SizeStd& _track_id)
+Track TrackMatrix::track(const SizeStd& _track_id) const
 {
     if (tracks_.count(_track_id) > 0)
         return tracks_.at(_track_id);
@@ -30,7 +30,7 @@ Track TrackMatrix::track(const SizeStd& _track_id)
         return Track();
 }
 
-Snapshot TrackMatrix::snapshot(CaptureBasePtr _capture)
+Snapshot TrackMatrix::snapshot(CaptureBasePtr _capture) const
 {
     if (_capture && snapshots_.count(_capture) > 0)
         return snapshots_.at(_capture);
@@ -120,17 +120,17 @@ void TrackMatrix::remove(FeatureBasePtr _ftr)
     }
 }
 
-size_t TrackMatrix::numTracks()
+size_t TrackMatrix::numTracks() const
 {
     return tracks_.size();
 }
 
-size_t TrackMatrix::trackSize(const SizeStd& _track_id)
+size_t TrackMatrix::trackSize(const SizeStd& _track_id) const
 {
     return track(_track_id).size();
 }
 
-FeatureBasePtr TrackMatrix::firstFeature(const SizeStd& _track_id)
+FeatureBasePtr TrackMatrix::firstFeature(const SizeStd& _track_id) const
 {
     if (tracks_.count(_track_id) > 0)
         return tracks_.at(_track_id).begin()->second;
@@ -138,7 +138,7 @@ FeatureBasePtr TrackMatrix::firstFeature(const SizeStd& _track_id)
         return nullptr;
 }
 
-FeatureBasePtr TrackMatrix::lastFeature(const SizeStd& _track_id)
+FeatureBasePtr TrackMatrix::lastFeature(const SizeStd& _track_id) const
 {
     if (tracks_.count(_track_id) > 0)
         return tracks_.at(_track_id).rbegin()->second;
@@ -146,7 +146,7 @@ FeatureBasePtr TrackMatrix::lastFeature(const SizeStd& _track_id)
         return nullptr;
 }
 
-vector<FeatureBasePtr> TrackMatrix::trackAsVector(const SizeStd& _track_id)
+vector<FeatureBasePtr> TrackMatrix::trackAsVector(const SizeStd& _track_id) const
 {
     vector<FeatureBasePtr> vec;
     if (tracks_.count(_track_id))
@@ -158,7 +158,7 @@ vector<FeatureBasePtr> TrackMatrix::trackAsVector(const SizeStd& _track_id)
     return vec;
 }
 
-std::list<FeatureBasePtr> TrackMatrix::snapshotAsList(CaptureBasePtr _cap)
+std::list<FeatureBasePtr> TrackMatrix::snapshotAsList(CaptureBasePtr _cap) const
 {
     std::list<FeatureBasePtr> lst;
     if (snapshots_.count(_cap))
@@ -167,7 +167,7 @@ std::list<FeatureBasePtr> TrackMatrix::snapshotAsList(CaptureBasePtr _cap)
     return lst;
 }
 
-TrackMatches TrackMatrix::matches(CaptureBasePtr _cap_1, CaptureBasePtr _cap_2)
+TrackMatches TrackMatrix::matches(CaptureBasePtr _cap_1, CaptureBasePtr _cap_2) const
 {
     TrackMatches pairs;
 
@@ -191,7 +191,7 @@ TrackMatches TrackMatrix::matches(CaptureBasePtr _cap_1, CaptureBasePtr _cap_2)
     return pairs;
 }
 
-FeatureBasePtr TrackMatrix::feature(const SizeStd& _track_id, CaptureBasePtr _cap)
+FeatureBasePtr TrackMatrix::feature(const SizeStd& _track_id, CaptureBasePtr _cap) const
 {
     if (snapshot(_cap).count(_track_id))
         return snapshot(_cap).at(_track_id);
@@ -199,12 +199,12 @@ FeatureBasePtr TrackMatrix::feature(const SizeStd& _track_id, CaptureBasePtr _ca
         return nullptr;
 }
 
-CaptureBasePtr TrackMatrix::firstCapture(const SizeStd& _track_id)
+CaptureBasePtr TrackMatrix::firstCapture(const SizeStd& _track_id) const
 {
     return firstFeature(_track_id)->getCapture();
 }
 
-Track TrackMatrix::trackAtKeyframes(size_t _track_id)
+Track TrackMatrix::trackAtKeyframes(size_t _track_id) const
 {
     // We assemble a track_kf on the fly by checking each capture's frame.
     if (tracks_.count(_track_id))