diff --git a/src/caosadvancedtools/cfood.py b/src/caosadvancedtools/cfood.py
index 89d879f80bf6c760b0e2c8437a70ec4b0d32bf91..3ec1b6ed7ef5263db8349419225ca3ebf20f52fa 100644
--- a/src/caosadvancedtools/cfood.py
+++ b/src/caosadvancedtools/cfood.py
@@ -51,6 +51,7 @@ ENTITIES = {}
 PROPERTIES = {}
 RECORDS = {}
 RECORDTYPES = {}
+FILES = {}
 
 logger = logging.getLogger(__name__)
 
@@ -244,11 +245,20 @@ class AbstractCFood(object, metaclass=ABCMeta):
             entity.add_property(prop, value)
 
 
+def add_files(filemap):
+    """add to the file cache"""
+    FILES.update(filemap)
+
+
 def get_entity_for_path(path):
+    if path in FILES:
+        return FILES[path]
     try:
         q = "FIND FILE WHICH IS STORED AT '{}'".format(path)
+        logger.debug(q)
+        FILES[path] = db.execute_query(q, unique=True)
 
-        return db.execute_query(q, unique=True)
+        return FILES[path]
     except EntityDoesNotExistError:
         path_prefix = "**"
 
@@ -257,7 +267,9 @@ def get_entity_for_path(path):
         q = "FIND FILE WHICH IS STORED AT '{}{}'".format(path_prefix, path)
         logger.debug(q)
 
-        return db.execute_query(q, unique=True)
+        FILES[path] = db.execute_query(q, unique=True)
+
+        return FILES[path]
 
 
 class AbstractFileCFood(AbstractCFood):
@@ -488,6 +500,7 @@ def assure_has_property(entity, name, value, to_be_updated=None,
 
             else:
                 to_be_updated.append(entity)
+
             return
 
     properties = entity.get_properties()
diff --git a/src/caosadvancedtools/crawler.py b/src/caosadvancedtools/crawler.py
index 84a635694723545be9470c7f5abfbee23d694d6c..df6750429d239d782daaaa2b80048e57af976fa6 100644
--- a/src/caosadvancedtools/crawler.py
+++ b/src/caosadvancedtools/crawler.py
@@ -50,7 +50,7 @@ import caosdb as db
 from caosdb.exceptions import TransactionError
 
 from .cache import Cache, UpdateCache, get_pretty_xml
-from .cfood import RowCFood, get_ids_for_entities_with_names
+from .cfood import RowCFood, add_files, get_ids_for_entities_with_names
 from .datainconsistency import DataInconsistencyError
 from .datamodel_problems import DataModelProblems
 from .guard import RETRIEVE, ProhibitedException
@@ -611,6 +611,7 @@ class FileCrawler(Crawler):
         """
         super().__init__(**kwargs)
         self.files = files
+        add_files({fi.path: fi for fi in files})
 
     def iteritems(self):
         for idx, p in enumerate(sorted([f.path for f in self.files])):
diff --git a/unittests/test_cfood.py b/unittests/test_cfood.py
index f51d515a2bb8896d25acc139c89b921fab1d7d0b..802497a8ac750d3301109fd434891273e92e252c 100644
--- a/unittests/test_cfood.py
+++ b/unittests/test_cfood.py
@@ -25,10 +25,11 @@ import re
 import unittest
 
 import caosdb as db
-from caosadvancedtools.cfood import (AbstractCFood, AbstractFileCFood,
-                                     CMeal, assure_has_parent,
-                                     assure_has_property,
-                                     assure_object_is_in_list)
+from caosadvancedtools.cfood import (AbstractCFood, AbstractFileCFood, CMeal,
+                                     assure_has_parent, assure_has_property,
+                                     assure_object_is_in_list,
+                                     get_entity_for_path)
+from caosadvancedtools.crawler import FileCrawler
 from caosadvancedtools.example_cfood import ExampleCFood
 
 PATTERN = "h.*"
@@ -143,6 +144,7 @@ class InsertionTest(unittest.TestCase):
             "Test bool": ("BOOLEAN", True),
             "Test string": ("STRING", "bla")
         }
+
         for name, ty_val in types_and_values.items():
             entity.add_property(name=name, datatype=ty_val[0],
                                 value=ty_val[1])
@@ -183,3 +185,10 @@ class MealTest(unittest.TestCase):
         self.assertTrue(c.looking_for("/this/other"))
         # class should still match other prefixes
         self.assertTrue(ExampleCFoodMeal.match_item("/that/file"))
+
+
+class FileCacheTest(unittest.TestCase):
+    def test(self):
+        self.assertRaises(Exception, get_entity_for_path, "/lol")
+        FileCrawler(cfood_types=[], files=[db.File(path="/lol")])
+        get_entity_for_path("/lol")