diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c
index b84a0b5..092ec4e 100644
--- a/openbsc/src/libbsc/abis_rsl.c
+++ b/openbsc/src/libbsc/abis_rsl.c
@@ -1207,7 +1207,7 @@
 				TLVP_LEN(&tp, RSL_IE_CAUSE));
 
 	LOGPC(DRSL, LOGL_NOTICE, "\n");
-	osmo_counter_inc(msg->lchan->ts->trx->bts->network->stats.chan.rf_fail);
+	rate_ctr_inc(&msg->lchan->ts->trx->bts->network->ratectrs->ctr[MSC_CTR_CHAN_RF_FAIL]);
 	return rsl_rf_chan_release_err(msg->lchan);
 }
 
@@ -1641,7 +1641,7 @@
 	lctype = get_ctype_by_chreq(bts->network, rqd_ref->ra);
 	chreq_reason = get_reason_by_chreq(rqd_ref->ra, bts->network->neci);
 
-	osmo_counter_inc(bts->network->stats.chreq.total);
+	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_CHREQ_TOTAL]);
 
 	/*
 	 * We want LOCATION UPDATES to succeed and will assign a TCH
@@ -1654,7 +1654,7 @@
 	if (!lchan) {
 		LOGP(DRSL, LOGL_NOTICE, "BTS %d CHAN RQD: no resources for %s 0x%x\n",
 		     msg->lchan->ts->trx->bts->nr, gsm_lchant_name(lctype), rqd_ref->ra);
-		osmo_counter_inc(bts->network->stats.chreq.no_channel);
+		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_CHREQ_NO_CHANNEL]);
 		/* FIXME gather multiple CHAN RQD and reject up to 4 at the same time */
 		if (bts->network->T3122)
 			rsl_send_imm_ass_rej(bts, 1, rqd_ref, bts->network->T3122 & 0xff);
@@ -1837,7 +1837,7 @@
 	rll_indication(msg->lchan, rllh->link_id, BSC_RLLR_IND_ERR_IND);
 
 	if (rlm_cause == RLL_CAUSE_T200_EXPIRED) {
-		osmo_counter_inc(msg->lchan->ts->trx->bts->network->stats.chan.rll_err);
+		rate_ctr_inc(&msg->lchan->ts->trx->bts->network->ratectrs->ctr[MSC_CTR_CHAN_RLL_ERR]);
 		return rsl_rf_chan_release_err(msg->lchan);
 	}
 
diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c
index 5c27862..5ea85d0 100644
--- a/openbsc/src/libbsc/bsc_init.c
+++ b/openbsc/src/libbsc/bsc_init.c
@@ -340,9 +340,9 @@
 		LOGP(DLMI, LOGL_ERROR, "Lost some E1 TEI link: %d %p\n", isd->link_type, trx);
 
 		if (isd->link_type == E1INP_SIGN_OML)
-			osmo_counter_inc(trx->bts->network->stats.bts.oml_fail);
+			rate_ctr_inc(&trx->bts->network->ratectrs->ctr[MSC_CTR_BTS_OML_FAIL]);
 		else if (isd->link_type == E1INP_SIGN_RSL)
