diff --git a/src/gprs/gprs_llc_parse.c b/src/gprs/gprs_llc_parse.c
index e400e25..d099cda 100644
--- a/src/gprs/gprs_llc_parse.c
+++ b/src/gprs/gprs_llc_parse.c
@@ -29,7 +29,7 @@
 #include <osmocom/gprs/gprs_bssgp.h>
 
 #include <osmocom/sgsn/debug.h>
-#include <osmocom/sgsn/gprs_sgsn.h>
+#include <osmocom/sgsn/mmctx.h>
 #include <osmocom/sgsn/gprs_gmm.h>
 #include <osmocom/sgsn/gprs_llc.h>
 #include <osmocom/sgsn/crc24.h>
diff --git a/src/sgsn/Makefile.am b/src/sgsn/Makefile.am
index 75f9608..93b9fa0 100644
--- a/src/sgsn/Makefile.am
+++ b/src/sgsn/Makefile.am
@@ -47,7 +47,6 @@
 	gprs_gmm_fsm.c \
 	gprs_mm_state_gb_fsm.c \
 	gprs_ns.c \
-	gprs_sgsn.c \
 	gprs_sm.c \
 	gprs_sndcp.c \
 	gprs_sndcp_comp.c \
@@ -57,11 +56,13 @@
 	gprs_sndcp_xid.c \
 	gtp_ggsn.c \
 	gtp_mme.c \
+	sgsn.c \
 	sgsn_main.c \
 	sgsn_vty.c \
 	sgsn_libgtp.c \
 	gprs_llc.c \
 	gprs_llc_vty.c \
+	mmctx.c \
 	pdpctx.c \
 	sgsn_ctrl.c \
 	sgsn_auth.c \
diff --git a/src/sgsn/gprs_bssgp.c b/src/sgsn/gprs_bssgp.c
index d6bd25f..5db751c 100644
--- a/src/sgsn/gprs_bssgp.c
+++ b/src/sgsn/gprs_bssgp.c
@@ -29,6 +29,7 @@
 #include <osmocom/sgsn/gprs_llc.h>
 #include <osmocom/sgsn/gprs_gmm.h>
 #include <osmocom/sgsn/sgsn_rim.h>
+#include <osmocom/sgsn/mmctx.h>
 
 /* call-back function for the BSSGP protocol */
 int sgsn_bssgp_rx_prim(struct osmo_prim_hdr *oph)
diff --git a/src/sgsn/gprs_gmm.c b/src/sgsn/gprs_gmm.c
index 2f15c92..5bf66c3 100644
--- a/src/sgsn/gprs_gmm.c
+++ b/src/sgsn/gprs_gmm.c
@@ -48,7 +48,7 @@
 
 #include <osmocom/sgsn/debug.h>
 #include <osmocom/sgsn/gprs_llc.h>
-#include <osmocom/sgsn/gprs_sgsn.h>
+#include <osmocom/sgsn/mmctx.h>
 #include <osmocom/sgsn/gprs_gmm.h>
 #include <osmocom/sgsn/gprs_utils.h>
 #include <osmocom/sgsn/gprs_subscriber.h>
diff --git a/src/sgsn/gprs_gmm_attach.c b/src/sgsn/gprs_gmm_attach.c
index 59417df..708ea8f 100644
--- a/src/sgsn/gprs_gmm_attach.c
+++ b/src/sgsn/gprs_gmm_attach.c
@@ -6,6 +6,7 @@
 #include <osmocom/gsm/protocol/gsm_04_08_gprs.h>
 #include <osmocom/sgsn/debug.h>
 #include <osmocom/sgsn/gprs_gmm.h>
+#include <osmocom/sgsn/mmctx.h>
 #include <osmocom/sgsn/sgsn.h>
 
 #define X(s) (1 << (s))
diff --git a/src/sgsn/gprs_llc.c b/src/sgsn/gprs_llc.c
index 302e018..6f56385 100644
--- a/src/sgsn/gprs_llc.c
+++ b/src/sgsn/gprs_llc.c
@@ -33,7 +33,7 @@
 #include <osmocom/gsm/gsm_utils.h>
 
 #include <osmocom/sgsn/debug.h>
