Allow to use '..' as a reference to higher level in class structure
diff --git a/reclass/storage/yamldata.py b/reclass/storage/yamldata.py
index 034832d..c549089 100644
--- a/reclass/storage/yamldata.py
+++ b/reclass/storage/yamldata.py
@@ -54,12 +54,23 @@
         return self._data
 
     def set_absolute_names(self, name, names):
-        parent = '.'.join(name.split('.')[0:-1])
+        structure = name.split('.')
+        parent = '.'.join(structure[0:-1])
         new_names = []
         for n in names:
             if n[0] == '.':
-                if parent == '':
+                if len(n) > 1 and n[1] == '.':
+                    grandparent = '.'.join(structure[0:-2])
+                    if len(n) == 2:
+                        n = grandparent
+                    elif parent == '' or grandparent == '':
+                        n = n[2:]
+                    else:
+                        n = grandparent + n[1:]
+                elif parent == '':
                     n = n[1:]
+                elif len(n) == 1:
+                    n = parent
                 else:
                     n = parent + n
             new_names.append(n)
diff --git a/reclass/tests/data/02/classes/one/alpha.yml b/reclass/tests/data/02/classes/one/alpha.yml
index a13cc5c..9eb13f4 100644
--- a/reclass/tests/data/02/classes/one/alpha.yml
+++ b/reclass/tests/data/02/classes/one/alpha.yml
@@ -1,7 +1,11 @@
 classes:
 - .beta
 - two.beta
+- ..three
+- ..two.delta
 
 parameters:
   test1: ${one_beta}
   test2: ${two_beta}
+  test3: ${three_alpha}
+  test4: ${two_gamma}
diff --git a/reclass/tests/data/02/classes/three.yml b/reclass/tests/data/02/classes/three.yml
index 987fde0..940603c 100644
--- a/reclass/tests/data/02/classes/three.yml
+++ b/reclass/tests/data/02/classes/three.yml
@@ -1,2 +1,5 @@
 classes:
 - .one.alpha
+
+parameters:
+  three_alpha: 3
diff --git a/reclass/tests/data/02/classes/two/gamma.yml b/reclass/tests/data/02/classes/two/gamma.yml
new file mode 100644
index 0000000..a1d71da
--- /dev/null
+++ b/reclass/tests/data/02/classes/two/gamma.yml
@@ -0,0 +1,2 @@
+parameters:
+  two_gamma: 4
diff --git a/reclass/tests/test_core.py b/reclass/tests/test_core.py
index ced18e8..94f7ae8 100644
--- a/reclass/tests/test_core.py
+++ b/reclass/tests/test_core.py
@@ -68,7 +68,7 @@
     def test_top_relative_class_names(self):
         reclass = self._core('02')
         node = reclass.nodeinfo('top_relative')
-        params = { 'test1': 1, 'test2': 2, 'one_beta': 1, 'two_beta': 2, '_reclass_': { 'environment': 'base', 'name': { 'full': 'top_relative', 'short': 'top_relative' } } }
+        params = { 'test1': 1, 'test2': 2, 'test3': 3, 'test4': 4, 'one_beta': 1, 'two_beta': 2, 'three_aplha': 3, 'two_gamma': 4, '_reclass_': { 'environment': 'base', 'name': { 'full': 'top_relative', 'short': 'top_relative' } } }
         self.assertEqual(node['parameters'], params)
 
     def test_compose_node_names(self):