diff --git a/openbsc/src/bsc_api.c b/openbsc/src/bsc_api.c
index 92fe661..46a3343 100644
--- a/openbsc/src/bsc_api.c
+++ b/openbsc/src/bsc_api.c
@@ -104,13 +104,20 @@
 
 		if (rc != BSC_API_CONN_POL_ACCEPT) {
 			subscr_con_free(lchan->conn);
-			lchan_auto_release(lchan);
+			lchan_release(lchan, 0, 0);
 		}
 	}
 
 	return 0;
 }
 
+int gsm0808_clear(struct gsm_subscriber_connection* conn)
+{
+	subscr_con_free(conn);
+	lchan_release(conn->lchan, 1, 0);
+	return 0;
+}
+
 static void send_sapi_reject(struct gsm_subscriber_connection *conn, int link_id)
 {
 	struct bsc_api *api;
@@ -155,12 +162,12 @@
 	if (!lchan || !lchan->conn)
 		return 0;
 
-
 	bsc = lchan->ts->trx->bts->network->bsc_api;
 	if (!bsc || !bsc->clear_request)
 		return 0;
 
 	bsc->clear_request(lchan->conn, 0);
+	subscr_con_free(lchan->conn);
 	return 0;
 }
 
diff --git a/openbsc/src/bsc_vty.c b/openbsc/src/bsc_vty.c
index 3215745..a308ec4 100644
--- a/openbsc/src/bsc_vty.c
+++ b/openbsc/src/bsc_vty.c
@@ -700,8 +700,8 @@
 		lchan->nr, lchan->ts->nr, lchan->ts->trx->nr,
 		lchan->ts->trx->bts->nr, gsm_lchant_name(lchan->type),
 		VTY_NEWLINE);
