diff --git a/teeth_agent/base.py b/teeth_agent/base.py
index d07348654..f10af431f 100644
--- a/teeth_agent/base.py
+++ b/teeth_agent/base.py
@@ -142,6 +142,7 @@ class TeethAgentHeartbeater(threading.Thread):
     backoff_factor = 2.7
 
     def __init__(self, agent):
+        super(TeethAgentHeartbeater, self).__init__()
         self.agent = agent
         self.api = overlord_agent_api.APIClient(agent.api_url)
         self.stop_event = threading.Event()
@@ -172,6 +173,10 @@ class TeethAgentHeartbeater(threading.Thread):
 
         return deadline
 
+    def stop(self):
+        self.stop_event.set()
+        return self.join()
+
 
 class BaseTeethAgent(object):
     def __init__(self, listen_host, listen_port, api_url, mode):
@@ -233,3 +238,4 @@ class BaseTeethAgent(object):
         self.started_at = time.time()
         self.heartbeater.start()
         serving.run_simple(self.listen_host, self.listen_port, self.api)
+        self.heartbeater.stop()