diff --git a/payload_generator/delta_diff_generator_unittest.cc b/payload_generator/delta_diff_generator_unittest.cc
index c1bee61..c6cd65d 100644
--- a/payload_generator/delta_diff_generator_unittest.cc
+++ b/payload_generator/delta_diff_generator_unittest.cc
@@ -32,6 +32,9 @@
 #include "update_engine/test_utils.h"
 #include "update_engine/utils.h"
 
+using chromeos_update_engine::test_utils::FillWithData;
+using chromeos_update_engine::test_utils::kRandomString;
+using chromeos_update_engine::test_utils::WriteFileVector;
 using std::set;
 using std::string;
 using std::stringstream;
diff --git a/payload_generator/filesystem_iterator.cc b/payload_generator/filesystem_iterator.cc
index 9646092..073b7a3 100644
--- a/payload_generator/filesystem_iterator.cc
+++ b/payload_generator/filesystem_iterator.cc
@@ -13,6 +13,7 @@
 #include <vector>
 
 #include <base/logging.h>
+#include <base/strings/string_util.h>
 
 #include "update_engine/utils.h"
 
@@ -107,7 +108,7 @@
   IncrementInternal();
   for (set<string>::const_iterator it = excl_prefixes_.begin();
        it != excl_prefixes_.end(); ++it) {
-    if (utils::StringHasPrefix(GetPartialPath(), *it)) {
+    if (StartsWithASCII(GetPartialPath(), *it, true)) {
       Increment();
       break;
     }
diff --git a/payload_generator/filesystem_iterator_unittest.cc b/payload_generator/filesystem_iterator_unittest.cc
index 047c8a4..16f2c6d 100644
--- a/payload_generator/filesystem_iterator_unittest.cc
+++ b/payload_generator/filesystem_iterator_unittest.cc
@@ -19,6 +19,7 @@
 #include "update_engine/test_utils.h"
 #include "update_engine/utils.h"
 
+using chromeos_update_engine::test_utils::System;
 using std::set;
 using std::string;
 using std::vector;
@@ -69,8 +70,8 @@
   const string sub_image_mount_point = main_image_mount_point + "/some_dir/mnt";
 
   vector<string> expected_paths_vector;
-  CreateExtImageAtPath(main_image, &expected_paths_vector);
-  CreateExtImageAtPath(sub_image, nullptr);
+  test_utils::CreateExtImageAtPath(main_image, &expected_paths_vector);
+  test_utils::CreateExtImageAtPath(sub_image, nullptr);
   ASSERT_EQ(0, System(string("mount -o loop ") + main_image + " " +
                       main_image_mount_point));
   ASSERT_EQ(0, System(string("mount -o loop ") + sub_image + " " +
@@ -80,7 +81,7 @@
     *it = main_image_mount_point + *it;
   set<string> expected_paths(expected_paths_vector.begin(),
                              expected_paths_vector.end());
-  VerifyAllPaths(main_image_mount_point, expected_paths);
+  test_utils::VerifyAllPaths(main_image_mount_point, expected_paths);
 
   EXPECT_TRUE(utils::UnmountFilesystem(sub_image_mount_point));
   EXPECT_TRUE(utils::UnmountFilesystem(main_image_mount_point));
diff --git a/payload_generator/full_update_generator_unittest.cc b/payload_generator/full_update_generator_unittest.cc
index 7cb2d7a..559a110 100644
--- a/payload_generator/full_update_generator_unittest.cc
+++ b/payload_generator/full_update_generator_unittest.cc
@@ -10,6 +10,7 @@
 #include "update_engine/payload_generator/full_update_generator.h"
 #include "update_engine/test_utils.h"
 
+using chromeos_update_engine::test_utils::FillWithData;
 using std::string;
 using std::vector;
 
@@ -37,14 +38,14 @@
                                   &new_root_path,
                                   nullptr));
   ScopedPathUnlinker new_root_path_unlinker(new_root_path);
-  EXPECT_TRUE(WriteFileVector(new_root_path, new_root));
+  EXPECT_TRUE(test_utils::WriteFileVector(new_root_path, new_root));
 
   string new_kern_path;
   EXPECT_TRUE(utils::MakeTempFile("NewFullUpdateTest_K.XXXXXX",
                                   &new_kern_path,
                                   nullptr));
   ScopedPathUnlinker new_kern_path_unlinker(new_kern_path);
-  EXPECT_TRUE(WriteFileVector(new_kern_path, new_kern));
+  EXPECT_TRUE(test_utils::WriteFileVector(new_kern_path, new_kern));
 
   string out_blobs_path;
   int out_blobs_fd;
diff --git a/payload_generator/metadata_unittest.cc b/payload_generator/metadata_unittest.cc
index 93b0917..2ffb338 100644
--- a/payload_generator/metadata_unittest.cc
+++ b/payload_generator/metadata_unittest.cc
@@ -20,6 +20,7 @@
 #include "update_engine/test_utils.h"
 #include "update_engine/utils.h"
 
+using chromeos_update_engine::test_utils::CreateEmptyExtImageAtPath;
 using std::string;
 using std::vector;
 
@@ -80,13 +81,15 @@
   // Create a file large enough to create an indirect block
   {
     string a_img_mnt;
-    ScopedLoopMounter a_img_mount(a_img, &a_img_mnt, 0);
-    System(base::StringPrintf("dd if=/dev/zero of=%s/test_file bs=%d count=%d",
-                              a_img_mnt.c_str(), block_size,
-                              EXT2_NDIR_BLOCKS + 1));
+    test_utils::ScopedLoopMounter a_img_mount(a_img, &a_img_mnt, 0);
+    test_utils::System(
+        base::StringPrintf("dd if=/dev/zero of=%s/test_file bs=%d count=%d",
+                           a_img_mnt.c_str(), block_size,
+                           EXT2_NDIR_BLOCKS + 1));
   }
 
-  System(base::StringPrintf("cp %s %s", a_img.c_str(), b_img.c_str()));
+  test_utils::System(
+      base::StringPrintf("cp %s %s", a_img.c_str(), b_img.c_str()));
 
   int fd = open(data_file.c_str(), O_RDWR | O_CREAT, S_IRWXU);
   EXPECT_NE(fd, -1);
