diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn
index fb618b4..f196e64 100644
--- a/hnbgw/HNBGW_Tests.ttcn
+++ b/hnbgw/HNBGW_Tests.ttcn
@@ -408,7 +408,8 @@
 }
 
 /* global initialization function */
-function f_init(charstring id := "HNBGW", float guard_timeout := 30.0, integer nr_msc := 1, integer nr_sgsn := 1) runs on test_CT {
+function f_init(charstring id := "HNBGW", float guard_timeout := 30.0, integer nr_msc := 1, integer nr_sgsn := 1,
+		boolean start_hnb := true) runs on test_CT {
 
 	T_guard.start(guard_timeout);
 	activate(as_Tguard());
@@ -447,6 +448,10 @@
 
 	f_init_mgcp(id);
 	f_init_vty("VirtHNBGW");
+
+	if (start_hnb) {
+		f_start_hnbs();
+	}
 }
 
 friend function f_shutdown_helper() runs on test_CT {
@@ -828,7 +833,7 @@
 
 testcase TC_hnb_register() runs on test_CT {
 	g_num_hnbs := 1;
-	f_init();
+	f_init(start_hnb := false);
 	f_hnbap_register(0);
 	f_shutdown_helper();
 }
@@ -837,7 +842,7 @@
  * one should be rejected. */
 testcase TC_hnb_register_duplicate() runs on test_CT {
 	g_num_hnbs := 2;
-	f_init();
+	f_init(start_hnb := false);
 	f_hnbap_register(0);
 	f_hnbap_register(1, 0, expect_reject := true);
 	f_verify_talloc_count(HNBGWVTY, {"struct hnb_context"}, expect_count := 1);
@@ -849,7 +854,7 @@
  * applied. TS 25.469 8.2.4 */
 testcase TC_hnb_register_duplicate_reuse_sctp_assoc() runs on test_CT {
 	g_num_hnbs := 1;
-	f_init();
+	f_init(start_hnb := false);
 	f_hnbap_register(0);
 	f_hnbap_register(0);
 	f_verify_talloc_count(HNBGWVTY, {"struct hnb_context"}, expect_count := 1);
@@ -860,7 +865,7 @@
  * Related: OS#5676, SYS#6113 */
 testcase TC_hnb_reregister_reuse_sctp_assoc() runs on test_CT {
 	g_num_hnbs := 1;
-	f_init();
+	f_init(start_hnb := false);
 	f_hnbap_register(0);
 	HNBAP[0].send(ts_HNBAP_HNBDe_Register(ts_HnbapCause(unspecified)));
 	f_hnbap_register(0);
@@ -913,7 +918,6 @@
 
 	g_num_hnbs := 1;
 	f_init();
-	f_start_hnbs();
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_initial_ue), t_pars(1));
 	vc_conn.done;
@@ -925,7 +929,6 @@
 
 	g_num_hnbs := 1;
 	f_init();
-	f_start_hnbs();
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_initial_ue), t_pars(2, true));
 	vc_conn.done;
@@ -952,7 +955,6 @@
 
 	g_num_hnbs := 1;
 	f_init();
-	f_start_hnbs();
 
 	f_vty_set_sccp_max_optional_data(HNBGWVTY, 0);
 
@@ -969,7 +971,6 @@
 
 	g_num_hnbs := 1;
 	f_init();
-	f_start_hnbs();
 
 	f_vty_set_sccp_max_optional_data(HNBGWVTY, 0);
 
@@ -992,7 +993,6 @@
 testcase TC_sccp_cr_limit() runs on test_CT {
 	g_num_hnbs := 1;
 	f_init();
-	f_start_hnbs();
 
 	const Testdata_CR_Limits tests := {
 		{ data_len := 130, max_optional_data := -1, expect_separate_sccp_cr := false },
@@ -1250,7 +1250,6 @@
 	var ConnHdlr vc_conn;
 	g_num_hnbs := 1;
 	f_init();
-	f_start_hnbs();
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_rab_assignment), t_pars(3));
 	vc_conn.done;
@@ -1288,7 +1287,6 @@
 	var ConnHdlr vc_conn;
 	g_num_hnbs := 1;
 	f_init();
-	f_start_hnbs();
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_rab_assign_fail), t_pars(4));
 	vc_conn.done;
@@ -1330,7 +1328,6 @@
 	var ConnHdlr vc_conn;
 	g_num_hnbs := 1;
 	f_init();
-	f_start_hnbs();
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_rab_release), t_pars(5));
 	vc_conn.done;
@@ -1381,7 +1378,6 @@
 	var ConnHdlr vc_conn;
 	g_num_hnbs := 1;
 	f_init();
-	f_start_hnbs();
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_rab_assign_mgcp_to), t_pars(6));
 	vc_conn.done;
@@ -1408,7 +1404,6 @@
 	var ConnHdlr vc_conn;
 	g_num_hnbs := 1;
 	f_init();
-	f_start_hnbs();
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_ranap_bidir), t_pars(3));
 	vc_conn.done;
@@ -1419,7 +1414,6 @@
 	var ConnHdlr vc_conn;
 	g_num_hnbs := 1;
 	f_init();
-	f_start_hnbs();
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_ranap_bidir), t_pars(4, true));
 	vc_conn.done;
@@ -1446,7 +1440,6 @@
 	var ConnHdlr vc_conn;
 	g_num_hnbs := 1;
 	f_init();
-	f_start_hnbs();
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_ranap_mo_disconnect), t_pars(5));
 	vc_conn.done;
@@ -1457,7 +1450,6 @@
 	var ConnHdlr vc_conn;
 	g_num_hnbs := 1;
 	f_init();
-	f_start_hnbs();
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_ranap_mo_disconnect), t_pars(6));
 	vc_conn.done;
@@ -1626,7 +1618,6 @@
 	var ConnHdlr vc_conn;
 	g_num_hnbs := 1;
 	f_init();
-	f_start_hnbs();
 	f_sleep(1.0);
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_ps_rab_assignment_with_pfcp), t_pars(7, ps_domain := true));
@@ -1690,7 +1681,6 @@
 testcase TC_ps_rab_assignment_without_pfcp() runs on test_CT {
 	var ConnHdlr vc_conn;
 	f_init();
-	f_start_hnbs();
 	f_sleep(1.0);
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_ps_rab_assignment_without_pfcp), t_pars(7, ps_domain := true));
