diff --git a/SConstruct b/SConstruct
index dd7f5dc..bf65864 100644
--- a/SConstruct
+++ b/SConstruct
@@ -152,7 +152,7 @@
     -D_POSIX_C_SOURCE=199309L""")
 env['CCFLAGS'] += env['CFLAGS']
 
-BASE_VER = os.environ.get('BASE_VER', '242728')
+BASE_VER = os.environ.get('BASE_VER', '271506')
 env['LIBS'] = Split("""bz2
                        crypto
                        curl
diff --git a/chrome_browser_proxy_resolver.cc b/chrome_browser_proxy_resolver.cc
index e0ab0df..94b9dae 100644
--- a/chrome_browser_proxy_resolver.cc
+++ b/chrome_browser_proxy_resolver.cc
@@ -227,7 +227,7 @@
   StringTokenizer entry_tok(input, ";");
   while (entry_tok.GetNext()) {
     string token = entry_tok.token();
-    TrimWhitespaceASCII(token, TRIM_ALL, &token);
+    base::TrimWhitespaceASCII(token, base::TRIM_ALL, &token);
 
     // Start by finding the first space (if any).
     std::string::iterator space;
@@ -251,7 +251,7 @@
       continue;  // Invalid proxy scheme
 
     string host_and_port = string(space, token.end());
-    TrimWhitespaceASCII(host_and_port, TRIM_ALL, &host_and_port);
+    base::TrimWhitespaceASCII(host_and_port, base::TRIM_ALL, &host_and_port);
     if (scheme != "direct" && host_and_port.empty())
       continue;  // Must supply host/port when non-direct proxy used.
     ret.push_back(scheme + "://" + host_and_port);
diff --git a/delta_performer_unittest.cc b/delta_performer_unittest.cc
index 21a6f8e..8051b32 100644
--- a/delta_performer_unittest.cc
+++ b/delta_performer_unittest.cc
@@ -321,10 +321,9 @@
 
     vector<char> zeros(16 * 1024, 0);
     EXPECT_EQ(zeros.size(),
-              file_util::WriteFile(
-                  base::FilePath(base::StringPrintf("%s/move-to-sparse",
-                                                    a_mnt.c_str())),
-                  zeros.data(), zeros.size()));
+              base::WriteFile(base::FilePath(base::StringPrintf(
+                                  "%s/move-to-sparse", a_mnt.c_str())),
+                              zeros.data(), zeros.size()));
 
     EXPECT_TRUE(
         WriteSparseFile(base::StringPrintf("%s/move-from-sparse",
@@ -382,10 +381,9 @@
 
     vector<char> zeros(16 * 1024, 0);
     EXPECT_EQ(zeros.size(),
-              file_util::WriteFile(
-                  base::FilePath(base::StringPrintf("%s/move-from-sparse",
-                                                    b_mnt.c_str())),
-                  zeros.data(), zeros.size()));
+              base::WriteFile(base::FilePath(base::StringPrintf(
+                                  "%s/move-from-sparse", b_mnt.c_str())),
+                              zeros.data(), zeros.size()));
 
     EXPECT_EQ(0, system(base::StringPrintf("dd if=/dev/zero "
                                            "of=%s/move-semi-sparse "
diff --git a/download_action_unittest.cc b/download_action_unittest.cc
index 20b616e..6f05a8b 100644
--- a/download_action_unittest.cc
+++ b/download_action_unittest.cc
@@ -34,7 +34,7 @@
 using base::FilePath;
 using base::ReadFileToString;
 using base::StringPrintf;
-using file_util::WriteFile;
+using base::WriteFile;
 
 class DownloadActionTest : public ::testing::Test { };
 
diff --git a/hardware.cc b/hardware.cc
index 3a11129..77e00f1 100644
--- a/hardware.cc
+++ b/hardware.cc
@@ -177,7 +177,7 @@
                                              sizeof(value_buffer));
   if (rv != NULL) {
     string return_value(value_buffer);
-    TrimWhitespaceASCII(return_value, TRIM_ALL, &return_value);
+    base::TrimWhitespaceASCII(return_value, base::TRIM_ALL, &return_value);
     return return_value;
   }
 
diff --git a/hwid_override_unittest.cc b/hwid_override_unittest.cc
index 10f23ee..5c654b4 100644
--- a/hwid_override_unittest.cc
+++ b/hwid_override_unittest.cc
@@ -34,16 +34,16 @@
   std::string expected_hwid("expected");
   std::string keyval(HwidOverride::kHwidOverrideKey);
   keyval += ("=" + expected_hwid);
-  ASSERT_EQ(file_util::WriteFile(tempdir_.path().Append("etc/lsb-release"),
-                                 keyval.c_str(), keyval.length()),
+  ASSERT_EQ(base::WriteFile(tempdir_.path().Append("etc/lsb-release"),
+                            keyval.c_str(), keyval.length()),
             keyval.length());
   EXPECT_EQ(expected_hwid, HwidOverride::Read(tempdir_.path()));
 }
 
 TEST_F(HwidOverrideTest, ReadNothing) {
   std::string keyval("SOMETHING_ELSE=UNINTERESTING");
-  ASSERT_EQ(file_util::WriteFile(tempdir_.path().Append("etc/lsb-release"),
-                                 keyval.c_str(), keyval.length()),
+  ASSERT_EQ(base::WriteFile(tempdir_.path().Append("etc/lsb-release"),
+                            keyval.c_str(), keyval.length()),
             keyval.length());
   EXPECT_EQ(std::string(), HwidOverride::Read(tempdir_.path()));
 }
diff --git a/main.cc b/main.cc
index ccf4efa..95cf911 100644
--- a/main.cc
+++ b/main.cc
@@ -132,8 +132,6 @@
   logging::LoggingSettings log_settings;
   log_settings.lock_log = logging::DONT_LOCK_LOG_FILE;
   log_settings.delete_old = logging::APPEND_TO_OLD_LOG_FILE;
-  log_settings.dcheck_state =
-    logging::DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS;
 
   if (FLAGS_logtostderr) {
     // Log to stderr initially.
diff --git a/payload_generator/generate_delta_main.cc b/payload_generator/generate_delta_main.cc
index a07df67..acf4dcd 100644
--- a/payload_generator/generate_delta_main.cc
+++ b/payload_generator/generate_delta_main.cc
@@ -299,8 +299,6 @@
   log_settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
   log_settings.lock_log     = logging::DONT_LOCK_LOG_FILE;
   log_settings.delete_old   = logging::APPEND_TO_OLD_LOG_FILE;
-  log_settings.dcheck_state =
-    logging::DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS;
 
   logging::InitLogging(log_settings);
 
diff --git a/policy_manager/real_random_provider.cc b/policy_manager/real_random_provider.cc
index d29590b..17706a9 100644
--- a/policy_manager/real_random_provider.cc
+++ b/policy_manager/real_random_provider.cc
@@ -6,7 +6,7 @@
 #include <unistd.h>
 
 #include <base/files/file_path.h>
-#include <base/file_util.h>
+#include <base/files/scoped_file.h>
 #include <base/strings/stringprintf.h>
 
 #include "update_engine/policy_manager/real_random_provider.h"
@@ -58,7 +58,7 @@
   }
 
  private:
-  file_util::ScopedFILE fp_;
+  base::ScopedFILE fp_;
 
   DISALLOW_COPY_AND_ASSIGN(RandomSeedVariable);
 };
diff --git a/prefs.cc b/prefs.cc
index c1e249c..c576a62 100644
--- a/prefs.cc
+++ b/prefs.cc
@@ -34,9 +34,8 @@
   base::FilePath filename;
   TEST_AND_RETURN_FALSE(GetFileNameForKey(key, &filename));
   TEST_AND_RETURN_FALSE(base::CreateDirectory(filename.DirName()));
-  TEST_AND_RETURN_FALSE(
-      file_util::WriteFile(filename, value.data(), value.size()) ==
-      static_cast<int>(value.size()));
+  TEST_AND_RETURN_FALSE(base::WriteFile(filename, value.data(), value.size()) ==
+                        static_cast<int>(value.size()));
   return true;
 }
 
@@ -44,7 +43,7 @@
   string str_value;
   if (!GetString(key, &str_value))
     return false;
-  TrimWhitespaceASCII(str_value, TRIM_ALL, &str_value);
+  base::TrimWhitespaceASCII(str_value, base::TRIM_ALL, &str_value);
   TEST_AND_RETURN_FALSE(base::StringToInt64(str_value, value));
   return true;
 }
@@ -57,7 +56,7 @@
   string str_value;
   if (!GetString(key, &str_value))
     return false;
-  TrimWhitespaceASCII(str_value, TRIM_ALL, &str_value);
+  base::TrimWhitespaceASCII(str_value, base::TRIM_ALL, &str_value);
   if (str_value == "false") {
     *value = false;
     return true;
diff --git a/prefs_unittest.cc b/prefs_unittest.cc
index a3595a3..fa66bfd 100644
--- a/prefs_unittest.cc
+++ b/prefs_unittest.cc
@@ -29,9 +29,8 @@
   }
 
   bool SetValue(const string& key, const string& value) {
-    return file_util::WriteFile(prefs_dir_.Append(key),
-                                value.data(), value.length()) ==
-        static_cast<int>(value.length());
+    return base::WriteFile(prefs_dir_.Append(key), value.data(),
+                           value.length()) == static_cast<int>(value.length());
   }
 
   base::FilePath prefs_dir_;
diff --git a/update_attempter_unittest.cc b/update_attempter_unittest.cc
index 2fdd9f5..e5f66aa 100644
--- a/update_attempter_unittest.cc
+++ b/update_attempter_unittest.cc
@@ -209,7 +209,7 @@
           &test_update_completed_marker, NULL));
   ScopedPathUnlinker completed_marker_unlinker(test_update_completed_marker);
   const base::FilePath marker(test_update_completed_marker);
