diff --git a/client/common_lib/cros/tendo/peerd_config.py b/client/common_lib/cros/tendo/peerd_config.py
new file mode 100644
index 0000000..4df9d58
--- /dev/null
+++ b/client/common_lib/cros/tendo/peerd_config.py
@@ -0,0 +1,59 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import time
+
+from autotest_lib.client.common_lib import error
+from autotest_lib.client.common_lib import utils
+from autotest_lib.client.common_lib.cros import dbus_send
+
+
+SERVICE_NAME = 'org.chromium.peerd'
+DBUS_INTERFACE_MANAGER = 'org.chromium.peerd.Manager'
+DBUS_PATH_MANAGER = '/org/chromium/peerd/Manager'
+
+
+class PeerdConfig(object):
+    """An object that knows how to restart peerd in various configurations."""
+
+    def __init__(self, mdns_prefix=None, verbosity_level=None):
+        """Construct a peerd configuration.
+
+        @param verbosity_level: int level of log verbosity from peerd (e.g. 0
+                                will log INFO level, 3 is verbosity level 3).
+        @param mdns_prefix: string prefix for mDNS records.  Will be ignored if
+                            using that prefix causes name conflicts.
+
+        """
+        self.mdns_prefix = mdns_prefix
+        self.verbosity_level = verbosity_level
+
+
+    def restart_with_config(self, host=None, timeout_seconds=10):
+        """Restart peerd with this config.
+
+        @param host: Host object if privetd is running on a remote host.
+        @param timeout_seconds: number of seconds to wait for peerd to start.
+                Pass None to return without confirming peerd startup.
+
+        """
+        run = utils.run if host is None else host.run
+        flag_list = []
+        if self.verbosity_level is not None:
+            flag_list.append('PEERD_LOG_LEVEL=%d' % self.verbosity_level)
+        if self.mdns_prefix is not None:
+            flag_list.append('PEERD_INITIAL_MDNS_PREFIX=%s' % self.mdns_prefix)
+        run('stop peerd', ignore_status=True)
+        run('start peerd %s' % ' '.join(flag_list))
+        if timeout_seconds is None:
+            return
+        start_time = time.time()
+        while time.time() - start_time < timeout_seconds:
+            result = dbus_send.dbus_send(
+                    SERVICE_NAME, DBUS_INTERFACE_MANAGER, DBUS_PATH_MANAGER,
+                    'Ping', host=host, tolerate_failures=True)
+            if result is not None and result.response == 'Hello world!':
+                return
+            time.sleep(0.5)
+        raise error.TestFail('Timed out before peerd restarted.')
diff --git a/client/cros/tendo/peerd_helper.py b/client/cros/tendo/peerd_dbus_helper.py
similarity index 86%
rename from client/cros/tendo/peerd_helper.py
rename to client/cros/tendo/peerd_dbus_helper.py
index e7630f3..2943f2f 100644
--- a/client/cros/tendo/peerd_helper.py
+++ b/client/cros/tendo/peerd_dbus_helper.py
@@ -31,7 +31,7 @@
 SERVICE_PROPERTY_INFO = 'ServiceInfo'
 SERVICE_PROPERTY_IPS = 'IpInfos'
 
-# Possible technologies for use with PeerdHelper.start_monitoring().
+# Possible technologies for use with PeerdDBusHelper.start_monitoring().
 TECHNOLOGY_ALL = 'all'
 TECHNOLOGY_MDNS = 'mDNS'
 
@@ -39,43 +39,32 @@
 EXPOSE_SERVICE_SECTION_MDNS = 'mdns'
 EXPOSE_SERVICE_MDNS_PORT = 'port'
 
-def make_helper(bus=None, timeout_seconds=10, verbosity_level=None,
-                mdns_prefix=None):
-    """Wait for peerd to come up, then return a PeerdHelper for it.
+def make_helper(peerd_config, bus=None, timeout_seconds=10):
+    """Wait for peerd to come up, then return a PeerdDBusHelper for it.
 
+    @param peerd_config: a PeerdConfig object.
     @param bus: DBus bus to use, or specify None to create one internally.
     @param timeout_seconds: number of seconds to wait for peerd to come up.
