diff --git a/lapd/L1CTL_Test.ttcn b/lapd/L1CTL_Test.ttcn
index acd19cc..e780de8 100644
--- a/lapd/L1CTL_Test.ttcn
+++ b/lapd/L1CTL_Test.ttcn
@@ -44,7 +44,7 @@
 		lapdm := frame
 	}
 	/* template for a valid SABM frame */
-	template LapdmFrame LAPDm_B_SABM(template GsmSapi sapi, template octetstring payload)  := {
+	template LapdmFrame LAPDm_B_SABM(template GsmSapi sapi, octetstring payload)  := {
 		b := {
 			addr := tr_LapdmAddr(sapi, false),
 			ctrl := t_LapdmCtrlSABM(true),
@@ -56,7 +56,19 @@
 	}
 
 	/* template for a valid UA frame */
-	template LapdmFrame LAPDm_B_UA(template GsmSapi sapi, template octetstring payload)  := {
+	template LapdmFrame tr_LAPDm_B_UA(template GsmSapi sapi, template octetstring payload)  := {
+		b := {
+			addr := tr_LapdmAddr(sapi, false),
+			ctrl := t_LapdmCtrlUA(true),
+			len := ?,
+			m := false,
+			el := 1,
+			payload := payload
+		}
+	}
+
+	/* template for a valid UA frame */
+	template LapdmFrame LAPDm_B_UA(template GsmSapi sapi, octetstring payload)  := {
 		b := {
 			addr := tr_LapdmAddr(sapi, false),
 			ctrl := t_LapdmCtrlUA(true),
@@ -68,7 +80,7 @@
 	}
 
 	/* template for a valid UI frame */
-	template LapdmFrame LAPDm_B_UI(template GsmSapi sapi, template octetstring payload)  := {
+	template LapdmFrame LAPDm_B_UI(template GsmSapi sapi, octetstring payload)  := {
 		b := {
 			addr := tr_LapdmAddr(sapi, true),
 			ctrl := t_LapdmCtrlUI(false),
@@ -130,6 +142,33 @@
 		setverdict(pass);
 	}
 
+	testcase TC_sabm_contention() runs on dummy_CT {
+		var LAPDm_ph_data phd;
+		const octetstring payload := '0102030405'O;
+		const GsmSapi sapi := 0;
+		const boolean use_sacch := false;
+		timer T := 5.0;
+
+		f_init();
+
+		f_establish_dcch();
+		/* first frame is our real SABM */
+		LAPDM.send(t_PH_DATA(sapi, use_sacch, LAPDm_B_SABM(sapi, payload)));
+		/* second frame is a SABM with different payload, which BTS has to ignore according to 8.4.1.4 */
+		LAPDM.send(t_PH_DATA(sapi, use_sacch, LAPDm_B_SABM(sapi, 'ABCDEF'O)));
+		log("====> expecting ", t_PH_DATA(sapi, use_sacch, LAPDm_B_UA(sapi, payload)));
+		T.start
+		alt {
+			[] LAPDM.receive(t_PH_DATA(?, use_sacch, LAPDm_B_UA(sapi, payload))) { setverdict(pass); repeat; }
+			[] LAPDM.receive(t_PH_DATA(?, use_sacch, tr_LAPDm_B_UA(sapi, ?))) {
+				setverdict(fail, "Second SABM was responded to during contention resolution");
+			}
+			[] LAPDM.receive { repeat };
+			[] T.timeout { }
+		}
+		f_release_dcch();
+	}
+
 
 	testcase TC_foo() runs on dummy_CT {
 /*
@@ -155,10 +194,9 @@
 	control {
 		execute(TC_foo());
 		execute(TC_sabm_ua_dcch_sapi0());
-/*
 		execute(TC_sabm_ua_dcch_sapi0_nopayload());
 		execute(TC_sabm_ua_dcch_sapi3());
 		execute(TC_sabm_ua_dcch_sapi4());
-*/
+		execute(TC_sabm_contention());
 	}
 }
