diff --git a/lib/gclient.py b/lib/gclient.py
index ddb6551..db939e5 100644
--- a/lib/gclient.py
+++ b/lib/gclient.py
@@ -6,6 +6,7 @@
 
 import os
 import pprint
+import re
 
 from chromite.lib import cros_build_lib
 from chromite.lib import osutils
@@ -58,6 +59,22 @@
   return external_url, internal_url, pdf_url
 
 
+def GetTipOfTrunkSvnRevision(svn_url):
+  """Returns the current svn revision for the chrome tree."""
+  cmd = ['svn', 'info', svn_url]
+  svn_info = cros_build_lib.RunCommand(cmd, redirect_stdout=True).output
+
+  revision_re = re.compile('^Revision:\s+(\d+)')
+  for line in svn_info.splitlines():
+    match = revision_re.match(line)
+    if match:
+      svn_revision = match.group(1)
+      cros_build_lib.Info('Found SVN Revision %s' % svn_revision)
+      return svn_revision
+
+  raise Exception('Could not find revision information from %s' % svn_url)
+
+
 def _GetGclientURLs(internal, use_pdf, rev):
   """Get the URLs to use in gclient file.
 
diff --git a/scripts/cros_mark_chrome_as_stable.py b/scripts/cros_mark_chrome_as_stable.py
index 5698462..41aef8d 100644
--- a/scripts/cros_mark_chrome_as_stable.py
+++ b/scripts/cros_mark_chrome_as_stable.py
@@ -28,7 +28,6 @@
 from chromite.lib import cros_build_lib
 from chromite.lib import gclient
 from chromite.lib import git
-from chromite.lib.cros_build_lib import RunCommand
 from chromite.scripts import cros_mark_as_stable
 
 # Helper regex's for finding ebuilds.
@@ -52,27 +51,12 @@
 
 _CHROME_SVN_TAG = 'CROS_SVN_COMMIT'
 
+
 def _GetSvnUrl(base_url):
   """Returns the path to the svn url for the given chrome branch."""
   return os.path.join(base_url, 'trunk')
 
 
-def  _GetTipOfTrunkSvnRevision(base_url):
-  """Returns the current svn revision for the chrome tree."""
-  svn_url = _GetSvnUrl(base_url)
-  svn_info = RunCommand(['svn', 'info', svn_url], redirect_stdout=True).output
-
-  revision_re = re.compile('^Revision:\s+(\d+).*')
-  for line in svn_info.splitlines():
-    match = revision_re.search(line)
-    if match:
-      svn_revision = match.group(1)
-      cros_build_lib.Info('Found SVN Revision %s' % svn_revision)
-      return svn_revision
-
-  raise Exception('Could not find revision information from %s' % svn_url)
-
-
 def _GetVersionContents(chrome_version_info):
   """Returns the current Chromium version, from the contents of a VERSION file.
 
@@ -102,7 +86,7 @@
   # Use the fact we are SVN, hence ordered.
   # Dodge the fact it will silently ignore the revision if it is not
   # yet known.  (i.e. too high)
-  repo_version = _GetTipOfTrunkSvnRevision(base_url)
+  repo_version = gclient.GetTipOfTrunkSvnRevision(base_url)
   while revision > repo_version:
     if time.time() - start > time_to_wait:
       raise Exception('Timeout Exceeeded')
@@ -110,9 +94,9 @@
     msg = 'Repository only has version %s, looking for %s.  Sleeping...'
     cros_build_lib.Info(msg, repo_version, revision)
     time.sleep(30)
-    repo_version = _GetTipOfTrunkSvnRevision(base_url)
+    repo_version = gclient.GetTipOfTrunkSvnRevision(base_url)
 
