Simplify the logic of accessing codec function for specific TYPE
diff --git a/skeletons/ANY.c b/skeletons/ANY.c
index 30f1e29..7989559 100644
--- a/skeletons/ANY.c
+++ b/skeletons/ANY.c
@@ -6,7 +6,7 @@
 #include <ANY.h>
 #include <errno.h>
 
-static asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs = {
+asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs = {
 	sizeof(ANY_t),
 	offsetof(ANY_t, _asn_ctx),
 	ASN_OSUBV_ANY
diff --git a/skeletons/ANY.h b/skeletons/ANY.h
index b7d92fa..3df5b76 100644
--- a/skeletons/ANY.h
+++ b/skeletons/ANY.h
@@ -19,6 +19,7 @@
 } ANY_t;
 
 extern asn_TYPE_descriptor_t asn_DEF_ANY;
+extern asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs;
 
 asn_struct_free_f ANY_free;
 asn_struct_print_f ANY_print;
@@ -26,6 +27,13 @@
 der_type_encoder_f ANY_encode_der;
 xer_type_encoder_f ANY_encode_xer;
 
+#define ANY_free         OCTET_STRING_free
+#define ANY_print        OCTET_STRING_print
+#define ANY_constraint   asn_generic_no_constraint
+#define ANY_decode_ber   OCTET_STRING_decode_ber
+#define ANY_encode_der   OCTET_STRING_encode_der
+#define ANY_decode_xer   OCTET_STRING_decode_xer_hex
+
 /******************************
  * Handy conversion routines. *
  ******************************/
diff --git a/skeletons/BIT_STRING.c b/skeletons/BIT_STRING.c
index 4aa1548..f247359 100644
--- a/skeletons/BIT_STRING.c
+++ b/skeletons/BIT_STRING.c
@@ -12,7 +12,7 @@
 static const ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
 };
-static asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = {
+asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = {
 	sizeof(BIT_STRING_t),
 	offsetof(BIT_STRING_t, _asn_ctx),
 	ASN_OSUBV_BIT
diff --git a/skeletons/BIT_STRING.h b/skeletons/BIT_STRING.h
index 732e878..ffca5f7 100644
--- a/skeletons/BIT_STRING.h
+++ b/skeletons/BIT_STRING.h
@@ -21,11 +21,19 @@
 } BIT_STRING_t;
 
 extern asn_TYPE_descriptor_t asn_DEF_BIT_STRING;
+extern asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs;
 
 asn_struct_print_f BIT_STRING_print;	/* Human-readable output */
 asn_constr_check_f BIT_STRING_constraint;
 xer_type_encoder_f BIT_STRING_encode_xer;
 
+#define BIT_STRING_free              OCTET_STRING_free
+#define BIT_STRING_decode_ber        OCTET_STRING_decode_ber
+#define BIT_STRING_encode_der        OCTET_STRING_encode_der
+#define BIT_STRING_decode_xer        OCTET_STRING_decode_xer_binary
+#define BIT_STRING_decode_uper       OCTET_STRING_decode_uper
+#define BIT_STRING_encode_uper       OCTET_STRING_encode_uper
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/BMPString.c b/skeletons/BMPString.c
index cca7d72..26320b0 100644
--- a/skeletons/BMPString.c
+++ b/skeletons/BMPString.c
@@ -13,7 +13,7 @@
 	(ASN_TAG_CLASS_UNIVERSAL | (30 << 2)),	/* [UNIVERSAL 30] IMPLICIT ...*/
 	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))	/* ... OCTET STRING */
 };
