diff --git a/reclass/storage/__init__.py b/reclass/storage/__init__.py
index ca49ac0..c5660ae 100644
--- a/reclass/storage/__init__.py
+++ b/reclass/storage/__init__.py
@@ -25,7 +25,7 @@
         raise NotImplementedError, "Storage class not implement node info retrieval"
 
     def nodeinfo(self, node):
-        entity, uri = self._read_nodeinfo(node, self.nodes_uri, {})
+        entity, uri = self._read_entity(node, self.nodes_uri, {})
         entity.interpolate()
         return {'__reclass__' : {'node': node, 'node_uri': uri,
                                  'timestamp': _get_timestamp()
diff --git a/reclass/storage/yaml_fs/__init__.py b/reclass/storage/yaml_fs/__init__.py
index 42eb469..fcb6710 100644
--- a/reclass/storage/yaml_fs/__init__.py
+++ b/reclass/storage/yaml_fs/__init__.py
@@ -20,7 +20,7 @@
     def __init__(self, nodes_uri, classes_uri):
         super(ExternalNodeStorage, self).__init__(nodes_uri, classes_uri)
 
-    def _read_nodeinfo(self, name, base_uri, seen, nodename=None):
+    def _read_entity(self, name, base_uri, seen, nodename=None):
         path = os.path.join(base_uri, name + FILE_EXTENSION)
         try:
             entity = YamlFile(path).entity
@@ -29,7 +29,7 @@
             merge_base = Entity()
             for klass in entity.classes.as_list():
                 if klass not in seen:
-                    ret = self._read_nodeinfo(klass, self.classes_uri, seen,
+                    ret = self._read_entity(klass, self.classes_uri, seen,
                                               name if nodename is None else nodename)[0]
                     # on every iteration, we merge the result of the
                     # recursive descend into what we have so far…