-#include <osmocom/sgsn/gprs_sgsn.h>
+#include <osmocom/sgsn/mmctx.h>
 #include <osmocom/sgsn/gprs_gmm.h>
 #include <osmocom/sgsn/gprs_llc.h>
 #include <osmocom/sgsn/crc24.h>
diff --git a/src/sgsn/gprs_mm_state_gb_fsm.c b/src/sgsn/gprs_mm_state_gb_fsm.c
index 6e812d3..5a007e9 100644
--- a/src/sgsn/gprs_mm_state_gb_fsm.c
+++ b/src/sgsn/gprs_mm_state_gb_fsm.c
@@ -27,6 +27,7 @@
 
 #include <osmocom/sgsn/debug.h>
 #include <osmocom/sgsn/sgsn.h>
+#include <osmocom/sgsn/mmctx.h>
 
 #define X(s) (1 << (s))
 
diff --git a/src/sgsn/gprs_mm_state_iu_fsm.c b/src/sgsn/gprs_mm_state_iu_fsm.c
index 597507c..5ac0097 100644
--- a/src/sgsn/gprs_mm_state_iu_fsm.c
+++ b/src/sgsn/gprs_mm_state_iu_fsm.c
@@ -31,6 +31,7 @@
 #include <osmocom/sgsn/gprs_ranap.h>
 #include <osmocom/sgsn/gtp.h>
 #include <osmocom/sgsn/pdpctx.h>
+#include <osmocom/sgsn/mmctx.h>
 
 #define X(s) (1 << (s))
 
diff --git a/src/sgsn/gprs_ns.c b/src/sgsn/gprs_ns.c
index e2ff931..eb447fa 100644
--- a/src/sgsn/gprs_ns.c
+++ b/src/sgsn/gprs_ns.c
@@ -31,7 +31,6 @@
 
 #include "config.h"
 
-#include <osmocom/sgsn/gprs_sgsn.h>
 #include <osmocom/sgsn/debug.h>
 
 void gprs_ns_prim_status_cb(struct osmo_gprs_ns2_prim *nsp)
diff --git a/src/sgsn/gprs_ranap.c b/src/sgsn/gprs_ranap.c
index d3d958d..5e0d8ed 100644
--- a/src/sgsn/gprs_ranap.c
+++ b/src/sgsn/gprs_ranap.c
@@ -40,6 +40,7 @@
 #include <osmocom/sgsn/gtp_ggsn.h>
 #include <osmocom/sgsn/gtp.h>
 #include <osmocom/sgsn/pdpctx.h>
+#include <osmocom/sgsn/mmctx.h>
 
 /* Send RAB activation requests for all PDP contexts */
 void activate_pdp_rabs(struct sgsn_mm_ctx *ctx)
diff --git a/src/sgsn/gprs_sm.c b/src/sgsn/gprs_sm.c
index 3a5ba3b..1194f31 100644
--- a/src/sgsn/gprs_sm.c
+++ b/src/sgsn/gprs_sm.c
@@ -44,6 +44,7 @@
 #include <osmocom/sgsn/gprs_ranap.h>
 #include <osmocom/sgsn/gtp.h>
 #include <osmocom/sgsn/pdpctx.h>
+#include <osmocom/sgsn/mmctx.h>
 
 /* 3GPP TS 04.08 sec 6.1.3.4.3(.a) "Abnormal cases" */
 #define T339X_MAX_RETRANS 4
diff --git a/src/sgsn/gprs_sndcp.c b/src/sgsn/gprs_sndcp.c
index 6707c28..36e808f 100644
--- a/src/sgsn/gprs_sndcp.c
+++ b/src/sgsn/gprs_sndcp.c
@@ -42,6 +42,7 @@
 #include <osmocom/sgsn/gprs_sndcp_dcomp.h>
 #include <osmocom/sgsn/gprs_sndcp_comp.h>
 #include <osmocom/sgsn/gprs_gmm.h>
