+sub name { $_[0]{name} ||= $_[0]->_init_name }
+sub _init_name { my $name = $_[0]{fullname}; $name =~ s/.*--//; $name }
+sub path { @{ $_[0]{path} ||= [ $_[0]->_init_path ] } }
+sub _init_path { my $name = $_[0]{fullname}; split /--/, $name }
+
+sub children { }
+sub siblings {}
+sub parent {}
+
+
+###### internal stuff #######
+