diff --git a/src/osmo_gsm_tester/obj/hlr_osmo.py b/src/osmo_gsm_tester/obj/hlr_osmo.py
index 9b911d6..ecff75e 100644
--- a/src/osmo_gsm_tester/obj/hlr_osmo.py
+++ b/src/osmo_gsm_tester/obj/hlr_osmo.py
@@ -125,7 +125,7 @@
         try:
             c = conn.cursor()
             c.execute('insert into subscriber (id, imsi, msisdn) values (?, ?, ?)',
-                        (subscriber_id, modem.imsi(), modem.msisdn,))
+                        (subscriber_id, modem.imsi(), modem.msisdn(),))
             c.execute('insert into auc_2g (subscriber_id, algo_id_2g, ki) values (?, ?, ?)',
                         (subscriber_id, algo, modem.ki(),))
             conn.commit()
diff --git a/src/osmo_gsm_tester/obj/ms.py b/src/osmo_gsm_tester/obj/ms.py
index 3e75719..417ad52 100644
--- a/src/osmo_gsm_tester/obj/ms.py
+++ b/src/osmo_gsm_tester/obj/ms.py
@@ -45,7 +45,7 @@
     def __init__(self, name, conf):
         super().__init__(log.C_TST, name)
         self._conf = conf
-        self.msisdn = None
+        self._msisdn = None
 
 ########################
 # PUBLIC - INTERNAL API
@@ -111,10 +111,10 @@
         return self._conf.get('auth_algo', None)
 
     def set_msisdn(self, msisdn):
-        self.msisdn = msisdn
+        self._msisdn = msisdn
 
     def msisdn(self):
-        return self.msisdn
+        return self._msisdn
 
     def get_counter(self, counter_name):
         raise log.Error('get_counter() not implemented!')
diff --git a/src/osmo_gsm_tester/obj/ms_ofono.py b/src/osmo_gsm_tester/obj/ms_ofono.py
index b604325..0c67e0a 100644
--- a/src/osmo_gsm_tester/obj/ms_ofono.py
+++ b/src/osmo_gsm_tester/obj/ms_ofono.py
@@ -706,12 +706,12 @@
 
     def sms_send(self, to_msisdn_or_modem, *tokens):
         if isinstance(to_msisdn_or_modem, Modem):
-            to_msisdn = to_msisdn_or_modem.msisdn
+            to_msisdn = to_msisdn_or_modem.msisdn()
             tokens = list(tokens)
             tokens.append('to ' + to_msisdn_or_modem.name())
         else:
             to_msisdn = str(to_msisdn_or_modem)
-        msg = sms.Sms(self.msisdn, to_msisdn, 'from ' + self.name(), *tokens)
+        msg = sms.Sms(self.msisdn(), to_msisdn, 'from ' + self.name(), *tokens)
         self.log('sending sms to MSISDN', to_msisdn, sms=msg)
         mm = self.dbus.interface(I_SMS)
         mm.SendMessage(to_msisdn, str(msg))
@@ -743,7 +743,7 @@
 
     def call_dial(self, to_msisdn_or_modem):
         if isinstance(to_msisdn_or_modem, Modem):
-            to_msisdn = to_msisdn_or_modem.msisdn
+            to_msisdn = to_msisdn_or_modem.msisdn()
         else:
             to_msisdn = str(to_msisdn_or_modem)
         self.dbg('Dialing:', to_msisdn)
@@ -766,7 +766,7 @@
 
     def call_wait_incoming(self, caller_msisdn_or_modem, timeout=60):
         if isinstance(caller_msisdn_or_modem, Modem):
-            caller_msisdn = caller_msisdn_or_modem.msisdn
+            caller_msisdn = caller_msisdn_or_modem.msisdn()
         else:
             caller_msisdn = str(caller_msisdn_or_modem)
         self.dbg('Waiting for incoming call from:', caller_msisdn)
diff --git a/sysmocom/suites/debug/interactive.py b/sysmocom/suites/debug/interactive.py
index 3b6a338..18b49d1 100755
--- a/sysmocom/suites/debug/interactive.py
+++ b/sysmocom/suites/debug/interactive.py
@@ -68,14 +68,14 @@
   elif 'sms'.startswith(cmd):
     for mo in modems:
       for mt in modems:
-        mo.sms_send(mt.msisdn, 'to ' + mt.name())
+        mo.sms_send(mt.msisdn(), 'to ' + mt.name())
 
   elif cmd.startswith('call-list'):
       if len(params) != 1 and len(params) != 2:
         print('wrong format')
         continue
       for ms in modems:
