diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py
index dca8090..5204b61 100644
--- a/src/osmo_gsm_tester/resource.py
+++ b/src/osmo_gsm_tester/resource.py
@@ -87,7 +87,8 @@
 
 CONF_SCHEMA = util.dict_add(
     { 'defaults.timeout': schema.STR },
-    dict([('resources.%s' % key, val) for key, val in WANT_SCHEMA.items()]))
+    dict([('resources.%s' % key, val) for key, val in WANT_SCHEMA.items()]),
+    dict([('modifiers.%s' % key, val) for key, val in WANT_SCHEMA.items()]))
 
 KNOWN_BTS_TYPES = {
         'osmo-bts-sysmo': bts_sysmo.SysmoBts,
@@ -113,7 +114,7 @@
         self.all_resources = Resources(config.read(self.config_path, RESOURCES_SCHEMA))
         self.all_resources.set_hashes()
 
-    def reserve(self, origin, want):
+    def reserve(self, origin, want, modifiers):
         '''
         attempt to reserve the resources specified in the dict 'want' for
         'origin'. Obtain a lock on the resources lock dir, verify that all
@@ -125,7 +126,11 @@
 
         'origin' should be an Origin() instance.
 
-        'want' is a dict matching RESOURCES_SCHEMA.
+        'want' is a dict matching RESOURCES_SCHEMA, used to specify what to
+        reserve.
+
+        'modifiers' is a dict matching RESOURCES_SCHEMA, it is overlaid on top
+        of 'want'.
 
         If an entry has no attribute set, any of the resources may be
         reserved without further limitations.
@@ -142,6 +147,7 @@
          }
         '''
         schema.validate(want, RESOURCES_SCHEMA)
+        schema.validate(modifiers, RESOURCES_SCHEMA)
 
         origin_id = origin.origin_id()
 
@@ -156,7 +162,7 @@
             config.write(rrfile_path, reserved)
 
             self.remember_to_free(to_be_reserved)
-            return ReservedResources(self, origin, to_be_reserved)
+            return ReservedResources(self, origin, to_be_reserved, modifiers)
 
     def free(self, origin, to_be_freed):
         log.ctx(origin)
@@ -491,10 +497,12 @@
     dependencies from so far unused (but reserved) resource.
     '''
 
-    def __init__(self, resources_pool, origin, reserved):
+    def __init__(self, resources_pool, origin, reserved, modifiers):
         self.resources_pool = resources_pool
         self.origin = origin
-        self.reserved = reserved
+        self.reserved_original = reserved
+        self.reserved = copy.deepcopy(self.reserved_original)
+        config.overlay(self.reserved, modifiers)
 
     def __repr__(self):
         return 'resources(%s)=%s' % (self.origin.name(), pprint.pformat(self.reserved))
@@ -551,9 +559,9 @@
                 item.pop(USED_KEY, None)
 
     def free(self):
-        if self.reserved:
-            self.resources_pool.free(self.origin, self.reserved)
-        self.reserved = None
+        if self.reserved_original:
+            self.resources_pool.free(self.origin, self.reserved_original)
+        self.reserved_original = None
 
     def counts(self):
         counts = {}
diff --git a/src/osmo_gsm_tester/suite.py b/src/osmo_gsm_tester/suite.py
index c712a75..fa86f96 100644
--- a/src/osmo_gsm_tester/suite.py
+++ b/src/osmo_gsm_tester/suite.py
@@ -71,6 +71,7 @@
         self.objects_to_clean_up = None
         self.test_import_modules_to_clean_up = []
         self._resource_requirements = None
+        self._resource_modifiers = None
         self._config = None
         self._processes = None
         self._run_dir = None
@@ -154,6 +155,11 @@
             self._resource_requirements = self.combined('resources')
         return self._resource_requirements
 
+    def resource_modifiers(self):
+        if self._resource_modifiers is None:
+            self._resource_modifiers = self.combined('modifiers')
+        return self._resource_modifiers
+
     def config(self):
         if self._config is None:
             self._config = self.combined('config')
@@ -163,7 +169,7 @@
         if self.reserved_resources:
             raise RuntimeError('Attempt to reserve resources twice for a SuiteRun')
         self.log('reserving resources in', self.resources_pool.state_dir, '...')
-        self.reserved_resources = self.resources_pool.reserve(self, self.resource_requirements())
+        self.reserved_resources = self.resources_pool.reserve(self, self.resource_requirements(), self.resource_modifiers())
 
     def run_tests(self, names=None):
         suite_libdir = os.path.join(self.definition.suite_dir, 'lib')
