diff --git a/src/client/Makefile.am b/src/client/Makefile.am
index 106bc5e..3d4f355 100644
--- a/src/client/Makefile.am
+++ b/src/client/Makefile.am
@@ -4,7 +4,7 @@
 	    $(OSMOSIMTRACE2_CFLAGS) \
 	    -I$(top_srcdir)/include/osmocom/rspro
 
-bin_PROGRAMS = osmo-remsim-client-st2
+bin_PROGRAMS = osmo-remsim-client-st2 remsim-client
 
 remsim_client_SOURCES = remsim_client.c ../rspro_client_fsm.c ../debug.c
 remsim_client_LDADD = $(OSMOCORE_LIBS) $(OSMOGSM_LIBS) $(OSMOABIS_LIBS) \
diff --git a/src/client/remsim_client.c b/src/client/remsim_client.c
index ca6143e..41361c0 100644
--- a/src/client/remsim_client.c
+++ b/src/client/remsim_client.c
@@ -42,80 +42,25 @@
 #include "client.h"
 #include "debug.h"
 
-static int bankd_handle_msg(struct bankd_client *bc, struct msgb *msg)
+static int bankd_handle_rx(struct rspro_server_conn *bankdc, const RsproPDU_t *pdu)
 {
-	RsproPDU_t *pdu = rspro_dec_msg(msg);
-	if (!pdu) {
-		LOGPFSML(bc->bankd_fi, LOGL_ERROR, "Error decoding PDU\n");
-		return -1;
-	}
-
-	LOGPFSM(bc->bankd_fi, "Rx RSPRO %s\n", rspro_msgt_name(pdu));
-
 	switch (pdu->msg.present) {
 	case RsproPDUchoice_PR_connectClientRes:
 		/* Store 'identity' of bankd to in peer_comp_id */
-		rspro_comp_id_retrieve(&bc->peer_comp_id, &pdu->msg.choice.connectClientRes.identity);
-		osmo_fsm_inst_dispatch(bc->bankd_fi, BDC_E_CLIENT_CONN_RES, pdu);
+		rspro_comp_id_retrieve(&bankdc->peer_comp_id, &pdu->msg.choice.connectClientRes.identity);
+		osmo_fsm_inst_dispatch(bankdc->fi, SRVC_E_CLIENT_CONN_RES, (void *) pdu);
 		break;
+	case RsproPDUchoice_PR_tpduCardToModem:
+	case RsproPDUchoice_PR_setAtrReq:
 	default:
-		LOGPFSML(bc->bankd_fi, LOGL_ERROR, "Unknown/Unsuppoerted RSPRO PDU %s: %s\n",
-			 rspro_msgt_name(pdu), msgb_hexdump(msg));
+		LOGPFSML(bankdc->fi, LOGL_ERROR, "Unknown/Unsupported RSPRO PDU %s\n",
+			 rspro_msgt_name(pdu));
 		return -1;
 	}
 
 	return 0;
 }
 
-int bankd_read_cb(struct ipa_client_conn *conn, struct msgb *msg)
-{
-	struct ipaccess_head *hh = (struct ipaccess_head *) msg->data;
-	struct ipaccess_head_ext *he = (struct ipaccess_head_ext *) msgb_l2(msg);
-	struct bankd_client *bc = conn->data;
-	int rc;
-
-	if (msgb_length(msg) < sizeof(*hh))
-		goto invalid;
-	msg->l2h = &hh->data[0];
-	switch (hh->proto) {
-	case IPAC_PROTO_IPACCESS:
-		rc = ipaccess_bts_handle_ccm(conn, &bc->srv_conn.ipa_dev, msg);
-		if (rc < 0)
-			break;
-		switch (hh->data[0]) {
-		case IPAC_MSGT_PONG:
-			ipa_keepalive_fsm_pong_received(bc->srv_conn.keepalive_fi);
-			rc = 0;
-			break;
-		default:
-			break;
-		}
-		break;
-	case IPAC_PROTO_OSMO:
-		if (!he || msgb_l2len(msg) < sizeof(*he))
-			goto invalid;
-		msg->l2h = &he->data[0];
-		switch (he->proto) {
-		case IPAC_PROTO_EXT_RSPRO:
-			LOGPFSML(bc->bankd_fi, LOGL_DEBUG, "Received RSPRO %s\n", msgb_hexdump(msg));
-			rc = bankd_handle_msg(bc, msg);
-			break;
-		default:
-			goto invalid;
-		}
-		break;
-	default:
-		goto invalid;
-	}
-
-	msgb_free(msg);
-	return rc;
-
-invalid:
-	msgb_free(msg);
-	return -1;
-}
-
 static struct bankd_client *g_client;
 static void *g_tall_ctx;
 void __thread *talloc_asn1_ctx;
@@ -137,18 +82,21 @@
 		if (!g_client->srv_conn.clslot)
 			g_client->srv_conn.clslot = talloc_zero(g_client, ClientSlot_t);
 		*g_client->srv_conn.clslot = pdu->msg.choice.configClientIdReq.clientSlot;
+		if (!g_client->bankd_conn.clslot)
+			g_client->bankd_conn.clslot = talloc_zero(g_client, ClientSlot_t);
+		*g_client->bankd_conn.clslot = *g_client->srv_conn.clslot;
 		/* send response to server */
 		resp = rspro_gen_ConfigClientIdRes(ResultCode_ok);
 		server_conn_send_rspro(srvc, resp);
 		break;
 	case RsproPDUchoice_PR_configClientBankReq:
 		/* store/set the bankd ip/port as instructed by the server */
-		osmo_talloc_replace_string(g_client, &g_client->bankd_host,
+		osmo_talloc_replace_string(g_client, &g_client->bankd_conn.server_host,
 					   rspro_IpAddr2str(&pdu->msg.choice.configClientBankReq.bankd.ip));
-		g_client->bankd_port = pdu->msg.choice.configClientBankReq.bankd.port;
 		rspro2bank_slot(&g_client->bankd_slot, &pdu->msg.choice.configClientBankReq.bankSlot);
+		g_client->bankd_conn.server_port = pdu->msg.choice.configClientBankReq.bankd.port;
 		/* instruct bankd FSM to connect */
-		osmo_fsm_inst_dispatch(g_client->bankd_fi, BDC_E_ESTABLISH, NULL);
+		osmo_fsm_inst_dispatch(g_client->bankd_conn.fi, SRVC_E_ESTABLISH, NULL);
 		/* send response to server */
 		resp = rspro_gen_ConfigClientBankRes(ResultCode_ok);
 		server_conn_send_rspro(srvc, resp);
@@ -226,7 +174,7 @@
 
 int main(int argc, char **argv)
 {
-	struct rspro_server_conn *srvc;
+	struct rspro_server_conn *srvc, *bankdc;
 	int rc;
 
 	g_tall_ctx = talloc_named_const(NULL, 0, "global");
@@ -259,8 +207,13 @@
 
 	asn_debug = 0;
 
-	if (bankd_conn_fsm_alloc(g_client) < 0) {
-		fprintf(stderr, "Unable to connect: %s\n", strerror(errno));
+	bankdc = &g_client->bankd_conn;
+	/* server_host / server_port are configured from remsim-server */
+	bankdc->handle_rx = bankd_handle_rx;
+	memcpy(&bankdc->own_comp_id, &srvc->own_comp_id, sizeof(bankdc->own_comp_id));
+	rc = server_conn_fsm_alloc(g_client, bankdc);
+	if (rc < 0) {
+		fprintf(stderr, "Unable to connect bankd conn FSM: %s\n", strerror(errno));
 		exit(1);
 	}
 