+#include <osmocom/sgsn/mmctx.h>
 #include <osmocom/sgsn/gtp.h>
 
 #define DEBUG_IP_PACKETS 0	/* 0=Disabled, 1=Enabled */
diff --git a/src/sgsn/gprs_subscriber.c b/src/sgsn/gprs_subscriber.c
index 416e6a4..460450c 100644
--- a/src/sgsn/gprs_subscriber.c
+++ b/src/sgsn/gprs_subscriber.c
@@ -30,7 +30,7 @@
 #include <osmocom/gsupclient/gsup_client.h>
 
 #include <osmocom/sgsn/sgsn.h>
-#include <osmocom/sgsn/gprs_sgsn.h>
+#include <osmocom/sgsn/mmctx.h>
 #include <osmocom/sgsn/gprs_gmm.h>
 #include <osmocom/sgsn/gprs_utils.h>
 
diff --git a/src/sgsn/gprs_sgsn.c b/src/sgsn/mmctx.c
similarity index 76%
rename from src/sgsn/gprs_sgsn.c
rename to src/sgsn/mmctx.c
index 55e1cb2..c40db21 100644
--- a/src/sgsn/gprs_sgsn.c
+++ b/src/sgsn/mmctx.c
@@ -1,4 +1,4 @@
-/* GPRS SGSN functionality */
+/* Mobility Management context */
 
 /* (C) 2009 by Harald Welte <laforge@gnumonks.org>
  *
@@ -38,7 +38,7 @@
 
 #include <osmocom/sgsn/gprs_subscriber.h>
 #include <osmocom/sgsn/debug.h>
-#include <osmocom/sgsn/gprs_sgsn.h>
+#include <osmocom/sgsn/mmctx.h>
 #include <osmocom/sgsn/sgsn.h>
 #include <osmocom/sgsn/gprs_gmm.h>
 #include <osmocom/sgsn/gprs_sm.h>
@@ -60,10 +60,6 @@
 
 #include "../../config.h"
 
-#define GPRS_LLME_CHECK_TICK 30
-
-extern struct osmo_tdef sgsn_T_defs[];
-
 LLIST_HEAD(sgsn_mm_ctxts);
 
 const struct value_string sgsn_ran_type_names[] = {
@@ -97,40 +93,6 @@
 	.class_id = OSMO_STATS_CLASS_SUBSCRIBER,
 };
 
-static const struct rate_ctr_desc sgsn_ctr_description[] = {
-	{ "llc:dl_bytes", "Count sent LLC bytes before giving it to the bssgp layer" },
-	{ "llc:ul_bytes", "Count successful received LLC bytes (encrypt & fcs correct)" },
-	{ "llc:dl_packets", "Count successful sent LLC packets before giving it to the bssgp layer" },
-	{ "llc:ul_packets", "Count successful received LLC packets (encrypt & fcs correct)" },
-	{ "gprs:attach_requested", "Received attach requests" },
-	{ "gprs:attach_accepted", "Sent attach accepts" },
-	{ "gprs:attach_rejected", "Sent attach rejects" },
-	{ "gprs:detach_requested", "Received detach requests" },
-	{ "gprs:detach_acked", "Sent detach acks" },
-	{ "gprs:routing_area_requested", "Received routing area requests" },
-	{ "gprs:routing_area_requested", "Sent routing area acks" },
-	{ "gprs:routing_area_requested", "Sent routing area rejects" },
-	{ "pdp:activate_requested", "Received activate requests" },
-	{ "pdp:activate_rejected", "Sent activate rejects" },
-	{ "pdp:activate_accepted", "Sent activate accepts" },
-	{ "pdp:request_activated", "unused" },
-	{ "pdp:request_activate_rejected", "unused" },
-	{ "pdp:modify_requested", "unused" },
-	{ "pdp:modify_accepted", "unused" },
-	{ "pdp:dl_deactivate_requested", "Sent deactivate requests" },
-	{ "pdp:dl_deactivate_accepted", "Sent deactivate accepted" },
-	{ "pdp:ul_deactivate_requested", "Received deactivate requests" },
-	{ "pdp:ul_deactivate_accepted", "Received deactivate accepts" },
-};
-
-static const struct rate_ctr_group_desc sgsn_ctrg_desc = {
-	"sgsn",
-	"SGSN Overall Statistics",
-	OSMO_STATS_CLASS_GLOBAL,
-	ARRAY_SIZE(sgsn_ctr_description),
-	sgsn_ctr_description,
-};
-
 /* look-up an SGSN MM context based on Iu UE context (struct ue_conn_ctx)*/
 struct sgsn_mm_ctx *sgsn_mm_ctx_by_ue_ctx(const void *uectx)
 {
@@ -622,121 +584,3 @@
 
 	return ggsn;
 }