-	vty_out(vty, "  Use Count: %u, State: %s%s",
-		lchan->conn ? lchan->conn->use_count : -23,
+	vty_out(vty, "  Connection: %u, State: %s%s",
+		lchan->conn ? 1: 0,
 		gsm_lchans_name(lchan->state), VTY_NEWLINE);
 	vty_out(vty, "  BS Power: %u dBm, MS Power: %u dBm%s",
 		lchan->ts->trx->nominal_power - lchan->ts->trx->max_power_red
diff --git a/openbsc/src/chan_alloc.c b/openbsc/src/chan_alloc.c
index f5c4ec6..62d476a 100644
--- a/openbsc/src/chan_alloc.c
+++ b/openbsc/src/chan_alloc.c
@@ -35,8 +35,6 @@
 
 #include <osmocore/talloc.h>
 
-static void auto_release_channel(void *_lchan);
-
 static int ts_is_usable(struct gsm_bts_trx_ts *ts)
 {
 	/* FIXME: How does this behave for BS-11 ? */
@@ -296,18 +294,8 @@
 
 
 	if (lchan->conn) {
-		if (lchan->conn->subscr) {
-			subscr_put(lchan->conn->subscr);
-			lchan->conn->subscr = NULL;
-		}
-
 		/* We might kill an active channel... */
-		if (lchan->conn->use_count != 0) {
-			dispatch_signal(SS_LCHAN, S_LCHAN_UNEXPECTED_RELEASE, lchan);
-			lchan->conn->use_count = 0;
-		}
-		/* stop the timer */
-		bsc_del_timer(&lchan->conn->release_timer);
+		dispatch_signal(SS_LCHAN, S_LCHAN_UNEXPECTED_RELEASE, lchan);
 	}
 
 
@@ -334,6 +322,7 @@
 	dispatch_signal(SS_CHALLOC, S_CHALLOC_FREED, &sig);
 
 	if (lchan->conn) {
+		LOGP(DRLL, LOGL_ERROR, "the subscriber connection should be gone.\n");
 		subscr_con_free(lchan->conn);
 		lchan->conn = NULL;
 	}
@@ -364,40 +353,19 @@
 
 
 /* Consider releasing the channel now */
-int lchan_auto_release(struct gsm_lchan *lchan)
+int lchan_release(struct gsm_lchan *lchan, int sach_deact, int reason)
 {
-	if (!lchan->conn)
-		return 0;
-
-	if (lchan->conn->use_count > 0) {
-		return 0;
-	}
-
 	/* Assume we have GSM04.08 running and send a release */
-	if (lchan->conn->subscr) {
+	if (sach_deact) {
 		gsm48_send_rr_release(lchan);
 	}
 
-	/* spoofed? message */
-	if (lchan->conn->use_count < 0)
-		LOGP(DRLL, LOGL_ERROR, "Channel count is negative: %d\n",
-			lchan->conn->use_count);
-
 	DEBUGP(DRLL, "%s Recycling Channel\n", gsm_lchan_name(lchan));
 	rsl_lchan_set_state(lchan, LCHAN_S_REL_REQ);
 	rsl_release_request(lchan, 0, 0);
 	return 1;
 }
 
-/* Auto release the channel when the use count is zero */
-static void auto_release_channel(void *_lchan)
-{
-	struct gsm_lchan *lchan = _lchan;
-
-	if (!lchan_auto_release(lchan))
-		bsc_schedule_timer(&lchan->conn->release_timer, LCHAN_RELEASE_TIMEOUT);
-}
-
 static struct gsm_lchan* lchan_find(struct gsm_bts *bts, struct gsm_subscriber *subscr) {
 	struct gsm_bts_trx *trx;
 	int ts_no, lchan_no;
@@ -490,10 +458,6 @@
 	/* Configure the time and start it so it will be closed */
 	conn->lchan = lchan;
 	conn->bts = lchan->ts->trx->bts;
-	conn->release_timer.cb = auto_release_channel;
-	conn->release_timer.data = lchan;
-	bsc_schedule_timer(&conn->release_timer, LCHAN_RELEASE_TIMEOUT);
-
 	lchan->conn = conn;
 	return conn;
 }
@@ -507,6 +471,13 @@
 	if (!conn)
 		return;
 
+
+	if (conn->subscr) {
+		subscr_put(conn->subscr);
+		conn->subscr = NULL;
+	}
+
+
 	lchan = conn->lchan;
 	talloc_free(conn);
 
diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/gsm_04_08.c
index e807052..c1b438e 100644
--- a/openbsc/src/gsm_04_08.c
+++ b/openbsc/src/gsm_04_08.c
@@ -109,13 +109,11 @@
 
 	talloc_free(conn->sec_operation);
 	conn->sec_operation = NULL;
-	put_subscr_con(conn);
+	msc_release_connection(conn);
 }
 
 static void allocate_security_operation(struct gsm_subscriber_connection *conn)
 {
-	use_subscr_con(conn)
-
 	conn->sec_operation = talloc_zero(tall_authciphop_ctx,
 	                                  struct gsm_security_operation);
 }
@@ -222,12 +220,13 @@
 	bsc_del_timer(&conn->loc_operation->updating_timer);
 	talloc_free(conn->loc_operation);
 	conn->loc_operation = 0;
-	put_subscr_con(conn);
+	msc_release_connection(conn);
 }
 
 static void allocate_loc_updating_req(struct gsm_subscriber_connection *conn)
 {
-	use_subscr_con(conn)
+	if (conn->loc_operation)
+		LOGP(DMM, LOGL_ERROR, "Connection already had operation.\n");
 	release_loc_updating_req(conn);
 
 	conn->loc_operation = talloc_zero(tall_locop_ctx,
@@ -263,7 +262,6 @@
 
 			/* try to close channel ASAP */
 			release_loc_updating_req(conn);
-			lchan_auto_release(conn->lchan);
 			break;
 
 		default:
@@ -285,6 +283,10 @@
 void gsm0408_clear_request(struct gsm_subscriber_connection* conn, uint32_t cause)
 {
 	struct gsm_trans *trans, *temp;
+
+	/* avoid someone issuing a clear */
+	conn->in_release = 1;
+
 	/*
 	 * Cancel any outstanding location updating request
 	 * operation taking place on the subscriber connection.
@@ -424,7 +426,6 @@
 
 	gsm0408_loc_upd_rej(conn, bts->network->reject_cause);
 	release_loc_updating_req(conn);
-	lchan_auto_release(lchan);
 }
 
 static void schedule_reject(struct gsm_subscriber_connection *conn)
@@ -710,7 +711,6 @@
 
 	DEBUGP(DMM, "-> CM SERVICE Reject cause: %d\n", value);
 	msg->lchan = conn->lchan;
-	use_subscr_con(conn);
 	return gsm48_conn_sendmsg(msg, conn, NULL);
 }
 
@@ -871,8 +871,6 @@
 	 * imagine an IMSI DETACH happening during an active call! */
 
 	/* subscriber is detached: should we release lchan? */
-	lchan_auto_release(msg->lchan);
-
 	return 0;
 }
 
@@ -1385,7 +1383,6 @@
 			/* Assign lchan */
 			if (!transt->conn) {
 				transt->conn = conn;
-				use_subscr_con(transt->conn);
 			}
 			/* send SETUP request to called party */
 			gsm48_cc_tx_setup(transt, &transt->cc.msg);
@@ -2289,9 +2286,6 @@
 		case GSM_CSTATE_RELEASE_REQ:
 			rc = mncc_recvmsg(trans->subscr->net, trans,
 					  MNCC_REL_CNF, &rel);
-			/* FIXME: in case of multiple calls, we can't simply
-			 * hang up here ! */
-			lchan_auto_release(msg->lchan);
 			break;
 		default:
 			rc = mncc_recvmsg(trans->subscr->net, trans,
@@ -2924,7 +2918,6 @@
 		}
 		/* Assign lchan */
 		trans->conn = conn;
-		use_subscr_con(trans->conn);
 		subscr_put(subscr);
 	}
 
@@ -3065,7 +3058,6 @@
 		}
 		/* Assign transaction */
 		trans->conn = conn;
-		use_subscr_con(trans->conn);
 	}
 
 	/* find function for current state and message */
diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c
index d4df989..6cce57d 100644
--- a/openbsc/src/gsm_04_11.c
+++ b/openbsc/src/gsm_04_11.c
@@ -943,7 +943,6 @@
 		trans->sms.link_id = UM_SAPI_SMS;
 
 		trans->conn = conn;
-		use_subscr_con(trans->conn);
 	}
 
 	switch(msg_type) {
@@ -1066,7 +1065,6 @@
 	trans->sms.link_id = UM_SAPI_SMS;	/* FIXME: main or SACCH ? */
 
 	trans->conn = conn;
-	use_subscr_con(trans->conn);
 
 	/* Hardcode SMSC Originating Address for now */
 	data = (u_int8_t *)msgb_put(msg, 8);
@@ -1122,7 +1120,6 @@
 
 	switch (event) {
 	case GSM_PAGING_SUCCEEDED:
-		use_subscr_con(conn);
 		gsm411_send_sms(conn, sms);
 		break;
 	case GSM_PAGING_EXPIRED:
@@ -1147,7 +1144,6 @@
 	 * if yes, send the SMS this way */
 	conn = connection_for_subscr(subscr);
 	if (conn) {
-		use_subscr_con(conn);
 		return gsm411_send_sms(conn, sms);
 	}
 
@@ -1174,7 +1170,6 @@
 		sms = db_sms_get_unsent_for_subscr(subscr);
 		if (!sms)
 			break;
-		use_subscr_con(conn);
 		gsm411_send_sms(conn, sms);
 		break;
 	default:
diff --git a/openbsc/src/gsm_subscriber_base.c b/openbsc/src/gsm_subscriber_base.c
index 264f128..50e6865 100644
--- a/openbsc/src/gsm_subscriber_base.c
+++ b/openbsc/src/gsm_subscriber_base.c
@@ -205,8 +205,6 @@
 	 * will listen to the paging requests before we timeout
 	 */
 
-	put_subscr_con(conn);
-
 	if (conn->subscr && !llist_empty(&conn->subscr->requests))
 		subscr_send_paging_request(conn->subscr);
 }
diff --git a/openbsc/src/handover_logic.c b/openbsc/src/handover_logic.c
index b75dc98..baf03b3 100644
--- a/openbsc/src/handover_logic.c
+++ b/openbsc/src/handover_logic.c
@@ -231,7 +231,7 @@
 	trans_lchan_change(ho->old_lchan->conn, new_lchan->conn);
 
 	rsl_lchan_set_state(ho->old_lchan, LCHAN_S_INACTIVE);
-	lchan_auto_release(ho->old_lchan);
+	lchan_release(ho->old_lchan, 0, 1);
 
 	/* do something to re-route the actual speech frames ! */
 
@@ -259,7 +259,6 @@
 	bsc_del_timer(&ho->T3103);
 	llist_del(&ho->list);
 	conn = ho->new_lchan->conn;
-	put_subscr_con(conn);
 	talloc_free(ho);
 
 	return 0;
diff --git a/openbsc/src/osmo_msc.c b/openbsc/src/osmo_msc.c
index 569634d..6a94e7a 100644
--- a/openbsc/src/osmo_msc.c
+++ b/openbsc/src/osmo_msc.c
@@ -24,6 +24,7 @@
 
 #include <openbsc/bsc_api.h>
 #include <openbsc/debug.h>
+#include <openbsc/transaction.h>
 
 #include <openbsc/gsm_04_11.h>
 
@@ -64,3 +65,30 @@
 struct bsc_api *msc_bsc_api() {
 	return &msc_handler;
 }
+
+/* lchan release handling */
+void msc_release_connection(struct gsm_subscriber_connection *conn)
+{
+	struct gsm_trans *trans;
+
+	/* skip when we are in release, e.g. due an error */
+	if (conn->in_release)
+		return;
+
+	/* skip releasing of silent calls as they have no transaction */
+	if (conn->silent_call)
+		return;
+
+	/* check if there is a pending operation */
+	if (conn->loc_operation || conn->sec_operation)
+		return;
+
+	llist_for_each_entry(trans, &conn->bts->network->trans_list, entry) {
+		if (trans->conn == conn)
+			return;
+	}
+
+	/* no more connections, asking to release the channel */
+	conn->in_release = 1;
+	gsm0808_clear(conn);
+}
diff --git a/openbsc/src/silent_call.c b/openbsc/src/silent_call.c
index 397a3e4..7ba451b 100644
--- a/openbsc/src/silent_call.c
+++ b/openbsc/src/silent_call.c
@@ -57,7 +57,6 @@
 		conn->silent_call = 1;
 		/* increment lchan reference count */
 		dispatch_signal(SS_SCALL, S_SCALL_SUCCESS, &sigdata);
-		use_subscr_con(conn);
 		break;
 	case GSM_PAGING_EXPIRED:
 		DEBUGP(DSMS, "expired\n");
@@ -135,7 +134,8 @@
 	if (!conn->silent_call)
 		return -EINVAL;
 
-	put_subscr_con(conn);
+	conn->silent_call = 0;
+	msc_release_connection(conn);
 
 	return 0;
 }