-			osmo_counter_inc(trx->bts->network->stats.bts.rsl_fail);
+			rate_ctr_inc(&trx->bts->network->ratectrs->ctr[MSC_CTR_BTS_RSL_FAIL]);
 
 		/*
 		 * free all allocated channels. change the nm_state so the
diff --git a/openbsc/src/libbsc/bsc_vty.c b/openbsc/src/libbsc/bsc_vty.c
index 6584cf0..fbaf06b 100644
--- a/openbsc/src/libbsc/bsc_vty.c
+++ b/openbsc/src/libbsc/bsc_vty.c
@@ -3784,18 +3784,22 @@
 void openbsc_vty_print_statistics(struct vty *vty, struct gsm_network *net)
 {
 	vty_out(vty, "Channel Requests        : %lu total, %lu no channel%s",
-		osmo_counter_get(net->stats.chreq.total),
-		osmo_counter_get(net->stats.chreq.no_channel), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_CHREQ_TOTAL].current,
+		net->ratectrs->ctr[MSC_CTR_CHREQ_NO_CHANNEL].current,
+		VTY_NEWLINE);
 	vty_out(vty, "Channel Failures        : %lu rf_failures, %lu rll failures%s",
-		osmo_counter_get(net->stats.chan.rf_fail),
-		osmo_counter_get(net->stats.chan.rll_err), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_CHAN_RF_FAIL].current,
+		net->ratectrs->ctr[MSC_CTR_CHAN_RLL_ERR].current,
+		VTY_NEWLINE);
 	vty_out(vty, "Paging                  : %lu attempted, %lu complete, %lu expired%s",
-		osmo_counter_get(net->stats.paging.attempted),
-		osmo_counter_get(net->stats.paging.completed),
-		osmo_counter_get(net->stats.paging.expired), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_PAGING_ATTEMPTED].current,
+		net->ratectrs->ctr[MSC_CTR_PAGING_COMPLETED].current,
+		net->ratectrs->ctr[MSC_CTR_PAGING_EXPIRED].current,
+		VTY_NEWLINE);
 	vty_out(vty, "BTS failures            : %lu OML, %lu RSL%s",
-		osmo_counter_get(net->stats.bts.oml_fail),
-		osmo_counter_get(net->stats.bts.rsl_fail), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_BTS_OML_FAIL].current,
+		net->ratectrs->ctr[MSC_CTR_BTS_RSL_FAIL].current,
+		VTY_NEWLINE);
 }
 
 DEFUN(drop_bts,
diff --git a/openbsc/src/libbsc/gsm_04_08_utils.c b/openbsc/src/libbsc/gsm_04_08_utils.c
index 635665a..d4eca4a 100644
--- a/openbsc/src/libbsc/gsm_04_08_utils.c
+++ b/openbsc/src/libbsc/gsm_04_08_utils.c
@@ -304,7 +304,7 @@
 		subscr = conn->subscr;
 	}
 
-	osmo_counter_inc(bts->network->stats.paging.completed);
+	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_PAGING_COMPLETED]);
 
 	/* Stop paging on the bts we received the paging response */
 	paging_request_stop(conn->bts, subscr, conn, msg);
diff --git a/openbsc/src/libbsc/handover_logic.c b/openbsc/src/libbsc/handover_logic.c
index 52fa4af..5424e27 100644
--- a/openbsc/src/libbsc/handover_logic.c
+++ b/openbsc/src/libbsc/handover_logic.c
@@ -103,7 +103,7 @@
 	DEBUGP(DHO, "(old_lchan on BTS %u, new BTS %u)\n",
 		old_lchan->ts->trx->bts->nr, bts->nr);
 
-	osmo_counter_inc(bts->network->stats.handover.attempted);
+	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_HANDOVER_ATTEMPTED]);
 
 	if (!old_lchan->conn) {
 		LOGP(DHO, LOGL_ERROR, "Old lchan lacks connection data.\n");
@@ -113,7 +113,7 @@
 	new_lchan = lchan_alloc(bts, old_lchan->type, 0);
 	if (!new_lchan) {
 		LOGP(DHO, LOGL_NOTICE, "No free channel\n");
-		osmo_counter_inc(bts->network->stats.handover.no_channel);
+		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_HANDOVER_NO_CHANNEL]);
 		return -ENOSPC;
 	}
 
@@ -188,7 +188,7 @@
 	struct gsm_network *net = ho->new_lchan->ts->trx->bts->network;
 
 	DEBUGP(DHO, "HO T3103 expired\n");
-	osmo_counter_inc(net->stats.handover.timeout);
+	rate_ctr_inc(&net->ratectrs->ctr[MSC_CTR_HANDOVER_TIMEOUT]);
 
 	ho->new_lchan->conn->ho_lchan = NULL;
 	ho->new_lchan->conn = NULL;
@@ -265,7 +265,7 @@
 	     ho->old_lchan->ts->trx->bts->nr, new_lchan->ts->trx->bts->nr,
 	     ho->old_lchan->ts->trx->arfcn, new_lchan->ts->trx->arfcn);
 
-	osmo_counter_inc(net->stats.handover.completed);
+	rate_ctr_inc(&net->ratectrs->ctr[MSC_CTR_HANDOVER_COMPLETED]);
 
 	osmo_timer_del(&ho->T3103);
 
@@ -303,7 +303,7 @@
 		return -ENODEV;
 	}
 
-	osmo_counter_inc(net->stats.handover.failed);
+	rate_ctr_inc(&net->ratectrs->ctr[MSC_CTR_HANDOVER_FAILED]);
 
 	new_lchan = ho->new_lchan;
 
diff --git a/openbsc/src/libbsc/net_init.c b/openbsc/src/libbsc/net_init.c
index 6d03ee4..b99f3d2 100644
--- a/openbsc/src/libbsc/net_init.c
+++ b/openbsc/src/libbsc/net_init.c
@@ -80,36 +80,8 @@
 	INIT_LLIST_HEAD(&net->upqueue);
 	INIT_LLIST_HEAD(&net->bts_list);
 
