diff --git a/include/osmocom/sim/sim.h b/include/osmocom/sim/sim.h
index 80d1fcd..02cdcad 100644
--- a/include/osmocom/sim/sim.h
+++ b/include/osmocom/sim/sim.h
@@ -80,7 +80,7 @@
 		     const struct osim_file_desc *desc,
 		     int len, uint8_t *data);
 	/*! Encode osim_decoded_data into binary file */
-	struct msgb * (*encode)(const struct osim_file *file,
+	struct msgb * (*encode)(const struct osim_file_desc *desc,
 				const struct osim_decoded_data *decoded);
 };
 
@@ -159,7 +159,7 @@
 
 	uint16_t fid;			/*!< File Identifier */
 	uint8_t sfid;			/*!< Short File IDentifier */
-	const char *df_name;
+	const uint8_t *df_name;
 	uint8_t df_name_len;
 
 	const char *short_name;		/*!< Short Name (like EF.ICCID) */
diff --git a/src/sim/card_fs_sim.c b/src/sim/card_fs_sim.c
index e124424..432c945 100644
--- a/src/sim/card_fs_sim.c
+++ b/src/sim/card_fs_sim.c
@@ -240,7 +240,7 @@
 };
 
 /* Chapter 10.3.x Contents of files at the GSM application level */