diff --git a/openbsc/src/transaction.c b/openbsc/src/transaction.c
index c7478d6..ffabdd3 100644
--- a/openbsc/src/transaction.c
+++ b/openbsc/src/transaction.c
@@ -95,9 +95,6 @@
 		break;
 	}
 
-	if (trans->conn)
-		put_subscr_con(trans->conn);
-
 	if (!trans->conn && trans->subscr && trans->subscr->net) {
 		/* Stop paging on all bts' */
 		paging_request_stop(NULL, trans->subscr, NULL);
@@ -108,6 +105,10 @@
 
 	llist_del(&trans->entry);
 
+	if (trans->conn)
+		msc_release_connection(trans->conn);
+
+
 	talloc_free(trans);
 }
 
@@ -155,15 +156,17 @@
 	struct gsm_trans *trans;
 	int num = 0;
 
+	if (conn_old == conn_new) {
+		LOGP(DCC, LOGL_ERROR, "Exchanging transaction with itself.\n");
+		return;
+	}
+
 	llist_for_each_entry(trans, &net->trans_list, entry) {
 		if (trans->conn == conn_old) {
+			msc_release_connection(conn_old);
 
-			/* drop old channel use count */
-			put_subscr_con(conn_old);
 			/* assign new channel */
 			trans->conn = conn_new;
-			/* bump new channel use count */
-			use_subscr_con(conn_new);
 			num++;
 		}
 	}
