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)
 
