diff --git a/src/gsm_04_08.c b/src/gsm_04_08.c
index 0d889fb..c69e246 100644
--- a/src/gsm_04_08.c
+++ b/src/gsm_04_08.c
@@ -685,6 +685,7 @@
 	u_int8_t mi_type = pr->mi[0] & GSM_MI_TYPE_MASK;
 	char mi_string[MI_SIZE];
 	struct gsm_subscriber *subscr;
+	struct paging_signal_data sig_data;
 	int rc = 0;
 
 	mi_to_string(mi_string, sizeof(mi_string), &pr->mi[0], pr->mi_len);
@@ -707,15 +708,11 @@
 		subscr_put(subscr);
 	}
 
-	struct paging_signal_data sig_data = {
-		.data = {
-			.area = S_PAGING,
-		},
-		.subscr = subscr,
-		.bts	= msg->lchan->ts->trx->bts,
-		.lchan	= msg->lchan,
-	};
-	dispatch_signal(&sig_data.data);
+	sig_data.subscr = subscr;
+	sig_data.bts	= msg->lchan->ts->trx->bts;
+	sig_data.lchan	= msg->lchan;
+
+	dispatch_signal(SS_PAGING, S_PAGING_COMPLETED, &sig_data);
 	paging_request_stop(msg->trx->bts, subscr);
 
 	/* FIXME: somehow signal the completion of the PAGING to
diff --git a/src/gsm_04_11.c b/src/gsm_04_11.c
index d354663..a7b603e 100644
--- a/src/gsm_04_11.c
+++ b/src/gsm_04_11.c
@@ -119,14 +119,7 @@
 			"UserData: \"%s\"\n", sms->mti, sms->vpf, sms->msg_ref,
 			sms->pid, sms->dcs, sms->ud_len, sms->user_data);
 
-	struct sms_signal_data sig = {
-		.data = {
-			.area   = S_SMS,
-		},
-
-		.sms = sms,
-	};
-	dispatch_signal(&sig.data);
+	dispatch_signal(SS_SMS, 0, sms);
 
 	free(sms);
 
diff --git a/src/paging.c b/src/paging.c
index ed40c07..8597463 100644
--- a/src/paging.c
+++ b/src/paging.c
@@ -164,7 +164,7 @@
 	INIT_LLIST_HEAD(&bts->paging.pending_requests);
 
 	/* Large number, until we get a proper message */