-    @param verbosity_level: int level of log verbosity from peerd (e.g. 0
-                            will log INFO level, 3 is verbosity level 3).
-    @param mdns_prefix: string prefix for mDNS records.  Will be ignored if
-                        using that prefix causes name conflicts.
-    @return PeerdHelper instance if peerd comes up, None otherwise.
+    @return PeerdDBusHelper instance if peerd comes up, None otherwise.
 
     """
-    utils.run('stop peerd', ignore_status=True)
-    flags = []
-    if verbosity_level is not None:
-        flags.append(' PEERD_LOG_LEVEL=%d' % verbosity_level)
-    if mdns_prefix is not None:
-        flags.append(' PEERD_INITIAL_MDNS_PREFIX=%s' % mdns_prefix)
-    utils.run('start peerd %s' % ''.join(flags))
+    start_time = time.time()
+    peerd_config.restart_with_config(timeout_seconds=timeout_seconds)
     if bus is None:
         dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
         bus = dbus.SystemBus()
-    end_time = time.time() + timeout_seconds
-    connection = None
-    while time.time() < end_time:
+    while time.time() - start_time < timeout_seconds:
         if not bus.name_has_owner(SERVICE_NAME):
             time.sleep(0.2)
-        return PeerdHelper(bus)
+        return PeerdDBusHelper(bus)
     raise error.TestFail('peerd did not start in a timely manner.')
 
 
-class PeerdHelper(object):
+class PeerdDBusHelper(object):
     """Container for convenience methods related to peerd."""
 
     def __init__(self, bus):
-        """Construct a PeerdHelper.
+        """Construct a PeerdDBusHelper.
 
         @param bus: DBus bus to use, or specify None and this object will
                     create a mainloop and bus.
diff --git a/client/site_tests/peerd_AdvertiseServices/peerd_AdvertiseServices.py b/client/site_tests/peerd_AdvertiseServices/peerd_AdvertiseServices.py
index a5fbef7..ba3d387 100644
--- a/client/site_tests/peerd_AdvertiseServices/peerd_AdvertiseServices.py
+++ b/client/site_tests/peerd_AdvertiseServices/peerd_AdvertiseServices.py
@@ -8,10 +8,11 @@
 
 from autotest_lib.client.bin import test
 from autotest_lib.client.common_lib import error
+from autotest_lib.client.common_lib.cros.tendo import peerd_config
 from autotest_lib.client.cros import chrooted_avahi
 from autotest_lib.client.cros.netprotos import interface_host
 from autotest_lib.client.cros.netprotos import zeroconf
-from autotest_lib.client.cros.tendo import peerd_helper
+from autotest_lib.client.cros.tendo import peerd_dbus_helper
 
 
 class peerd_AdvertiseServices(test.test):
@@ -44,7 +45,8 @@
         self._chrooted_avahi = chrooted_avahi.ChrootedAvahi()
         self._chrooted_avahi.start()
         # Start up a cleaned up peerd with really verbose logging.
-        self._peerd = peerd_helper.make_helper(verbosity_level=3)
+        self._peerd = peerd_dbus_helper.make_helper(
+                peerd_config.PeerdConfig(verbosity_level=3))
         # Listen on our half of the interface pair for mDNS advertisements.
         self._host = interface_host.InterfaceHost(
                 self._chrooted_avahi.unchrooted_interface_name)
diff --git a/client/site_tests/peerd_DiscoverServices/peerd_DiscoverServices.py b/client/site_tests/peerd_DiscoverServices/peerd_DiscoverServices.py
index 16f2184..99042bb 100644
--- a/client/site_tests/peerd_DiscoverServices/peerd_DiscoverServices.py
+++ b/client/site_tests/peerd_DiscoverServices/peerd_DiscoverServices.py
@@ -7,10 +7,11 @@
 
 from autotest_lib.client.bin import test
 from autotest_lib.client.common_lib import error
+from autotest_lib.client.common_lib.cros.tendo import peerd_config
 from autotest_lib.client.cros import chrooted_avahi
 from autotest_lib.client.cros.netprotos import interface_host
 from autotest_lib.client.cros.netprotos import zeroconf
-from autotest_lib.client.cros.tendo import peerd_helper
+from autotest_lib.client.cros.tendo import peerd_dbus_helper
 
 
 class peerd_DiscoverServices(test.test):
@@ -55,7 +56,8 @@
         self._chrooted_avahi = chrooted_avahi.ChrootedAvahi()
         self._chrooted_avahi.start()
         # Start up a fresh copy of peerd with really verbose logging.
-        self._peerd = peerd_helper.make_helper(verbosity_level=3)
+        self._peerd = peerd_dbus_helper.make_helper(
+                peerd_config.PeerdConfig(verbosity_level=3))
         # Listen on our half of the interface pair for mDNS advertisements.
         self._host = interface_host.InterfaceHost(
                 self._chrooted_avahi.unchrooted_interface_name)
@@ -133,8 +135,8 @@
                     port,
                     ['='.join(pair) for pair in info.iteritems()])
 
-        # Look for mDNS records through peerd
-        self._peerd.start_monitoring([peerd_helper.TECHNOLOGY_MDNS])
+            # Look for mDNS records through peerd
+        self._peerd.start_monitoring([peerd_dbus_helper.TECHNOLOGY_MDNS])
         # Wait for advertisements of that service to appear from avahi.
         logging.info('Waiting for peerd to discover our services.')
         success, duration = self._host.run_until(self._has_expected_peer,
diff --git a/client/site_tests/peerd_HandlesNameConflicts/peerd_HandlesNameConflicts.py b/client/site_tests/peerd_HandlesNameConflicts/peerd_HandlesNameConflicts.py
index ced9911..6f0fafb 100644
--- a/client/site_tests/peerd_HandlesNameConflicts/peerd_HandlesNameConflicts.py
+++ b/client/site_tests/peerd_HandlesNameConflicts/peerd_HandlesNameConflicts.py
@@ -8,10 +8,11 @@
 
 from autotest_lib.client.bin import test
 from autotest_lib.client.common_lib import error
+from autotest_lib.client.common_lib.cros.tendo import peerd_config
 from autotest_lib.client.cros import chrooted_avahi
 from autotest_lib.client.cros.netprotos import interface_host
 from autotest_lib.client.cros.netprotos import zeroconf
-from autotest_lib.client.cros.tendo import peerd_helper
+from autotest_lib.client.cros.tendo import peerd_dbus_helper
 
 
 class peerd_HandlesNameConflicts(test.test):
@@ -38,8 +39,10 @@
         to use a known MDNS prefix to start out.
 
         """
-        self._peerd = peerd_helper.make_helper(
-                verbosity_level=3, mdns_prefix=self.INITIAL_MDNS_PREFIX)
+        self._peerd = peerd_dbus_helper.make_helper(
+                peerd_config.PeerdConfig(verbosity_level=3,
+                                         mdns_prefix=self.INITIAL_MDNS_PREFIX))
+
 
     def initialize(self):
         # Make sure these are initiallized to None in case we throw
