standard modules are being picked up

diff --git a/libasn1fix/check_fixer.c b/libasn1fix/check_fixer.c
index 6a13fda..a64d9bd 100644
--- a/libasn1fix/check_fixer.c
+++ b/libasn1fix/check_fixer.c
@@ -178,11 +178,23 @@
 			"yet parsing was successfull!\n", fname);
 		r_value = -1;
 	}
+	if(!asn) return r_value;
+
+	if(r_value == 0) {
+		asn1p_t *std_asn;
+		std_asn = asn1p_parse_file("../skeletons/standard-modules/ASN1C-UsefulInformationObjectClasses.asn1", A1P_NOFLAGS);
+		if(std_asn) {
+			asn1p_module_t *mod;
+			while((mod = TQ_REMOVE(&(std_asn->modules), mod_next)))
+				TQ_ADD(&(asn->modules), mod, mod_next);
+			asn1p_free(std_asn);
+		}
+	}
 
 	/*
 	 * Perform semantical checks and fixes.
 	 */
-	if(asn && r_value == 0) {
+	if(r_value == 0) {
 		int ret;
 
 		if(expected_fix_code)
@@ -214,14 +226,15 @@
 	 * Check validity of some values, if grammar has special
 	 * instructions for that.
 	 */
-	if(asn && r_value == 0) {
+	if(r_value == 0) {
 		if(post_fix_check(asn))
 			r_value = -1;
 	}
 
 	/*
-	 * TODO: destroy the asn.
+	 * Destroy the asn.
 	 */
+	asn1p_free(asn);
 
 	return r_value;
 }