diff --git a/src/examples/fundamental_matrix.cpp b/src/examples/fundamental_matrix.cpp
index 834093920a008a348d15c93243a8c9e0bf78d6cb..2810b287f53462ddabd32fc86fcd3b93297668c2 100644
--- a/src/examples/fundamental_matrix.cpp
+++ b/src/examples/fundamental_matrix.cpp
@@ -153,6 +153,11 @@ int main(int argc, char** argv)
     KeyPointVector keypoints_1 = det_ptr->detect(image_buffer.back());
     cv::Mat descriptors_1 = des_ptr->getDescriptor( image_buffer.back(), keypoints_1);
 
+    clock_t tStart, tDet, tDesc, tMatch, tFilter, tFund;
+    double t_det(0), t_desc(0), t_match(0), t_filter(0), t_fund(0);
+    const int CLOCKS_PER_MSEC = (CLOCKS_PER_SEC/1000);
+
+    int n_iter = 0;
     while(1)
     {
     	capture >> img;
@@ -167,15 +172,22 @@ int main(int argc, char** argv)
         DMatchVector good_matches, inlier_matches;
         PointVector inliers_1, inliers_2;
 
+
+        tStart = clock();
+
         // detect and describe in new image
         KeyPointVector keypoints_2 = det_ptr->detect(img);
 
+        tDet = clock();
+
         if (keypoints_2.size()>0)
         {
         	image_buffer.add(img);
 
         	cv::Mat descriptors_2 = des_ptr->getDescriptor( image_buffer.back(), keypoints_2);
 
+            tDesc = clock();
+
         	unsigned int max_dist = 0;
         	unsigned int min_dist = 512;
 
@@ -185,6 +197,8 @@ int main(int argc, char** argv)
         		//-- Step 3: Matching descriptor vectors using FLANN matcher
         		mat_ptr->match(descriptors_1,descriptors_2,des_ptr->getSize(),matches);
 
+                tMatch = clock();
+
         		//-- Quick calculation of max and min distances between keypoints
         		for (int ii = 0; ii < descriptors_1.rows; ii++)
         		{
@@ -192,7 +206,7 @@ int main(int argc, char** argv)
         			if (dist < min_dist)
         				min_dist = dist;
         			if (dist > max_dist)
-        			max_dist = dist;
+        			    max_dist = dist;
         		}
         	}
         	else
@@ -215,13 +229,17 @@ int main(int argc, char** argv)
         		}
         	}
 
+            tFilter = clock();
+
+
         	// Compute the Fundamental matrix F and discard outliers through ransac in one go
         	if (good_matches.size() > 20) // Minimum is 8 points, but we need more for robustness
         	{
         		// find fundamental matrix using RANSAC, return set of inliers as bool vector
-        		cv::Mat F = findFundamentalMat(matched_1, matched_2, cv::FM_RANSAC, 3.0, 0.98, inliers_bool);
+        		cv::Mat F = findFundamentalMat(matched_1, matched_2, cv::FM_RANSAC, 2.0, 0.98, inliers_bool);
+
 
-        		std::cout << "F = " << F << std::endl;
+                std::cout << "F = " << F << std::endl;
 
         		// Recover the inlier matches
         		for (unsigned int ii = 0; ii < good_matches.size(); ii++)
@@ -229,16 +247,34 @@ int main(int argc, char** argv)
         				inlier_matches.push_back(good_matches[ii]);
         	}
 
-        	std::cout << "Matches: initial " << matches.size() << " | good " << good_matches.size() << " | inliers "
+            tFund = clock();
+
+            std::cout << "Matches: initial " << matches.size() << " | good " << good_matches.size() << " | inliers "
         			<< inlier_matches.size() << std::endl;
 
         	std::cout << "kp1: " << keypoints_1.size() << " kp2: " << keypoints_2.size() << " inliers:" << inlier_matches.size() << std::endl;
 
+        	n_iter ++;
+        	t_det       += double(   tDet - tStart )/CLOCKS_PER_MSEC;
+        	t_desc      += double(  tDesc - tDet   )/CLOCKS_PER_MSEC;
+        	t_match     += double( tMatch - tDesc  )/CLOCKS_PER_MSEC;
+        	t_filter    += double(tFilter - tMatch )/CLOCKS_PER_MSEC;
+        	t_fund      += double(  tFund - tFilter)/CLOCKS_PER_MSEC;
+
+        	std::cout << "det: " << t_det/n_iter << "ms - desc: " << t_desc/n_iter << "ms - match: " << t_match/n_iter << "ms - filter: " << t_filter/n_iter << "ms - fund: " << t_fund/n_iter << "ms" << std::endl;
+
             std::cout << "+++++++++++++++" << std::endl;
 
         	// Draw RANSAC inliers
-        	cv::drawMatches(image_buffer[image_buffer.size()-2], keypoints_1, image_buffer.back(), keypoints_2, inlier_matches, img_matches,
-        	cv::Scalar::all(-1), cv::Scalar::all(-1), std::vector<char>(), 0); //cv::DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS );
+        	cv::drawMatches(image_buffer[image_buffer.size()-2], // before the last img
+        	                keypoints_1,
+        	                image_buffer.back(), // last img
+        	                keypoints_2,
+        	                inlier_matches,
+        	                img_matches,
+        	                cv::Scalar::all(-1),
+        	                cv::Scalar::all(-1),
+        	                std::vector<char>(), 0); //cv::DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS );
 
         	// Show detected matches
         	imshow("Feature tracker", img_matches);
diff --git a/src/examples/yaml/fundamental_matrix.yaml b/src/examples/yaml/fundamental_matrix.yaml
index ef24ff4c86d73352d05d0c375e2724a852d29dbe..b2e097790ac82e5fd6812887b656f63c867a666f 100644
--- a/src/examples/yaml/fundamental_matrix.yaml
+++ b/src/examples/yaml/fundamental_matrix.yaml
@@ -1,13 +1,13 @@
 detector:
   type: "AGAST"         
-  threshold: 9
+  threshold: 8
   nonmaxSuppression: true
   detection type: 0         #  AGAST_5_8=0, AGAST_7_12d=1, AGAST_7_12s=2, OAST_9_16=3, THRESHOLD=10000, NONMAX_SUPPRESSION=10001
   
 descriptor:
   type: "BRIEF"
-  bytes: 32
-  use_orientation: true     
+  bytes: 16
+  use_orientation: false     
   
 matcher:
   type: "FLANNBASED" # BRUTEFORCE, BRUTEFORCE_HAMMING, BRUTEFORCE_HAMMING_2, BRUTEFORCE_L1, FLANNBASED
diff --git a/src/vision_utils.h b/src/vision_utils.h
index df9631e4aa99cf3717bc94d5a8d47b631fb5fe2c..2ae117b4a14f71caef517e318cedbf768947b098 100644
--- a/src/vision_utils.h
+++ b/src/vision_utils.h
@@ -212,7 +212,7 @@ struct FeatureIdxMap_GreaterThan// : public std::binary_function<Scalar, Scalar,
 };
 typedef std::multimap<Scalar, size_t, FeatureIdxMap_GreaterThan> FeatureIdxMap;
 
-VU_STRUCT_PTR_TYPEDEFS(FeatureIdxGrid);
+VU_PTR_TYPEDEFS(FeatureIdxGrid);
 
 class FeatureIdxGrid {