-	bts->paging.available_slots = 0x0;
+	bts->paging.available_slots = 10;
 }
 
 static int paging_pending_request(struct gsm_bts_paging_state *bts,
@@ -182,20 +182,16 @@
 static void paging_T3113_expired(void *data)
 {
 	struct gsm_paging_request *req = (struct gsm_paging_request *)data;
+	struct paging_signal_data sig_data;
 
 	DEBUGP(DPAG, "T3113 expired for request %p (%s)\n",
 		req, req->subscr->imsi);
 	
-	struct paging_signal_data sig_data = {
-		.data = {
-			.area = S_PAGING,
-		},
-		.subscr = req->subscr,
-		.bts	= req->bts,
-		.lchan	= NULL,
-	};
+	sig_data.subscr = req->subscr,
+	sig_data.bts	= req->bts,
+	sig_data.lchan	= NULL,
 
-	dispatch_signal(&sig_data.data);
+	dispatch_signal(SS_PAGING, S_PAGING_COMPLETED, &sig_data);
 	paging_remove_request(&req->bts->paging, req);
 }
 
diff --git a/src/signal.c b/src/signal.c
index 7eae4d9..a7fc28e 100644
--- a/src/signal.c
+++ b/src/signal.c
@@ -27,34 +27,39 @@
 
 struct signal_handler {
 	struct llist_head entry;
-	int areas;
-
-	int (*sig_handler)(struct signal_data *, void*);
+	unsigned int subsys;
+	signal_cbfn *cbfn;
 	void *data;
 };
 
 
-void register_signal_handler(int areas,
-	int (*handler)(struct signal_data *, void *), void *data)
+int register_signal_handler(unsigned int subsys, signal_cbfn *cbfn, void *data)
 {
-	struct signal_handler *sig_data =
-		(struct signal_handler *)malloc(sizeof(*sig_data));
+	struct signal_handler *sig_data = malloc(sizeof(*sig_data));
+
+	if (!sig_data)
+		return -ENOMEM;
+
 	memset(sig_data, 0, sizeof(*sig_data));
 
-
-	sig_data->areas = areas;
+	sig_data->subsys = subsys;
 	sig_data->data = data;
-	sig_data->sig_handler = handler;
+	sig_data->cbfn = cbfn;
+
+	/* FIXME: check if we already have a handler for this subsys/cbfn/data */
+
 	llist_add_tail(&sig_data->entry, &signal_handler_list);
+
+	return 0;
 }
 
-void remove_signal_handler(int areas, int (*sig_handler)(struct signal_data *, void *), void *data)
+void unregister_signal_handler(unsigned int subsys, signal_cbfn *cbfn, void *data)
 {
 	struct signal_handler *handler;
 
 	llist_for_each_entry(handler, &signal_handler_list, entry) {
-		if (handler->sig_handler == sig_handler
-		    && handler->data == data && areas == handler->areas) {
+		if (handler->cbfn == cbfn && handler->data == data 
+		    && subsys == handler->subsys) {
 			llist_del(&handler->entry);
 			free(handler);
 			break;
@@ -63,13 +68,13 @@
 }
 
 
-void dispatch_signal(struct signal_data *data)
+void dispatch_signal(unsigned int subsys, unsigned int signal, void *signal_data)
 {
 	struct signal_handler *handler;
 
 	llist_for_each_entry(handler, &signal_handler_list, entry) {
-		if (handler->areas & data->area) {
-		    (*handler->sig_handler)(data, handler->data);
-		}
+		if (handler->subsys != subsys)
+			continue;
+		(*handler->cbfn)(subsys, signal, handler->data, signal_data);
 	}
 }
diff --git a/src/telnet_interface.c b/src/telnet_interface.c
index b9ef139..e889e74 100644
--- a/src/telnet_interface.c
+++ b/src/telnet_interface.c
@@ -49,8 +49,10 @@
 
 /* per network data */
 static int telnet_new_connection(struct bsc_fd *fd, unsigned int what);
-static int telnet_paging_callback(struct signal_data *signal, void *data);
-static int telnet_sms_callback(struct signal_data *signal, void *data);
+static int telnet_paging_callback(unsigned int subsys, unsigned int signal,
+				  void *handler_data, void *signal_data);
+static int telnet_sms_callback(unsigned int subsys, unsigned int signal,
+				void *handler_data, void *signal_data);
 
 static struct bsc_fd server_socket = {
 	.when	    = BSC_FD_READ,
@@ -91,8 +93,8 @@
 	bsc_register_fd(&server_socket);
 
 	/* register callbacks */
-	register_signal_handler(S_PAGING, telnet_paging_callback, network);
-	register_signal_handler(S_SMS, telnet_sms_callback, network);
+	register_signal_handler(SS_PAGING, telnet_paging_callback, network);
+	register_signal_handler(SS_SMS, telnet_sms_callback, network);
 }
 
 void telnet_write_help(int fd) {
@@ -187,6 +189,7 @@
 		return;
 
 	paging_request(bts, subscr, type);	
+	paging_update_buffer_space(bts, 100);
 }
 
 void telnet_put_channel(struct telnet_connection *connection, const char *imsi) {
@@ -364,10 +367,10 @@
 	return 0;
 }
 
-static int telnet_paging_callback(struct signal_data *signal, void *data)
+static int telnet_paging_callback(unsigned int subsys, unsigned int singal,
+				  void *handler_data, void *signal_data)
 {
-	struct paging_signal_data *paging =
-		(struct paging_signal_data *) signal;
+	struct paging_signal_data *paging = signal_data;
 	struct telnet_connection *con;
 
 	llist_for_each_entry(con, &active_connections, entry) {
@@ -385,14 +388,14 @@
 	return 0;
 }
 
-static int telnet_sms_callback(struct signal_data *signal, void *data)
+static int telnet_sms_callback(unsigned int subsys, unsigned int signal,
+				void *handler_data, void *signal_data)
 {
-	struct sms_signal_data *sms =
-		(struct sms_signal_data *) signal;
+	struct sms_submit *sms = signal_data;
 	struct telnet_connection *con;
 
 	llist_for_each_entry(con, &active_connections, entry) {
-		WRITE_CONNECTION(con->fd.fd, "Incoming SMS: %s\n", sms->sms->user_data);
+		WRITE_CONNECTION(con->fd.fd, "Incoming SMS: %s\n", sms->user_data);
 	}
 
 	return 0;