-	net->stats.chreq.total = osmo_counter_alloc("net.chreq.total");
-	net->stats.chreq.no_channel = osmo_counter_alloc("net.chreq.no_channel");
-	net->stats.handover.attempted = osmo_counter_alloc("net.handover.attempted");
-	net->stats.handover.no_channel = osmo_counter_alloc("net.handover.no_channel");
-	net->stats.handover.timeout = osmo_counter_alloc("net.handover.timeout");
-	net->stats.handover.completed = osmo_counter_alloc("net.handover.completed");
-	net->stats.handover.failed = osmo_counter_alloc("net.handover.failed");
-	net->stats.loc_upd_type.attach = osmo_counter_alloc("net.loc_upd_type.attach");
-	net->stats.loc_upd_type.normal = osmo_counter_alloc("net.loc_upd_type.normal");
-	net->stats.loc_upd_type.periodic = osmo_counter_alloc("net.loc_upd_type.periodic");
-	net->stats.loc_upd_type.detach = osmo_counter_alloc("net.imsi_detach.count");
-	net->stats.loc_upd_resp.reject = osmo_counter_alloc("net.loc_upd_resp.reject");
-	net->stats.loc_upd_resp.accept = osmo_counter_alloc("net.loc_upd_resp.accept");
-	net->stats.paging.attempted = osmo_counter_alloc("net.paging.attempted");
-	net->stats.paging.detached = osmo_counter_alloc("net.paging.detached");
-	net->stats.paging.completed = osmo_counter_alloc("net.paging.completed");
-	net->stats.paging.expired = osmo_counter_alloc("net.paging.expired");
-	net->stats.sms.submitted = osmo_counter_alloc("net.sms.submitted");
-	net->stats.sms.no_receiver = osmo_counter_alloc("net.sms.no_receiver");
-	net->stats.sms.delivered = osmo_counter_alloc("net.sms.delivered");
-	net->stats.sms.rp_err_mem = osmo_counter_alloc("net.sms.rp_err_mem");
-	net->stats.sms.rp_err_other = osmo_counter_alloc("net.sms.rp_err_other");
-	net->stats.call.mo_setup = osmo_counter_alloc("net.call.mo_setup");
-	net->stats.call.mo_connect_ack = osmo_counter_alloc("net.call.mo_connect_ack");
-	net->stats.call.mt_setup = osmo_counter_alloc("net.call.mt_setup");
-	net->stats.call.mt_connect = osmo_counter_alloc("net.call.mt_connect");
-	net->stats.chan.rf_fail = osmo_counter_alloc("net.chan.rf_fail");
-	net->stats.chan.rll_err = osmo_counter_alloc("net.chan.rll_err");
-	net->stats.bts.oml_fail = osmo_counter_alloc("net.bts.oml_fail");
-	net->stats.bts.rsl_fail = osmo_counter_alloc("net.bts.rsl_fail");
+	/* init statistics */
+	net->ratectrs = rate_ctr_group_alloc(net, &msc_ctrg_desc, 0);
 
 	net->mncc_recv = mncc_recv;
 	net->ext_min = GSM_MIN_EXTEN;
diff --git a/openbsc/src/libbsc/paging.c b/openbsc/src/libbsc/paging.c
index 9ae28e0..03c91fd 100644
--- a/openbsc/src/libbsc/paging.c
+++ b/openbsc/src/libbsc/paging.c
@@ -260,7 +260,7 @@
 		req, req->subscr->imsi);
 
 	/* must be destroyed before calling cbfn, to prevent double free */
-	osmo_counter_inc(req->bts->network->stats.paging.expired);
+	rate_ctr_inc(&req->bts->network->ratectrs->ctr[MSC_CTR_PAGING_EXPIRED]);
 	cbfn_param = req->cbfn_param;
 	cbfn = req->cbfn;
 
@@ -330,7 +330,7 @@
 	struct gsm_bts *bts = NULL;
 	int num_pages = 0;
 
-	osmo_counter_inc(network->stats.paging.attempted);
+	rate_ctr_inc(&network->ratectrs->ctr[MSC_CTR_PAGING_ATTEMPTED]);
 
 	/* start paging subscriber on all BTS within Location Area */
 	do {
@@ -349,7 +349,7 @@
 	} while (1);
 
 	if (num_pages == 0)
-		osmo_counter_inc(network->stats.paging.detached);
+		rate_ctr_inc(&network->ratectrs->ctr[MSC_CTR_PAGING_DETACHED]);
 
 	return num_pages;
 }
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c
index 1b02efe..c4ecf1c 100644
--- a/openbsc/src/libmsc/gsm_04_08.c
+++ b/openbsc/src/libmsc/gsm_04_08.c
@@ -457,7 +457,7 @@
 	struct gsm_bts *bts = conn->bts;
 	struct msgb *msg;
 
