diff --git a/openbsc/src/ipaccess/ipaccess-config.c b/openbsc/src/ipaccess/ipaccess-config.c
index 05fdc14..14749d8 100644
--- a/openbsc/src/ipaccess/ipaccess-config.c
+++ b/openbsc/src/ipaccess/ipaccess-config.c
@@ -53,7 +53,7 @@
 #include <osmocom/core/talloc.h>
 #include <osmocom/abis/abis.h>
 
-static struct gsm_network *gsmnet;
+struct gsm_network *bsc_gsmnet;
 
 static int net_listen_testnr;
 static int restart;
@@ -980,11 +980,11 @@
 	}
 	libosmo_abis_init(tall_ctx_config);
 
-	gsmnet = gsm_network_init(1, 1, NULL);
-	if (!gsmnet)
+	bsc_gsmnet = gsm_network_init(1, 1, NULL);
+	if (!bsc_gsmnet)
 		exit(1);
 
-	bts = gsm_bts_alloc_register(gsmnet, GSM_BTS_TYPE_NANOBTS, HARDCODED_TSC,
+	bts = gsm_bts_alloc_register(bsc_gsmnet, GSM_BTS_TYPE_NANOBTS, HARDCODED_TSC,
 				     HARDCODED_BSIC);
 	/* ip.access supports up to 4 chained TRX */
 	gsm_bts_trx_alloc(bts);
diff --git a/openbsc/src/libbsc/bts_ipaccess_nanobts.c b/openbsc/src/libbsc/bts_ipaccess_nanobts.c
index 5d96967..4bf937b 100644
--- a/openbsc/src/libbsc/bts_ipaccess_nanobts.c
+++ b/openbsc/src/libbsc/bts_ipaccess_nanobts.c
@@ -38,6 +38,8 @@
 #include <osmocom/abis/ipaccess.h>
 #include <osmocom/core/logging.h>
 
+extern struct gsm_network *bsc_gsmnet;
+
 static int bts_model_nanobts_start(struct gsm_network *net);
 static void bts_model_nanobts_e1line_bind_ops(struct e1inp_line *line);
 
@@ -276,7 +278,7 @@
 	struct gsm_bts_trx_ts *ts;
 	struct gsm_bts_gprs_nsvc *nsvc;
 
-	if (nsd->bts->type != GSM_BTS_TYPE_NANOBTS)
+	if (!is_ipaccess_bts(nsd->bts))
 		return 0;
 
 	/* This event-driven BTS setup is currently only required on nanoBTS */
@@ -396,7 +398,7 @@
 	if (!trx)
 		return -EINVAL;
 
-	if (trx->bts->type != GSM_BTS_TYPE_NANOBTS)
+	if (!is_ipaccess_bts(trx->bts))
 		return 0;
 
 	switch (foh->obj_class) {
@@ -439,7 +441,7 @@
 }
 
 /* Callback function to be called every time we receive a signal from NM */
-int bts_ipa_nm_sig_cb(unsigned int subsys, unsigned int signal,
+static int bts_ipa_nm_sig_cb(unsigned int subsys, unsigned int signal,
 		     void *handler_data, void *signal_data)
 {
 	if (subsys != SS_NM)
@@ -457,10 +459,15 @@
 	return 0;
 }
 
-static struct gsm_network *ipaccess_gsmnet;
-
 static int bts_model_nanobts_start(struct gsm_network *net)
 {
+	osmo_signal_unregister_handler(SS_NM, bts_ipa_nm_sig_cb, NULL);
+	osmo_signal_register_handler(SS_NM, bts_ipa_nm_sig_cb, NULL);
+	return 0;
+}
+
+int bts_model_nanobts_init(void)
+{
 	bts_model_nanobts.features.data = &bts_model_nanobts._features_data[0];
 	bts_model_nanobts.features.data_len =
 				sizeof(bts_model_nanobts._features_data);
@@ -468,14 +475,6 @@
 	gsm_btsmodel_set_feature(&bts_model_nanobts, BTS_FEAT_GPRS);
 	gsm_btsmodel_set_feature(&bts_model_nanobts, BTS_FEAT_EGPRS);
 
-	osmo_signal_register_handler(SS_NM, bts_ipa_nm_sig_cb, NULL);
-
-	ipaccess_gsmnet = net;
-	return 0;
-}
-
-int bts_model_nanobts_init(void)
-{
 	return gsm_bts_model_register(&bts_model_nanobts);
 }
 
@@ -534,7 +533,7 @@
 	struct ipaccess_unit *dev = unit_data;
 	struct e1inp_sign_link *sign_link = NULL;
 
-	bts = find_bts_by_unitid(ipaccess_gsmnet, dev->site_id, dev->bts_id);
+	bts = find_bts_by_unitid(bsc_gsmnet, dev->site_id, dev->bts_id);
 	if (!bts) {
 		LOGP(DLINP, LOGL_ERROR, "Unable to find BTS configuration for "
 			" %u/%u/%u, disconnecting\n", dev->site_id,
diff --git a/openbsc/src/libbsc/bts_sysmobts.c b/openbsc/src/libbsc/bts_sysmobts.c
index 9479206..754e277 100644
--- a/openbsc/src/libbsc/bts_sysmobts.c
+++ b/openbsc/src/libbsc/bts_sysmobts.c
@@ -38,15 +38,16 @@
 #include <osmocom/abis/ipaccess.h>
 #include <osmocom/core/logging.h>
 
-extern int bts_ipa_nm_sig_cb(unsigned int subsys, unsigned int signal,
-			     void *handler_data, void *signal_data);
-
 extern struct gsm_bts_model bts_model_nanobts;
 
 static struct gsm_bts_model model_sysmobts;
 
-static int bts_model_sysmobts_start(struct gsm_network *net)
+int bts_model_sysmobts_init(void)
 {
+	model_sysmobts = bts_model_nanobts;
+	model_sysmobts.name = "sysmobts";
+	model_sysmobts.type = GSM_BTS_TYPE_OSMO_SYSMO;
+
 	model_sysmobts.features.data = &model_sysmobts._features_data[0];
 	model_sysmobts.features.data_len =
 				sizeof(model_sysmobts._features_data);
@@ -54,18 +55,5 @@
 	gsm_btsmodel_set_feature(&model_sysmobts, BTS_FEAT_GPRS);
 	gsm_btsmodel_set_feature(&model_sysmobts, BTS_FEAT_EGPRS);
 
-	osmo_signal_register_handler(SS_NM, bts_ipa_nm_sig_cb, NULL);
-
-	return 0;
-}
-
-int bts_model_sysmobts_init(void)
-{
-	memcpy(&model_sysmobts, &bts_model_nanobts, sizeof(model_sysmobts));
-
-	model_sysmobts.name = "sysmobts";
-	model_sysmobts.start = bts_model_sysmobts_start;
-	model_sysmobts.type = GSM_BTS_TYPE_OSMO_SYSMO;
-
 	return gsm_bts_model_register(&model_sysmobts);
 }
