diff --git a/common/python/nomadcore/baseclasses.py b/common/python/nomadcore/baseclasses.py
index d6ab46c33aa26e01fb1f5f0ce2fff0607cc16b10..572ff23f9b878ce6babb38cdf39d1e3721996d57 100644
--- a/common/python/nomadcore/baseclasses.py
+++ b/common/python/nomadcore/baseclasses.py
@@ -6,6 +6,7 @@ from builtins import str
 from builtins import object
 
 import os
+import copy
 import numpy as np
 import logging
 from abc import ABCMeta, abstractmethod
@@ -505,13 +506,14 @@ class ParserContext(object):
 class CacheObject(object):
     """Wraps an intermediate value stored during parsing.
     """
-    def __init__(self, name, value, single=True, update=True):
+    def __init__(self, name, default_value=None, single=True, update=True):
         self.name = name
         self.update = update
-        self._value = value
+        self.default_value = copy.copy(default_value)
+        self._value = default_value
         self._single = single
         self._pushed = False
-        self._updated = value is not None
+        self._updated = default_value is not None
 
     @property
     def value(self):
@@ -521,6 +523,10 @@ class CacheObject(object):
     def value(self, value):
         self._value = value
 
+    def clear(self):
+        self._updated = True
+        self._value = self.default_value
+
 
 #===============================================================================
 class CacheService(object):
@@ -565,7 +571,8 @@ class CacheService(object):
     def clear(self):
         """Frees all object from the cache.
         """
-        self._cache.clear()
+        for cache_object in self._cache.values():
+            cache_object.clear()
 
     def add(self, name, value=None, single=True, update=True):
         """Used to add a cache object. Two cache objects with the same name are