diff --git a/brian_polling_manager/interfaces.py b/brian_polling_manager/interfaces.py
index a94a13c2254c0d691be7b28e7ae029153e4561bb..30de108cd3c1a4f47efcda946b88e9c6a9be9602 100644
--- a/brian_polling_manager/interfaces.py
+++ b/brian_polling_manager/interfaces.py
@@ -70,7 +70,7 @@ def _checks_match(a, b) -> bool:
     return True
 
 
-def refresh(sensu_params, state, statsd=None):
+def refresh(sensu_params, state):
 
     ifc_checks = load_ifc_checks(sensu_params)
 
@@ -97,9 +97,10 @@ def refresh(sensu_params, state, statsd=None):
     for name in extra_checks:
         sensu.delete_check(sensu_params, name)
 
-    if statsd:
-        statsd.gauge('checks', len(ifc_checks))
-        statsd.gauge('interfaces', interfaces)
-        statsd.gauge('checks_created', created)
-        statsd.gauge('checks_updated', updated)
-        statsd.gauge('checks_deleted', len(extra_checks))
+    return {
+        'checks': len(ifc_checks),
+        'input': interfaces,
+        'created': created,
+        'updated': updated,
+        'deleted': len(extra_checks)
+    }
diff --git a/brian_polling_manager/main.py b/brian_polling_manager/main.py
index 1b8999721a7f25a587ceff8ab17ee20a583d5c7a..03969f48f04caaa424ac6fd4a9ded7bff9f9974d 100644
--- a/brian_polling_manager/main.py
+++ b/brian_polling_manager/main.py
@@ -34,6 +34,36 @@ from brian_polling_manager import inventory, interfaces, configuration
 logger = logging.getLogger(__name__)
 
 
+def refresh(config, force=False):
+    """
+    reload inventory data & update sensu checks
+
+    :param config: a dict returned by configuration.load_config
+    :param force: if True, reload inventory data even if timestamp is same
+    :return:
+    """
+    state = configuration.State(config['statedir'])
+    last = inventory.last_update_timestamp(config['inventory'])
+    if force or not last or last != state.last:
+        state.last = last
+        state.interfaces = inventory.load_interfaces(config['inventory'])
+
+    result = interfaces.refresh(config['sensu'], state)
+
+    statsd_config = config.get('statsd', None)
+    if statsd_config:
+        statsd = StatsClient(
+            host=statsd_config['hostname'],
+            port=statsd_config['port'],
+            prefix=f'{statsd_config["prefix"]}_interfaces')
+        statsd.gauge('checks', result['checks'])
+        statsd.gauge('input', result['input'])
+        statsd.gauge('created', result['created'])
+        statsd.gauge('updated', result['updated'])
+        statsd.gauge('deleted', result['deleted'])
+
+    return statsd_config
+
 def _validate_config(_ctx, _param, file):
     """
     loads, validates and returns configuration parameters
@@ -65,23 +95,7 @@ def cli(config, force):
     """
     Update BRIAN snmp checks based on Inventory Provider data.
     """
-
-    state = configuration.State(config['statedir'])
-    last = inventory.last_update_timestamp(config['inventory'])
-    if force or not last or last != state.last:
-        state.last = last
-        state.interfaces = inventory.load_interfaces(config['inventory'])
-
-    statsd_config = config.get('statsd', None)
-    if statsd_config:
-        statsd = StatsClient(
-            host=statsd_config['hostname'],
-            port=statsd_config['port'],
-            prefix=statsd_config['prefix'])
-    else:
-        statsd = None
-
-    interfaces.refresh(config['sensu'], state, statsd=statsd)
+    refresh(config, force)
 
 
 if __name__ == '__main__':