diff --git a/datatypes/entity.py b/datatypes/entity.py
index d8d0ef7..02b5edf 100644
--- a/datatypes/entity.py
+++ b/datatypes/entity.py
@@ -13,20 +13,24 @@
 class Entity(object):
 
     def __init__(self, classes=Classes(), applications=Applications(),
-                 parameters=Parameters()):
+                 parameters=Parameters(), name=None):
         self._applications = applications
         self._classes = classes
         self._parameters = parameters
+        self._name = name
 
     applications = property(lambda self: self._applications)
     classes = property(lambda self: self._classes)
     parameters = property(lambda self: self._parameters)
+    name = property(lambda self: self._name)
 
     def merge(self, other):
         self.applications.merge(other.applications)
         self.classes.merge(other.classes)
         self.parameters.merge(other.parameters)
+        self._name = other.name
 
     def __repr__(self):
-        return '<Entity classes:{0} applications:{1}, parameters:{2}>'.format(
+        return '<Entity{0} classes:{1} applications:{2}, parameters:{3}>'.format(
+            '' if not self.name else " '%s'" % self.name,
             len(self.classes), len(self.applications), len(self.parameters))
diff --git a/storage/yaml_fs/yamlfile.py b/storage/yaml_fs/yamlfile.py
index 2a8b21a..b8cb154 100644
--- a/storage/yaml_fs/yamlfile.py
+++ b/storage/yaml_fs/yamlfile.py
@@ -8,6 +8,7 @@
 #
 import datatypes
 import yaml
+import os
 
 class YamlFile(object):
 
@@ -41,7 +42,8 @@
             parameters = {}
         parameters = datatypes.Parameters(parameters)
 
-        return datatypes.Entity(classes, applications, parameters)
+        return datatypes.Entity(classes, applications, parameters,
+                                name=os.path.basename(self._path))
     entity = property(lambda self: self._get_entity())
 
     def __repr__(self):
