diff --git a/src/osmo_gsm_tester/obj/bsc_osmo.py b/src/osmo_gsm_tester/obj/bsc_osmo.py
index 046ef94..22b2dad 100644
--- a/src/osmo_gsm_tester/obj/bsc_osmo.py
+++ b/src/osmo_gsm_tester/obj/bsc_osmo.py
@@ -34,7 +34,7 @@
 
 class OsmoBsc(log.Origin):
 
-    def __init__(self, suite_run, msc, mgw, stp, ip_address):
+    def __init__(self, testenv, msc, mgw, stp, ip_address):
         super().__init__(log.C_RUN, 'osmo-bsc_%s' % ip_address.get('addr'))
         self.run_dir = None
         self.config_file = None
@@ -42,7 +42,7 @@
         self.encryption = None
         self.rsl_ip = None
         self.use_osmux = "off"
-        self.suite_run = suite_run
+        self.testenv = testenv
         self.ip_address = ip_address
         self.bts = []
         self.msc = msc
@@ -51,10 +51,10 @@
 
     def start(self):
         self.log('Starting osmo-bsc')
-        self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name()))
+        self.run_dir = util.Dir(self.testenv.suite().get_run_dir().new_dir(self.name()))
         self.configure()
 
-        inst = util.Dir(os.path.abspath(self.suite_run.trial.get_inst('osmo-bsc')))
+        inst = util.Dir(os.path.abspath(self.testenv.suite().trial().get_inst('osmo-bsc')))
 
         binary = inst.child('bin', 'osmo-bsc')
         if not os.path.isfile(binary):
@@ -67,7 +67,7 @@
             filter = 'host %s or host %s and port not 22' % (self.addr(), self.rsl_ip)
         else:
             filter = 'host %s and port not 22' % self.addr()
-        pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), None, filter)
+        pcap_recorder.PcapRecorder(self.testenv, self.run_dir.new_dir('pcap'), None, filter)
 
         env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) }
 
@@ -76,7 +76,7 @@
                                        (binary, '-c',
                                         os.path.abspath(self.config_file)),
                                        env=env)
-        self.suite_run.remember_to_stop(self.process)
+        self.testenv.remember_to_stop(self.process)
         self.process.launch()
 
     def configure(self):
@@ -84,7 +84,7 @@
         self.dbg(config_file=self.config_file)
 
         values = dict(bsc=config.get_defaults('bsc'))
-        config.overlay(values, self.suite_run.config())
+        config.overlay(values, self.testenv.suite().config())
         config.overlay(values, dict(bsc=dict(ip_address=self.ip_address)))
         config.overlay(values, self.mgw.conf_for_client())
         config.overlay(values, self.stp.conf_for_client())