-
-static void sgsn_llme_cleanup_free(struct gprs_llc_llme *llme)
-{
-	struct sgsn_mm_ctx *mmctx = NULL;
-
-	llist_for_each_entry(mmctx, &sgsn_mm_ctxts, list) {
-		if (llme == mmctx->gb.llme) {
-			gsm0408_gprs_access_cancelled(mmctx, SGSN_ERROR_CAUSE_NONE);
-			return;
-		}
-	}
-
-	/* No MM context found */
-	LOGP(DGPRS, LOGL_INFO, "Deleting orphaned LLME, TLLI 0x%08x\n",
-	     llme->tlli);
-	gprs_llgmm_unassign(llme);
-}
-
-static void sgsn_llme_check_cb(void *data_)
-{
-	struct gprs_llc_llme *llme, *llme_tmp;
-	struct timespec now_tp;
-	time_t now, age;
-	time_t max_age = gprs_max_time_to_idle();
-
-	int rc;
-
-	rc = osmo_clock_gettime(CLOCK_MONOTONIC, &now_tp);
-	OSMO_ASSERT(rc >= 0);
-	now = now_tp.tv_sec;
-
-	LOGP(DGPRS, LOGL_DEBUG,
-	     "Checking for inactive LLMEs, time = %u\n", (unsigned)now);
-
-	llist_for_each_entry_safe(llme, llme_tmp, &gprs_llc_llmes, list) {
-		if (llme->age_timestamp == GPRS_LLME_RESET_AGE)
-			llme->age_timestamp = now;
-
-		age = now - llme->age_timestamp;
-
-		if (age > max_age || age < 0) {
-			LOGP(DGPRS, LOGL_INFO,
-			     "Inactivity timeout for TLLI 0x%08x, age %d\n",
-			     llme->tlli, (int)age);
-			sgsn_llme_cleanup_free(llme);
-		}
-	}
-
-	osmo_timer_schedule(&sgsn->llme_timer, GPRS_LLME_CHECK_TICK, 0);
-}
-
-static int sgsn_instance_talloc_destructor(struct sgsn_instance *sgi)
-{
-	sgsn_cdr_release(sgi);
-	osmo_timer_del(&sgi->llme_timer);
-	rate_ctr_group_free(sgi->rate_ctrs);
-	return 0;
-}
-
-struct sgsn_instance *sgsn_instance_alloc(void *talloc_ctx)
-{
-	struct sgsn_instance *inst;
-	inst = talloc_zero(talloc_ctx, struct sgsn_instance);
-
-	talloc_set_destructor(inst, sgsn_instance_talloc_destructor);
-
-	inst->cfg.gtp_statedir = talloc_strdup(inst, "./");
-	inst->cfg.auth_policy = SGSN_AUTH_POLICY_CLOSED;
-	inst->cfg.require_authentication = true; /* only applies if auth_policy is REMOTE */
-	inst->cfg.gsup_server_port = OSMO_GSUP_PORT;
-
-	inst->cfg.T_defs = sgsn_T_defs;
-	osmo_tdefs_reset(inst->cfg.T_defs);
-	inst->cfg.T_defs_gtp = gtp_T_defs;
-	osmo_tdefs_reset(inst->cfg.T_defs_gtp);
-
-	inst->rate_ctrs = rate_ctr_group_alloc(inst, &sgsn_ctrg_desc, 0);
-	OSMO_ASSERT(inst->rate_ctrs);
-
-	INIT_LLIST_HEAD(&inst->apn_list);
-	INIT_LLIST_HEAD(&inst->ggsn_list);
-	INIT_LLIST_HEAD(&inst->mme_list);
-	INIT_LLIST_HEAD(&inst->pdp_list);
-
-	osmo_timer_setup(&inst->llme_timer, sgsn_llme_check_cb, NULL);
-	osmo_timer_schedule(&inst->llme_timer, GPRS_LLME_CHECK_TICK, 0);
-	/* These are mostly setting up stuff not related to VTY cfg, so they can be set up here: */
-	sgsn_auth_init(inst);
-	sgsn_cdr_init(inst);
-	return inst;
-}
-
-/* To be called after VTY config parsing: */
-int sgsn_inst_init(struct sgsn_instance *sgsn)
-{
-	int rc;
-
-	/* start control interface after reading config for
-	 * ctrl_vty_get_bind_addr() */
-	sgsn->ctrlh = ctrl_interface_setup(NULL, OSMO_CTRL_PORT_SGSN, NULL);
-	if (!sgsn->ctrlh) {
-		LOGP(DGPRS, LOGL_ERROR, "Failed to create CTRL interface.\n");
-		return -EIO;
-	}
-
-	rc = sgsn_ctrl_cmds_install();
-	if (rc != 0) {
-		LOGP(DGPRS, LOGL_ERROR, "Failed to install CTRL commands.\n");
-		return -EFAULT;
-	}
-
-	rc = gprs_subscr_init(sgsn);
-	if (rc < 0) {
-		LOGP(DGPRS, LOGL_FATAL, "Cannot set up SGSN\n");
-		return rc;
-	}
-	return 0;
-}
diff --git a/src/sgsn/pdpctx.c b/src/sgsn/pdpctx.c
index 77146fc..70fba20 100644
--- a/src/sgsn/pdpctx.c
+++ b/src/sgsn/pdpctx.c
@@ -28,7 +28,7 @@
 #include <osmocom/core/stats.h>
 
 #include <osmocom/sgsn/pdpctx.h>
