diff --git a/reclass_tools/reclass_models.py b/reclass_tools/reclass_models.py
index 1bc83de..20874d6 100644
--- a/reclass_tools/reclass_models.py
+++ b/reclass_tools/reclass_models.py
@@ -2,8 +2,8 @@
 from reclass.adapters import salt as reclass_salt
 from reclass import config as reclass_config
 from reclass import core as reclass_core
-import salt.cli.call
-import salt.cli.caller
+#import salt.cli.call
+#import salt.cli.caller
 
 
 def get_core():
@@ -21,23 +21,23 @@
     return reclass_core.Core(storage, None, None)
 
 
-def get_minion_domain():
-    """Try to get domain from the local salt minion"""
-    client = salt.cli.call.SaltCall()
-    client.parse_args(args=['pillar.items'])
-    caller = salt.cli.caller.Caller.factory(client.config)
-    result = caller.call()
-    # Warning! There is a model-related parameter
-    # TODO: move the path to the parameter to a settings/defaults
-    domain = result['return']['_param']['cluster_domain']
-    return domain
+#def get_minion_domain():
+#    """Try to get domain from the local salt minion"""
+#    client = salt.cli.call.SaltCall()
+#    client.parse_args(args=['pillar.items'])
+#    caller = salt.cli.caller.Caller.factory(client.config)
+#    result = caller.call()
+#    # Warning! There is a model-related parameter
+#    # TODO: move the path to the parameter to a settings/defaults
+#    domain = result['return']['_param']['cluster_domain']
+#    return domain
 
 
-def inventory_list(all_nodes=False):
+def inventory_list(domain=None):
     core = get_core()
     inventory = core.inventory()
     nodes_list = inventory['nodes'].keys()
-    if not all_nodes:
-        domain = get_minion_domain()
-        nodes_list = [node for node in nodes_list if domain in node]
+    if domain is not None:
+        #domain = get_minion_domain()
+        nodes_list = [node for node in nodes_list if node.endswith(domain)]
     print('\n'.join(sorted(nodes_list)))
