diff --git a/brian_polling_manager/cli.py b/brian_polling_manager/cli.py
index 6711ed41ade9b6cb233016a94b562a2cafbb1ab7..44592996f22b7081a43381fe5d4317c847bccb09 100644
--- a/brian_polling_manager/cli.py
+++ b/brian_polling_manager/cli.py
@@ -186,7 +186,7 @@ class State(object):
             f.write(json.dumps(new_interfaces))
 
 
-def _validate_config(ctx, param, value):
+def _validate_config(ctx, param, file):
     """
     loads, validates and returns configuration parameters
 
@@ -195,12 +195,11 @@ def _validate_config(ctx, param, value):
     :param value: filename (string)
     :return: a dict containing configuration parameters
     """
-    if value is None:
+    if file is None:
         config = _DEFAULT_CONFIG
     else:
         try:
-            with open(value) as f:
-                config = json.loads(f.read())
+            config = json.loads(file.read())
         except (json.JSONDecodeError, jsonschema.ValidationError) as e:
             raise click.BadParameter(str(e))
 
@@ -216,13 +215,13 @@ def _validate_config(ctx, param, value):
 @click.option(
     '--config',
     default=None,
-    type=click.STRING,
+    type=click.File('r'),
     callback=_validate_config,
     help='configuration filename')
 @click.option(
     '--force/--no-force',
     default=False,
-    help="update even if inventory hasn't been updated")
+    help="refresh inventory data even if it hasn't been updated")
 def main(config, force):
     """
     Update BRIAN snmp checks based on Inventory Provider data.