diff --git a/common_service.cc b/common_service.cc
index d520cf1..a99d10c 100644
--- a/common_service.cc
+++ b/common_service.cc
@@ -50,11 +50,7 @@
 namespace {
 // Log and set the error on the passed ErrorPtr.
 void LogAndSetError(ErrorPtr* error,
-#if BASE_VER < 576279
-                    const tracked_objects::Location& location,
-#else
                     const base::Location& location,
-#endif
                     const string& reason) {
   brillo::Error::AddTo(error,
                        location,
diff --git a/omaha_request_action_unittest.cc b/omaha_request_action_unittest.cc
index 8dcec04..7b676e2 100644
--- a/omaha_request_action_unittest.cc
+++ b/omaha_request_action_unittest.cc
@@ -91,11 +91,7 @@
 struct FakeUpdateResponse {
   string GetRollbackVersionAttributes() const {
     string num_milestones;
-#if BASE_VER < 576279
-    num_milestones = base::IntToString(rollback_allowed_milestones);
-#else
     num_milestones = base::NumberToString(rollback_allowed_milestones);
-#endif
     const string rollback_version =
         " _firmware_version_" + num_milestones + "=\"" +
         past_rollback_key_version.first + "\"" + " _kernel_version_" +
diff --git a/omaha_utils.cc b/omaha_utils.cc
index 18a99ce..54e9fc0 100644
--- a/omaha_utils.cc
+++ b/omaha_utils.cc
@@ -24,11 +24,7 @@
 const EolDate kEolDateInvalid = -9999;
 
 std::string EolDateToString(EolDate eol_date) {
-#if BASE_VER < 576279
-  return base::Int64ToString(eol_date);
-#else
   return base::NumberToString(eol_date);
-#endif
 }
 
 EolDate StringToEolDate(const std::string& eol_date) {
diff --git a/payload_consumer/download_action.cc b/payload_consumer/download_action.cc
index 09afc42..45df5a9 100644
--- a/payload_consumer/download_action.cc
+++ b/payload_consumer/download_action.cc
@@ -56,9 +56,6 @@
       delegate_(nullptr),
       p2p_sharing_fd_(-1),
       p2p_visible_(true) {
-#if BASE_VER < 576279
-  base::StatisticsRecorder::Initialize();
-#endif
 }
 
 DownloadAction::~DownloadAction() {}
diff --git a/update_engine_client.cc b/update_engine_client.cc
index 3342592..eb71841 100644
--- a/update_engine_client.cc
+++ b/update_engine_client.cc
@@ -562,13 +562,8 @@
       ErrorCode code = static_cast<ErrorCode>(last_attempt_error);
 
       KeyValueStore last_attempt_error_store;
-#if BASE_VER < 576279
-      last_attempt_error_store.SetString(
-          "ERROR_CODE", base::Int64ToString(last_attempt_error));
-#else
       last_attempt_error_store.SetString(
           "ERROR_CODE", base::NumberToString(last_attempt_error));
-#endif
       last_attempt_error_store.SetString("ERROR_MESSAGE",
                                          ErrorCodeToString(code));
       printf("%s", last_attempt_error_store.SaveToString().c_str());
diff --git a/update_manager/boxed_value.cc b/update_manager/boxed_value.cc
index ef321e6..4dff9ef 100644
--- a/update_manager/boxed_value.cc
+++ b/update_manager/boxed_value.cc
@@ -51,41 +51,25 @@
 template <>
 string BoxedValue::ValuePrinter<int>(const void* value) {
   const int* val = reinterpret_cast<const int*>(value);
-#if BASE_VER < 576279
-  return base::IntToString(*val);
-#else
   return base::NumberToString(*val);
-#endif
 }
 
 template <>
 string BoxedValue::ValuePrinter<unsigned int>(const void* value) {
   const unsigned int* val = reinterpret_cast<const unsigned int*>(value);
-#if BASE_VER < 576279
-  return base::UintToString(*val);
-#else
   return base::NumberToString(*val);
-#endif
 }
 
 template <>
 string BoxedValue::ValuePrinter<int64_t>(const void* value) {
   const int64_t* val = reinterpret_cast<const int64_t*>(value);
-#if BASE_VER < 576279
-  return base::Int64ToString(*val);
-#else
   return base::NumberToString(*val);
-#endif
 }
 
 template <>
 string BoxedValue::ValuePrinter<uint64_t>(const void* value) {
   const uint64_t* val = reinterpret_cast<const uint64_t*>(value);
-#if BASE_VER < 576279
-  return base::Uint64ToString(*val);
-#else
   return base::NumberToString(*val);
-#endif
 }
 
 template <>
@@ -97,11 +81,7 @@
 template <>
 string BoxedValue::ValuePrinter<double>(const void* value) {
   const double* val = reinterpret_cast<const double*>(value);
-#if BASE_VER < 576279
-  return base::DoubleToString(*val);
-#else
   return base::NumberToString(*val);
-#endif
 }
 
 template <>
diff --git a/update_manager/evaluation_context_unittest.cc b/update_manager/evaluation_context_unittest.cc
index a50defd..cd0b2e6 100644
--- a/update_manager/evaluation_context_unittest.cc
+++ b/update_manager/evaluation_context_unittest.cc
@@ -211,11 +211,7 @@
   fake_const_var_.reset(new string("Hello world!"));
   EXPECT_EQ(*eval_ctx_->GetValue(&fake_const_var_), "Hello world!");
 
-#if BASE_VER < 576279
-  EXPECT_FALSE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&base::DoNothing)));
-#else
   EXPECT_FALSE(eval_ctx_->RunOnValueChangeOrTimeout(base::DoNothing()));
-#endif
 }
 
 // Test that reevaluation occurs when an async variable it depends on changes.
@@ -285,19 +281,11 @@
   EXPECT_TRUE(value);
 
   // Ensure that we cannot reschedule an evaluation.
-#if BASE_VER < 576279
-  EXPECT_FALSE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&base::DoNothing)));
-#else
   EXPECT_FALSE(eval_ctx_->RunOnValueChangeOrTimeout(base::DoNothing()));