-	osmo_counter_inc(bts->network->stats.loc_upd_resp.reject);
+	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_REJECT]);
 
 	msg = gsm48_create_loc_upd_rej(cause);
 	if (!msg) {
@@ -506,7 +506,7 @@
 
 	DEBUGP(DMM, "-> LOCATION UPDATE ACCEPT\n");
 
-	osmo_counter_inc(bts->network->stats.loc_upd_resp.accept);
+	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_ACCEPT]);
 
 	return gsm48_conn_sendmsg(msg, conn, NULL);
 }
@@ -637,13 +637,13 @@
 
 	switch (lu->type) {
 	case GSM48_LUPD_NORMAL:
-		osmo_counter_inc(bts->network->stats.loc_upd_type.normal);
+		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_NORMAL]);
 		break;
 	case GSM48_LUPD_IMSI_ATT:
-		osmo_counter_inc(bts->network->stats.loc_upd_type.attach);
+		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_ATTACH]);
 		break;
 	case GSM48_LUPD_PERIODIC:
-		osmo_counter_inc(bts->network->stats.loc_upd_type.periodic);
+		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_PERIODIC]);
 		break;
 	}
 
@@ -1063,7 +1063,7 @@
 	DEBUGP(DMM, "IMSI DETACH INDICATION: MI(%s)=%s",
 		gsm48_mi_type_name(mi_type), mi_string);
 
-	osmo_counter_inc(bts->network->stats.loc_upd_type.detach);
+	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_DETACH]);
 
 	switch (mi_type) {
 	case GSM_MI_TYPE_TMSI:
@@ -2002,7 +2002,7 @@
 	     subscr_name(trans->subscr), trans->subscr->extension,
 	     setup.called.number);
 
-	osmo_counter_inc(trans->net->stats.call.mo_setup);
+	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MO_SETUP]);
 
 	/* indicate setup to MNCC */
 	mncc_recvmsg(trans->net, trans, MNCC_SETUP_IND, &setup);
@@ -2080,7 +2080,7 @@
 	
 	new_cc_state(trans, GSM_CSTATE_CALL_PRESENT);
 
-	osmo_counter_inc(trans->net->stats.call.mt_setup);
+	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MT_SETUP]);
 
 	return gsm48_conn_sendmsg(msg, trans->conn, trans);
 }
@@ -2306,7 +2306,7 @@
 	}
 
 	new_cc_state(trans, GSM_CSTATE_CONNECT_REQUEST);
-	osmo_counter_inc(trans->net->stats.call.mt_connect);
+	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MT_CONNECT]);
 
 	return mncc_recvmsg(trans->net, trans, MNCC_SETUP_CNF, &connect);
 }
@@ -2319,7 +2319,7 @@
 	gsm48_stop_cc_timer(trans);
 
 	new_cc_state(trans, GSM_CSTATE_ACTIVE);
-	osmo_counter_inc(trans->net->stats.call.mo_connect_ack);
+	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MO_CONNECT_ACK]);
 	
 	memset(&connect_ack, 0, sizeof(struct gsm_mncc));
 	connect_ack.callref = trans->callref;
diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index 20d18a9..fba5208 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -315,14 +315,14 @@
 		rc = smpp_try_deliver(gsms, conn);
 		if (rc == 1) {
 			rc = 1; /* cause 1: unknown subscriber */
-			osmo_counter_inc(conn->bts->network->stats.sms.no_receiver);
+			rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
 		} else if (rc < 0) {
 			rc = 21; /* cause 21: short message transfer rejected */
 			/* FIXME: handle the error somehow? */
 		}
 #else
 		rc = 1; /* cause 1: unknown subscriber */
-		osmo_counter_inc(conn->bts->network->stats.sms.no_receiver);
+		rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
 #endif
 		return rc;
 	}
@@ -363,7 +363,7 @@
 	uint8_t address_lv[12]; /* according to 03.40 / 9.1.2.5 */
 	int rc = 0;
 
-	osmo_counter_inc(conn->bts->network->stats.sms.submitted);
+	rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_SUBMITTED]);
 
 	gsms = sms_alloc();
 	if (!gsms)
@@ -633,10 +633,10 @@
 		 * to store this in our database and wait for a SMMA message */
 		/* FIXME */
 		send_signal(S_SMS_MEM_EXCEEDED, trans, sms, 0);
