diff --git a/_modules/reclass.py b/_modules/reclass.py
index 3cefbad..f15eb44 100644
--- a/_modules/reclass.py
+++ b/_modules/reclass.py
@@ -49,6 +49,10 @@
 
     # find classes
     for root, dirs, files in os.walk(path):
+        # skip hidden files and folders in reclass dir
+        files = [f for f in files if not f[0] == '.']
+        dirs[:] = [d for d in dirs if not d[0] == '.']
+        # translate found init.yml to valid class name
         if 'init.yml' in files:
             class_file = root + '/' + 'init.yml'
             class_name = class_file.replace(path, '')[:-9].replace('/', '.')
@@ -252,7 +256,7 @@
 
         salt '*' reclass.node_create server.domain.com classes=[system.neco1, system.neco2]
         salt '*' reclass.node_create namespace/test enabled=False
-    
+
     '''
     ret = {}
 
@@ -344,6 +348,9 @@
     ret = {}
 
     for root, sub_folders, files in os.walk(_get_nodes_dir()):
+        # skip hidden files and folders in reclass dir
+        files = [f for f in files if not f[0] == '.']
+        sub_folders[:] = [d for d in sub_folders if not d[0] == '.']
         for fl in files:
             file_path = os.path.join(root, fl)
             with open(file_path, 'r') as file_handle:
@@ -506,7 +513,7 @@
     .. code-block:: bash
 
         salt-call reclass.graph_data
-    
+
     '''
     pillar_data = _pillar_graph_data().get('graph')
     grain_data = _grain_graph_data().get('graph')
@@ -551,13 +558,39 @@
 
     .. code-block:: bash
 
-        salt '*' reclass.node_update name=nodename classes="[clas1, class2]"
+        salt '*' reclass.node_update name=nodename classes="[clas1, class2]" parameters="{param: value, another_param: another_value}"
     '''
     node = node_get(name=name)
-    if not node.has_key('Error'):
-        node = node[name.split("/")[1]]
-    else:
+    if node.has_key('Error'):
         return {'Error': 'Error in retrieving node'}
+    
+    for name, values in node.items():
+        param = values.get('parameters', {})
+        path = values.get('path')
+        cluster = values.get('cluster')
+        environment = values.get('environment')
+        write_class = values.get('classes', [])
+        
+    if parameters:
+        param.update(parameters)
+    
+    if classes:
+        for classe in classes:
+            if not classe in write_class:
+                write_class.append(classe)
+    
+    node_meta = _get_node_meta(name, cluster, environment, write_class, param)
+    LOG.debug(node_meta)
+    
+    if path == None:
+        file_path = os.path.join(_get_nodes_dir(), name + '.yml')
+    else:
+        file_path = os.path.join(_get_nodes_dir(), path, name + '.yml')
+    
+    with open(file_path, 'w') as node_file:
+        node_file.write(yaml.safe_dump(node_meta, default_flow_style=False))
+    
+    return node_get(name)
 
 
 def _get_node_classes(node_data, class_mapping_fragment):
diff --git a/reclass/orchestrate/reactor/node_register.sls b/reclass/orchestrate/reactor/node_register.sls
index 1bd211a..6cc2f0e 100644
--- a/reclass/orchestrate/reactor/node_register.sls
+++ b/reclass/orchestrate/reactor/node_register.sls
@@ -17,5 +17,5 @@
   - tgt_type: pillar
   - sls: reclass.storage.node
   - queue: True
-  - requires:
+  - require:
     - salt: classify_node_{{ node_name }}
