diff --git a/brian_polling_manager/interfaces.py b/brian_polling_manager/interfaces.py
index 9bdfa77a27bf82b1e651d80acee5fd0f2d262d8e..3d2d47dc06a5766405b97c4c2cde9792918c4298 100644
--- a/brian_polling_manager/interfaces.py
+++ b/brian_polling_manager/interfaces.py
@@ -43,37 +43,13 @@ class InterfaceCheck(sensu.AbstractCheck):
         return self.interface['router']
 
 
-def refresh(sensu_params, state):
+def refresh(sensu_params, inventory_interfaces):
 
-    current_ifc_checks = load_ifc_checks(sensu_params)
-
-    created = 0
-    updated = 0
     required_checks = [
         InterfaceCheck(sensu_params['interface-check'], ifc)
-        for ifc in state.interfaces]
-
-    for expected_check in required_checks:
-
-        if expected_check.name not in current_ifc_checks:
-            sensu.create_check(sensu_params, expected_check.to_dict())
-            created += 1
-        elif not sensu.AbstractCheck.match_check_dicts(
-                current_ifc_checks[expected_check.name],
-                expected_check.to_dict()):
-            sensu.update_check(sensu_params, expected_check.to_dict())
-            updated += 1
-
-    wanted_checks = {check.name for check in required_checks}
-    extra_checks = set(current_ifc_checks.keys()) - wanted_checks
-    for name in extra_checks:
-        sensu.delete_check(sensu_params, name)
+        for ifc in inventory_interfaces]
 
-    # cf. main.REFRESH_RESULT_SCHEMA
-    return {
-        'checks': len(current_ifc_checks),
-        'input': len(required_checks),
-        'created': created,
-        'updated': updated,
-        'deleted': len(extra_checks)
-    }
+    return sensu.refresh(
+        sensu_params,
+        required_checks,
+        load_ifc_checks(sensu_params))
diff --git a/brian_polling_manager/main.py b/brian_polling_manager/main.py
index bd2c484473f9f76059fbf9a6651e618ecaf03e3f..b11406b90d8ff2372fc5ea00d13cdea71e123d3f 100644
--- a/brian_polling_manager/main.py
+++ b/brian_polling_manager/main.py
@@ -80,7 +80,7 @@ def refresh(config, force=False):
         # state.gws_direct = inventory.load_gws_direct_interfaces(
         #     config['inventory'])
     result = {
-        'interfaces': interfaces.refresh(config['sensu'], state),
+        'interfaces': interfaces.refresh(config['sensu'], state.interfaces),
         # 'gws direct': gws_direct.refresh(config['sensu'], state)
     }
 
diff --git a/brian_polling_manager/sensu.py b/brian_polling_manager/sensu.py
index 228ea5188e67e81055168b152eb87ffa9c418736..b1d429568e6a218afdd698cb3f98f495ad7190e6 100644
--- a/brian_polling_manager/sensu.py
+++ b/brian_polling_manager/sensu.py
@@ -168,3 +168,43 @@ class AbstractCheck(object):
         if a['metadata']['namespace'] != b['metadata']['namespace']:
             return False
         return True
+
+
+def refresh(sensu_params, required_checks, current_checks):
+    """
+    update any current_checks that are not present in required_checks
+    remove any extras
+
+    :param sensu_params:
+    :param required_checks: list of AbstractCheck instances
+    :param current_checks: dict of {name:check_dict} from sensu
+    :return: dict with change counts
+    """
+
+    # cf. main.REFRESH_RESULT_SCHEMA
+    result = {
+        'checks': len(current_checks),
+        'input': len(required_checks),
+        'created': 0,
+        'updated': 0,
+        'deleted': None
+    }
+
+    for expected_check in required_checks:
+
+        if expected_check.name not in current_checks:
+            create_check(sensu_params, expected_check.to_dict())
+            result['created'] += 1
+        elif not AbstractCheck.match_check_dicts(
+                current_checks[expected_check.name],
+                expected_check.to_dict()):
+            update_check(sensu_params, expected_check.to_dict())
+            result['updated'] += 1
+
+    wanted_checks = {check.name for check in required_checks}
+    extra_checks = set(current_checks.keys()) - wanted_checks
+    for name in extra_checks:
+        delete_check(sensu_params, name)
+
+    result['deleted'] = len(extra_checks)
+    return result