-static asn_OCTET_STRING_specifics_t asn_SPC_BMPString_specs = {
+asn_OCTET_STRING_specifics_t asn_SPC_BMPString_specs = {
 	sizeof(BMPString_t),
 	offsetof(BMPString_t, _asn_ctx),
 	ASN_OSUBV_U16	/* 16-bits character */
diff --git a/skeletons/BMPString.h b/skeletons/BMPString.h
index a4725fa..80b0854 100644
--- a/skeletons/BMPString.h
+++ b/skeletons/BMPString.h
@@ -14,11 +14,20 @@
 typedef OCTET_STRING_t BMPString_t;  /* Implemented via OCTET STRING */
 
 extern asn_TYPE_descriptor_t asn_DEF_BMPString;
+extern asn_OCTET_STRING_specifics_t asn_SPC_BMPString_specs;
 
 asn_struct_print_f BMPString_print;	/* Human-readable output */
 xer_type_decoder_f BMPString_decode_xer;
 xer_type_encoder_f BMPString_encode_xer;
 
+#define BMPString_free        OCTET_STRING_free
+#define BMPString_print       BMPString_print
+#define BMPString_constraint  asn_generic_no_constraint
+#define BMPString_decode_ber  OCTET_STRING_decode_ber
+#define BMPString_encode_der  OCTET_STRING_encode_der
+#define BMPString_decode_uper OCTET_STRING_decode_uper
+#define BMPString_encode_uper OCTET_STRING_encode_uper
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/BOOLEAN.h b/skeletons/BOOLEAN.h
index 217d0f1..96e50a4 100644
--- a/skeletons/BOOLEAN.h
+++ b/skeletons/BOOLEAN.h
@@ -29,6 +29,8 @@
 per_type_decoder_f BOOLEAN_decode_uper;
 per_type_encoder_f BOOLEAN_encode_uper;
 
+#define BOOLEAN_constraint     asn_generic_no_constraint
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/ENUMERATED.h b/skeletons/ENUMERATED.h
index 542dcae..8e77736 100644
--- a/skeletons/ENUMERATED.h
+++ b/skeletons/ENUMERATED.h
@@ -18,6 +18,14 @@
 per_type_decoder_f ENUMERATED_decode_uper;
 per_type_encoder_f ENUMERATED_encode_uper;
 
+#define ENUMERATED_free       ASN__PRIMITIVE_TYPE_free
+#define ENUMERATED_print      INTEGER_print
+#define ENUMERATED_constraint asn_generic_no_constraint
+#define ENUMERATED_decode_ber ber_decode_primitive
+#define ENUMERATED_encode_der INTEGER_encode_der
+#define ENUMERATED_decode_xer INTEGER_decode_xer
+#define ENUMERATED_encode_xer INTEGER_encode_xer
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/GeneralString.h b/skeletons/GeneralString.h
index 70ef1ab..508e224 100644
--- a/skeletons/GeneralString.h
+++ b/skeletons/GeneralString.h
@@ -15,6 +15,16 @@
 
 extern asn_TYPE_descriptor_t asn_DEF_GeneralString;
 
+#define GeneralString_free         OCTET_STRING_free
+#define GeneralString_print        OCTET_STRING_print
+#define GeneralString_constraint   asn_generic_unknown_constraint
+#define GeneralString_decode_ber   OCTET_STRING_decode_ber
+#define GeneralString_encode_der   OCTET_STRING_encode_der
+#define GeneralString_decode_xer   OCTET_STRING_decode_xer_hex
+#define GeneralString_encode_xer   OCTET_STRING_encode_xer
+#define GeneralString_decode_uper  OCTET_STRING_decode_uper
+#define GeneralString_encode_uper  OCTET_STRING_encode_uper
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/GeneralizedTime.h b/skeletons/GeneralizedTime.h
index 1ea06b0..8dd6f27 100644
--- a/skeletons/GeneralizedTime.h
+++ b/skeletons/GeneralizedTime.h
@@ -20,6 +20,12 @@
 der_type_encoder_f GeneralizedTime_encode_der;
 xer_type_encoder_f GeneralizedTime_encode_xer;
 
+#define GeneralizedTime_free           OCTET_STRING_free
+#define GeneralizedTime_decode_ber     OCTET_STRING_decode_ber
+#define GeneralizedTime_decode_xer     OCTET_STRING_decode_xer_utf8
+#define GeneralizedTime_decode_uper    OCTET_STRING_decode_uper
+#define GeneralizedTime_encode_uper    OCTET_STRING_encode_uper
+
 /***********************
  * Some handy helpers. *
  ***********************/
diff --git a/skeletons/GraphicString.h b/skeletons/GraphicString.h
index 7bc9492..3f91b50 100644
--- a/skeletons/GraphicString.h
+++ b/skeletons/GraphicString.h
@@ -15,6 +15,16 @@
 
 extern asn_TYPE_descriptor_t asn_DEF_GraphicString;
 
+#define GraphicString_free         OCTET_STRING_free
+#define GraphicString_print        OCTET_STRING_print
+#define GraphicString_constraint   asn_generic_unknown_constraint
+#define GraphicString_decode_ber   OCTET_STRING_decode_ber
+#define GraphicString_encode_der   OCTET_STRING_encode_der
+#define GraphicString_decode_xer   OCTET_STRING_decode_xer_hex
+#define GraphicString_encode_xer   OCTET_STRING_encode_xer
+#define GraphicString_decode_uper  OCTET_STRING_decode_uper
+#define GraphicString_encode_uper  OCTET_STRING_encode_uper
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/IA5String.h b/skeletons/IA5String.h
index e2a909d..6f53dc8 100644
--- a/skeletons/IA5String.h
+++ b/skeletons/IA5String.h
@@ -20,6 +20,15 @@
 
 asn_constr_check_f IA5String_constraint;
 
+#define IA5String_free           OCTET_STRING_free
+#define IA5String_print          OCTET_STRING_print_utf8
+#define IA5String_decode_ber     OCTET_STRING_decode_ber
+#define IA5String_encode_der     OCTET_STRING_encode_der
+#define IA5String_decode_xer     OCTET_STRING_decode_xer_utf8
+#define IA5String_encode_xer     OCTET_STRING_encode_xer_utf8
+#define IA5String_decode_uper    OCTET_STRING_decode_uper
+#define IA5String_encode_uper    OCTET_STRING_encode_uper
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/ISO646String.h b/skeletons/ISO646String.h
index b42dd0d..6478a2b 100644
--- a/skeletons/ISO646String.h
+++ b/skeletons/ISO646String.h
@@ -16,6 +16,16 @@
 
 extern asn_TYPE_descriptor_t asn_DEF_ISO646String;
 
+#define ISO646String_free         OCTET_STRING_free
+#define ISO646String_print        OCTET_STRING_print_utf8
+#define ISO646String_constraint   VisibleString_constraint
+#define ISO646String_decode_ber   OCTET_STRING_decode_ber
+#define ISO646String_encode_der   OCTET_STRING_encode_der
+#define ISO646String_decode_xer   OCTET_STRING_decode_xer_utf8
+#define ISO646String_encode_xer   OCTET_STRING_encode_xer_utf8
+#define ISO646String_decode_uper  OCTET_STRING_decode_uper
+#define ISO646String_encode_uper  OCTET_STRING_encode_uper
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/NULL.h b/skeletons/NULL.h
index 131e775..4c9104b 100644
--- a/skeletons/NULL.h
+++ b/skeletons/NULL.h
@@ -6,6 +6,7 @@
 #define	ASN_TYPE_NULL_H
 
 #include <asn_application.h>
+#include <BOOLEAN.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -26,6 +27,10 @@
 per_type_decoder_f NULL_decode_uper;
 per_type_encoder_f NULL_encode_uper;
 
+#define NULL_free		BOOLEAN_free
+#define NULL_decode_ber	BOOLEAN_decode_ber
+#define NULL_constraint	asn_generic_no_constraint
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/NativeEnumerated.h b/skeletons/NativeEnumerated.h
index c59bb1b..aa3019a 100644
--- a/skeletons/NativeEnumerated.h
+++ b/skeletons/NativeEnumerated.h
@@ -25,6 +25,13 @@
 per_type_decoder_f NativeEnumerated_decode_uper;
 per_type_encoder_f NativeEnumerated_encode_uper;
 
+#define NativeEnumerated_free       NativeInteger_free
+#define NativeEnumerated_print      NativeInteger_print
+#define NativeEnumerated_constraint asn_generic_no_constraint
+#define NativeEnumerated_decode_ber NativeInteger_decode_ber
+#define NativeEnumerated_encode_der NativeInteger_encode_der
+#define NativeEnumerated_decode_xer NativeInteger_decode_xer
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/NativeInteger.h b/skeletons/NativeInteger.h
index 2345076..c57aad1 100644
--- a/skeletons/NativeInteger.h
+++ b/skeletons/NativeInteger.h
@@ -32,6 +32,8 @@
 per_type_decoder_f NativeInteger_decode_uper;
 per_type_encoder_f NativeInteger_encode_uper;
 
+#define NativeInteger_constraint  asn_generic_no_constraint
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/NativeReal.h b/skeletons/NativeReal.h
index 68a81d9..884ff69 100644
--- a/skeletons/NativeReal.h
+++ b/skeletons/NativeReal.h
@@ -28,6 +28,8 @@
 per_type_decoder_f NativeReal_decode_uper;
 per_type_encoder_f NativeReal_encode_uper;
 
+#define NativeReal_constraint  asn_generic_no_constraint
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/NumericString.h b/skeletons/NumericString.h
index 51e24e8..aec4365 100644
--- a/skeletons/NumericString.h
+++ b/skeletons/NumericString.h
@@ -17,6 +17,15 @@
 
 asn_constr_check_f NumericString_constraint;
 
+#define NumericString_free           OCTET_STRING_free
+#define NumericString_print          OCTET_STRING_print_utf8
+#define NumericString_decode_ber     OCTET_STRING_decode_ber
+#define NumericString_encode_der     OCTET_STRING_encode_der
+#define NumericString_decode_xer     OCTET_STRING_decode_xer_utf8
+#define NumericString_encode_xer     OCTET_STRING_encode_xer_utf8
+#define NumericString_decode_uper    OCTET_STRING_decode_uper
+#define NumericString_encode_uper    OCTET_STRING_encode_uper
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/OBJECT_IDENTIFIER.h b/skeletons/OBJECT_IDENTIFIER.h
index c2c6373..9dbadea 100644
--- a/skeletons/OBJECT_IDENTIFIER.h
+++ b/skeletons/OBJECT_IDENTIFIER.h
@@ -23,6 +23,12 @@
 xer_type_decoder_f OBJECT_IDENTIFIER_decode_xer;
 xer_type_encoder_f OBJECT_IDENTIFIER_encode_xer;
 
+#define OBJECT_IDENTIFIER_free           ASN__PRIMITIVE_TYPE_free
+#define OBJECT_IDENTIFIER_decode_ber     ber_decode_primitive
+#define OBJECT_IDENTIFIER_encode_der     der_encode_primitive
+#define OBJECT_IDENTIFIER_decode_uper    OCTET_STRING_decode_uper
+#define OBJECT_IDENTIFIER_encode_uper    OCTET_STRING_encode_uper
+
 /**********************************
  * Some handy conversion routines *
  **********************************/
diff --git a/skeletons/OCTET_STRING.c b/skeletons/OCTET_STRING.c
index d9a8c8b..f5f1cce 100644
--- a/skeletons/OCTET_STRING.c
+++ b/skeletons/OCTET_STRING.c
@@ -14,7 +14,7 @@
 static const ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
 };
-static asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = {
+asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = {
 	sizeof(OCTET_STRING_t),
 	offsetof(OCTET_STRING_t, _asn_ctx),
 	ASN_OSUBV_STR
diff --git a/skeletons/OCTET_STRING.h b/skeletons/OCTET_STRING.h
index 7261992..59f8848 100644
--- a/skeletons/OCTET_STRING.h
+++ b/skeletons/OCTET_STRING.h
@@ -35,6 +35,9 @@
 per_type_decoder_f OCTET_STRING_decode_uper;
 per_type_encoder_f OCTET_STRING_encode_uper;
 
+#define OCTET_STRING_constraint  asn_generic_no_constraint
+#define OCTET_STRING_decode_xer  OCTET_STRING_decode_xer_hex
+
 /******************************
  * Handy conversion routines. *
  ******************************/
@@ -81,6 +84,8 @@
 	} subvariant;
 } asn_OCTET_STRING_specifics_t;
 
+extern asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs;
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/ObjectDescriptor.h b/skeletons/ObjectDescriptor.h
index fa1753e..d88e761 100644
--- a/skeletons/ObjectDescriptor.h
+++ b/skeletons/ObjectDescriptor.h
@@ -15,6 +15,16 @@
 
 extern asn_TYPE_descriptor_t asn_DEF_ObjectDescriptor;
 
+#define ObjectDescriptor_free         OCTET_STRING_free
+#define ObjectDescriptor_print        OCTET_STRING_print_utf8
+#define ObjectDescriptor_constraint   asn_generic_unknown_constraint
+#define ObjectDescriptor_decode_ber   OCTET_STRING_decode_ber
+#define ObjectDescriptor_encode_der   OCTET_STRING_encode_der
+#define ObjectDescriptor_decode_xer   OCTET_STRING_decode_xer_utf8
+#define ObjectDescriptor_encode_xer   OCTET_STRING_encode_xer_utf8
+#define ObjectDescriptor_decode_uper  OCTET_STRING_decode_uper
+#define ObjectDescriptor_encode_uper  OCTET_STRING_encode_uper
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/PrintableString.h b/skeletons/PrintableString.h
index 2ece440..19a6bbb 100644
--- a/skeletons/PrintableString.h
+++ b/skeletons/PrintableString.h
@@ -17,6 +17,15 @@
 
 asn_constr_check_f PrintableString_constraint;
 
+#define PrintableString_free           OCTET_STRING_free
+#define PrintableString_print          OCTET_STRING_print_utf8
+#define PrintableString_decode_ber     OCTET_STRING_decode_ber
+#define PrintableString_encode_der     OCTET_STRING_encode_der
+#define PrintableString_decode_xer     OCTET_STRING_decode_xer_utf8
+#define PrintableString_encode_xer     OCTET_STRING_encode_xer_utf8
+#define PrintableString_decode_uper    OCTET_STRING_decode_uper
+#define PrintableString_encode_uper    OCTET_STRING_encode_uper
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/REAL.h b/skeletons/REAL.h
index af3e84c..668f786 100644
--- a/skeletons/REAL.h
+++ b/skeletons/REAL.h
@@ -22,6 +22,11 @@
 per_type_decoder_f REAL_decode_uper;
 per_type_encoder_f REAL_encode_uper;
 
+#define REAL_free          ASN__PRIMITIVE_TYPE_free,
+#define REAL_constraint    asn_generic_no_constraint
+#define REAL_decode_ber    ber_decode_primitive
+#define REAL_encode_der    der_encode_primitive
+
 /***********************************
  * Some handy conversion routines. *
  ***********************************/
diff --git a/skeletons/RELATIVE-OID.h b/skeletons/RELATIVE-OID.h
index 65acaab..bd3a9a3 100644
--- a/skeletons/RELATIVE-OID.h
+++ b/skeletons/RELATIVE-OID.h
@@ -20,6 +20,13 @@
 xer_type_decoder_f RELATIVE_OID_decode_xer;
 xer_type_encoder_f RELATIVE_OID_encode_xer;
 
+#define RELATIVE_OID_free         ASN__PRIMITIVE_TYPE_free
+#define RELATIVE_OID_constraint   asn_generic_no_constraint
+#define RELATIVE_OID_decode_ber   ber_decode_primitive
+#define RELATIVE_OID_encode_der   der_encode_primitive
+#define RELATIVE_OID_decode_uper  OCTET_STRING_decode_uper
+#define RELATIVE_OID_encode_uper  OCTET_STRING_encode_uper
+
 /**********************************
  * Some handy conversion routines *
  **********************************/
diff --git a/skeletons/T61String.h b/skeletons/T61String.h
index f706338..6a8b874 100644
--- a/skeletons/T61String.h
+++ b/skeletons/T61String.h
@@ -15,6 +15,16 @@
 
 extern asn_TYPE_descriptor_t asn_DEF_T61String;
 
+#define T61String_free         OCTET_STRING_free
+#define T61String_print        OCTET_STRING_print
+#define T61String_constraint   asn_generic_unknown_constraint
+#define T61String_decode_ber   OCTET_STRING_decode_ber
+#define T61String_encode_der   OCTET_STRING_encode_der
+#define T61String_decode_xer   OCTET_STRING_decode_xer_hex
+#define T61String_encode_xer   OCTET_STRING_encode_xer
+#define T61String_decode_uper  OCTET_STRING_decode_uper
+#define T61String_encode_uper  OCTET_STRING_encode_uper
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/TeletexString.h b/skeletons/TeletexString.h
index ffd0f52..cec5548 100644
--- a/skeletons/TeletexString.h
+++ b/skeletons/TeletexString.h
@@ -15,6 +15,16 @@
 
 extern asn_TYPE_descriptor_t asn_DEF_TeletexString;
 
+#define TeletexString_free           OCTET_STRING_free
+#define TeletexString_print          OCTET_STRING_print
+#define TeletexString_constraint     asn_generic_unknown_constraint
+#define TeletexString_decode_ber     OCTET_STRING_decode_ber
+#define TeletexString_encode_der     OCTET_STRING_encode_der
+#define TeletexString_decode_xer     OCTET_STRING_decode_xer_hex
+#define TeletexString_encode_xer     OCTET_STRING_encode_xer
+#define TeletexString_decode_uper    OCTET_STRING_decode_uper
+#define TeletexString_encode_uper    OCTET_STRING_encode_uper
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/UTCTime.h b/skeletons/UTCTime.h
index 8035b34..0e02fbe 100644
--- a/skeletons/UTCTime.h
+++ b/skeletons/UTCTime.h
@@ -19,6 +19,13 @@
 asn_constr_check_f UTCTime_constraint;
 xer_type_encoder_f UTCTime_encode_xer;
 
+#define UTCTime_free         OCTET_STRING_free
+#define UTCTime_decode_ber   OCTET_STRING_decode_ber
+#define UTCTime_encode_der   OCTET_STRING_encode_der
+#define UTCTime_decode_xer   OCTET_STRING_decode_xer_utf8
+#define UTCTime_decode_uper  OCTET_STRING_decode_uper
+#define UTCTime_encode_uper  OCTET_STRING_encode_uper
+
 /***********************
  * Some handy helpers. *
  ***********************/
diff --git a/skeletons/UTF8String.h b/skeletons/UTF8String.h
index 3bc8ea6..6713252 100644
--- a/skeletons/UTF8String.h
+++ b/skeletons/UTF8String.h
@@ -18,6 +18,15 @@
 asn_struct_print_f UTF8String_print;
 asn_constr_check_f UTF8String_constraint;
 
+#define UTF8String_free         OCTET_STRING_free
+#define UTF8String_constraint   UTF8String_constraint
+#define UTF8String_decode_ber   OCTET_STRING_decode_ber
+#define UTF8String_encode_der   OCTET_STRING_encode_der
+#define UTF8String_decode_xer   OCTET_STRING_decode_xer_utf8
+#define UTF8String_encode_xer   OCTET_STRING_encode_xer_utf8
+#define UTF8String_decode_uper  OCTET_STRING_decode_uper
+#define UTF8String_encode_uper  OCTET_STRING_encode_uper
+
 /*
  * Returns length of the given UTF-8 string in characters,
  * or a negative error code:
diff --git a/skeletons/UniversalString.c b/skeletons/UniversalString.c
index b1e1d3e..59d8345 100644
--- a/skeletons/UniversalString.c
+++ b/skeletons/UniversalString.c
@@ -13,7 +13,7 @@
 	(ASN_TAG_CLASS_UNIVERSAL | (28 << 2)),	/* [UNIVERSAL 28] IMPLICIT ...*/
 	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))	/* ... OCTET STRING */
 };
