diff --git a/src/osmo_gsm_tester/suite.py b/src/osmo_gsm_tester/suite.py
index 3f4c552..ac56ada 100644
--- a/src/osmo_gsm_tester/suite.py
+++ b/src/osmo_gsm_tester/suite.py
@@ -23,7 +23,9 @@
 import copy
 import traceback
 import pprint
-from . import config, log, template, util, resource, schema, ofono_client, osmo_nitb, event_loop
+from . import config, log, template, util, resource, schema, ofono_client, event_loop
+from . import osmo_nitb
+from . import osmo_hlr, osmo_mgcpgw, osmo_msc, osmo_bsc
 from . import test
 
 class Timeout(Exception):
@@ -274,6 +276,26 @@
             ip_address = self.ip_address()
         return osmo_nitb.OsmoNitb(self, ip_address)
 
+    def hlr(self, ip_address=None):
+        if ip_address is None:
+            ip_address = self.ip_address()
+        return osmo_hlr.OsmoHlr(self, ip_address)
+
+    def mgcpgw(self, ip_address=None, bts_ip=None):
+        if ip_address is None:
+            ip_address = self.ip_address()
+        return osmo_mgcpgw.OsmoMgcpgw(self, ip_address, bts_ip)
+
+    def msc(self, hlr, mgcpgw, ip_address=None):
+        if ip_address is None:
+            ip_address = self.ip_address()
+        return osmo_msc.OsmoMsc(self, hlr, mgcpgw, ip_address)
+
+    def bsc(self, msc, ip_address=None):
+        if ip_address is None:
+            ip_address = self.ip_address()
+        return osmo_bsc.OsmoBsc(self, msc, ip_address)
+
     def bts(self):
         return bts_obj(self, self.reserved_resources.get(resource.R_BTS))
 