-const struct osim_file_desc sim_ef_in_gsm[] = {
+static const struct osim_file_desc sim_ef_in_gsm[] = {
 	EF_TRANSP(0x6F05, SFI_NONE, "EF.LP", 0, 1, 16,
 		  "Language preference", &gsm_lp_decode, NULL),
 	EF_TRANSP(0x6F07, SFI_NONE, "EF.IMSI", 0, 9, 9,
@@ -348,7 +348,6 @@
 	EF_TRANSP_N(0x6FD2, SFI_NONE, "EF.MMSUCP", F_OPTIONAL, 1, 64,
 		  "MMS User Connectivity Parameters"),
 };
-const size_t sim_ef_in_gsm_num = ARRAY_SIZE(sim_ef_in_gsm);
 
 /* 10.4.1 Contents of the files at the SoLSA level */
 static const struct osim_file_desc sim_ef_in_solsa[] = {
@@ -372,7 +371,7 @@
 };
 
 /* 10.5 Contents of files at the telecom level */
-const struct osim_file_desc sim_ef_in_telecom[] = {
+static const struct osim_file_desc sim_ef_in_telecom[] = {
 	EF_LIN_FIX_N(0x6F3A, SFI_NONE, "EF.ADN", F_OPTIONAL, 14, 30,
 		"Abbreviated dialling numbers"),
 	EF_LIN_FIX_N(0x6F3B, SFI_NONE, "EF.FDN", F_OPTIONAL, 14, 30,
@@ -408,30 +407,17 @@
 	EF_LIN_FIX_N(0x6F58, SFI_NONE, "EF.CMI", F_OPTIONAL, 1, 17,
 		"Comparison Method Information"),
 };
-const size_t sim_ef_in_telecom_num = ARRAY_SIZE(sim_ef_in_telecom);
 
 /* 10.6.1 Contents of files at the telecom graphics level */
 const struct osim_file_desc sim_ef_in_graphics[] = {
 	EF_LIN_FIX_N(0x4F20, SFI_NONE, "EF.IMG", F_OPTIONAL, 11, 38,
 		"Image"),
 };
-const size_t sim_ef_in_graphics_num = ARRAY_SIZE(sim_ef_in_graphics);
 
-struct osim_card_profile *osim_cprof_sim(void *ctx)
+int osim_int_cprof_add_gsm(struct osim_file_desc *mf)
 {
-	struct osim_card_profile *cprof;
-	struct osim_file_desc *mf, *gsm, *tc;
+	struct osim_file_desc *gsm;
 
-	cprof = talloc_zero(ctx, struct osim_card_profile);
-	cprof->name = "GSM SIM";
-	cprof->sws = sim_card_sws;
-
-	mf = alloc_df(cprof, 0x3f00, "MF");
-
-	cprof->mf = mf;
-
-	/* According to Figure 8 */
-	add_filedesc(mf, sim_ef_in_mf, ARRAY_SIZE(sim_ef_in_mf));
 	gsm = add_df_with_ef(mf, 0x7F20, "DF.GSM", sim_ef_in_gsm,
 			ARRAY_SIZE(sim_ef_in_gsm));
 	/* Chapter 10.2: DFs at the GSM Application Level */
@@ -446,6 +432,13 @@
 	add_df_with_ef(gsm, 0x5F70, "DF.SoLSA", sim_ef_in_solsa,
 			ARRAY_SIZE(sim_ef_in_solsa));
 
+	return 0;
+}
+
+int osim_int_cprof_add_telecom(struct osim_file_desc *mf)
+{
+	struct osim_file_desc *tc;
+
 	tc = add_df_with_ef(mf, 0x7F10, "DF.TELECOM", sim_ef_in_telecom,
 			ARRAY_SIZE(sim_ef_in_telecom));
 	add_df_with_ef(tc, 0x5F50, "DF.GRAPHICS", sim_ef_in_graphics,
@@ -453,5 +446,32 @@
 	add_df_with_ef(mf, 0x7F22, "DF.IS-41", NULL, 0);
 	add_df_with_ef(mf, 0x7F23, "DF.FP-CTS", NULL, 0);	/* TS 11.19 */
 
+	return 0;
+}
+
+struct osim_card_profile *osim_cprof_sim(void *ctx)
+{
+	struct osim_card_profile *cprof;
+	struct osim_file_desc *mf;
+	int rc;
+
+	cprof = talloc_zero(ctx, struct osim_card_profile);
+	cprof->name = "GSM SIM";
+	cprof->sws = sim_card_sws;
+
+	mf = alloc_df(cprof, 0x3f00, "MF");
+
+	cprof->mf = mf;
+
+	/* According to Figure 8 */
+	add_filedesc(mf, sim_ef_in_mf, ARRAY_SIZE(sim_ef_in_mf));
+
+	rc = osim_int_cprof_add_gsm(mf);
+	rc |= osim_int_cprof_add_telecom(mf);
+	if (rc != 0) {
+		talloc_free(cprof);
+		return NULL;
+	}
+
 	return cprof;
 }
diff --git a/src/sim/card_fs_tetra.c b/src/sim/card_fs_tetra.c
index e581875..625adbd 100644
--- a/src/sim/card_fs_tetra.c
+++ b/src/sim/card_fs_tetra.c
@@ -242,7 +242,8 @@
 struct osim_card_profile *osim_cprof_tsim(void *ctx)
 {
 	struct osim_card_profile *cprof;
-	struct osim_file_desc *mf, *tc;
+	struct osim_file_desc *mf;
+	int rc;
 
 	cprof = talloc_zero(ctx, struct osim_card_profile);
 	cprof->name = "TETRA SIM";
@@ -256,10 +257,11 @@
 	add_df_with_ef(mf, 0x7F20, "DF.TETRA", sim_ef_in_tetra,
 			ARRAY_SIZE(sim_ef_in_tetra));
 
-	tc = add_df_with_ef(mf, 0x7F10, "DF.TELECOM", sim_ef_in_telecom,
-			sim_ef_in_telecom_num);
-	add_df_with_ef(tc, 0x5F50, "DF.GRAPHICS", sim_ef_in_graphics,
-			sim_ef_in_graphics_num);
+	rc = osim_int_cprof_add_telecom(mf);
+	if (rc != 0) {
+		talloc_free(cprof);
+		return NULL;
+	}
 
 	return cprof;
 }
diff --git a/src/sim/card_fs_usim.c b/src/sim/card_fs_usim.c
index 02002cd..22c193f 100644
--- a/src/sim/card_fs_usim.c
+++ b/src/sim/card_fs_usim.c
@@ -332,7 +332,8 @@
 struct osim_card_profile *osim_cprof_usim(void *ctx)
 {
 	struct osim_card_profile *cprof;
-	struct osim_file_desc *mf, *gsm, *tc, *uadf;
+	struct osim_file_desc *mf, *uadf;
+	int rc;
 
 	cprof = talloc_zero(ctx, struct osim_card_profile);
 	cprof->name = "3GPP USIM";
@@ -367,16 +368,13 @@
 	/* OMA BCAST Smart Card Profile */
 	add_df_with_ef(uadf, 0x5F80, "DF.BCAST", NULL, 0);
 
-	/* DF.TELECOM as sub-directory of MF */
-	tc = add_df_with_ef(mf, 0x7F10, "DF.TELECOM", sim_ef_in_telecom,
-			sim_ef_in_telecom_num);
-	add_df_with_ef(tc, 0x5F50, "DF.GRAPHICS", sim_ef_in_graphics,
-			sim_ef_in_graphics_num);
-
-	/* DF.GSM for backwards compatibility */
-	gsm = add_df_with_ef(mf, 0x7F20, "DF.GSM", sim_ef_in_gsm,
-			sim_ef_in_gsm_num);
-	/* FIXME: DF's below DF.GSM  (51.011) */
+	/* DF.GSM and DF.TELECOM hierarchy as sub-directory of MF */
+	rc = osim_int_cprof_add_gsm(mf);
+	rc |= osim_int_cprof_add_telecom(mf);
+	if (rc != 0) {
+		talloc_free(cprof);
+		return NULL;
+	}
 
 	return cprof;
 }
diff --git a/src/sim/gsm_int.h b/src/sim/gsm_int.h
index c79a0be..54a2fbf 100644
--- a/src/sim/gsm_int.h
+++ b/src/sim/gsm_int.h
@@ -1,14 +1,8 @@
 #include <sys/types.h>
 #include <osmocom/sim/sim.h>
 
-const struct osim_file_desc *sim_ef_in_gsm;
-const size_t sim_ef_in_gsm_num;
-
-const struct osim_file_desc *sim_ef_in_graphics;
-const size_t sim_ef_in_graphics_num;
-
-const struct osim_file_desc *sim_ef_in_telecom;
-const size_t sim_ef_in_telecom_num;
+int osim_int_cprof_add_gsm(struct osim_file_desc *mf);
+int osim_int_cprof_add_telecom(struct osim_file_desc *mf);
 
 int gsm_hpplmn_decode(struct osim_decoded_data *dd,
 		     const struct osim_file_desc *desc,
