diff --git a/plugins/org.etsi.mts.tdl.TDLan2/src/org/etsi/mts/tdl/TDLan2.xtext b/plugins/org.etsi.mts.tdl.TDLan2/src/org/etsi/mts/tdl/TDLan2.xtext
index 2166b34e3c07f4a1b9fcbd4d9c5787af84b79518..e43d020669796968890f59360d4ceeec61057c0a 100644
--- a/plugins/org.etsi.mts.tdl.TDLan2/src/org/etsi/mts/tdl/TDLan2.xtext
+++ b/plugins/org.etsi.mts.tdl.TDLan2/src/org/etsi/mts/tdl/TDLan2.xtext
@@ -87,6 +87,7 @@ AnnotationType returns tdl::AnnotationType:
 	{tdl::AnnotationType}
 	'Annotation'
 	name=Identifier
+	(extension=Extension)?
 	('with' 
 	'{'
 		(comment+=Comment (comment+=Comment)*)?
@@ -183,7 +184,7 @@ Behaviour returns tdl::Behaviour:
 | UnboundedLoopBehaviour 
 | ConditionalBehaviour 
 | CompoundBehaviour 
-//| OptionalBehaviour 
+| OptionalBehaviour 
 | DefaultBehaviour 
 | InterruptBehaviour 
 | VerdictAssignment 
@@ -328,6 +329,7 @@ ComponentType returns tdl::ComponentType:
 	{tdl::ComponentType}
 	'Component' 'Type'
 	name=Identifier
+	(extension=Extension)?
 	'having' 
 	'{'
 		(timer+=Timer)*
@@ -698,6 +700,7 @@ GateType returns tdl::GateType:
     (kind=GateTypeKind)?
 	'Gate' 'Type'
 	name=Identifier
+	(extension=Extension)?
 	'accepts'
 		dataType+=[tdl::DataType|Identifier] ( "," dataType+=[tdl::DataType|Identifier])*  
     ('with'
@@ -841,21 +844,21 @@ OmitValue returns tdl::OmitValue:
 	'}')?;
 
 
-//OptionalBehaviour returns tdl::OptionalBehaviour:
-//	'optionally'
-//	block=Block
-//	(
-//    'with'
-//    '{'
-//	    (comment+=Comment (comment+=Comment)*)?
-//		(annotation+=Annotation (annotation+=Annotation)*)?
-//		('test' 'objectives' ':' testObjective+=[tdl::TestObjective|Identifier] ( "," testObjective+=[tdl::TestObjective|Identifier])* ';')?
-//		('name' name=Identifier)?
-//	'}')?
-//	(exceptional+=ExceptionalBehaviour ( exceptional+=ExceptionalBehaviour)*)?
-//	(periodic+=PeriodicBehaviour ( periodic+=PeriodicBehaviour)* )?
-//	';'
-//	;
+OptionalBehaviour returns tdl::OptionalBehaviour:
+	'optionally'
+	block=Block
+	(
+    'with'
+    '{'
+	    (comment+=Comment (comment+=Comment)*)?
+		(annotation+=Annotation (annotation+=Annotation)*)?
+		('test' 'objectives' ':' testObjective+=[tdl::TestObjective|Identifier] ( "," testObjective+=[tdl::TestObjective|Identifier])* ';')?
+		('name' name=Identifier)?
+	'}')?
+	(exceptional+=ExceptionalBehaviour ( exceptional+=ExceptionalBehaviour)*)?
+	(periodic+=PeriodicBehaviour ( periodic+=PeriodicBehaviour)* )?
+	';'
+	;
 	
 
 
@@ -987,7 +990,7 @@ SimpleDataType_Impl returns tdl::SimpleDataType:
 	;		
 
 StaticDataUse returns tdl::StaticDataUse:
-	DataInstanceUse | AnyValue | AnyValueOrOmit | OmitValue;
+	DataInstanceUse | AnyValue | AnyValueOrOmit | OmitValue | LiteralValueUse;
 
 Stop returns tdl::Stop:
 	{tdl::Stop}
@@ -1032,6 +1035,7 @@ StructuredDataType returns tdl::StructuredDataType:
 	//'Structured' 'Data' 'Type'
 	'Type'
 	name=Identifier
+	(extension=Extension)?
 	('(' member+=Member ( "," member+=Member)* ')')?
    	(
     'with'
@@ -1349,4 +1353,25 @@ Wait returns tdl::Wait:
 	
 NumberAsIdentifier returns ecore::EString:
     '-'? INT ('.' INT)?;
-	
\ No newline at end of file
+
+Extension returns tdl::Extension:
+	'extends' extending=[tdl::PackageableElement|Identifier]
+	;
+
+
+
+LiteralValueUse returns tdl::LiteralValueUse:
+	{tdl::LiteralValueUse}
+	value=String0
+	(
+ 		'of' 'type' dataType=[tdl::DataType|Identifier]
+	)?
+    ('with'
+    '{'
+		('name' name=Identifier)?
+        (comment+=Comment (comment+=Comment)*)?
+        (annotation+=Annotation (annotation+=Annotation)*)?
+    '}')?
+	;
+
+