-  chrome_version_info = RunCommand(
+  chrome_version_info = cros_build_lib.RunCommand(
       ['svn', 'cat', '-r', revision, svn_url],
       redirect_stdout=True,
       error_message='Could not read version file at %s revision %s.' %
@@ -128,13 +112,14 @@
      root: path to the root of the chromium checkout.
   """
   version_file = os.path.join(root, 'src', 'chrome', 'VERSION')
-  chrome_version_info = RunCommand(
+  chrome_version_info = cros_build_lib.RunCommand(
       ['cat', version_file],
       redirect_stdout=True,
       error_message='Could not read version file at %s.' % version_file).output
 
   return _GetVersionContents(chrome_version_info)
 
+
 def _GetLatestRelease(base_url, branch=None):
   """Gets the latest release version from the buildspec_url for the branch.
 
@@ -145,10 +130,11 @@
     Latest version string.
   """
   buildspec_url = os.path.join(base_url, 'releases')
-  svn_ls = RunCommand(['svn', 'ls', buildspec_url],
-                      redirect_stdout=True).output
-  sorted_ls = RunCommand(['sort', '--version-sort', '-r'], input=svn_ls,
-                         redirect_stdout=True).output
+  svn_ls = cros_build_lib.RunCommand(['svn', 'ls', buildspec_url],
+                                     redirect_stdout=True).output
+  sorted_ls = cros_build_lib.RunCommand(['sort', '--version-sort', '-r'],
+                                        input=svn_ls,
+                                        redirect_stdout=True).output
   if branch:
     chrome_version_re = re.compile('^%s\.\d+.*' % branch)
   else:
@@ -157,9 +143,9 @@
   for chrome_version in sorted_ls.splitlines():
     if chrome_version_re.match(chrome_version):
       deps_url = os.path.join(buildspec_url, chrome_version, 'DEPS')
-      deps_check = RunCommand(['svn', 'ls', deps_url],
-                              error_code_ok=True,
-                              redirect_stdout=True).output
+      deps_check = cros_build_lib.RunCommand(['svn', 'ls', deps_url],
+                                             error_code_ok=True,
+                                             redirect_stdout=True).output
       if deps_check == 'DEPS\n':
         return chrome_version.rstrip('/')
 
@@ -396,9 +382,10 @@
                                                 new_ebuild,
                                                 chrome_rev))
 
-  RunCommand(['git', 'add', new_ebuild_path], cwd=overlay_dir)
+  cros_build_lib.RunCommand(['git', 'add', new_ebuild_path], cwd=overlay_dir)
   if stable_candidate and not stable_candidate.IsSticky():
-    RunCommand(['git', 'rm', stable_candidate.ebuild_path], cwd=overlay_dir)
+    cros_build_lib.RunCommand(['git', 'rm', stable_candidate.ebuild_path],
+                              cwd=overlay_dir)
 
   portage_utilities.EBuild.CommitChange(
       _GIT_COMMIT_MESSAGE % {'chrome_rev': chrome_rev,
@@ -461,7 +448,7 @@
     version_to_uprev = _GetSpecificVersionUrl(options.chrome_url,
                                               commit_to_use)
   elif chrome_rev == constants.CHROME_REV_TOT:
-    commit_to_use = _GetTipOfTrunkSvnRevision(options.chrome_url)
+    commit_to_use = gclient.GetTipOfTrunkSvnRevision(options.chrome_url)
     version_to_uprev = _GetSpecificVersionUrl(options.chrome_url,
                                               commit_to_use)
   elif chrome_rev == constants.CHROME_REV_LATEST:
@@ -489,7 +476,8 @@
   # In the case of uprevving overlays that have patches applied to them,
   # include the patched changes in the stabilizing branch.
   if existing_branch:
-    RunCommand(['git', 'rebase', existing_branch], cwd=overlay_dir)
+    cros_build_lib.RunCommand(['git', 'rebase', existing_branch],
+                              cwd=overlay_dir)
 
   chrome_version_atom = MarkChromeEBuildAsStable(
       stable_candidate, unstable_ebuild, chrome_rev, version_to_uprev,
diff --git a/scripts/cros_mark_chrome_as_stable_unittest.py b/scripts/cros_mark_chrome_as_stable_unittest.py
index 0dfaa81..91a8b1d 100755
--- a/scripts/cros_mark_chrome_as_stable_unittest.py
+++ b/scripts/cros_mark_chrome_as_stable_unittest.py
@@ -17,7 +17,9 @@
                                 '..', '..'))
 from chromite.buildbot import constants
 from chromite.buildbot import portage_utilities
+from chromite.lib import cros_build_lib
 from chromite.lib import cros_test_lib
+from chromite.lib import gclient
 from chromite.scripts import cros_mark_chrome_as_stable
 
 # pylint: disable=W0212,R0904
@@ -133,15 +135,15 @@
   def testGetTipOfTrunkSvnRevision(self):
     """Tests if we can get the latest svn revision from TOT."""
     A_URL = 'dorf://mink/delaane/forkat/sertiunu.ortg./desk'
-    self.mox.StubOutWithMock(cros_mark_chrome_as_stable, 'RunCommand')
-    cros_mark_chrome_as_stable.RunCommand(
-        ['svn', 'info', cros_mark_chrome_as_stable._GetSvnUrl(A_URL)],
+    self.mox.StubOutWithMock(cros_build_lib, 'RunCommand')
+    cros_build_lib.RunCommand(
+        ['svn', 'info', A_URL],
         redirect_stdout=True).AndReturn(
           _StubCommandResult(
             'Some Junk 2134\nRevision: %s\nOtherInfo: test_data' %
             fake_svn_rev))
     self.mox.ReplayAll()
-    revision = cros_mark_chrome_as_stable._GetTipOfTrunkSvnRevision(A_URL)
+    revision = gclient.GetTipOfTrunkSvnRevision(A_URL)
     self.mox.VerifyAll()
     self.assertEquals(revision, fake_svn_rev)
 
@@ -150,14 +152,14 @@
     ARBITRARY_URL = 'Pratooey'
     path = os.path.join(cros_mark_chrome_as_stable._GetSvnUrl(ARBITRARY_URL),
                         'src', 'chrome', 'VERSION')
-    self.mox.StubOutWithMock(cros_mark_chrome_as_stable, 'RunCommand')
-    cros_mark_chrome_as_stable.RunCommand(
-        ['svn', 'info', cros_mark_chrome_as_stable._GetSvnUrl(ARBITRARY_URL)],
+    self.mox.StubOutWithMock(cros_build_lib, 'RunCommand')
+    cros_build_lib.RunCommand(
+        ['svn', 'info', ARBITRARY_URL],
         redirect_stdout=True).AndReturn(
           _StubCommandResult(
             'Some Junk 2134\nRevision: %s\nOtherInfo: test_data' %
             fake_svn_rev))
-    cros_mark_chrome_as_stable.RunCommand(
+    cros_build_lib.RunCommand(
         ['svn', 'cat', '-r', fake_svn_rev, path], redirect_stdout=True,
         error_message=mox.IsA(str)).AndReturn(
           _StubCommandResult('A=8\nB=0\nC=256\nD=0'))
@@ -174,19 +176,19 @@
     input_data = ['7.0.224.1/', '7.0.224.2/', '8.0.365.5/', 'LATEST.txt']
     test_data = '\n'.join(input_data)
     sorted_data = '\n'.join(reversed(input_data))
-    self.mox.StubOutWithMock(cros_mark_chrome_as_stable, 'RunCommand')
-    cros_mark_chrome_as_stable.RunCommand(
+    self.mox.StubOutWithMock(cros_build_lib, 'RunCommand')
+    cros_build_lib.RunCommand(
         ['svn', 'ls', ARBITRARY_URL + '/releases'],
         redirect_stdout=True).AndReturn(_StubCommandResult(test_data))
-    cros_mark_chrome_as_stable.RunCommand(
+    cros_build_lib.RunCommand(
         ['sort', '--version-sort', '-r'], input=test_data,
         redirect_stdout=True).AndReturn(_StubCommandResult(sorted_data))
     # pretend this one is missing to test the skipping logic.
-    cros_mark_chrome_as_stable.RunCommand(
+    cros_build_lib.RunCommand(
         ['svn', 'ls', ARBITRARY_URL + '/releases/8.0.365.5/DEPS'],
         error_code_ok=True, redirect_stdout=True).AndReturn(
           _StubCommandResult('BAH BAH BAH'))
-    cros_mark_chrome_as_stable.RunCommand(
+    cros_build_lib.RunCommand(
         ['svn', 'ls', ARBITRARY_URL + '/releases/7.0.224.2/DEPS'],
         error_code_ok=True, redirect_stdout=True).AndReturn(
           _StubCommandResult('DEPS\n'))
@@ -202,14 +204,14 @@
                            '8.0.224.2/',
                            '8.0.365.5/',
                            'LATEST.txt'])
-    self.mox.StubOutWithMock(cros_mark_chrome_as_stable, 'RunCommand')
-    cros_mark_chrome_as_stable.RunCommand(
+    self.mox.StubOutWithMock(cros_build_lib, 'RunCommand')
+    cros_build_lib.RunCommand(
         ['svn', 'ls', ARBITRARY_URL + '/releases'],
         redirect_stdout=True).AndReturn(_StubCommandResult('some_data'))
-    cros_mark_chrome_as_stable.RunCommand(
+    cros_build_lib.RunCommand(
         ['sort', '--version-sort', '-r'], input='some_data',
         redirect_stdout=True).AndReturn(_StubCommandResult(test_data))
-    cros_mark_chrome_as_stable.RunCommand(
+    cros_build_lib.RunCommand(
         ['svn', 'ls', ARBITRARY_URL + '/releases/8.0.224.2/DEPS'],
         error_code_ok=True, redirect_stdout=True).AndReturn(
           _StubCommandResult('DEPS\n'))
@@ -257,7 +259,7 @@
       new_ebuild_path: path to the to be created path
       commit_string_indicator: a string that the commit message must contain
     """
-    self.mox.StubOutWithMock(cros_mark_chrome_as_stable, 'RunCommand')
+    self.mox.StubOutWithMock(cros_build_lib, 'RunCommand')
     self.mox.StubOutWithMock(portage_utilities.EBuild, 'CommitChange')
     stable_candidate = cros_mark_chrome_as_stable.ChromeEBuild(old_ebuild_path)
     unstable_ebuild = cros_mark_chrome_as_stable.ChromeEBuild(self.unstable)
@@ -265,10 +267,8 @@
     commit = None
     overlay_dir = self.mock_chrome_dir
 
-    cros_mark_chrome_as_stable.RunCommand(['git', 'add', new_ebuild_path],
-                                          cwd=overlay_dir)
-    cros_mark_chrome_as_stable.RunCommand(['git', 'rm', old_ebuild_path],
-                                          cwd=overlay_dir)
+    cros_build_lib.RunCommand(['git', 'add', new_ebuild_path], cwd=overlay_dir)
+    cros_build_lib.RunCommand(['git', 'rm', old_ebuild_path], cwd=overlay_dir)
     portage_utilities.EBuild.CommitChange(
         mox.StrContains(commit_string_indicator), overlay_dir)
 
