diff --git a/internal/ceres/preprocessor.cc b/internal/ceres/preprocessor.cc
index 0221914..6a67d38 100644
--- a/internal/ceres/preprocessor.cc
+++ b/internal/ceres/preprocessor.cc
@@ -28,11 +28,12 @@
 //
 // Author: sameragarwal@google.com (Sameer Agarwal)
 
+#include "ceres/preprocessor.h"
+
 #include "ceres/callbacks.h"
 #include "ceres/gradient_checking_cost_function.h"
 #include "ceres/line_search_preprocessor.h"
 #include "ceres/parallel_for.h"
-#include "ceres/preprocessor.h"
 #include "ceres/problem_impl.h"
 #include "ceres/solver.h"
 #include "ceres/trust_region_preprocessor.h"
@@ -53,17 +54,15 @@
   return NULL;
 }
 
-Preprocessor::~Preprocessor() {
-}
+Preprocessor::~Preprocessor() {}
 
 void ChangeNumThreadsIfNeeded(Solver::Options* options) {
   const int num_threads_available = MaxNumThreadsAvailable();
   if (options->num_threads > num_threads_available) {
-    LOG(WARNING)
-        << "Specified options.num_threads: " << options->num_threads
-        << " exceeds maximum available from the threading model Ceres "
-        << "was compiled with: " << num_threads_available
-        << ".  Bounding to maximum number available.";
+    LOG(WARNING) << "Specified options.num_threads: " << options->num_threads
+                 << " exceeds maximum available from the threading model Ceres "
+                 << "was compiled with: " << num_threads_available
+                 << ".  Bounding to maximum number available.";
     options->num_threads = num_threads_available;
   }
 }
@@ -83,16 +82,15 @@
   minimizer_options.evaluator = pp->evaluator;
 
   if (options.logging_type != SILENT) {
-    pp->logging_callback.reset(
-        new LoggingCallback(options.minimizer_type,
-                            options.minimizer_progress_to_stdout));
+    pp->logging_callback.reset(new LoggingCallback(
+        options.minimizer_type, options.minimizer_progress_to_stdout));
     minimizer_options.callbacks.insert(minimizer_options.callbacks.begin(),
                                        pp->logging_callback.get());
   }
 
   if (options.update_state_every_iteration) {
     pp->state_updating_callback.reset(
-      new StateUpdatingCallback(program, reduced_parameters));
+        new StateUpdatingCallback(program, reduced_parameters));
     // This must get pushed to the front of the callbacks so that it
     // is run before any of the user callbacks.
     minimizer_options.callbacks.insert(minimizer_options.callbacks.begin(),
