diff --git a/libasn1compiler/asn1c_fdeps.h b/libasn1compiler/asn1c_fdeps.h
index 3be9e80..7b025ba 100644
--- a/libasn1compiler/asn1c_fdeps.h
+++ b/libasn1compiler/asn1c_fdeps.h
@@ -1,31 +1,61 @@
 #ifndef	ASN1C_FDEPS_H
 #define	ASN1C_FDEPS_H
 
-typedef struct asn1c_fdeps_s {
-	char *filename;		/* Or 0, if root. */
+typedef struct {
+    char *filename;
+    int lineno;
+    int column;
+} asn1c_dep_filename;
 
-	enum fdep_usage {
-	  FDEP_IGNORE       = -1,	/* Ignore contents of the section */
-	  FDEP_NOTUSED      =  0,
-	  FDEP_REFERRED     =  1,	/* Dynamic list of dependencies */
-	  FDEP_CONVERTER    =  2,	/* Name of the int main() file */
-	  FDEP_COMMON_FILES =  3,	/* Section for mandatory dependencies */
-	  FDEP_CODEC_OER    =  4,	/* Use contents only if -gen-OER */
-	  FDEP_CODEC_PER    =  8,	/* Use contents only if -gen-PER */
-	} usage;		/* Some file refers to it */
 
-	struct asn1c_fdeps_s **elements;
-	int el_size;
-	int el_count;
-} asn1c_fdeps_t;
+/*
+ * Format:
+ * <observed-name> [<dependent-name> ...]
+ */
+typedef struct {
+    asn1c_dep_filename **deps;
+    size_t deps_count;
+} asn1c_dep_chain;
 
-asn1c_fdeps_t *asn1c_read_file_dependencies(arg_t *arg, const char *datadir);
+/*
+ * A single dependency chain, marked with the usage tag and activation tag.
+ */
+typedef struct {
+    enum asn1c_dep_section {
+        FDEP_IGNORE = 0,              /* Section is not used */
+        FDEP_DEFAULT = (1 << 1),      /* Default dependency list */
+        FDEP_REFERRED = (1 << 2),     /* Dynamic list of dependencies */
+        FDEP_CONVERTER = (1 << 3),    /* Name of the file with int main() */
+        FDEP_COMMON_FILES = (1 << 4), /* Section for mandatory dependencies */
+        FDEP_CODEC_OER = (1 << 5),    /* Use contents only if -gen-OER */
+        FDEP_CODEC_PER = (1 << 6),    /* Use contents only if -gen-PER */
+    } section;                        /* Some file refers to it */
+
+    /* Whether this chain is alive and has to be present in the output */
+    struct {
+        int active;
+        char *by;
+    } activated;
+
+    asn1c_dep_chain *chain;
+} asn1c_tagged_dep_chain;
+
+typedef struct {
+    asn1c_tagged_dep_chain **chains;
+    size_t chains_count;
+} asn1c_dep_chainset;
+
+asn1c_dep_chainset *asn1c_read_file_dependencies(arg_t *arg,
+                                                 const char *datadir);
 
 /* Data may be a filename or an "#include <>" string. */
-int asn1c_activate_dependency(asn1c_fdeps_t *deps, asn1c_fdeps_t *cur,
-	const char *data);
+void asn1c_activate_dependency(asn1c_dep_chainset *deps, const char *data,
+                               const char *by);
 
-asn1c_fdeps_t *asn1c_deps_flatten(const asn1c_fdeps_t *deps);
-void asn1c_deps_freelist(asn1c_fdeps_t *deps);
+asn1c_dep_chain *asn1c_deps_flatten(const asn1c_dep_chainset *deps,
+                                    enum asn1c_dep_section);
+
+void asn1c_dep_chain_free(asn1c_dep_chain *);
+void asn1c_dep_chainset_free(asn1c_dep_chainset *);
 
 #endif	/* ASN1C_FDEPS_H */
