diff --git a/libasn1print/asn1print.c b/libasn1print/asn1print.c
index 865d90b..ced31db 100644
--- a/libasn1print/asn1print.c
+++ b/libasn1print/asn1print.c
@@ -106,7 +106,7 @@
 
 	TQ_FOR(tc, &(mod->members), next) {
 		asn1print_expr(asn, mod, tc, flags, 0);
-		if(flags & APF_DEBUG_CONSTRAINTS)
+		if(flags & APF_PRINT_CONSTRAINTS)
 			printf("\n");
 		else
 			printf("\n\n");
@@ -416,11 +416,9 @@
 		  switch(wc->type) {
 		  case WC_LITERAL:
 		  case WC_WHITESPACE:
+		  case WC_FIELD:
 			printf("%s", wc->content.token);
 			break;
-		  case WC_REFERENCE:
-			asn1print_ref(wc->content.ref, flags);
-			break;
 		  case WC_OPTIONALGROUP:
 			printf("[");
 			asn1print_with_syntax(wc->content.syntax,flags);
@@ -690,7 +688,7 @@
 	/*
 	 * The following section exists entirely for debugging.
 	 */
-	if(flags & APF_DEBUG_CONSTRAINTS
+	if(flags & APF_PRINT_CONSTRAINTS
 	&& tc->expr_type != A1TC_EXTENSIBLE) {
 		asn1p_expr_t *top_parent;
 
@@ -713,6 +711,41 @@
 		printf("\n");
 	}
 
+	if(flags & APF_PRINT_CLASS_MATRIX
+	&& tc->expr_type == A1TC_CLASSDEF) do {
+		int r, col, maxidlen;
+		if(tc->object_class_matrix.rows == 0) {
+			printf("\n-- Class matrix is empty");
+			break;
+		}
+		printf("\n-- Class matrix has %d entr%s:\n",
+				tc->object_class_matrix.rows,
+				tc->object_class_matrix.rows==1 ? "y" : "ies");
+		maxidlen = tc->object_class_matrix.max_identifier_length;
+		for(r = -1; r < tc->object_class_matrix.rows; r++) {
+			struct asn1p_ioc_row_s *row;
+			row = tc->object_class_matrix.row[r<0?0:r];
+			if(r < 0) printf("--    %s", r > 9 ? " " : "");
+			else printf("-- [%*d]", r > 9 ? 2 : 1, r+1);
+			for(col = 0; col < row->columns; col++) {
+				struct asn1p_ioc_cell_s *cell;
+				cell = &row->column[col];
+				if(r < 0) {
+					printf("[%*s]", maxidlen,
+						cell->field->Identifier);
+					continue;
+				}
+				if(!cell->value) {
+					printf(" %*s ", maxidlen, "<no entry>");
+					continue;
+				}
+				printf(" %*s ", maxidlen,
+					cell->value->Identifier);
+			}
+			printf("\n");
+		}
+	} while(0);
+
 	return 0;
 }
 
