diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index bc19522..ae63090 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -74,7 +74,7 @@
 	asn1p_value_t		*a_value;	/* Number, DefinedValue, etc */
 	struct asn1p_param_s	 a_parg;	/* A parameter argument */
 	asn1p_paramlist_t	*a_plist;	/* A pargs list */
-	enum asn1p_expr_marker_e a_marker;	/* OPTIONAL/DEFAULT */
+	struct asn1p_expr_marker_s a_marker;	/* OPTIONAL/DEFAULT */
 	enum asn1p_constr_pres_e a_pres;	/* PRESENT/ABSENT/OPTIONAL */
 	asn1_integer_t		 a_int;
 	char	*tv_str;
@@ -236,7 +236,7 @@
 %type	<a_expr>		optValueSetBody
 %type	<a_expr>		ValueSetBody
 %type	<a_expr>		ValueSetElement
-%type	<a_value>		InlineOrDefinedValue
+%type	<a_value>		Value
 %type	<a_value>		DefinedValue
 %type	<a_value>		SignedNumber
 %type	<a_expr>		ComponentTypeLists
@@ -1178,6 +1178,16 @@
 		checkmem(ret == 0);
 		free($1);
 	}
+	| ObjectClassReference '.' TypeRefName {
+		int ret;
+		$$ = asn1p_ref_new(yylineno);
+		checkmem($$);
+		ret = asn1p_ref_add_component($$, $1, RLT_UNKNOWN);
+		checkmem(ret == 0);
+		ret = asn1p_ref_add_component($$, $3, RLT_UNKNOWN);
+		checkmem(ret == 0);
+		free($1);
+	}
 	| TOK_typereference '.' Identifier {
 		int ret;
 		$$ = asn1p_ref_new(yylineno);
@@ -1258,7 +1268,7 @@
  * === EOF ===
  */
 ValueDefinition:
-	Identifier DefinedTypeRef TOK_PPEQ InlineOrDefinedValue {
+	Identifier DefinedTypeRef TOK_PPEQ Value {
 		$$ = $2;
 		assert($$->Identifier == NULL);
 		$$->Identifier = $1;
@@ -1267,13 +1277,34 @@
 	}
 	;
 
-InlineOrDefinedValue:
-	'{' { asn1p_lexer_hack_push_opaque_state(); }
-		Opaque /* '}' */ {
+Value:
+	Identifier ':' Value {
+		$$ = asn1p_value_fromint(0);
+		checkmem($$);
+		$$->type = ATV_CHOICE_IDENTIFIER;
+		$$->value.choice_identifier.identifier = $1;
+		$$->value.choice_identifier.value = $3;
+	}
+	| '{' { asn1p_lexer_hack_push_opaque_state(); } Opaque /* '}' */ {
 		$$ = asn1p_value_frombuf($3.buf, $3.len, 0);
 		checkmem($$);
 		$$->type = ATV_UNPARSED;
 	}
+	| TOK_NULL {
+		$$ = asn1p_value_fromint(0);
+		checkmem($$);
+		$$->type = ATV_NULL;
+	}
+	| TOK_FALSE {
+		$$ = asn1p_value_fromint(0);
+		checkmem($$);
+		$$->type = ATV_FALSE;
+	}
+	| TOK_TRUE {
+		$$ = asn1p_value_fromint(0);
+		checkmem($$);
+		$$->type = ATV_TRUE;
+	}
 	| TOK_bstring {
 		$$ = _convert_bitstring2binary($1, 'B');
 		checkmem($$);
@@ -1394,11 +1425,11 @@
 	TOK_BMPString { $$ = ASN_STRING_BMPString; }
 	| TOK_GeneralString {
 		$$ = ASN_STRING_GeneralString;
-		fprintf(stderr, "WARNING: GeneralString is not fully supported");
+		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	}
 	| TOK_GraphicString {
 		$$ = ASN_STRING_GraphicString;
-		fprintf(stderr, "WARNING: GraphicString is not fully supported");
+		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	}
 	| TOK_IA5String { $$ = ASN_STRING_IA5String; }
 	| TOK_ISO646String { $$ = ASN_STRING_ISO646String; }
@@ -1406,14 +1437,14 @@
 	| TOK_PrintableString { $$ = ASN_STRING_PrintableString; }
 	| TOK_T61String {
 		$$ = ASN_STRING_T61String;
-		fprintf(stderr, "WARNING: T61String is not fully supported");
+		fprintf(stderr, "WARNING: T61String is not fully supported\n");
 	}
 	| TOK_TeletexString { $$ = ASN_STRING_TeletexString; }
 	| TOK_UniversalString { $$ = ASN_STRING_UniversalString; }
 	| TOK_UTF8String { $$ = ASN_STRING_UTF8String; }
 	| TOK_VideotexString {
 		$$ = ASN_STRING_VideotexString;
-		fprintf(stderr, "WARNING: VideotexString is not fully supported");
+		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
 	}
 	| TOK_VisibleString { $$ = ASN_STRING_VisibleString; }
 	| TOK_ObjectDescriptor { $$ = ASN_STRING_ObjectDescriptor; }
@@ -1589,7 +1620,6 @@
 		$$ = asn1p_value_frombuf($1.buf, $1.len, 0);
 		checkmem($$);
 	}
-
 	| TOK_FALSE {
 		$$ = asn1p_value_fromint(0);
 		checkmem($$);
@@ -1754,26 +1784,21 @@
  */
 
 optMarker:
-	{ $$ = EM_NOMARK; }
+	{
+		$$.flags = EM_NOMARK;
+		$$.default_value = 0;
+	}
 	| Marker { $$ = $1; }
 	;
 
 Marker:
 	TOK_OPTIONAL {
-		$$ = EM_OPTIONAL;
+		$$.flags = EM_OPTIONAL;
+		$$.default_value = 0;
 	}
-	| TOK_DEFAULT DefaultValue {
-		$$ = EM_DEFAULT;
-		/* FIXME: store DefaultValue somewhere */
-	}
-	;
-
-DefaultValue:
-	ConstraintValue {
-	}
-	| BasicTypeId {
-	}
-	| '{' { asn1p_lexer_hack_push_opaque_state(); } Opaque /* '}' */ {
+	| TOK_DEFAULT Value {
+		$$.flags = EM_DEFAULT;
+		$$.default_value = $2;
 	}
 	;
 