-#include <osmocom/sgsn/gprs_sgsn.h>
+#include <osmocom/sgsn/mmctx.h>
 #include <osmocom/sgsn/sgsn.h>
 #include <osmocom/sgsn/debug.h>
 #include <osmocom/sgsn/signal.h>
diff --git a/src/sgsn/sgsn.c b/src/sgsn/sgsn.c
new file mode 100644
index 0000000..f394db8
--- /dev/null
+++ b/src/sgsn/sgsn.c
@@ -0,0 +1,214 @@
+/* SGSN instance */
+
+/* (C) 2009 by Harald Welte <laforge@gnumonks.org>
+ *
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdint.h>
+
+#include <osmocom/core/linuxlist.h>
+#include <osmocom/core/talloc.h>
+#include <osmocom/core/timer.h>
+#include <osmocom/core/rate_ctr.h>
+#include <osmocom/core/stats.h>
+#include <osmocom/core/backtrace.h>
+#include <osmocom/ctrl/control_if.h>
+#include <osmocom/ctrl/ports.h>
+#include <osmocom/gprs/gprs_ns2.h>
+#include <osmocom/gprs/gprs_bssgp.h>
+#include <osmocom/gsm/protocol/gsm_04_08_gprs.h>
+#include <osmocom/gsm/apn.h>
+#include <osmocom/gsm/gsm_utils.h>
+#include <osmocom/gsm/gsup.h>
+
+#include <osmocom/sgsn/gprs_subscriber.h>
+#include <osmocom/sgsn/debug.h>
+#include <osmocom/sgsn/sgsn.h>
+#include <osmocom/sgsn/gprs_gmm.h>
+#include <osmocom/sgsn/gprs_sm.h>
+#include <osmocom/sgsn/gprs_utils.h>
+#include <osmocom/sgsn/signal.h>
+#include <osmocom/sgsn/gprs_gmm_attach.h>
+#include <osmocom/sgsn/gprs_mm_state_gb_fsm.h>
+#include <osmocom/sgsn/gprs_mm_state_iu_fsm.h>
+#include <osmocom/sgsn/gprs_gmm_fsm.h>
+#include <osmocom/sgsn/gprs_llc.h>
+#include <osmocom/sgsn/gprs_sndcp.h>
+#include <osmocom/sgsn/gtp_ggsn.h>
+#include <osmocom/sgsn/gtp.h>
+#include <osmocom/sgsn/pdpctx.h>
+
+#include <pdp.h>
+
+#include <time.h>
+
+#define GPRS_LLME_CHECK_TICK 30
+
+extern struct osmo_tdef sgsn_T_defs[];
+
+static const struct rate_ctr_desc sgsn_ctr_description[] = {
+	{ "llc:dl_bytes", "Count sent LLC bytes before giving it to the bssgp layer" },
+	{ "llc:ul_bytes", "Count successful received LLC bytes (encrypt & fcs correct)" },
+	{ "llc:dl_packets", "Count successful sent LLC packets before giving it to the bssgp layer" },
+	{ "llc:ul_packets", "Count successful received LLC packets (encrypt & fcs correct)" },
+	{ "gprs:attach_requested", "Received attach requests" },
+	{ "gprs:attach_accepted", "Sent attach accepts" },
+	{ "gprs:attach_rejected", "Sent attach rejects" },
+	{ "gprs:detach_requested", "Received detach requests" },
+	{ "gprs:detach_acked", "Sent detach acks" },
+	{ "gprs:routing_area_requested", "Received routing area requests" },
+	{ "gprs:routing_area_requested", "Sent routing area acks" },
+	{ "gprs:routing_area_requested", "Sent routing area rejects" },
+	{ "pdp:activate_requested", "Received activate requests" },
+	{ "pdp:activate_rejected", "Sent activate rejects" },
+	{ "pdp:activate_accepted", "Sent activate accepts" },
+	{ "pdp:request_activated", "unused" },
+	{ "pdp:request_activate_rejected", "unused" },
+	{ "pdp:modify_requested", "unused" },
+	{ "pdp:modify_accepted", "unused" },
+	{ "pdp:dl_deactivate_requested", "Sent deactivate requests" },
+	{ "pdp:dl_deactivate_accepted", "Sent deactivate accepted" },
+	{ "pdp:ul_deactivate_requested", "Received deactivate requests" },
+	{ "pdp:ul_deactivate_accepted", "Received deactivate accepts" },
+};
+
+static const struct rate_ctr_group_desc sgsn_ctrg_desc = {
+	"sgsn",
+	"SGSN Overall Statistics",
+	OSMO_STATS_CLASS_GLOBAL,
+	ARRAY_SIZE(sgsn_ctr_description),
+	sgsn_ctr_description,
+};
+
+static void sgsn_llme_cleanup_free(struct gprs_llc_llme *llme)
+{
+	struct sgsn_mm_ctx *mmctx = NULL;
+
+	llist_for_each_entry(mmctx, &sgsn_mm_ctxts, list) {
+		if (llme == mmctx->gb.llme) {
+			gsm0408_gprs_access_cancelled(mmctx, SGSN_ERROR_CAUSE_NONE);
+			return;
+		}
+	}
+
+	/* No MM context found */
+	LOGP(DGPRS, LOGL_INFO, "Deleting orphaned LLME, TLLI 0x%08x\n",
+	     llme->tlli);
+	gprs_llgmm_unassign(llme);
+}
+
+static void sgsn_llme_check_cb(void *data_)
+{
+	struct gprs_llc_llme *llme, *llme_tmp;
+	struct timespec now_tp;
+	time_t now, age;
+	time_t max_age = gprs_max_time_to_idle();
+
+	int rc;
+
+	rc = osmo_clock_gettime(CLOCK_MONOTONIC, &now_tp);
+	OSMO_ASSERT(rc >= 0);
+	now = now_tp.tv_sec;
+
+	LOGP(DGPRS, LOGL_DEBUG,
+	     "Checking for inactive LLMEs, time = %u\n", (unsigned)now);
+
+	llist_for_each_entry_safe(llme, llme_tmp, &gprs_llc_llmes, list) {
+		if (llme->age_timestamp == GPRS_LLME_RESET_AGE)
+			llme->age_timestamp = now;
+
+		age = now - llme->age_timestamp;
+
+		if (age > max_age || age < 0) {
+			LOGP(DGPRS, LOGL_INFO,
+			     "Inactivity timeout for TLLI 0x%08x, age %d\n",
+			     llme->tlli, (int)age);
+			sgsn_llme_cleanup_free(llme);
+		}
+	}
+
+	osmo_timer_schedule(&sgsn->llme_timer, GPRS_LLME_CHECK_TICK, 0);
+}
+
+static int sgsn_instance_talloc_destructor(struct sgsn_instance *sgi)
+{
+	sgsn_cdr_release(sgi);
+	osmo_timer_del(&sgi->llme_timer);
+	rate_ctr_group_free(sgi->rate_ctrs);
+	return 0;
+}
+
+struct sgsn_instance *sgsn_instance_alloc(void *talloc_ctx)
+{
+	struct sgsn_instance *inst;
+	inst = talloc_zero(talloc_ctx, struct sgsn_instance);
+
+	talloc_set_destructor(inst, sgsn_instance_talloc_destructor);
+
+	inst->cfg.gtp_statedir = talloc_strdup(inst, "./");
+	inst->cfg.auth_policy = SGSN_AUTH_POLICY_CLOSED;
+	inst->cfg.require_authentication = true; /* only applies if auth_policy is REMOTE */
+	inst->cfg.gsup_server_port = OSMO_GSUP_PORT;
+
+	inst->cfg.T_defs = sgsn_T_defs;
+	osmo_tdefs_reset(inst->cfg.T_defs);
+	inst->cfg.T_defs_gtp = gtp_T_defs;
+	osmo_tdefs_reset(inst->cfg.T_defs_gtp);
+
+	inst->rate_ctrs = rate_ctr_group_alloc(inst, &sgsn_ctrg_desc, 0);
+	OSMO_ASSERT(inst->rate_ctrs);
+
+	INIT_LLIST_HEAD(&inst->apn_list);
+	INIT_LLIST_HEAD(&inst->ggsn_list);
+	INIT_LLIST_HEAD(&inst->mme_list);
+	INIT_LLIST_HEAD(&inst->pdp_list);
+
+	osmo_timer_setup(&inst->llme_timer, sgsn_llme_check_cb, NULL);
+	osmo_timer_schedule(&inst->llme_timer, GPRS_LLME_CHECK_TICK, 0);
+	/* These are mostly setting up stuff not related to VTY cfg, so they can be set up here: */
+	sgsn_auth_init(inst);
+	sgsn_cdr_init(inst);
+	return inst;
+}
+
+/* To be called after VTY config parsing: */
+int sgsn_inst_init(struct sgsn_instance *sgsn)
+{
+	int rc;
+
+	/* start control interface after reading config for
+	 * ctrl_vty_get_bind_addr() */
+	sgsn->ctrlh = ctrl_interface_setup(NULL, OSMO_CTRL_PORT_SGSN, NULL);
+	if (!sgsn->ctrlh) {
+		LOGP(DGPRS, LOGL_ERROR, "Failed to create CTRL interface.\n");
+		return -EIO;
+	}
+
+	rc = sgsn_ctrl_cmds_install();
+	if (rc != 0) {
+		LOGP(DGPRS, LOGL_ERROR, "Failed to install CTRL commands.\n");
+		return -EFAULT;
+	}
+
+	rc = gprs_subscr_init(sgsn);
+	if (rc < 0) {
+		LOGP(DGPRS, LOGL_FATAL, "Cannot set up SGSN\n");
+		return rc;
+	}
+	return 0;
+}
diff --git a/src/sgsn/sgsn_auth.c b/src/sgsn/sgsn_auth.c
index b8d8035..cbff6f8 100644
--- a/src/sgsn/sgsn_auth.c
+++ b/src/sgsn/sgsn_auth.c
@@ -22,7 +22,7 @@
 #include <osmocom/gsm/protocol/gsm_04_08_gprs.h>
 #include <osmocom/core/utils.h>
 #include <osmocom/sgsn/sgsn.h>
