diff --git a/ChangeLog b/ChangeLog
index 65db7c22916c89b65719506865afb3810abffbc9..65bc1be50da48b836bd177a72e6d8d8f1dee2385 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,11 @@
     * Fixed aspect parsing issue for Java 8 array constructor references.
     See https://bitbucket.org/jastadd/jastadd2/issues/323/parsing-of-array-constructor-references
 
+2020-05-08  Idriss Riouak <idriss.riouak@cs.lth.se>
+
+    * Improve parsing of multiple interfaces in implements statement.
+    See https://bitbucket.org/jastadd/jastadd2/issues/324/parsing-after-implements
+
 2019-11-29  Jesper Öqvist <jesper.oqvist@cs.lth.se>
 
     * Deprecated some old options: lazyMaps, private, traceVisitCheck,
diff --git a/src/javacc/jrag/Jrag.jjt b/src/javacc/jrag/Jrag.jjt
index aafdc642f357d844e9c71fbf8d2c935961e2e6c5..c349e8a165286621e1615f788c96507e0ddd859c 100644
--- a/src/javacc/jrag/Jrag.jjt
+++ b/src/javacc/jrag/Jrag.jjt
@@ -1434,20 +1434,15 @@ void CollectionContribution():
 
 void AspectAddInterface() :
 {
-  Token first, last;
   Token targetName;
-  SimpleNode nameList;
+  SimpleNode name;
 }
 {
-  targetName = <IDENTIFIER> { first = token; }
+  targetName = <IDENTIFIER>
   "implements"
-  nameList = TypeNameList()
+  name = ClassOrInterfaceType(){ root.addInterface(name, targetName.image, fileName); }
+  ( "," name = ClassOrInterfaceType() { root.addInterface(name, targetName.image, fileName); } )*
   ";"
-  {
-    last = token;
-    root.addInterface(nameList, targetName.image, fileName);
-  }
-
 }
 
 void AspectExtendInterface() :