diff --git a/src/abis_nm.c b/src/abis_nm.c
index 0107c29..57d4159 100644
--- a/src/abis_nm.c
+++ b/src/abis_nm.c
@@ -435,19 +435,46 @@
 
 static int abis_nm_rcvmsg_sw(struct msgb *mb);
 
-const char *oc_names[] = {
-	[NM_OC_SITE_MANAGER]	= "SITE MANAGER",
-	[NM_OC_BTS]		= "BTS",
-	[NM_OC_RADIO_CARRIER]	= "RADIO CARRIER",
-	[NM_OC_BASEB_TRANSC]	= "BASEBAND TRANSCEIVER",
-	[NM_OC_CHANNEL]		= "CHANNEL",
-};
-
 static const char *obj_class_name(u_int8_t oc)
 {
-	if (oc >= ARRAY_SIZE(oc_names))
-		return "UNKNOWN";
-	return oc_names[oc];
+	switch (oc) {
+	case NM_OC_SITE_MANAGER:
+		return "SITE MANAGER";
+	case NM_OC_BTS:
+		return "BTS";
+	case NM_OC_RADIO_CARRIER:
+		return "RADIO CARRIER";
+	case NM_OC_BASEB_TRANSC:
+		return "BASEBAND TRANSCEIVER";
+	case NM_OC_CHANNEL:
+		return "CHANNL";
+	case NM_OC_BS11_ADJC:
+		return "ADJC";
+	case NM_OC_BS11_HANDOVER:
+		return "HANDOVER";
+	case NM_OC_BS11_PWR_CTRL:
+		return "POWER CONTROL";
+	case NM_OC_BS11_BTSE:
+		return "BTSE";
+	case NM_OC_BS11_RACK:
+		return "RACK";
+	case NM_OC_BS11_TEST:
+		return "TEST";
+	case NM_OC_BS11_ENVABTSE:
+		return "ENVABTSE";
+	case NM_OC_BS11_BPORT:
+		return "BPORT";
+	case NM_OC_GPRS_NSE:
+		return "GPRS NSE";
+	case NM_OC_GPRS_CELL:
+		return "GPRS CELL";
+	case NM_OC_GPRS_NSVC0:
+		return "GPRS NSVC0";
+	case NM_OC_GPRS_NSVC1:
+		return "GPRS NSVC1";
+	}
+
+	return "UNKNOWN";
 }
 
 const char *nm_opstate_name(u_int8_t os)
@@ -484,7 +511,20 @@
 		return "UNKNOWN";
 	return avail_names[avail];
 }
-	
+
+const char *nm_adm_name(u_int8_t adm)
+{
+	switch (adm) {
+	case 1:
+		return "Locked";
+	case 2:
+		return "Unlocked";
+	case 3:
+		return "Shutdown";
+	default:
+		return "<not used>";
+	}
+}
 
 /* obtain the gsm_nm_state data structure for a given object instance */
 static struct gsm_nm_state *
@@ -521,6 +561,17 @@
 	case NM_OC_SITE_MANAGER:
 		nm_state = &bts->site_mgr.nm_state;
 		break;
+	case NM_OC_BS11:
+		switch (obj_inst->bts_nr) {
+		case BS11_OBJ_CCLK:
+			nm_state = &bts->bs11.cclk.nm_state;
+			break;
+		default:
+			return NULL;
+		}
+	case NM_OC_BS11_RACK:
+		nm_state = &bts->bs11.rack.nm_state;
+		break;
 	}
 	return nm_state;
 }
@@ -622,7 +673,7 @@
 	}
 	if (TLVP_PRESENT(&tp, NM_ATT_ADM_STATE)) {
 		new_state.administrative = *TLVP_VAL(&tp, NM_ATT_ADM_STATE);
-		DEBUGPC(DNM, "ADM=%02x ", new_state.administrative);
+		DEBUGPC(DNM, "ADM=%02x ", nm_adm_name(new_state.administrative));
 	}
 	DEBUGPC(DNM, "\n");
 
@@ -1872,7 +1923,7 @@
 		u_int8_t len = 3*2 + sizeof(bdt)
 				+ sizeof(bs11_logon_c8) + sizeof(bs11_logon_c9);
 		fill_om_fom_hdr(oh, len, NM_MT_BS11_LMT_LOGON,
-				NM_OC_BS11_A3, 0xff, 0xff, 0xff);
+				NM_OC_BS11_BTSE, 0xff, 0xff, 0xff);
 		msgb_tlv_put(msg, NM_ATT_BS11_LMT_LOGIN_TIME,
 			     sizeof(bdt), (u_int8_t *) &bdt);
 		msgb_tlv_put(msg, NM_ATT_BS11_LMT_USER_ACC_LEV,
@@ -1881,7 +1932,7 @@
 			     sizeof(bs11_logon_c9), bs11_logon_c9);
 	} else {
 		fill_om_fom_hdr(oh, 0, NM_MT_BS11_LMT_LOGOFF,
-				NM_OC_BS11_A3, 0xff, 0xff, 0xff);
+				NM_OC_BS11_BTSE, 0xff, 0xff, 0xff);
 	}
 	
 	return abis_nm_sendmsg(bts, msg);
diff --git a/src/bs11_config.c b/src/bs11_config.c
index ceb23a8..656feb4 100644
--- a/src/bs11_config.c
+++ b/src/bs11_config.c
@@ -310,8 +310,10 @@
 {
 	switch (acc) {
 	case 0:
+		/* Out of the demanded +/- 0.05ppm */
 		return "Medium";
 	case 1:
+		/* Synchronized with Abis, within demanded tolerance +/- 0.05ppm */
 		return "High";
 	default:
 		return "unknown";
diff --git a/src/bsc_hack.c b/src/bsc_hack.c
index 7ac65c5..a8fd537 100644
--- a/src/bsc_hack.c
+++ b/src/bsc_hack.c
@@ -157,8 +157,8 @@
 		NM_ATT_BS11_BTSLS_HOPPING, 0x00,
 		NM_ATT_CCCH_L_I_P, 0x01,
 		NM_ATT_CCCH_L_T, 0x00,
-		NM_ATT_BS11_CELL_ALLOC_NR, 0x00,
-		NM_ATT_BS11_ENA_INTERF_CLASS, 0x00,
+		NM_ATT_BS11_CELL_ALLOC_NR, NM_BS11_CANR_GSM,
+		NM_ATT_BS11_ENA_INTERF_CLASS, 0x01,
 		NM_ATT_BS11_FACCH_QUAL, 0x06,
 		/* interference avg. period in numbers of SACCH multifr */
 		NM_ATT_INTAVE_PARAM, 0x1F, 