-#include <osmocom/sgsn/gprs_sgsn.h>
+#include <osmocom/sgsn/mmctx.h>
 #include <osmocom/sgsn/gprs_gmm.h>
 #include <osmocom/sgsn/gprs_subscriber.h>
 #include <osmocom/sgsn/debug.h>
diff --git a/src/sgsn/sgsn_cdr.c b/src/sgsn/sgsn_cdr.c
index db32644..1536c13 100644
--- a/src/sgsn/sgsn_cdr.c
+++ b/src/sgsn/sgsn_cdr.c
@@ -29,6 +29,7 @@
 #include <osmocom/sgsn/vty.h>
 #include <osmocom/sgsn/gtp_ggsn.h>
 #include <osmocom/sgsn/pdpctx.h>
+#include <osmocom/sgsn/mmctx.h>
 
 #include <gtp.h>
 #include <pdp.h>
diff --git a/src/sgsn/sgsn_ctrl.c b/src/sgsn/sgsn_ctrl.c
index 8961f37..15c15ce 100644
--- a/src/sgsn/sgsn_ctrl.c
+++ b/src/sgsn/sgsn_ctrl.c
@@ -21,7 +21,7 @@
 
 #include <osmocom/ctrl/control_if.h>
 #include <osmocom/ctrl/control_cmd.h>