-		osmo_counter_inc(net->stats.sms.rp_err_mem);
+		rate_ctr_inc(&net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_MEM]);
 	} else {
 		send_signal(S_SMS_UNKNOWN_ERROR, trans, sms, 0);
-		osmo_counter_inc(net->stats.sms.rp_err_other);
+		rate_ctr_inc(&net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_OTHER]);
 	}
 
 	sms_free(sms);
@@ -932,7 +932,7 @@
 
 	DEBUGP(DLSMS, "TX: SMS DELIVER\n");
 
-	osmo_counter_inc(conn->bts->network->stats.sms.delivered);
+	rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_DELIVERED]);
 	db_sms_inc_deliver_attempts(trans->sms.sms);
 
 	return gsm411_rp_sendmsg(&trans->sms.smr_inst, msg,
diff --git a/openbsc/src/libmsc/vty_interface_layer3.c b/openbsc/src/libmsc/vty_interface_layer3.c
index 74da1d7..d1041b3 100644
--- a/openbsc/src/libmsc/vty_interface_layer3.c
+++ b/openbsc/src/libmsc/vty_interface_layer3.c
@@ -795,34 +795,42 @@
 
 	openbsc_vty_print_statistics(vty, net);
 	vty_out(vty, "Location Update         : %lu attach, %lu normal, %lu periodic%s",
-		osmo_counter_get(net->stats.loc_upd_type.attach),
-		osmo_counter_get(net->stats.loc_upd_type.normal),
-		osmo_counter_get(net->stats.loc_upd_type.periodic), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_ATTACH].current,
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_NORMAL].current,
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_PERIODIC].current,
+		VTY_NEWLINE);
 	vty_out(vty, "IMSI Detach Indications : %lu%s",
-		osmo_counter_get(net->stats.loc_upd_type.detach), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_DETACH].current,
+		VTY_NEWLINE);
 	vty_out(vty, "Location Update Response: %lu accept, %lu reject%s",
-		osmo_counter_get(net->stats.loc_upd_resp.accept),
-		osmo_counter_get(net->stats.loc_upd_resp.reject), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_ACCEPT].current,
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_REJECT].current,
+		VTY_NEWLINE);
 	vty_out(vty, "Handover                : %lu attempted, %lu no_channel, %lu timeout, "
 		"%lu completed, %lu failed%s",
-		osmo_counter_get(net->stats.handover.attempted),
-		osmo_counter_get(net->stats.handover.no_channel),
-		osmo_counter_get(net->stats.handover.timeout),
-		osmo_counter_get(net->stats.handover.completed),
-		osmo_counter_get(net->stats.handover.failed), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_HANDOVER_ATTEMPTED].current,
+		net->ratectrs->ctr[MSC_CTR_HANDOVER_NO_CHANNEL].current,
+		net->ratectrs->ctr[MSC_CTR_HANDOVER_TIMEOUT].current,
+		net->ratectrs->ctr[MSC_CTR_HANDOVER_COMPLETED].current,
+		net->ratectrs->ctr[MSC_CTR_HANDOVER_FAILED].current,
+		VTY_NEWLINE);
 	vty_out(vty, "SMS MO                  : %lu submitted, %lu no receiver%s",
-		osmo_counter_get(net->stats.sms.submitted),
-		osmo_counter_get(net->stats.sms.no_receiver), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_SMS_SUBMITTED].current,
+		net->ratectrs->ctr[MSC_CTR_SMS_NO_RECEIVER].current,
+		VTY_NEWLINE);
 	vty_out(vty, "SMS MT                  : %lu delivered, %lu no memory, %lu other error%s",
-		osmo_counter_get(net->stats.sms.delivered),
-		osmo_counter_get(net->stats.sms.rp_err_mem),
-		osmo_counter_get(net->stats.sms.rp_err_other), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_SMS_DELIVERED].current,
+		net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_MEM].current,
+		net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_OTHER].current,
+		VTY_NEWLINE);
 	vty_out(vty, "MO Calls                : %lu setup, %lu connect ack%s",
-		osmo_counter_get(net->stats.call.mo_setup),
-		osmo_counter_get(net->stats.call.mo_connect_ack), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_CALL_MO_SETUP].current,
+		net->ratectrs->ctr[MSC_CTR_CALL_MO_CONNECT_ACK].current,
+		VTY_NEWLINE);
 	vty_out(vty, "MT Calls                : %lu setup, %lu connect%s",
-		osmo_counter_get(net->stats.call.mt_setup),
-		osmo_counter_get(net->stats.call.mt_connect), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_CALL_MT_SETUP].current,
+		net->ratectrs->ctr[MSC_CTR_CALL_MT_CONNECT].current,
+		VTY_NEWLINE);
 	return CMD_SUCCESS;
 }
 