-        if len(params) == 1 or str(ms.msisdn) == params[1]:
+        if len(params) == 1 or str(ms.msisdn()) == params[1]:
           print('call-list: %r %r' % (ms.name(), ms.call_id_list()))
 
   elif cmd.startswith('call-dial'):
@@ -84,7 +84,7 @@
       continue
     src_msisdn, dst_msisdn = params[1:]
     for mo in modems:
-      if str(mo.msisdn) == src_msisdn:
+      if str(mo.msisdn()) == src_msisdn:
         print('dialing %s->%s' % (src_msisdn, dst_msisdn))
         call_id = mo.call_dial(dst_msisdn)
         print('dial success: call_id=%r' % call_id)
@@ -95,7 +95,7 @@
       continue
     src_msisdn, dst_msisdn = params[1:]
     for mt in modems:
-      if str(mt.msisdn) == dst_msisdn:
+      if str(mt.msisdn()) == dst_msisdn:
         print('waiting for incoming %s->%s' % (src_msisdn, dst_msisdn))
         call_id = mt.call_wait_incoming(src_msisdn)
         print('incoming call success: call_id=%r' % call_id)
@@ -106,7 +106,7 @@
       continue
     mt_msisdn, call_id = params[1:]
     for mt in modems:
-      if str(mt.msisdn) == mt_msisdn:
+      if str(mt.msisdn()) == mt_msisdn:
         print('answering %s %r' % (mt.name(), call_id))
         mt.call_answer(call_id)
 
@@ -116,7 +116,7 @@
       continue
     ms_msisdn, call_id = params[1:]
     for ms in modems:
-      if str(ms.msisdn) == ms_msisdn:
+      if str(ms.msisdn()) == ms_msisdn:
         print('hanging up %s %r' % (ms.name(), call_id))
         ms.call_hangup(call_id)
 
diff --git a/sysmocom/suites/encryption/lib/testlib.py b/sysmocom/suites/encryption/lib/testlib.py
index 87581c6..e85e1c9 100644
--- a/sysmocom/suites/encryption/lib/testlib.py
+++ b/sysmocom/suites/encryption/lib/testlib.py
@@ -45,7 +45,7 @@
         hlr.subscriber_delete(ms)
         print('KI changed: ' + bad_ki + " => " + good_ki)
         ms.set_ki(good_ki)
-        hlr.subscriber_add(ms, ms.msisdn)
+        hlr.subscriber_add(ms, ms.msisdn())
         print('Attempt connection with correct KI...')
     else:
         print('Attempt connection with wrong KI, should work as it is not used...')
diff --git a/sysmocom/suites/nitb_debug/interactive.py b/sysmocom/suites/nitb_debug/interactive.py
index 21f4175..eb196bf 100755
--- a/sysmocom/suites/nitb_debug/interactive.py
+++ b/sysmocom/suites/nitb_debug/interactive.py
@@ -45,14 +45,14 @@
   elif 'sms'.startswith(cmd):
     for mo in modems:
       for mt in modems:
-        mo.sms_send(mt.msisdn, 'to ' + mt.name())
+        mo.sms_send(mt.msisdn(), 'to ' + mt.name())
 
   elif cmd.startswith('call-list'):
       if len(params) != 1 and len(params) != 2:
         print('wrong format')
         continue
       for ms in modems:
-        if len(params) == 1 or str(ms.msisdn) == params[1]:
+        if len(params) == 1 or str(ms.msisdn()) == params[1]:
           print('call-list: %r %r' % (ms.name(), ms.call_id_list()))
 
   elif cmd.startswith('call-dial'):
@@ -61,7 +61,7 @@
       continue
     src_msisdn, dst_msisdn = params[1:]
     for mo in modems:
-      if str(mo.msisdn) == src_msisdn:
+      if str(mo.msisdn()) == src_msisdn:
         print('dialing %s->%s' % (src_msisdn, dst_msisdn))
         call_id = mo.call_dial(dst_msisdn)
         print('dial success: call_id=%r' % call_id)
@@ -72,7 +72,7 @@
       continue
     src_msisdn, dst_msisdn = params[1:]
     for mt in modems:
-      if str(mt.msisdn) == dst_msisdn:
+      if str(mt.msisdn()) == dst_msisdn:
         print('waiting for incoming %s->%s' % (src_msisdn, dst_msisdn))
         call_id = mt.call_wait_incoming(src_msisdn)
         print('incoming call success: call_id=%r' % call_id)
@@ -83,7 +83,7 @@
       continue
     mt_msisdn, call_id = params[1:]
     for mt in modems:
-      if str(mt.msisdn) == mt_msisdn:
+      if str(mt.msisdn()) == mt_msisdn:
         print('answering %s %r' % (mt.name(), call_id))
         mt.call_answer(call_id)
 
@@ -93,7 +93,7 @@
       continue
     ms_msisdn, call_id = params[1:]
     for ms in modems:
-      if str(ms.msisdn) == ms_msisdn:
+      if str(ms.msisdn()) == ms_msisdn:
         print('hanging up %s %r' % (ms.name(), call_id))
         ms.call_hangup(call_id)
 
diff --git a/sysmocom/suites/nitb_smpp/esme_ms_sms_storeforward.py b/sysmocom/suites/nitb_smpp/esme_ms_sms_storeforward.py
index f9617e2..f4d379c 100755
--- a/sysmocom/suites/nitb_smpp/esme_ms_sms_storeforward.py
+++ b/sysmocom/suites/nitb_smpp/esme_ms_sms_storeforward.py
@@ -27,13 +27,13 @@
 esme.connect()
 nitb.subscriber_add(ms)
 
-wrong_msisdn = ms.msisdn + esme.msisdn
+wrong_msisdn = ms.msisdn() + esme.msisdn
 print('sending sms with wrong msisdn %s, it will fail' % wrong_msisdn)
 msg = Sms(esme.msisdn, wrong_msisdn, 'smpp message with wrong dest')
 esme.run_method_expect_failure(SMPP_ESME_RINVDSTADR, esme.sms_send_wait_resp, msg, esme.MSGMODE_STOREFORWARD)
 
 print('sending sms, it will be stored...')
-msg = Sms(esme.msisdn, ms.msisdn, 'smpp send not-yet-registered message')
+msg = Sms(esme.msisdn, ms.msisdn(), 'smpp send not-yet-registered message')
 umref = esme.sms_send_wait_resp(msg, esme.MSGMODE_STOREFORWARD, receipt=True)
 
 print('MS registers and will receive the SMS...')
@@ -45,7 +45,7 @@
 wait(esme.receipt_was_received, umref)
 
 print('checking MS can receive SMS while registered...')
-msg = Sms(esme.msisdn, ms.msisdn, 'smpp send already-registered message')
+msg = Sms(esme.msisdn, ms.msisdn(), 'smpp send already-registered message')
 umref = esme.sms_send_wait_resp(msg, esme.MSGMODE_STOREFORWARD, receipt=True)
 wait(ms.sms_was_received, msg)
 print('Waiting to receive and consume sms receipt with reference', umref)
diff --git a/sysmocom/suites/nitb_smpp/esme_ms_sms_transaction.py b/sysmocom/suites/nitb_smpp/esme_ms_sms_transaction.py
index ade8054..171fd2c 100755
--- a/sysmocom/suites/nitb_smpp/esme_ms_sms_transaction.py
+++ b/sysmocom/suites/nitb_smpp/esme_ms_sms_transaction.py
@@ -32,16 +32,16 @@
 wait(nitb.subscriber_attached, ms)
 
 print('sending first sms...')
-msg = Sms(esme.msisdn, ms.msisdn, 'smpp send message')
+msg = Sms(esme.msisdn, ms.msisdn(), 'smpp send message')
 esme.sms_send(msg, esme.MSGMODE_TRANSACTION)
 wait(ms.sms_was_received, msg)
 
 print('sending second sms (unicode chars not in gsm aplhabet)...')
-msg = Sms(esme.msisdn, ms.msisdn, 'chars:[кизаçйж]')
+msg = Sms(esme.msisdn, ms.msisdn(), 'chars:[кизаçйж]')
 esme.sms_send(msg, esme.MSGMODE_TRANSACTION)
 wait(ms.sms_was_received, msg)
 
-wrong_msisdn = ms.msisdn + esme.msisdn
+wrong_msisdn = ms.msisdn() + esme.msisdn
 print('sending third sms (with wrong msisdn %s)' % wrong_msisdn)
 msg = Sms(esme.msisdn, wrong_msisdn, 'smpp message with wrong dest')
 esme.run_method_expect_failure(SMPP_ESME_RINVDSTADR, esme.sms_send_wait_resp, msg, esme.MSGMODE_TRANSACTION)
diff --git a/sysmocom/suites/nitb_ussd/assert_extension.py b/sysmocom/suites/nitb_ussd/assert_extension.py
index e547131..c0c32be 100755
--- a/sysmocom/suites/nitb_ussd/assert_extension.py
+++ b/sysmocom/suites/nitb_ussd/assert_extension.py
@@ -34,4 +34,4 @@
 
 print('Sending ussd code %s' % USSD_COMMAND_GET_EXTENSION)
 response = ms.ussd_send(USSD_COMMAND_GET_EXTENSION)