-#include <osmocom/sgsn/gprs_sgsn.h>
+#include <osmocom/sgsn/mmctx.h>
 #include <osmocom/sgsn/pdpctx.h>
 #include <osmocom/sgsn/sgsn.h>
 #include <osmocom/sgsn/debug.h>
diff --git a/src/sgsn/sgsn_libgtp.c b/src/sgsn/sgsn_libgtp.c
index e2d5670..7c08e6f 100644
--- a/src/sgsn/sgsn_libgtp.c
+++ b/src/sgsn/sgsn_libgtp.c
@@ -47,7 +47,7 @@
 #include <osmocom/sgsn/sgsn.h>
 #include <osmocom/sgsn/gprs_ns.h>
 #include <osmocom/sgsn/gprs_llc.h>
-#include <osmocom/sgsn/gprs_sgsn.h>
+#include <osmocom/sgsn/mmctx.h>
 #include <osmocom/sgsn/gprs_gmm.h>
 #include <osmocom/sgsn/gprs_sm.h>
 #include <osmocom/sgsn/gprs_subscriber.h>
diff --git a/src/sgsn/sgsn_vty.c b/src/sgsn/sgsn_vty.c
index fa62561..4a1d085 100644
--- a/src/sgsn/sgsn_vty.c
+++ b/src/sgsn/sgsn_vty.c
@@ -38,7 +38,7 @@
 #include <osmocom/sgsn/gprs_ns.h>
 #include <osmocom/sgsn/gprs_gmm.h>
 #include <osmocom/sgsn/gprs_bssgp.h>
-#include <osmocom/sgsn/gprs_sgsn.h>
+#include <osmocom/sgsn/mmctx.h>
 #include <osmocom/sgsn/gtp_ggsn.h>
 #include <osmocom/sgsn/gtp_mme.h>
 #include <osmocom/sgsn/vty.h>