-static asn_OCTET_STRING_specifics_t asn_SPC_UniversalString_specs = {
+asn_OCTET_STRING_specifics_t asn_SPC_UniversalString_specs = {
 	sizeof(UniversalString_t),
 	offsetof(UniversalString_t, _asn_ctx),
 	ASN_OSUBV_U32	/* 32-bits character */
diff --git a/skeletons/UniversalString.h b/skeletons/UniversalString.h
index 1476a6f..48eb49d 100644
--- a/skeletons/UniversalString.h
+++ b/skeletons/UniversalString.h
@@ -14,6 +14,7 @@
 typedef OCTET_STRING_t UniversalString_t;  /* Implemented via OCTET STRING */
 
 extern asn_TYPE_descriptor_t asn_DEF_UniversalString;
+extern asn_OCTET_STRING_specifics_t asn_SPC_UniversalString_specs;
 
 asn_struct_print_f UniversalString_print;	/* Human-readable output */
 xer_type_decoder_f UniversalString_decode_xer;
diff --git a/skeletons/VideotexString.h b/skeletons/VideotexString.h
index 3b551c3..a1a6b81 100644
--- a/skeletons/VideotexString.h
+++ b/skeletons/VideotexString.h
@@ -15,6 +15,16 @@
 
 extern asn_TYPE_descriptor_t asn_DEF_VideotexString;
 
+#define VideotexString_free         OCTET_STRING_free
+#define VideotexString_print        OCTET_STRING_print
+#define VideotexString_constraint   asn_generic_unknown_constraint
+#define VideotexString_decode_ber   OCTET_STRING_decode_ber
+#define VideotexString_encode_der   OCTET_STRING_encode_der
+#define VideotexString_decode_xer   OCTET_STRING_decode_xer_hex
+#define VideotexString_encode_xer   OCTET_STRING_encode_xer
+#define VideotexString_decode_uper  OCTET_STRING_decode_uper
+#define VideotexString_encode_uper  OCTET_STRING_encode_uper
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/skeletons/VisibleString.h b/skeletons/VisibleString.h
index 20ba8cc..37080d8 100644
--- a/skeletons/VisibleString.h
+++ b/skeletons/VisibleString.h
@@ -17,6 +17,16 @@
 
 asn_constr_check_f VisibleString_constraint;
 
+#define VisibleString_free         OCTET_STRING_free
+#define VisibleString_print        OCTET_STRING_print
+#define VisibleString_constraint   VisibleString_constraint
+#define VisibleString_decode_ber   OCTET_STRING_decode_ber
+#define VisibleString_encode_der   OCTET_STRING_encode_der
+#define VisibleString_decode_xer   OCTET_STRING_decode_xer_hex
+#define VisibleString_encode_xer   OCTET_STRING_encode_xer
+#define VisibleString_decode_uper  OCTET_STRING_decode_uper
+#define VisibleString_encode_uper  OCTET_STRING_encode_uper
+
 #ifdef __cplusplus
 }
 #endif