diff --git a/CMakeLists.txt b/CMakeLists.txt
index 43e9eb71a180e76aa1b56275001723ab6e2650a8..085812a58cbe669b65840bc21436168add28dcc5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -144,7 +144,7 @@ SET(HDRS_CAPTURE
 include/vision/capture/capture_image.h
   )
 SET(HDRS_FACTOR
-include/vision/factor/factor_autodiff_trifocal.h
+include/vision/factor/factor_trifocal.h
 include/vision/factor/factor_ahp.h
 include/vision/factor/factor_pixel_hp.h
 include/vision/factor/factor_epipolar.h
diff --git a/include/vision/factor/factor_autodiff_trifocal.h b/include/vision/factor/factor_trifocal.h
similarity index 92%
rename from include/vision/factor/factor_autodiff_trifocal.h
rename to include/vision/factor/factor_trifocal.h
index d243f644f3c9512c46a4768e7983082df26d1d69..4d99ae0892b7fe90d671a0f5232c615bca7bc239 100644
--- a/include/vision/factor/factor_autodiff_trifocal.h
+++ b/include/vision/factor/factor_trifocal.h
@@ -1,5 +1,5 @@
-#ifndef _FACTOR_AUTODIFF_TRIFOCAL_H_
-#define _FACTOR_AUTODIFF_TRIFOCAL_H_
+#ifndef _FACTOR_TRIFOCAL_H_
+#define _FACTOR_TRIFOCAL_H_
 
 //Wolf includes
 //#include "core/common/wolf.h"
@@ -12,17 +12,17 @@
 namespace wolf
 {
 
-WOLF_PTR_TYPEDEFS(FactorAutodiffTrifocal);
+WOLF_PTR_TYPEDEFS(FactorTrifocal);
 
 using namespace Eigen;
 
-class FactorAutodiffTrifocal : public FactorAutodiff<FactorAutodiffTrifocal, 3, 3, 4, 3, 4, 3, 4, 3, 4>
+class FactorTrifocal : public FactorAutodiff<FactorTrifocal, 3, 3, 4, 3, 4, 3, 4, 3, 4>
 {
     public:
 
         /** \brief Class constructor
          */
-        FactorAutodiffTrifocal(const FeatureBasePtr& _feature_1_ptr,
+        FactorTrifocal(const FeatureBasePtr& _feature_1_ptr,
                                const FeatureBasePtr& _feature_2_ptr,
                                const FeatureBasePtr& _feature_own_ptr,
                                const ProcessorBasePtr& _processor_ptr,
@@ -31,7 +31,7 @@ class FactorAutodiffTrifocal : public FactorAutodiff<FactorAutodiffTrifocal, 3,
 
         /** \brief Class Destructor
          */
-        virtual ~FactorAutodiffTrifocal();
+        virtual ~FactorTrifocal();
 
         virtual std::string getTopology() const override
         {
@@ -144,7 +144,7 @@ namespace wolf
 using namespace Eigen;
 
 // Constructor
-FactorAutodiffTrifocal::FactorAutodiffTrifocal(const FeatureBasePtr& _feature_1_ptr,
+FactorTrifocal::FactorTrifocal(const FeatureBasePtr& _feature_1_ptr,
                                                const FeatureBasePtr& _feature_2_ptr,
                                                const FeatureBasePtr& _feature_own_ptr,
                                                const ProcessorBasePtr& _processor_ptr,
@@ -222,17 +222,17 @@ FactorAutodiffTrifocal::FactorAutodiffTrifocal(const FeatureBasePtr& _feature_1_
 }
 
 // Destructor
-FactorAutodiffTrifocal::~FactorAutodiffTrifocal()
+FactorTrifocal::~FactorTrifocal()
 {
 }
 
-inline FeatureBasePtr FactorAutodiffTrifocal::getFeaturePrev()
+inline FeatureBasePtr FactorTrifocal::getFeaturePrev()
 {
     return feature_prev_ptr_.lock();
 }
 
 template<typename T>
-bool FactorAutodiffTrifocal::operator ()( const T* const _pos1,
+bool FactorTrifocal::operator ()( const T* const _pos1,
                                           const T* const _quat1,
                                           const T* const _pos2,
                                           const T* const _quat2,
@@ -262,7 +262,7 @@ bool FactorAutodiffTrifocal::operator ()( const T* const _pos1,
 }
 
 template<typename D1, typename D2, class T, typename D3>
-inline void FactorAutodiffTrifocal::expectation(const MatrixBase<D1>&     _wtr1,
+inline void FactorTrifocal::expectation(const MatrixBase<D1>&     _wtr1,
                                                 const QuaternionBase<D2>& _wqr1,
                                                 const MatrixBase<D1>&     _wtr2,
                                                 const QuaternionBase<D2>& _wqr2,
@@ -333,7 +333,7 @@ inline void FactorAutodiffTrifocal::expectation(const MatrixBase<D1>&     _wtr1,
 }
 
 template<typename T, typename D1>
-inline Matrix<T, 3, 1> FactorAutodiffTrifocal::residual(const vision_utils::TrifocalTensorBase<T>& _tensor,
+inline Matrix<T, 3, 1> FactorTrifocal::residual(const vision_utils::TrifocalTensorBase<T>& _tensor,
                                                         const MatrixBase<D1>& _c2Ec1) const
 {
     // 1. COMMON COMPUTATIONS
@@ -363,7 +363,7 @@ inline Matrix<T, 3, 1> FactorAutodiffTrifocal::residual(const vision_utils::Trif
 
 // Helper functions to be used by the above
 template<class T, typename D1, typename D2, typename D3, typename D4>
-inline Matrix<T, 3, 1> FactorAutodiffTrifocal::error_jacobians(const vision_utils::TrifocalTensorBase<T>& _tensor,
+inline Matrix<T, 3, 1> FactorTrifocal::error_jacobians(const vision_utils::TrifocalTensorBase<T>& _tensor,
                                                                const MatrixBase<D1>& _c2Ec1,
                                                                MatrixBase<D2>& _J_e_m1,
                                                                MatrixBase<D3>& _J_e_m2,
@@ -411,20 +411,20 @@ inline Matrix<T, 3, 1> FactorAutodiffTrifocal::error_jacobians(const vision_util
 
 // Print function
 template<class T, int ROWS, int COLS>
-void FactorAutodiffTrifocal::print_matrix(const Eigen::Matrix<T, ROWS, COLS>& _mat) const
+void FactorTrifocal::print_matrix(const Eigen::Matrix<T, ROWS, COLS>& _mat) const
 {}
 
 template<int ROWS, int COLS>
-void FactorAutodiffTrifocal::print_matrix(const Eigen::Matrix<double, ROWS, COLS>& _mat) const
+void FactorTrifocal::print_matrix(const Eigen::Matrix<double, ROWS, COLS>& _mat) const
 {
     std::cout << _mat << std::endl;
 }
 
 template<class T>
-void FactorAutodiffTrifocal::print_scalar(const T& _val) const
+void FactorTrifocal::print_scalar(const T& _val) const
 {}
 
-void FactorAutodiffTrifocal::print_scalar(const double& _val) const
+void FactorTrifocal::print_scalar(const double& _val) const
 {
     std::cout << _val << std::endl;
 }
diff --git a/src/processor/processor_tracker_feature_trifocal.cpp b/src/processor/processor_tracker_feature_trifocal.cpp
index 34daf3b6285184675697e7ae98ac55cc572e7659..6a58f1d68e3ab291ff57d75afb8f6634a2333bc0 100644
--- a/src/processor/processor_tracker_feature_trifocal.cpp
+++ b/src/processor/processor_tracker_feature_trifocal.cpp
@@ -4,7 +4,7 @@
 
 #include "vision/sensor/sensor_camera.h"
 #include "vision/feature/feature_point_image.h"
-#include "vision/factor/factor_autodiff_trifocal.h"
+#include "vision/factor/factor_trifocal.h"
 #include "vision/capture/capture_image.h"
 
 // vision_utils
@@ -432,7 +432,7 @@ void ProcessorTrackerFeatureTrifocal::establishFactors()
                 assert(ftr_mid != ftr_last  && "Last and middle features are the same!");
 
                 // emplace factor
-                auto ctr = FactorBase::emplace<FactorAutodiffTrifocal>(ftr_last, ftr_first, ftr_mid, ftr_last, shared_from_this(), params_->apply_loss_function, FAC_ACTIVE);
+                auto ctr = FactorBase::emplace<FactorTrifocal>(ftr_last, ftr_first, ftr_mid, ftr_last, shared_from_this(), params_->apply_loss_function, FAC_ACTIVE);
             }
         }
     }
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index a1dc6f1994276d3b22ec287b479d3d0b31f3b758..193f3a0d6d953a374aafa94adb835570288fb57f 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -20,9 +20,9 @@ target_link_libraries(gtest_pinhole ${PLUGIN_NAME} ${wolf_LIBRARY})
 wolf_add_gtest(gtest_sensor_camera gtest_sensor_camera.cpp)
 target_link_libraries(gtest_sensor_camera ${PLUGIN_NAME} ${wolf_LIBRARY} ${OpenCV_LIBS} ${vision_utils_LIBRARY})
 
-# FactorAutodiffTrifocal test
-wolf_add_gtest(gtest_factor_autodiff_trifocal gtest_factor_autodiff_trifocal.cpp)
-target_link_libraries(gtest_factor_autodiff_trifocal ${PLUGIN_NAME} ${wolf_LIBRARY} ${OpenCV_LIBS} ${vision_utils_LIBRARY})
+# FactorTrifocal test
+wolf_add_gtest(gtest_factor_trifocal gtest_factor_trifocal.cpp)
+target_link_libraries(gtest_factor_trifocal ${PLUGIN_NAME} ${wolf_LIBRARY} ${OpenCV_LIBS} ${vision_utils_LIBRARY})
 
 # FactorFeatureEpipolar test
 wolf_add_gtest(gtest_factor_epipolar gtest_factor_epipolar.cpp)
diff --git a/test/gtest_factor_autodiff_trifocal.cpp b/test/gtest_factor_trifocal.cpp
similarity index 94%
rename from test/gtest_factor_autodiff_trifocal.cpp
rename to test/gtest_factor_trifocal.cpp
index 58b73ac752725b9ef5c6497bbfb3c7f7ae4d86c5..c331232d9a5b7466cea0b2fef0f42fa1f96768cc 100644
--- a/test/gtest_factor_autodiff_trifocal.cpp
+++ b/test/gtest_factor_trifocal.cpp
@@ -5,13 +5,13 @@
 #include "core/ceres_wrapper/ceres_manager.h"
 #include "vision/processor/processor_tracker_feature_trifocal.h"
 #include "vision/capture/capture_image.h"
-#include "vision/factor/factor_autodiff_trifocal.h"
+#include "vision/factor/factor_trifocal.h"
 #include "vision/internal/config.h"
 
 using namespace Eigen;
 using namespace wolf;
 
-class FactorAutodiffTrifocalTest : public testing::Test{
+class FactorTrifocalTest : public testing::Test{
     public:
         Vector3d    pos1,   pos2,   pos3,   pos_cam, point;
         Vector3d    euler1, euler2, euler3, euler_cam;
@@ -29,11 +29,11 @@ class FactorAutodiffTrifocalTest : public testing::Test{
         FrameBasePtr    F1, F2, F3;
         CaptureImagePtr I1, I2, I3;
         FeatureBasePtr  f1, f2, f3;
-        FactorAutodiffTrifocalPtr c123;
+        FactorTrifocalPtr c123;
 
         double pixel_noise_std;
 
-        virtual ~FactorAutodiffTrifocalTest()
+        virtual ~FactorTrifocalTest()
         {
             std::cout << "destructor\n";
         }
@@ -155,15 +155,15 @@ class FactorAutodiffTrifocalTest : public testing::Test{
             f3 = FeatureBase::emplace<FeatureBase>(I3, "PIXEL", pix, pix_cov); // pixel at origin
 
             // trifocal factor
-            // c123 = std::make_shared<FactorAutodiffTrifocal>(f1, f2, f3, proc_trifocal, false, FAC_ACTIVE);
-            c123 = std::static_pointer_cast<FactorAutodiffTrifocal>(FactorBase::emplace<FactorAutodiffTrifocal>(f3, f1, f2, f3, proc_trifocal, false, FAC_ACTIVE));
+            // c123 = std::make_shared<FactorTrifocal>(f1, f2, f3, proc_trifocal, false, FAC_ACTIVE);
+            c123 = std::static_pointer_cast<FactorTrifocal>(FactorBase::emplace<FactorTrifocal>(f3, f1, f2, f3, proc_trifocal, false, FAC_ACTIVE));
             // f3   ->addFactor   (c123);
             // f1   ->addConstrainedBy(c123);
             // f2   ->addConstrainedBy(c123);
         }
 };
 
-TEST_F(FactorAutodiffTrifocalTest, InfoMatrix)
+TEST_F(FactorTrifocalTest, InfoMatrix)
 {
     /** Ground truth covariance. Rationale:
      * Due to the orthogonal configuration (see line 40 and onwards), we have:
@@ -187,7 +187,7 @@ TEST_F(FactorAutodiffTrifocalTest, InfoMatrix)
 
 }
 
-TEST_F(FactorAutodiffTrifocalTest, expectation)
+TEST_F(FactorTrifocalTest, expectation)
 {
     //    Homogeneous transform C2 wrt C1
     Matrix4d _c1Hc2; _c1Hc2 <<
@@ -256,7 +256,7 @@ TEST_F(FactorAutodiffTrifocalTest, expectation)
     ASSERT_MATRIX_APPROX(c2Ec1/c2Ec1(0,1), _c2Ec1/_c2Ec1(0,1), 1e-8);
 }
 
-TEST_F(FactorAutodiffTrifocalTest, residual)
+TEST_F(FactorTrifocalTest, residual)
 {
     vision_utils::TrifocalTensor tensor;
     Matrix3d c2Ec1;
@@ -269,7 +269,7 @@ TEST_F(FactorAutodiffTrifocalTest, residual)
     ASSERT_MATRIX_APPROX(residual, Vector3d::Zero(), 1e-8);
 }
 
-TEST_F(FactorAutodiffTrifocalTest, error_jacobians)
+TEST_F(FactorTrifocalTest, error_jacobians)
 {
     vision_utils::TrifocalTensor tensor;
     Matrix3d c2Ec1;
@@ -340,7 +340,7 @@ TEST_F(FactorAutodiffTrifocalTest, error_jacobians)
 
 }
 
-TEST_F(FactorAutodiffTrifocalTest, operator_parenthesis)
+TEST_F(FactorTrifocalTest, operator_parenthesis)
 {
     Vector3d res;
 
@@ -354,7 +354,7 @@ TEST_F(FactorAutodiffTrifocalTest, operator_parenthesis)
     ASSERT_MATRIX_APPROX(res, Vector3d::Zero(), 1e-8);
 }
 
-TEST_F(FactorAutodiffTrifocalTest, solve_F1)
+TEST_F(FactorTrifocalTest, solve_F1)
 {
     F1->setState(pose1);
     F2->setState(pose2);
@@ -435,7 +435,7 @@ TEST_F(FactorAutodiffTrifocalTest, solve_F1)
 
 }
 
-TEST_F(FactorAutodiffTrifocalTest, solve_F2)
+TEST_F(FactorTrifocalTest, solve_F2)
 {
     F1->setState(pose1);
     F2->setState(pose2);
@@ -517,7 +517,7 @@ TEST_F(FactorAutodiffTrifocalTest, solve_F2)
 
 }
 
-TEST_F(FactorAutodiffTrifocalTest, solve_F3)
+TEST_F(FactorTrifocalTest, solve_F3)
 {
     F1->setState(pose1);
     F2->setState(pose2);
@@ -600,7 +600,7 @@ TEST_F(FactorAutodiffTrifocalTest, solve_F3)
 
 }
 
-TEST_F(FactorAutodiffTrifocalTest, solve_S)
+TEST_F(FactorTrifocalTest, solve_S)
 {
     F1->setState(pose1);
     F2->setState(pose2);
@@ -685,7 +685,7 @@ TEST_F(FactorAutodiffTrifocalTest, solve_S)
 
 }
 
-class FactorAutodiffTrifocalMultiPointTest : public FactorAutodiffTrifocalTest
+class FactorTrifocalMultiPointTest : public FactorTrifocalTest
 {
         /*
          * In this test class we add 8 more points and perform optimization on the camera frames.
@@ -699,11 +699,11 @@ class FactorAutodiffTrifocalMultiPointTest : public FactorAutodiffTrifocalTest
 
     public:
         std::vector<FeatureBasePtr> fv1, fv2, fv3;
-        std::vector<FactorAutodiffTrifocalPtr> cv123;
+        std::vector<FactorTrifocalPtr> cv123;
 
         virtual void SetUp() override
         {
-            FactorAutodiffTrifocalTest::SetUp();
+            FactorTrifocalTest::SetUp();
 
             Matrix<double, 2, 9> c1p_can;
             c1p_can <<
@@ -744,7 +744,7 @@ class FactorAutodiffTrifocalMultiPointTest : public FactorAutodiffTrifocalTest
                 fv3.push_back(f3);
                 // I3->addFeature(fv3.at(i));
 
-                auto ff = std::static_pointer_cast<FactorAutodiffTrifocal>(FactorBase::emplace<FactorAutodiffTrifocal>(fv3.at(i), fv1.at(i), fv2.at(i), fv3.at(i), proc_trifocal, false, FAC_ACTIVE));
+                auto ff = std::static_pointer_cast<FactorTrifocal>(FactorBase::emplace<FactorTrifocal>(fv3.at(i), fv1.at(i), fv2.at(i), fv3.at(i), proc_trifocal, false, FAC_ACTIVE));
                 cv123.push_back(ff);
                 // fv3.at(i)->addFactor(cv123.at(i));
                 // fv1.at(i)->addConstrainedBy(cv123.at(i));
@@ -755,7 +755,7 @@ class FactorAutodiffTrifocalMultiPointTest : public FactorAutodiffTrifocalTest
 
 };
 
-TEST_F(FactorAutodiffTrifocalMultiPointTest, solve_multi_point)
+TEST_F(FactorTrifocalMultiPointTest, solve_multi_point)
 {
     /*
      * In this test we add 8 more points and perform optimization on the camera frames.
@@ -820,7 +820,7 @@ TEST_F(FactorAutodiffTrifocalMultiPointTest, solve_multi_point)
 
 }
 
-TEST_F(FactorAutodiffTrifocalMultiPointTest, solve_multi_point_scale)
+TEST_F(FactorTrifocalMultiPointTest, solve_multi_point_scale)
 {
     /*
      * In this test we add 8 more points and perform optimization on the camera frames.
@@ -886,7 +886,7 @@ TEST_F(FactorAutodiffTrifocalMultiPointTest, solve_multi_point_scale)
 
 #include "core/factor/factor_autodiff_distance_3d.h"
 
-TEST_F(FactorAutodiffTrifocalMultiPointTest, solve_multi_point_distance)
+TEST_F(FactorTrifocalMultiPointTest, solve_multi_point_distance)
 {
     /*
      * In this test we add 8 more points and perform optimization on the camera frames.
@@ -975,12 +975,12 @@ TEST_F(FactorAutodiffTrifocalMultiPointTest, solve_multi_point_distance)
 int main(int argc, char **argv)
 {
     testing::InitGoogleTest(&argc, argv);
-    //    ::testing::GTEST_FLAG(filter) = "FactorAutodiffTrifocalTest.solve_F1";
-    //    ::testing::GTEST_FLAG(filter) = "FactorAutodiffTrifocalTest.solve_F2";
-    //    ::testing::GTEST_FLAG(filter) = "FactorAutodiffTrifocalTest.solve_F3";
-    //    ::testing::GTEST_FLAG(filter) = "FactorAutodiffTrifocalTest.solve_S";
-    //    ::testing::GTEST_FLAG(filter) = "FactorAutodiffTrifocalTest.solve_multi_point";
-    //    ::testing::GTEST_FLAG(filter) = "FactorAutodiffTrifocalMultiPointTest.solve_multi_point_distance";
+    //    ::testing::GTEST_FLAG(filter) = "FactorTrifocalTest.solve_F1";
+    //    ::testing::GTEST_FLAG(filter) = "FactorTrifocalTest.solve_F2";
+    //    ::testing::GTEST_FLAG(filter) = "FactorTrifocalTest.solve_F3";
+    //    ::testing::GTEST_FLAG(filter) = "FactorTrifocalTest.solve_S";
+    //    ::testing::GTEST_FLAG(filter) = "FactorTrifocalTest.solve_multi_point";
+    //    ::testing::GTEST_FLAG(filter) = "FactorTrifocalMultiPointTest.solve_multi_point_distance";
     return RUN_ALL_TESTS();
 }