diff --git a/src/tbf.cpp b/src/tbf.cpp
index 84dc8b6..b10b729 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -89,26 +89,24 @@
 	return bts->tbf_by_tlli(tlli, GPRS_RLCMAC_DL_TBF);
 }
 
-static int tbf_append_data(struct gprs_rlcmac_tbf *tbf,
-				struct gprs_rlcmac_bts *bts,
-				const uint8_t ms_class,
+int gprs_rlcmac_tbf::append_data(const uint8_t ms_class,
 				const uint16_t pdu_delay_csec,
 				const uint8_t *data, const uint16_t len)
 {
-	LOGP(DRLCMAC, LOGL_INFO, "%s append\n", tbf_name(tbf));
-	if (tbf->state_is(GPRS_RLCMAC_WAIT_RELEASE)) {
+	LOGP(DRLCMAC, LOGL_INFO, "%s append\n", tbf_name(this));
+	if (state_is(GPRS_RLCMAC_WAIT_RELEASE)) {
 		LOGP(DRLCMAC, LOGL_DEBUG,
 			"%s in WAIT RELEASE state "
-			"(T3193), so reuse TBF\n", tbf_name(tbf));
-		tbf->m_llc.put_frame(data, len);
+			"(T3193), so reuse TBF\n", tbf_name(this));
+		m_llc.put_frame(data, len);
 		/* reset rlc states */
-		memset(&tbf->dir.dl, 0, sizeof(tbf->dir.dl));
+		memset(&dir.dl, 0, sizeof(dir.dl));
 		/* keep to flags */
-		tbf->state_flags &= GPRS_RLCMAC_FLAG_TO_MASK;
-		tbf->state_flags &= ~(1 << GPRS_RLCMAC_FLAG_CCCH);
-		tbf_update_ms_class(tbf, ms_class);
-		tbf->update();
-		tbf->bts->trigger_dl_ass(tbf, tbf, NULL);
+		state_flags &= GPRS_RLCMAC_FLAG_TO_MASK;
+		state_flags &= ~(1 << GPRS_RLCMAC_FLAG_CCCH);
+		tbf_update_ms_class(this, ms_class);
+		update();
+		bts->trigger_dl_ass(this, this, NULL);
 	} else {
 		/* the TBF exists, so we must write it in the queue
 		 * we prepend lifetime in front of PDU */
@@ -120,8 +118,8 @@
 		tv = (struct timeval *)msgb_put(llc_msg, sizeof(*tv));
 
 		uint16_t delay_csec;
-		if (bts->force_llc_lifetime)
-			delay_csec = bts->force_llc_lifetime;
+		if (bts_data()->force_llc_lifetime)
+			delay_csec = bts_data()->force_llc_lifetime;
 		else
 			delay_csec = pdu_delay_csec;
 		/* keep timestap at 0 for infinite delay */
@@ -136,8 +134,8 @@
 			}
 		}
 		memcpy(msgb_put(llc_msg, len), data, len);
-		tbf->m_llc.enqueue(llc_msg);
-		tbf_update_ms_class(tbf, ms_class);
+		m_llc.enqueue(llc_msg);
+		tbf_update_ms_class(this, ms_class);
 	}
 
 	return 0;
@@ -221,7 +219,7 @@
 /**
  * TODO: split into unit test-able parts...
  */
-int tbf_handle(struct gprs_rlcmac_bts *bts,
+int gprs_rlcmac_tbf::handle(struct gprs_rlcmac_bts *bts,
 		const uint32_t tlli, const char *imsi,
 		const uint8_t ms_class, const uint16_t delay_csec,
 		const uint8_t *data, const uint16_t len)
@@ -231,8 +229,7 @@
 	/* check for existing TBF */
 	tbf = tbf_lookup_dl(bts->bts, tlli, imsi);
 	if (tbf) {
-		int rc = tbf_append_data(tbf, bts, ms_class,
-						delay_csec, data, len);
+		int rc = tbf->append_data(ms_class, delay_csec, data, len);
 		if (rc >= 0)
 			tbf->assign_imsi(imsi);
 		return rc;