-  EXPECT_EQ(0, file_util::WriteFile(marker, "", 0));
+  EXPECT_EQ(0, base::WriteFile(marker, "", 0));
   UpdateAttempterUnderTest attempter(&fake_system_state_, &dbus_,
                                      test_update_completed_marker);
   EXPECT_EQ(UPDATE_STATUS_UPDATED_NEED_REBOOT, attempter.status());
diff --git a/utils.cc b/utils.cc
index 70bcd34..b32a369 100644
--- a/utils.cc
+++ b/utils.cc
@@ -21,8 +21,9 @@
 #include <algorithm>
 #include <vector>
 
-#include <base/files/file_path.h>
 #include <base/file_util.h>
+#include <base/files/file_path.h>
+#include <base/files/scoped_file.h>
 #include <base/logging.h>
 #include <base/posix/eintr_wrapper.h>
 #include <base/rand_util.h>
@@ -72,7 +73,7 @@
 static const char kCGroupDir[] = "/sys/fs/cgroup/cpu/update-engine";
 
 string ParseECVersion(string input_line) {
-  TrimWhitespaceASCII(input_line, TRIM_ALL, &input_line);
+  base::TrimWhitespaceASCII(input_line, base::TRIM_ALL, &input_line);
 
   // At this point we want to convert the format key=value pair from mosys to
   // a vector of key value pairs.
@@ -231,7 +232,7 @@
                                    T* out_p) {
   CHECK_GE(offset, 0);
   CHECK(size == -1 || size >= 0);
-  file_util::ScopedFILE fp(fopen(path.c_str(), "r"));
+  base::ScopedFILE fp(fopen(path.c_str(), "r"));
   if (!fp.get())
     return false;
   if (offset) {
@@ -473,10 +474,10 @@
   string removable;
   if (sysfs_block.empty() ||
       !base::ReadFileToString(base::FilePath(sysfs_block).Append("removable"),
-                                   &removable)) {
+                              &removable)) {
     return false;
   }
-  TrimWhitespaceASCII(removable, TRIM_ALL, &removable);
+  base::TrimWhitespaceASCII(removable, base::TRIM_ALL, &removable);
   return removable == "1";
 }
 
