diff --git a/src/bankd_main.c b/src/bankd_main.c
index 349236d..6f43553 100644
--- a/src/bankd_main.c
+++ b/src/bankd_main.c
@@ -91,17 +91,6 @@
 	 * started yet */
 	INIT_LLIST_HEAD(&bankd->pcsc_slot_names);
 	OSMO_ASSERT(bankd_pcsc_read_slotnames(bankd, "bankd_pcsc_slots.csv") == 0);
-
-	/* HACK HACK HACK */
-	{
-		struct bank_slot bs = { .bank_id = 1, };
-		struct client_slot cs = { .client_id = 23, };
-		int i;
-		for (i = 0; i < 5; i++) {
-			bs.slot_nr = cs.slot_nr = i;
-			slotmap_add(bankd->slotmaps, &bs, &cs);
-		}
-	}
 }
 
 /* create + start a new bankd_worker thread */
@@ -134,10 +123,29 @@
 
 static bool terminate = false;
 
+static void rspro2bank_slot(struct bank_slot *out, const BankSlot_t *in)
+{
+	out->bank_id = in->bankId;
+	out->slot_nr = in->slotNr;
+}
+
+static void rspro2client_slot(struct client_slot *out, const ClientSlot_t *in)
+{
+	out->client_id = in->clientId;
+	out->slot_nr = in->slotNr;
+}
+
 /* handle incoming messages from server */
 static int bankd_srvc_handle_rx(struct rspro_server_conn *srvc, const RsproPDU_t *pdu)
 {
-	struct RsproPDU_t *resp;
+	const CreateMappingReq_t *creq = NULL;
+	const RemoveMappingReq_t *rreq = NULL;
+	struct slot_mapping *map;
+	struct bank_slot bs;
+	struct client_slot cs;
+	RsproPDU_t *resp;
+
+	LOGPFSM(srvc->fi, "Rx RSPRO %s\n", rspro_msgt_name(pdu));
 
 	switch (pdu->msg.present) {
 	case RsproPDUchoice_PR_connectBankRes:
@@ -145,6 +153,43 @@
 		rspro_comp_id_retrieve(&srvc->peer_comp_id, &pdu->msg.choice.connectBankRes.identity);
 		osmo_fsm_inst_dispatch(srvc->fi, SRVC_E_CLIENT_CONN_RES, (void *) pdu);
 		break;
+	case RsproPDUchoice_PR_createMappingReq:
+		creq = &pdu->msg.choice.createMappingReq;
+		if (creq->bank.bankId != g_bankd->cfg.bank_id)
+			resp = rspro_gen_CreateMappingRes(ResultCode_illegalBankId);
+		else if (creq->bank.slotNr >= g_bankd->cfg.num_slots)
+			resp = rspro_gen_CreateMappingRes(ResultCode_illegalSlotId);
+		else {
+			rspro2bank_slot(&bs, &creq->bank);
+			rspro2client_slot(&cs, &creq->client);
+			/* Add a new mapping */
+			map = slotmap_add(g_bankd->slotmaps, &bs, &cs);
+			if (!map)
+				resp = rspro_gen_CreateMappingRes(ResultCode_illegalSlotId);
+			else
+				resp = rspro_gen_CreateMappingRes(ResultCode_ok);
+		}
+		server_conn_send_rspro(srvc, resp);
+		break;
+	case RsproPDUchoice_PR_removeMappingReq:
+		rreq = &pdu->msg.choice.removeMappingReq;
+		if (rreq->bank.bankId != g_bankd->cfg.bank_id)
+			resp = rspro_gen_RemoveMappingRes(ResultCode_illegalBankId);
+		else if (rreq->bank.slotNr >= g_bankd->cfg.num_slots)
+			resp = rspro_gen_RemoveMappingRes(ResultCode_illegalSlotId);
+		else {
+			rspro2bank_slot(&bs, &rreq->bank);
+			/* Remove a mapping */
+			map = slotmap_by_bank(g_bankd->slotmaps, &bs);
+			if (!map)
+				resp = rspro_gen_RemoveMappingRes(ResultCode_unknownSlotmap);
+			else {
+				/* FIXME: kill/reset the respective worker, if any! */
+				slotmap_del(g_bankd->slotmaps, map);
+				resp = rspro_gen_RemoveMappingRes(ResultCode_ok);
+			}
+		}
+		break;
 	default:
 		fprintf(stderr, "Unknown/Unsupported RSPRO PDU type: %u\n", pdu->msg.present);
 		return -1;
