diff --git a/tests/66-ref-simple-OK.asn1.-P b/tests/66-ref-simple-OK.asn1.-P
index 03027f0..025f7e9 100644
--- a/tests/66-ref-simple-OK.asn1.-P
+++ b/tests/66-ref-simple-OK.asn1.-P
@@ -7,7 +7,7 @@
 
 /*** <<< DEPS [T] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T;
+extern asn_TYPE_descriptor_t asn_DEF_T;
 
 /*** <<< TYPE-DECLS [T] >>> ***/
 
@@ -16,29 +16,29 @@
 	A_SET_OF(SimpleType_t) list;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } T_t;
 
 /*** <<< STAT-DEFS [T] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_T[] = {
+static asn_TYPE_member_t asn_MBR_T[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_SimpleType,
+		.type = (void *)&asn_DEF_SimpleType,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn1_DEF_T_tags[] = {
+static ber_tlv_tag_t asn_DEF_T_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
-static asn1_SET_OF_specifics_t asn1_DEF_T_specs = {
+static asn_SET_OF_specifics_t asn_DEF_T_specs = {
 	sizeof(struct T),
-	offsetof(struct T, _ber_dec_ctx),
+	offsetof(struct T, _asn_ctx),
 	1,	/* XER encoding is XMLValueList */
 };
-asn1_TYPE_descriptor_t asn1_DEF_T = {
+asn_TYPE_descriptor_t asn_DEF_T = {
 	"T",
 	SET_OF_free,
 	SET_OF_print,
@@ -48,15 +48,15 @@
 	0,				/* Not implemented yet */
 	SET_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T_tags,
-	sizeof(asn1_DEF_T_tags)
-		/sizeof(asn1_DEF_T_tags[0]), /* 1 */
-	asn1_DEF_T_tags,	/* Same as above */
-	sizeof(asn1_DEF_T_tags)
-		/sizeof(asn1_DEF_T_tags[0]), /* 1 */
-	asn1_MBR_T,
+	asn_DEF_T_tags,
+	sizeof(asn_DEF_T_tags)
+		/sizeof(asn_DEF_T_tags[0]), /* 1 */
+	asn_DEF_T_tags,	/* Same as above */
+	sizeof(asn_DEF_T_tags)
+		/sizeof(asn_DEF_T_tags[0]), /* 1 */
+	asn_MBR_T,
 	1,	/* Single element */
-	&asn1_DEF_T_specs	/* Additional specs */
+	&asn_DEF_T_specs	/* Additional specs */
 };
 
 
@@ -79,7 +79,7 @@
 
 /*** <<< FUNC-DECLS [SimpleType] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_SimpleType;
+extern asn_TYPE_descriptor_t asn_DEF_SimpleType;
 asn_struct_free_f SimpleType_free;
 asn_struct_print_f SimpleType_print;
 asn_constr_check_f SimpleType_constraint;
@@ -90,10 +90,10 @@
 /*** <<< CODE [SimpleType] >>> ***/
 
 int
-SimpleType_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+SimpleType_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	/* Replace with underlying type checker */
-	td->check_constraints = asn1_DEF_ENUMERATED.check_constraints;
+	td->check_constraints = asn_DEF_ENUMERATED.check_constraints;
 	return td->check_constraints(td, sptr, app_errlog, app_key);
 }
 
@@ -102,41 +102,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-SimpleType_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_ENUMERATED.free_struct;
-	td->print_struct   = asn1_DEF_ENUMERATED.print_struct;
-	td->ber_decoder    = asn1_DEF_ENUMERATED.ber_decoder;
-	td->der_encoder    = asn1_DEF_ENUMERATED.der_encoder;
-	td->xer_decoder    = asn1_DEF_ENUMERATED.xer_decoder;
-	td->xer_encoder    = asn1_DEF_ENUMERATED.xer_encoder;
-	td->elements       = asn1_DEF_ENUMERATED.elements;
-	td->elements_count = asn1_DEF_ENUMERATED.elements_count;
-	td->specifics      = asn1_DEF_ENUMERATED.specifics;
+SimpleType_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_ENUMERATED.free_struct;
+	td->print_struct   = asn_DEF_ENUMERATED.print_struct;
+	td->ber_decoder    = asn_DEF_ENUMERATED.ber_decoder;
+	td->der_encoder    = asn_DEF_ENUMERATED.der_encoder;
+	td->xer_decoder    = asn_DEF_ENUMERATED.xer_decoder;
+	td->xer_encoder    = asn_DEF_ENUMERATED.xer_encoder;
+	td->elements       = asn_DEF_ENUMERATED.elements;
+	td->elements_count = asn_DEF_ENUMERATED.elements_count;
+	td->specifics      = asn_DEF_ENUMERATED.specifics;
 }
 
 void
-SimpleType_free(asn1_TYPE_descriptor_t *td,
+SimpleType_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	SimpleType_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-SimpleType_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+SimpleType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	SimpleType_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-SimpleType_decode_ber(asn1_TYPE_descriptor_t *td,
+SimpleType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	SimpleType_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-SimpleType_encode_der(asn1_TYPE_descriptor_t *td,
+SimpleType_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	SimpleType_inherit_TYPE_descriptor(td);
@@ -144,7 +144,7 @@
 }
 
 asn_enc_rval_t
-SimpleType_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+SimpleType_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	SimpleType_inherit_TYPE_descriptor(td);
@@ -154,10 +154,10 @@
 
 /*** <<< STAT-DEFS [SimpleType] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_SimpleType_tags[] = {
+static ber_tlv_tag_t asn_DEF_SimpleType_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_SimpleType = {
+asn_TYPE_descriptor_t asn_DEF_SimpleType = {
 	"SimpleType",
 	SimpleType_free,
 	SimpleType_print,
@@ -167,12 +167,12 @@
 	0,				/* Not implemented yet */
 	SimpleType_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_SimpleType_tags,
-	sizeof(asn1_DEF_SimpleType_tags)
-		/sizeof(asn1_DEF_SimpleType_tags[0]), /* 1 */
-	asn1_DEF_SimpleType_tags,	/* Same as above */
-	sizeof(asn1_DEF_SimpleType_tags)
-		/sizeof(asn1_DEF_SimpleType_tags[0]), /* 1 */
+	asn_DEF_SimpleType_tags,
+	sizeof(asn_DEF_SimpleType_tags)
+		/sizeof(asn_DEF_SimpleType_tags[0]), /* 1 */
+	asn_DEF_SimpleType_tags,	/* Same as above */
+	sizeof(asn_DEF_SimpleType_tags)
+		/sizeof(asn_DEF_SimpleType_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