-#endif
 
   // Ensure that we can reschedule an evaluation after resetting expiration.
   eval_ctx_->ResetExpiration();
-#if BASE_VER < 576279
-  EXPECT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&base::DoNothing)));
-#else
   EXPECT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(base::DoNothing()));
-#endif
 }
 
 // Test that we clear the events when destroying the EvaluationContext.
@@ -343,11 +331,7 @@
   fake_poll_var_.reset(new string("Polled value"));
   eval_ctx_->GetValue(&fake_async_var_);
   eval_ctx_->GetValue(&fake_poll_var_);
-#if BASE_VER < 576279
-  EXPECT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&base::DoNothing)));
-#else
   EXPECT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(base::DoNothing()));
-#endif
   // TearDown() checks for leaked observers on this async_variable, which means
   // that our object is still alive after removing its reference.
 }
@@ -439,11 +423,7 @@
 
   // The "false" from IsWallclockTimeGreaterThan means that's not that timestamp
   // yet, so this should schedule a callback for when that happens.
-#if BASE_VER < 576279
-  EXPECT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&base::DoNothing)));
-#else
   EXPECT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(base::DoNothing()));
-#endif
 }
 
 TEST_F(UmEvaluationContextTest,
@@ -453,11 +433,7 @@
 
   // The "false" from IsMonotonicTimeGreaterThan means that's not that timestamp
   // yet, so this should schedule a callback for when that happens.
-#if BASE_VER < 576279
-  EXPECT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&base::DoNothing)));
-#else
   EXPECT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(base::DoNothing()));
-#endif
 }
 
 TEST_F(UmEvaluationContextTest,
@@ -470,11 +446,7 @@
       fake_clock_.GetWallclockTime() - TimeDelta::FromSeconds(1)));
 
   // Callback should not be scheduled.
-#if BASE_VER < 576279
-  EXPECT_FALSE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&base::DoNothing)));
-#else
   EXPECT_FALSE(eval_ctx_->RunOnValueChangeOrTimeout(base::DoNothing()));
-#endif
 }
 
 TEST_F(UmEvaluationContextTest,
@@ -487,11 +459,7 @@
       fake_clock_.GetMonotonicTime() - TimeDelta::FromSeconds(1)));
 
   // Callback should not be scheduled.
-#if BASE_VER < 576279
-  EXPECT_FALSE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&base::DoNothing)));
-#else
   EXPECT_FALSE(eval_ctx_->RunOnValueChangeOrTimeout(base::DoNothing()));
-#endif
 }
 
 TEST_F(UmEvaluationContextTest, DumpContext) {
diff --git a/update_status_utils.cc b/update_status_utils.cc
index 639dc8b..f88bb1a 100644
--- a/update_status_utils.cc
+++ b/update_status_utils.cc
@@ -74,19 +74,11 @@
 string UpdateEngineStatusToString(const UpdateEngineStatus& status) {
   KeyValueStore key_value_store;
 
-#if BASE_VER < 576279
-  key_value_store.SetString(kLastCheckedTime,
-                            base::Int64ToString(status.last_checked_time));
-  key_value_store.SetString(kProgress, base::DoubleToString(status.progress));
-  key_value_store.SetString(kNewSize,
-                            base::Uint64ToString(status.new_size_bytes));
-#else
   key_value_store.SetString(kLastCheckedTime,
                             base::NumberToString(status.last_checked_time));
   key_value_store.SetString(kProgress, base::NumberToString(status.progress));
   key_value_store.SetString(kNewSize,
                             base::NumberToString(status.new_size_bytes));
-#endif
   key_value_store.SetString(kCurrentOp, UpdateStatusToString(status.status));
   key_value_store.SetString(kNewVersion, status.new_version);
   key_value_store.SetBoolean(kIsEnterpriseRollback,