-assert ' ' + ms.msisdn + '\r' in response
+assert ' ' + ms.msisdn() + '\r' in response
diff --git a/sysmocom/suites/smpp/esme_ms_sms_storeforward.py b/sysmocom/suites/smpp/esme_ms_sms_storeforward.py
index 6ec414b..c26f168 100755
--- a/sysmocom/suites/smpp/esme_ms_sms_storeforward.py
+++ b/sysmocom/suites/smpp/esme_ms_sms_storeforward.py
@@ -37,7 +37,7 @@
 esme.connect()
 hlr.subscriber_add(ms)
 
-wrong_msisdn = ms.msisdn + esme.msisdn
+wrong_msisdn = ms.msisdn() + esme.msisdn
 print('sending sms with wrong msisdn %s, it will be stored but not delivered' % wrong_msisdn)
 msg = Sms(esme.msisdn, wrong_msisdn, 'smpp message with wrong dest')
 # Since osmo-msc 1e67fea7ba5c6336, we accept all sms in store&forward mode without looking at HLR
@@ -45,7 +45,7 @@
 umref_wrong = esme.sms_send_wait_resp(msg, esme.MSGMODE_STOREFORWARD, receipt=True)
 
 print('sending sms, it will be stored...')
-msg = Sms(esme.msisdn, ms.msisdn, 'smpp send not-yet-registered message')
+msg = Sms(esme.msisdn, ms.msisdn(), 'smpp send not-yet-registered message')
 umref = esme.sms_send_wait_resp(msg, esme.MSGMODE_STOREFORWARD, receipt=True)
 
 print('MS registers and will receive the SMS...')
@@ -57,7 +57,7 @@
 wait(esme.receipt_was_received, umref)
 
 print('checking MS can receive SMS while registered...')
-msg = Sms(esme.msisdn, ms.msisdn, 'smpp send already-registered message')
+msg = Sms(esme.msisdn, ms.msisdn(), 'smpp send already-registered message')
 umref = esme.sms_send_wait_resp(msg, esme.MSGMODE_STOREFORWARD, receipt=True)
 wait(ms.sms_was_received, msg)
 print('Waiting to receive and consume sms receipt with reference', umref)
diff --git a/sysmocom/suites/smpp/esme_ms_sms_transaction.py b/sysmocom/suites/smpp/esme_ms_sms_transaction.py
index 5a5a470..5efaf66 100755
--- a/sysmocom/suites/smpp/esme_ms_sms_transaction.py
+++ b/sysmocom/suites/smpp/esme_ms_sms_transaction.py
@@ -42,16 +42,16 @@
 wait(msc.subscriber_attached, ms)
 
 print('sending first sms...')
-msg = Sms(esme.msisdn, ms.msisdn, 'smpp send message')
+msg = Sms(esme.msisdn, ms.msisdn(), 'smpp send message')
 esme.sms_send(msg, esme.MSGMODE_TRANSACTION)
 wait(ms.sms_was_received, msg)
 
 print('sending second sms (unicode chars not in gsm aplhabet)...')
-msg = Sms(esme.msisdn, ms.msisdn, 'chars:[кизаçйж]')
+msg = Sms(esme.msisdn, ms.msisdn(), 'chars:[кизаçйж]')
 esme.sms_send(msg, esme.MSGMODE_TRANSACTION)
 wait(ms.sms_was_received, msg)
 
-wrong_msisdn = ms.msisdn + esme.msisdn
+wrong_msisdn = ms.msisdn() + esme.msisdn
 print('sending third sms (with wrong msisdn %s)' % wrong_msisdn)
 msg = Sms(esme.msisdn, wrong_msisdn, 'smpp message with wrong dest')
 esme.run_method_expect_failure(SMPP_ESME_RINVDSTADR, esme.sms_send_wait_resp, msg, esme.MSGMODE_TRANSACTION)
diff --git a/sysmocom/suites/ussd/assert_extension.py b/sysmocom/suites/ussd/assert_extension.py
index 87f2ee5..11a5c5b 100755
--- a/sysmocom/suites/ussd/assert_extension.py
+++ b/sysmocom/suites/ussd/assert_extension.py
@@ -47,4 +47,4 @@
 print('Sending ussd code %s' % USSD_COMMAND_GET_EXTENSION)
 response = ms.ussd_send(USSD_COMMAND_GET_EXTENSION)
 log('got ussd response: %r' % repr(response))
-assert response.endswith(' ' + ms.msisdn)
+assert response.endswith(' ' + ms.msisdn())
