diff --git a/skeletons/ANY.c b/skeletons/ANY.c
index b1e35bf..a96aac0 100644
--- a/skeletons/ANY.c
+++ b/skeletons/ANY.c
@@ -133,7 +133,7 @@
 		return 0;
 	} else {
 		/* Remove possibly partially decoded data. */
-		td->free_struct(td, newst, 0);
+		ASN_STRUCT_FREE(*td, newst);
 		return -1;
 	}
 }
diff --git a/skeletons/GeneralizedTime.c b/skeletons/GeneralizedTime.c
index 6934a82..79f62e8 100644
--- a/skeletons/GeneralizedTime.c
+++ b/skeletons/GeneralizedTime.c
@@ -218,8 +218,7 @@
 	
 		rv = OCTET_STRING_encode_xer_utf8(td, sptr, ilevel, flags,
 			cb, app_key);
-		asn_DEF_GeneralizedTime.free_struct(&asn_DEF_GeneralizedTime,
-			gt, 0);
+		ASN_STRUCT_FREE(asn_DEF_GeneralizedTime, gt);
 		return rv;
 	} else {
 		return OCTET_STRING_encode_xer_utf8(td, sptr, ilevel, flags,
diff --git a/skeletons/NativeInteger.c b/skeletons/NativeInteger.c
index b974ebf..2f2b32d 100644
--- a/skeletons/NativeInteger.c
+++ b/skeletons/NativeInteger.c
@@ -194,7 +194,7 @@
 		 */
 		rval.consumed = 0;
 	}
-	asn_DEF_INTEGER.free_struct(&asn_DEF_INTEGER, &st, 1);
+	ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st);
 	return rval;
 }
 
@@ -248,7 +248,7 @@
 			ASN_DEBUG("NativeInteger %s got value %ld",
 				td->name, *native);
 	}
-	asn_DEF_INTEGER.free_struct(&asn_DEF_INTEGER, &tmpint, 1);
+	ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint);
 
 	return rval;
 }
diff --git a/skeletons/NativeReal.c b/skeletons/NativeReal.c
index 9b30368..3e6c254 100644
--- a/skeletons/NativeReal.c
+++ b/skeletons/NativeReal.c
@@ -152,7 +152,7 @@
 	}
 
 	/* Free possibly allocated members of the temporary structure */
-	asn_DEF_REAL.free_struct(&asn_DEF_REAL, &tmp, 1);
+	ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
 
 	return erval;
 }
@@ -190,7 +190,7 @@
 	} else {
 		rval.consumed = 0;
 	}
-	asn_DEF_REAL.free_struct(&asn_DEF_REAL, st, 0);
+	ASN_STRUCT_FREE(asn_DEF_REAL, st);
 	return rval;
 }
 
diff --git a/skeletons/asn-decoder-template.c b/skeletons/asn-decoder-template.c
index 3225b66..dd0efdc 100644
--- a/skeletons/asn-decoder-template.c
+++ b/skeletons/asn-decoder-template.c
@@ -244,7 +244,7 @@
 			break;
 		}
 
-		pduType->free_struct(pduType, structure, 0);
+		ASN_STRUCT_FREE(*pduType, structure);
 	  }
 	}
 
@@ -425,7 +425,7 @@
 	fclose(fp);
 
 	/* Clean up partially decoded structure */
-	pduType->free_struct(pduType, structure, 0);
+	ASN_STRUCT_FREE(*pduType, structure);
 
 	fprintf(stderr, "%s: "
 		"Decode failed past byte %ld: %s\n",
diff --git a/skeletons/constr_CHOICE.c b/skeletons/constr_CHOICE.c
index 33cec7e..26fd8dd 100644
--- a/skeletons/constr_CHOICE.c
+++ b/skeletons/constr_CHOICE.c
@@ -959,10 +959,10 @@
 		if(elm->flags & ATF_POINTER) {
 			memb_ptr = *(void **)((char *)ptr + elm->memb_offset);
 			if(memb_ptr)
-				elm->type->free_struct(elm->type, memb_ptr, 0);
+				ASN_STRUCT_FREE(*elm->type, memb_ptr);
 		} else {
 			memb_ptr = (void *)((char *)ptr + elm->memb_offset);
-			elm->type->free_struct(elm->type, memb_ptr, 1);
+			ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr);
 		}
 	}
 
diff --git a/skeletons/constr_SEQUENCE.c b/skeletons/constr_SEQUENCE.c
index e4a5b08..80cd6af 100644
--- a/skeletons/constr_SEQUENCE.c
+++ b/skeletons/constr_SEQUENCE.c
@@ -958,10 +958,10 @@
 		if(elm->flags & ATF_POINTER) {
 			memb_ptr = *(void **)((char *)sptr + elm->memb_offset);
 			if(memb_ptr)
-				elm->type->free_struct(elm->type, memb_ptr, 0);
+				ASN_STRUCT_FREE(*elm->type, memb_ptr);
 		} else {
 			memb_ptr = (void *)((char *)sptr + elm->memb_offset);
-			elm->type->free_struct(elm->type, memb_ptr, 1);
+			ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr);
 		}
 	}
 
diff --git a/skeletons/constr_SET.c b/skeletons/constr_SET.c
index e83abd7..bb99eed 100644
--- a/skeletons/constr_SET.c
+++ b/skeletons/constr_SET.c
@@ -924,10 +924,10 @@
 		if(elm->flags & ATF_POINTER) {
 			memb_ptr = *(void **)((char *)ptr + elm->memb_offset);
 			if(memb_ptr)
-				elm->type->free_struct(elm->type, memb_ptr, 0);
+				ASN_STRUCT_FREE(*elm->type, memb_ptr);
 		} else {
 			memb_ptr = (void *)((char *)ptr + elm->memb_offset);
-			elm->type->free_struct(elm->type, memb_ptr, 1);
+			ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr);
 		}
 	}
 
diff --git a/skeletons/constr_SET_OF.c b/skeletons/constr_SET_OF.c
index 7ca23a4..bb6d2d3 100644
--- a/skeletons/constr_SET_OF.c
+++ b/skeletons/constr_SET_OF.c
@@ -798,7 +798,7 @@
 		for(i = 0; i < list->count; i++) {
 			void *memb_ptr = list->array[i];
 			if(memb_ptr)
-			elm->type->free_struct(elm->type, memb_ptr, 0);
+			ASN_STRUCT_FREE(*elm->type, memb_ptr);
 		}
 		list->count = 0;	/* No meaningful elements left */
 
@@ -925,7 +925,7 @@
 				ASN_DEBUG("Failed decoding %s of %s (SET OF)",
 					elm->type->name, td->name);
 			}
-			if(ptr) elm->type->free_struct(elm->type, ptr, 0);
+			if(ptr) ASN_STRUCT_FREE(*elm->type, ptr);
 			_ASN_DECODE_FAILED;
 		}
 
diff --git a/skeletons/constr_TYPE.h b/skeletons/constr_TYPE.h
index 37d21f6..70e7882 100644
--- a/skeletons/constr_TYPE.h
+++ b/skeletons/constr_TYPE.h
@@ -52,6 +52,9 @@
 typedef void (asn_struct_free_f)(
 		struct asn_TYPE_descriptor_s *type_descriptor,
 		void *struct_ptr, int free_contents_only);
+#define	ASN_STRUCT_FREE(asn_DEF, ptr)	(asn_DEF).free_struct(&(asn_DEF),ptr,0)
+#define	ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr)	\
+					(asn_DEF).free_struct(&(asn_DEF),ptr,1)
 
 /*
  * Print the structure according to its specification.
