diff --git a/internal/ceres/iterative_schur_complement_solver.cc b/internal/ceres/iterative_schur_complement_solver.cc
index 9a66c1e..c44bd39 100644
--- a/internal/ceres/iterative_schur_complement_solver.cc
+++ b/internal/ceres/iterative_schur_complement_solver.cc
@@ -42,6 +42,7 @@
 #include "ceres/internal/eigen.h"
 #include "ceres/internal/scoped_ptr.h"
 #include "ceres/linear_solver.h"
+#include "ceres/preconditioner.h"
 #include "ceres/schur_jacobi_preconditioner.h"
 #include "ceres/triplet_sparse_matrix.h"
 #include "ceres/types.h"
diff --git a/internal/ceres/parameter_block.h b/internal/ceres/parameter_block.h
index 4fcafe0..3a709f4 100644
--- a/internal/ceres/parameter_block.h
+++ b/internal/ceres/parameter_block.h
@@ -77,6 +77,7 @@
   ParameterBlock(double* user_state, int size, int index) {
     Init(user_state, size, index, NULL);
   }
+
   ParameterBlock(double* user_state,
                  int size,
                  int index,
@@ -205,21 +206,21 @@
   }
 
   void EnableResidualBlockDependencies() {
-    CHECK(residual_blocks_ == NULL)
+    CHECK(residual_blocks_.get() == NULL)
         << "Ceres bug: There is already a residual block collection "
         << "for parameter block: " << ToString();
-    residual_blocks_ = new ResidualBlockSet;
+    residual_blocks_.reset(new ResidualBlockSet);
   }
 
   void AddResidualBlock(ResidualBlock* residual_block) {
-    CHECK(residual_blocks_ != NULL)
+    CHECK(residual_blocks_.get() != NULL)
         << "Ceres bug: The residual block collection is null for parameter "
         << "block: " << ToString();
     residual_blocks_->insert(residual_block);
   }
 
   void RemoveResidualBlock(ResidualBlock* residual_block) {
-    CHECK(residual_blocks_ != NULL)
+    CHECK(residual_blocks_.get() != NULL)
         << "Ceres bug: The residual block collection is null for parameter "
         << "block: " << ToString();
     CHECK(residual_blocks_->find(residual_block) != residual_blocks_->end())
@@ -230,7 +231,7 @@
   // This is only intended for iterating; perhaps this should only expose
   // .begin() and .end().
   ResidualBlockSet* mutable_residual_blocks() {
-    return residual_blocks_;
+    return residual_blocks_.get();
   }
 
  private:
@@ -251,8 +252,6 @@
 
     state_offset_ = -1;
     delta_offset_ = -1;
-
-    residual_blocks_ = NULL;
   }
 
   bool UpdateLocalParameterizationJacobian() {
@@ -311,7 +310,7 @@
   int32 delta_offset_;
 
   // If non-null, contains the residual blocks this parameter block is in.
-  ResidualBlockSet* residual_blocks_;
+  scoped_ptr<ResidualBlockSet> residual_blocks_;
 
   // Necessary so ProblemImpl can clean up the parameterizations.
   friend class ProblemImpl;
