diff --git a/internal/ceres/covariance_impl.cc b/internal/ceres/covariance_impl.cc
index ee4afd9..7ca23a8 100644
--- a/internal/ceres/covariance_impl.cc
+++ b/internal/ceres/covariance_impl.cc
@@ -558,7 +558,7 @@
       "CovarianceImpl::ComputeCovarianceValuesUsingSparseQR");
 
 #ifndef CERES_NO_SUITESPARSE
-  if (covariance_matrix_.get() == nullptr) {
+  if (covariance_matrix_ == nullptr) {
     // Nothing to do, all zeros covariance matrix.
     return true;
   }
@@ -723,7 +723,7 @@
 bool CovarianceImpl::ComputeCovarianceValuesUsingDenseSVD() {
   EventLogger event_logger(
       "CovarianceImpl::ComputeCovarianceValuesUsingDenseSVD");
-  if (covariance_matrix_.get() == nullptr) {
+  if (covariance_matrix_ == nullptr) {
     // Nothing to do, all zeros covariance matrix.
     return true;
   }
@@ -814,7 +814,7 @@
 bool CovarianceImpl::ComputeCovarianceValuesUsingEigenSparseQR() {
   EventLogger event_logger(
       "CovarianceImpl::ComputeCovarianceValuesUsingEigenSparseQR");
-  if (covariance_matrix_.get() == nullptr) {
+  if (covariance_matrix_ == nullptr) {
     // Nothing to do, all zeros covariance matrix.
     return true;
   }
diff --git a/internal/ceres/covariance_test.cc b/internal/ceres/covariance_test.cc
index 4675ada..410212b 100644
--- a/internal/ceres/covariance_test.cc
+++ b/internal/ceres/covariance_test.cc
@@ -379,7 +379,7 @@
 // x_plus_delta = delta * x;
 class PolynomialParameterization : public LocalParameterization {
  public:
-  virtual ~PolynomialParameterization() {}
+  ~PolynomialParameterization() final {}
 
   bool Plus(const double* x,
             const double* delta,
@@ -402,7 +402,7 @@
 // x_plus_delta = delta * x;
 class PolynomialManifold : public Manifold {
  public:
-  virtual ~PolynomialManifold() {}
+  ~PolynomialManifold() final {}
 
   bool Plus(const double* x,
             const double* delta,
diff --git a/internal/ceres/gradient_problem.cc b/internal/ceres/gradient_problem.cc
index bb11adf..3ef8e4f 100644
--- a/internal/ceres/gradient_problem.cc
+++ b/internal/ceres/gradient_problem.cc
@@ -30,6 +30,8 @@
 
 #include "ceres/gradient_problem.h"
 
+#include <memory>
+
 #include "ceres/local_parameterization.h"
 #include "ceres/manifold_adapter.h"
 #include "glog/logging.h"
@@ -38,7 +40,8 @@
 
 GradientProblem::GradientProblem(FirstOrderFunction* function)
     : function_(function),
-      manifold_(new EuclideanManifold(function_->NumParameters())),
+      manifold_(
+          std::make_unique<EuclideanManifold>(function_->NumParameters())),
       scratch_(new double[function_->NumParameters()]) {
   CHECK(function != nullptr);
 }
@@ -59,13 +62,11 @@
 
 GradientProblem::GradientProblem(FirstOrderFunction* function,
                                  Manifold* manifold)
-    : function_(function),
-      manifold_(manifold),
-      scratch_(new double[function_->NumParameters()]) {
+    : function_(function), scratch_(new double[function_->NumParameters()]) {
   CHECK(function != nullptr);
-  if (manifold == nullptr) {
-    manifold_.reset(new EuclideanManifold(function_->NumParameters()));
-  }
+  manifold_.reset(manifold != nullptr
+                      ? manifold
+                      : new EuclideanManifold(function_->NumParameters()));
   CHECK_EQ(function_->NumParameters(), manifold_->AmbientSize());
 }
 
diff --git a/internal/ceres/parameter_block_test.cc b/internal/ceres/parameter_block_test.cc
index 713a0f7..f7923b3 100644
--- a/internal/ceres/parameter_block_test.cc
+++ b/internal/ceres/parameter_block_test.cc
@@ -111,7 +111,8 @@
 
 struct TestManifold : public Manifold {
  public:
-  virtual ~TestManifold() {}
+  ~TestManifold() final {}
+
   bool Plus(const double* x,
             const double* delta,
             double* x_plus_delta) const final {
@@ -165,8 +166,8 @@
 class BadManifold : public Manifold {
  public:
   BadManifold() : calls_(0) {}
+  ~BadManifold() final {}
 
-  virtual ~BadManifold() {}
   bool Plus(const double* x,
             const double* delta,
             double* x_plus_delta) const final {
diff --git a/internal/ceres/problem.cc b/internal/ceres/problem.cc
index 703d29d..e6a7350 100644
--- a/internal/ceres/problem.cc
+++ b/internal/ceres/problem.cc
@@ -197,8 +197,8 @@
   return impl_->ParameterBlockTangentSize(values);
 }
 
-int Problem::ParameterBlockTangentSize(const double* parameter_block) const {
-  return impl_->ParameterBlockTangentSize(parameter_block);
+int Problem::ParameterBlockTangentSize(const double* values) const {
+  return impl_->ParameterBlockTangentSize(values);
 }
 
 bool Problem::HasParameterBlock(const double* values) const {
