diff --git a/src/main/grammar/Aspect.bnf b/src/main/grammar/Aspect.bnf
index f978dde885c734f0a61c9db5cd3fc920335944d5..66baaec571ba7781a79e0955fbba30e9e9926a41 100644
--- a/src/main/grammar/Aspect.bnf
+++ b/src/main/grammar/Aspect.bnf
@@ -48,7 +48,7 @@ compilation_unit ::= import_declaration* type_declaration*
 
 import_declaration ::= IMPORT STATIC? name_name (DOT STAR)? SEMICOLON
 
-modifiers ::= (PUBLIC | STATIC  | PROTECTED | PRIVATE | FINAL | ABSTRACT | SYNCHRONIZED | NATIVE | TRANSIENT | VOLATILE | STRICTFP)*
+modifiers ::= (PUBLIC | STATIC  | PROTECTED | PRIVATE | FINAL | ABSTRACT | SYNCHRONIZED | NATIVE | TRANSIENT | VOLATILE | STRICTFP | annotation)*
 
 type_declaration ::= SEMICOLON | (modifiers ( class_declaration | interface_declaration | unmodified_enum_declaration | annotation_type_declaration | aspect_declaration ) )
 
@@ -109,7 +109,7 @@ aspect_interface_inh_attribute_declaration ::= annotation* INH LAZY? FINAL? aspe
   extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectInhAttributeImpl"
 }
 
-aspect_interface_method_declaration ::= (PUBLIC | PROTECTED | PRIVATE | STATIC | ABSTRACT | FINAL | NATIVE | SYNCHRONIZED )* aspect_result_type method_declarator (THROWS name_list ) SEMICOLON
+aspect_interface_method_declaration ::= (PUBLIC | PROTECTED | PRIVATE | STATIC | ABSTRACT | FINAL | NATIVE | SYNCHRONIZED )* aspect_result_type method_declarator (THROWS name_list)? SEMICOLON
 
 aspect_interface_field_declaration ::= modifiers aspect_type variable_declarator (COMMA variable_declarator)* SEMICOLON
 
@@ -123,7 +123,7 @@ aspect_method_declaration ::= modifiers type_parameters? aspect_result_type IDEN
 
 aspect_refine_method_declaration ::= REFINE [IDENTIFIER] modifiers type_parameters? aspect_result_type IDENTIFIER DOT method_declarator (THROWS name_list)? (block | SEMICOLON)
 
-aspect_constructor_declaration ::= modifiers IDENTIFIER DOT IDENTIFIER formal_parameters (THROWS name_list)? LBRACE JAVA_EXPLICIT_CONSTRUCTUR_BLOCK RBRACE
+aspect_constructor_declaration ::= modifiers IDENTIFIER DOT IDENTIFIER formal_parameters (THROWS name_list)? LBRACE explicit_constructor_invocation? block_statement* RBRACE
 
 aspect_refine_constructor_declaration ::= REFINE IDENTIFIER (PUBLIC | PROTECTED | PRIVATE) IDENTIFIER DOT IDENTIFIER formal_parameters (THROWS name_list)? LBRACE block_statement* RBRACE
 
@@ -146,7 +146,7 @@ aspect_rewrite ::= REWRITE IDENTIFIER (IDENTIFIER DOT IDENTIFIER LPAREN RPAREN)?
 
 aspect_syn_equation ::= annotation* EQUATION IDENTIFIER DOT attribute_name LPAREN (type IDENTIFIER (COMMA type IDENTIFIER)*)? RPAREN ( ASSIGN expression SEMICOLON | block )
 
-aspect_refine_syn_equation ::= REFINE IDENTIFIER EQUATION IDENTIFIER attribute_name LPAREN (type IDENTIFIER (COMMA type IDENTIFIER)*)? RPAREN (ASSIGN expression SEMICOLON | block)
+aspect_refine_syn_equation ::= REFINE IDENTIFIER EQUATION IDENTIFIER DOT attribute_name LPAREN (type IDENTIFIER (COMMA type IDENTIFIER)*)? RPAREN (ASSIGN expression SEMICOLON | block)
 
 aspect_inh_equation ::= annotation* EQUATION IDENTIFIER DOT IDENTIFIER LPAREN (INT IDENTIFIER)? RPAREN DOT attribute_name LPAREN (type IDENTIFIER (COMMA type IDENTIFIER)*)? RPAREN (ASSIGN expression SEMICOLON | block)
 
@@ -376,11 +376,11 @@ try_statement ::= TRY ( LPAREN local_variable_declaration ( SEMICOLON local_vari
 // TODO maybe change order!
 annotation ::= ( normal_annotation | single_member_annotation | marker_annotation )
 
-normal_annotation ::= AT name LPAREN member_value_pairs? RPAREN
+normal_annotation ::= AT name_name LPAREN member_value_pairs? RPAREN
 
-marker_annotation ::= AT name
+marker_annotation ::= AT name_name
 
-single_member_annotation ::= AT name LPAREN member_value RPAREN
+single_member_annotation ::= AT name_name LPAREN member_value RPAREN
 
 member_value_pairs ::= member_value_pair (COMMA member_value_pair)*
 
@@ -398,7 +398,7 @@ annotation_type_member_declaration ::= ( modifiers (aspect_type java_identifier
 
 default_value ::= DEFAULT member_value
 
-aspect_cache_declaration ::= (CACHE | UNCACHE) IDENTIFIER DOT attribute_name LPAREN (type IDENTIFIER? (type IDENTIFIER?)* )? RPAREN SEMICOLON
+aspect_cache_declaration ::= (CACHE | UNCACHE) IDENTIFIER DOT attribute_name LPAREN (type IDENTIFIER? (COMMA type IDENTIFIER?)* )? RPAREN SEMICOLON
 
 java_identifier ::= IDENTIFIER | INH | SYN | LAZY | REWRITE | TO | WHEN | ASPECT | EQUATION | CIRCULAR | REFINE | COLL | CONTRIBUTES | EACH | NTA | CACHE | UNCACHE