diff --git a/src/test/gtest_constraint_absolute.cpp b/src/test/gtest_constraint_absolute.cpp
index a0587e29ce96207c1e7bdaa05fb4f7e4a9b5cbc4..75e2f7a3ec28a2dd3820afcb7dceb9583a9bb6a6 100644
--- a/src/test/gtest_constraint_absolute.cpp
+++ b/src/test/gtest_constraint_absolute.cpp
@@ -28,7 +28,7 @@ Vector10s pose9toPose10(Vector9s _pose9)
 Vector9s pose(Vector9s::Random());
 Vector10s pose10 = pose9toPose10(pose);
 Vector9s data_var((Vector9s() << 0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2).finished());
-Eigen::Matrix<wolf::Scalar, 9, 9> data_cov = data_var.asDiagonal();
+Eigen::Matrix<wolf::Scalar, 9, 9> data_cov = 0.01*Eigen::Matrix<Scalar,9,9>::Identity();//data_var.asDiagonal();
 
 // perturbated priors
 Vector10s x0 = pose9toPose10(pose + Vector9s::Random()*0.25);
@@ -61,9 +61,7 @@ TEST(ConstraintBlockAbs, ctr_block_abs_p_check)
 TEST(ConstraintBlockAbs, ctr_block_abs_p_solve)
 {
     FeatureBasePtr fea0 = cap0->addFeature(std::make_shared<FeatureBase>("POSITION", pose10.head<3>(), data_cov.topLeftCorner<3,3>()));
-    ConstraintBlockAbsolutePtr ctr0 = std::static_pointer_cast<ConstraintBlockAbsolute>(
-        fea0->addConstraint(std::make_shared<ConstraintBlockAbsolute>(fea0->getFramePtr()->getPPtr()))
-        );
+    fea0->addConstraint(std::make_shared<ConstraintBlockAbsolute>(fea0->getFramePtr()->getPPtr()));
     
     // Unfix frame 0, perturb frm0
     frm0->unfix();
@@ -72,25 +70,42 @@ TEST(ConstraintBlockAbs, ctr_block_abs_p_solve)
     // solve for frm0
     std::string brief_report = ceres_mgr.solve(wolf::SolverManager::ReportVerbosity::BRIEF);
 
+    WOLF_INFO("SOLVER REPORT:\n",brief_report);
+
     //only orientation is constrained
     ASSERT_MATRIX_APPROX(frm0->getState().head<3>(), pose10.head<3>(), 1e-6);
 }
 
+TEST(ConstraintBlockAbs, ctr_block_abs_p_tail2_solve)
+{
+    FeatureBasePtr fea0 = cap0->addFeature(std::make_shared<FeatureBase>("POSITION TAIL 2", pose10.tail<2>(), data_cov.bottomRightCorner<2,2>()));
+    fea0->addConstraint(std::make_shared<ConstraintBlockAbsolute>(fea0->getFramePtr()->getPPtr(),1,2));
+
+    // Unfix frame 0, perturb frm0
+    frm0->unfix();
+    frm0->setState(x0);
+
+    // solve for frm0
+    std::string brief_report = ceres_mgr.solve(wolf::SolverManager::ReportVerbosity::BRIEF);
+
+    WOLF_INFO("SOLVER REPORT:\n",brief_report);
+
+    //only orientation is constrained
+    ASSERT_MATRIX_APPROX(frm0->getState().tail<2>(), pose10.tail<2>(), 1e-6);
+}
+
 TEST(ConstraintBlockAbs, ctr_block_abs_v_check)
 {
     FeatureBasePtr fea0 = cap0->addFeature(std::make_shared<FeatureBase>("VELOCITY", pose10.tail<3>(), data_cov.bottomRightCorner<3,3>()));
-    ConstraintBlockAbsolutePtr ctr0 = std::static_pointer_cast<ConstraintBlockAbsolute>(
-        fea0->addConstraint(std::make_shared<ConstraintBlockAbsolute>(fea0->getFramePtr()->getVPtr()))
-        );
+    fea0->addConstraint(std::make_shared<ConstraintBlockAbsolute>(fea0->getFramePtr()->getVPtr()));
+
     ASSERT_TRUE(problem->check(0));
 }
 
 TEST(ConstraintBlockAbs, ctr_block_abs_v_solve)
 {
     FeatureBasePtr fea0 = cap0->addFeature(std::make_shared<FeatureBase>("VELOCITY", pose10.tail<3>(), data_cov.bottomRightCorner<3,3>()));
-    ConstraintBlockAbsolutePtr ctr0 = std::static_pointer_cast<ConstraintBlockAbsolute>(
-        fea0->addConstraint(std::make_shared<ConstraintBlockAbsolute>(fea0->getFramePtr()->getVPtr()))
-        );
+    fea0->addConstraint(std::make_shared<ConstraintBlockAbsolute>(fea0->getFramePtr()->getVPtr()));
     
     // Unfix frame 0, perturb frm0
     frm0->unfix();
@@ -99,6 +114,8 @@ TEST(ConstraintBlockAbs, ctr_block_abs_v_solve)
     // solve for frm0
     std::string brief_report = ceres_mgr.solve(wolf::SolverManager::ReportVerbosity::BRIEF);
 
+    WOLF_INFO("SOLVER REPORT:\n",brief_report);
+
     //only velocity is constrained
     ASSERT_MATRIX_APPROX(frm0->getState().tail<3>(), pose10.tail<3>(), 1e-6);
 }
@@ -106,18 +123,15 @@ TEST(ConstraintBlockAbs, ctr_block_abs_v_solve)
 TEST(ConstraintQuatAbs, ctr_block_abs_o_check)
 {
     FeatureBasePtr fea0 = cap0->addFeature(std::make_shared<FeatureBase>("QUATERNION", pose10.segment<4>(3), data_cov.block<3,3>(3,3)));
-    ConstraintBlockAbsolutePtr ctr0 = std::static_pointer_cast<ConstraintBlockAbsolute>(
-        fea0->addConstraint(std::make_shared<ConstraintQuaternionAbsolute>(fea0->getFramePtr()->getOPtr()))
-        );
+    fea0->addConstraint(std::make_shared<ConstraintQuaternionAbsolute>(fea0->getFramePtr()->getOPtr()));
+
     ASSERT_TRUE(problem->check(0));
 }
 
 TEST(ConstraintQuatAbs, ctr_block_abs_o_solve)
 {
     FeatureBasePtr fea0 = cap0->addFeature(std::make_shared<FeatureBase>("QUATERNION", pose10.segment<4>(3), data_cov.block<3,3>(3,3)));
-    ConstraintBlockAbsolutePtr ctr0 = std::static_pointer_cast<ConstraintBlockAbsolute>(
-        fea0->addConstraint(std::make_shared<ConstraintQuaternionAbsolute>(fea0->getFramePtr()->getOPtr()))
-        );
+    fea0->addConstraint(std::make_shared<ConstraintQuaternionAbsolute>(fea0->getFramePtr()->getOPtr()));
     
     // Unfix frame 0, perturb frm0
     frm0->unfix();
@@ -126,6 +140,8 @@ TEST(ConstraintQuatAbs, ctr_block_abs_o_solve)
     // solve for frm0
     std::string brief_report = ceres_mgr.solve(wolf::SolverManager::ReportVerbosity::BRIEF);
 
+    WOLF_INFO("SOLVER REPORT:\n",brief_report);
+
     //only velocity is constrained
     ASSERT_MATRIX_APPROX(frm0->getState().segment<4>(3), pose10.segment<4>(3), 1e-6);
 }