diff --git a/.metals/metals.h2.db b/.metals/metals.h2.db
new file mode 100644
index 0000000000000000000000000000000000000000..470c5fe95f3562aafdc138d7d0e9de74b9249aa6
Binary files /dev/null and b/.metals/metals.h2.db differ
diff --git a/.metals/metals.log b/.metals/metals.log
new file mode 100644
index 0000000000000000000000000000000000000000..4d5e63977e1b12065fb99fc9373ad834e14c6186
--- /dev/null
+++ b/.metals/metals.log
@@ -0,0 +1,1542 @@
+2021.06.18 14:35:38 INFO  Started: Metals version 0.10.4 in workspace '/home/hammouda/VS2N' for client Visual Studio Code 1.56.2.
+2021.06.18 14:35:41 INFO  time: initialize in 3.05s
+2021.06.18 14:35:41 WARN  Build server is not auto-connectable.
+2021.06.18 14:35:41 WARN  no build tool detected in workspace '/home/hammouda/VS2N'. The most common cause for this problem is that the editor was opened in the wrong working directory, for example if you use sbt then the workspace directory should contain build.sbt. 
+2021.06.18 14:35:41 WARN  no build target for: /home/hammouda/n2s3/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleFreeWayLogged.scala
+2021.06.18 14:35:45 INFO  no build target: using presentation compiler with only scala-library: 2.12.14
+2021.06.18 14:35:48 WARN  no build target for: /home/hammouda/n2s3/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleFreeWayLogged.scala
+Jun 18, 2021 2:35:51 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:136: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:136: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+Jun 18, 2021 2:35:52 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+Jun 18, 2021 2:35:53 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+Jun 18, 2021 2:35:54 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+2021.06.18 14:35:54 INFO  time: code lens generation in 6.15s
+Jun 18, 2021 2:35:54 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+Jun 18, 2021 2:35:54 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+Jun 18, 2021 2:35:55 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+2021.06.18 14:35:55 INFO  time: code lens generation in 12s
+Jun 18, 2021 2:36:01 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+Jun 18, 2021 2:36:04 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+Jun 18, 2021 2:36:06 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+Jun 18, 2021 2:36:10 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+Jun 18, 2021 2:36:10 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+Jun 18, 2021 2:36:11 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+Jun 18, 2021 2:36:13 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:105: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+2021.06.18 14:36:13 WARN  no build target for: /home/hammouda/n2s3/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleFreeWayLogged.scala
+Jun 18, 2021 2:36:13 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:136: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:136: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+Jun 18, 2021 2:36:15 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:136: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:136: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+Jun 18, 2021 2:36:17 PM scala.meta.internal.pc.CompilerAccess handleError
+SEVERE: file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:136: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+file%3A%2F%2F%2Fhome%2Fhammouda%2Fn2s3%2Fn2s3_examples%2Fsrc%2Fmain%2Fscala%2Ffr%2Funiv_lille%2Fcristal%2Femeraude%2Fn2s3%2Fapps%2FExampleFreeWayLogged.scala:136: error: ) expected but . found
+  n2s3.runAndWait()
+      ^
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:16)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.Reporter.syntaxError(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter.syntaxError$(Reporter.scala:17)
+	at scala.meta.internal.parsers.Reporter$$anon$1.syntaxError(Reporter.scala:22)
+	at scala.meta.internal.parsers.ScalametaParser.syntaxErrorExpected(ScalametaParser.scala:897)
+	at scala.meta.internal.parsers.ScalametaParser.accept(ScalametaParser.scala:903)
+	at scala.meta.internal.parsers.ScalametaParser.inParens(ScalametaParser.scala:744)
+	at scala.meta.internal.parsers.ScalametaParser.argumentExprsWithUsing(ScalametaParser.scala:3060)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$4(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExprRest$1(ScalametaParser.scala:3009)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExprRest(ScalametaParser.scala:2975)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$5(ScalametaParser.scala:2921)
+	at scala.util.Success.$anonfun$map$1(Try.scala:255)
+	at scala.util.Success.map(Try.scala:213)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$simpleExpr0$1(ScalametaParser.scala:2921)
+	at scala.meta.internal.parsers.ScalametaParser.atPosTry(ScalametaParser.scala:871)
+	at scala.meta.internal.parsers.ScalametaParser.autoPosTry(ScalametaParser.scala:881)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr0(ScalametaParser.scala:2870)
+	at scala.meta.internal.parsers.ScalametaParser.simpleExpr(ScalametaParser.scala:2868)
+	at scala.meta.internal.parsers.ScalametaParser.prefixExpr(ScalametaParser.scala:2852)
+	at scala.meta.internal.parsers.ScalametaParser.postfixExpr(ScalametaParser.scala:2832)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$12(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$expr$2(ScalametaParser.scala:2402)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.expr(ScalametaParser.scala:2285)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4983)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$templateStat$1$1.applyOrElse(ScalametaParser.scala:4969)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.templateStats(ScalametaParser.scala:4985)
+	at scala.meta.internal.parsers.ScalametaParser.templateStatSeq(ScalametaParser.scala:4965)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateBody$1(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.inBraces(ScalametaParser.scala:759)
+	at scala.meta.internal.parsers.ScalametaParser.templateBody(ScalametaParser.scala:4813)
+	at scala.meta.internal.parsers.ScalametaParser.templateBodyOpt(ScalametaParser.scala:4821)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4755)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$template$1(ScalametaParser.scala:4774)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.template(ScalametaParser.scala:4759)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$templateOpt$1(ScalametaParser.scala:4799)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.templateOpt(ScalametaParser.scala:4791)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$objectDef$1(ScalametaParser.scala:4555)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.objectDef(ScalametaParser.scala:4547)
+	at scala.meta.internal.parsers.ScalametaParser.tmplDef(ScalametaParser.scala:4431)
+	at scala.meta.internal.parsers.ScalametaParser.topLevelTmplDef(ScalametaParser.scala:4413)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4934)
+	at scala.meta.internal.parsers.ScalametaParser$$anonfun$topStat$1.applyOrElse(ScalametaParser.scala:4922)
+	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
+	at scala.meta.internal.parsers.ScalametaParser.statSeq(ScalametaParser.scala:4912)
+	at scala.meta.internal.parsers.ScalametaParser.topStatSeq(ScalametaParser.scala:4921)
+	at scala.meta.internal.parsers.ScalametaParser.bracelessPackageStats$1(ScalametaParser.scala:5137)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$9(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$batchSource$1(ScalametaParser.scala:5143)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.batchSource(ScalametaParser.scala:5111)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$source$1(ScalametaParser.scala:5094)
+	at scala.meta.internal.parsers.ScalametaParser.atPos(ScalametaParser.scala:847)
+	at scala.meta.internal.parsers.ScalametaParser.autoPos(ScalametaParser.scala:878)
+	at scala.meta.internal.parsers.ScalametaParser.source(ScalametaParser.scala:5093)
+	at scala.meta.internal.parsers.ScalametaParser.entrypointSource(ScalametaParser.scala:5099)
+	at scala.meta.internal.parsers.ScalametaParser.$anonfun$parseSource$2(ScalametaParser.scala:143)
+	at scala.meta.internal.parsers.ScalametaParser.parseRule(ScalametaParser.scala:53)
+	at scala.meta.internal.parsers.ScalametaParser.parseSource(ScalametaParser.scala:143)
+	at scala.meta.parsers.Parse$.$anonfun$parseSource$1(Parse.scala:29)
+	at scala.meta.internal.parsers.ScalametaParser$$anon$261.apply(ScalametaParser.scala:5156)
+	at scala.meta.parsers.Api$XtensionParseDialectInput.parse(Api.scala:25)
+	at scala.meta.internal.semanticdb.scalac.ParseOps$XtensionCompilationUnitSource.toSource(ParseOps.scala:17)
+	at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:201)
+	at scala.meta.internal.pc.SemanticdbTextDocumentProvider.textDocument(SemanticdbTextDocumentProvider.scala:51)
+
+2021.06.18 14:36:17 WARN  no build target for: /home/hammouda/n2s3/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleFreeWayLogged.scala
+2021.06.18 14:47:18 INFO  shutting down Metals
diff --git a/VS2N.py b/VS2N.py
index eebab82c9fe6812eaf29e480a86e47643f9d1e25..9a63eae6e93288d0df661b65858dc0677cfc6295 100644
--- a/VS2N.py
+++ b/VS2N.py
@@ -31,7 +31,7 @@ mongo_exists = False
 app_vis = None
 users = dict()
 g = Global_Var()
-
+__name__ = "__main__"
 url = g.config.VS2N_HOST
 port = g.config.VS2N_PORT
 
@@ -245,7 +245,7 @@ def Module(n, g):
         n (String): module name
         g (Global_Var): reference to access global variables
     """
-    importlib.import_module("src.Modules." + n + ".spark").process(g)
+    importlib.import_module("src.Modules." + n + ".spark").init(g)
 
 
 def LoadingModules():
@@ -280,13 +280,13 @@ def processing():
         continue
 
     # Loading Modules to Dashboard
-    layout().Vis(app_vis, g)
+    layout().load(app_vis, g)
     return "done"
 
 # Create dash app instance -------------------------------------------
 
 app_vis = dash.Dash(
-    '__name__',
+    __name__,
     requests_pathname_prefix='/vis/',
     external_stylesheets=[dbc.themes.BOOTSTRAP],
     suppress_callback_exceptions=True,
diff --git a/src/Modules/General/callbacks.py b/src/Modules/General/callbacks.py
index bf16154de4c2c312c0b77572ef99cdf74e047b66..0cb5e635c0d6e3f32b663c56b1a0571af868f6f1 100644
--- a/src/Modules/General/callbacks.py
+++ b/src/Modules/General/callbacks.py
@@ -12,13 +12,13 @@ import plotly.graph_objects as go
 from dash.exceptions import PreventUpdate
 from plotly.subplots import make_subplots
 from dash.dependencies import Input, Output, State, MATCH
+from src.templates.callbacksOp import callbacksOp
 
-
-class callbacks():
+class callbacks(callbacksOp):
     """ Callbacks class
     """
 
-    def init(self, super, app, g):
+    def __init__(self, super, app, g):
         """ Initialize the callback .
 
         Args:
diff --git a/src/Modules/General/layout.py b/src/Modules/General/layout.py
index c86af49874439ce1ccaa1b0446231fd791cf5b9e..6ded01e7fb95e94ecf98a7185912c8aaad1f49f3 100644
--- a/src/Modules/General/layout.py
+++ b/src/Modules/General/layout.py
@@ -9,9 +9,9 @@ from .callbacks import callbacks
 import dash_core_components as dcc
 import dash_html_components as html
 import dash_bootstrap_components as dbc
+from src.templates.layoutOp import layoutOp
 
-
-class layout():
+class layout(layoutOp):
     """ Layout class
     """
     # InfoGraph Axis -------------------------------------------------
@@ -78,7 +78,7 @@ class layout():
         self.Nodes = []
         self.Edges = []
 
-    def Vis(self, app, g):
+    def Vis(self):
         """ Create layer components
 
         Args:
@@ -92,16 +92,16 @@ class layout():
 
         # Table of network information -------------------------------
         tablecontent = [
-            html.Tr([html.Td("Neurons", style={"width": "25%", "fontWeight": "500"}), html.Td(g.NeuronsNbr, style={"width": "25%"}), html.Td(
-                "Layers", style={"width": "25%", "fontWeight": "500"}), html.Td(g.LayersNbr, style={"width": "25%"})]),
-            html.Tr([html.Td("Input", style={"width": "25%", "fontWeight": "500"}), html.Td(g.Input, style={"width": "25%"}), html.Td(
-                "Dataset", style={"width": "25%", "fontWeight": "500"}), html.Td(g.Dataset, style={"width": "25%"})]),
-            html.Tr([html.Td("Simulation Date", style={"width": "25%", "fontWeight": "500"}), html.Td(g.Date, style={"width": "25%"}), html.Td(
-                "Accuracy", style={"width": "25%", "fontWeight": "500"}), html.Td(str(g.Accuracy)+" %", style={"width": "25%"})])
+            html.Tr([html.Td("Neurons", style={"width": "25%", "fontWeight": "500"}), html.Td(self.g.NeuronsNbr, style={"width": "25%"}), html.Td(
+                "Layers", style={"width": "25%", "fontWeight": "500"}), html.Td(self.g.LayersNbr, style={"width": "25%"})]),
+            html.Tr([html.Td("Input", style={"width": "25%", "fontWeight": "500"}), html.Td(self.g.Input, style={"width": "25%"}), html.Td(
+                "Dataset", style={"width": "25%", "fontWeight": "500"}), html.Td(self.g.Dataset, style={"width": "25%"})]),
+            html.Tr([html.Td("Simulation Date", style={"width": "25%", "fontWeight": "500"}), html.Td(self.g.Date, style={"width": "25%"}), html.Td(
+                "Accuracy", style={"width": "25%", "fontWeight": "500"}), html.Td(str(self.g.Accuracy)+" %", style={"width": "25%"})])
         ]
 
         # Generate 2D View -------------------------------------------
-        self.generate2DView(self.Nodes, self.Edges, g)
+        self.generate2DView(self.Nodes, self.Edges, self.g)
 
         # Tabs content -----------------------------------------------
         info_vis = dbc.Card(
@@ -143,14 +143,14 @@ class layout():
                                                 dcc.Dropdown(
                                                 id='GeneralLayerFilter',
                                                 options=[{'label': str(i), 'value': str(i)} for i in (
-                                                    i for i in g.Layer_Neuron if i != "Input")],
+                                                    i for i in self.g.Layer_Neuron if i != "Input")],
                                                 value=[str(i) for i in (
-                                                    i for i in g.Layer_Neuron if i != "Input")],
+                                                    i for i in self.g.Layer_Neuron if i != "Input")],
                                                 multi=True,
                                                 style={"minWidth": "20%", "marginLeft": "15px", "textAlign": "start"})], className="row", style={"paddingLeft": "20px", 'width': '100%'})
                                         ], className="col-12")
                                     ], className="row"),
-                                    html.Div([dcc.Graph(id='general-graph', animate=False, config={"displaylogo": False})])], className="col-lg-9 col-sm-12 col-xs-12" if(g.labelsExistance) else "col-lg-12 col-sm-12 col-xs-12"),
+                                    html.Div([dcc.Graph(id='general-graph', animate=False, config={"displaylogo": False})])], className="col-lg-9 col-sm-12 col-xs-12" if(self.g.labelsExistance) else "col-lg-12 col-sm-12 col-xs-12"),
                                     html.Div([
                                         html.Div([
                                             html.P("Inputs", style={
@@ -162,7 +162,7 @@ class layout():
                                                 color="#28a745",
                                                 style={"marginLeft": "10px"}
                                             )], className="row"),
-                                        dcc.Graph(id='label-graph', animate=False, config={"displaylogo": False})], className="col-lg-3 col-sm-12 col-xs-12") if(g.labelsExistance) else []], className="row")
+                                        dcc.Graph(id='label-graph', animate=False, config={"displaylogo": False})], className="col-lg-3 col-sm-12 col-xs-12") if(self.g.labelsExistance) else []], className="row")
                             ], style={"padding": "5px"})), label="General information", value="General information"),
                     dcc.Tab(dbc.Card(
                             dbc.CardBody([
@@ -203,15 +203,15 @@ class layout():
         tabs = [dcc.Tab(info_vis, label="General")]
 
         # Add active modules
-        for m in [i for i in g.modules if i != "General"]:
+        for m in [i for i in self.g.modules if i != "General"]:
             try:
                 tabs.append(dcc.Tab(importlib.import_module(
-                    ".Modules."+m+".layout", package="src").layout().Vis(app, g), label=m))
+                    ".Modules."+m+".layout", package="src").layout().load(self.app, self.g), label=m))
             except Exception as e:
                 print("Tabs appending:"+str(e))
 
         # App layout
-        app.layout = html.Div([
+        self.app.layout = html.Div([
             html.Nav(className="navbar sticky-top navbar-dark", children=[
                 dbc.Row([
                         html.Div([html.A("VS2N", className="navbar-brand", href="#")], className="col-12", style={
@@ -245,7 +245,7 @@ class layout():
                             html.Span("Update Interval (s)",
                                       className="input-group-text")
                         ], className="input-group-prepend"),
-                        dbc.Input(type="number", id="interval", value=g.updateInterval, min=0.005,
+                        dbc.Input(type="number", id="interval", value=self.g.updateInterval, min=0.005,
                                   max=180, step=0.005, style={"width": "30%", "textAlign": "center"})
                     ], className="input-group col-md-4 col-sm-4 col-lg-4", style={"height": "38px", "paddingTop": "12px"})
                 ], className="d-flex justify-content-center"), dbc.Col(
@@ -254,7 +254,7 @@ class layout():
                         dcc.Slider(
                             id='vis-slider',
                             min=0,
-                            max=g.stepMax,
+                            max=self.g.stepMax,
                             step=1,
                             value=0,
                         )], style={"textAlign": "start", "padding": "5px"})],
@@ -265,4 +265,4 @@ class layout():
             ), html.Div(id='v-step', children="0", style={'display': 'none'}), html.Div(id='clear', children="False", style={'display': 'none'})])
 
         # load callbacks
-        callbacks().init(self, app, g)
+        callbacks(self,self.app, self.g)
diff --git a/src/Modules/General/spark.py b/src/Modules/General/spark.py
index 04a6dc6f4126115ed17a30d677947b6cef8876f3..a2726b667cbd559ebde600eeec262efb54e4603b 100644
--- a/src/Modules/General/spark.py
+++ b/src/Modules/General/spark.py
@@ -5,91 +5,87 @@ from bson.json_util import dumps
 from bson.json_util import loads
 import traceback
 import pymongo
+from src.templates.sparkOp import sparkOp
 
+def init(g):
+    spark(g)
+    
+class spark(sparkOp):
+    def __init__(self, g):
+        module = "General"
+        document = ""
+        output_document = ""
+        super().__init__(g, module, document, output_document)
 
-def process(g):
-    """ Start processing and reduce module count .
+    # Spark operations and pre-processing --------------------------------
 
-    Args:
-        g (Global_Var): reference to access global variables
-    """
-    preProcessing(g)
-    g.modulesNbr = g.modulesNbr - 1
-
-# Spark operations and pre-processing --------------------------------
+    def preProcessing(self):
+        """ Apache Spark pre-processing.
+        """
+        try:
+            # initial variables
+            self.g.LayersNeuronsInfo = []
+            self.g.NeuronsNbr = 0
+            self.g.LayersNbr = 0
+            # get info collection
+            col = pymongo.collection.Collection(self.g.db, 'info').find()
+            data = next(col, None)
+            # get dataset name
+            self.g.Dataset = data["D"]
+            # get network layers and neurons
+            LN = data["L:N"]
+            LN = loads(dumps(LN))
+            self.g.Layer_Neuron = LN
+            for l in LN:
+                if(l == "Input"):
+                    self.g.Input = LN[l]
+                else:
+                    self.g.LayersNeuronsInfo.append(
+                        {"layer": l, "neuronNbr": int(LN[l])})
+                    self.g.NeuronsNbr += int(LN[l])
+                    self.g.LayersNbr += 1
+            # get date & time of the simulation
+            self.g.Date = data["T"]
+            # calculate simulation time
+            try:
+                M = 0
+                if ('spikes' in self.g.db.list_collection_names()):
+                    M = max(M, pymongo.collection.Collection(
+                        self.g.db, 'spikes').find_one(sort=[("T", -1)])["T"])
+                if ('potential' in self.g.db.list_collection_names()):
+                    M = max(M, pymongo.collection.Collection(
+                        self.g.db, 'potential').find_one(sort=[("T", -1)])["T"])
+                if ('synapseWeight' in self.g.db.list_collection_names()):
+                    M = max(M, pymongo.collection.Collection(
+                        self.g.db, 'synapseWeight').find_one(sort=[("T", -1)])["T"])
+                if ('labels' in self.g.db.list_collection_names()):
+                    self.g.labelsExistance = True
+                    M = max(M, pymongo.collection.Collection(
+                        self.g.db, 'labels').find_one(sort=[("T", -1)])["T"])
+                else:
+                    print("No labels")
 
+            except Exception as e:
+                print("MongoError:" + str(e))
+                pass
+            self.g.Max = M
+            self.g.stepMax = int(M/self.g.updateInterval)+1
+            # get accuracy and neurons labels (if exist)
+            try:
+                data = next(col, None)
+                self.g.Accuracy = data["MaxS"]
+                self.g.finalLabels = data["NLabel"]
 
-def preProcessing(g):
-    """ Apache Spark pre-processing.
+            except Exception as e:
+                self.g.Accuracy = "--"
+                print("No label or accuracy recorded")
+                self.g.finalLabels = None
+                pass
 
-    Args:
-        g (Global_Var): reference to access global variables
-    """
-    MODULE_NAME = "General"
-    try:
-        # initial variables
-        g.LayersNeuronsInfo = []
-        g.NeuronsNbr = 0
-        g.LayersNbr = 0
-        # get info collection
-        col = pymongo.collection.Collection(g.db, 'info').find()
-        data = next(col, None)
-        # get dataset name
-        g.Dataset = data["D"]
-        # get network layers and neurons
-        LN = data["L:N"]
-        LN = loads(dumps(LN))
-        g.Layer_Neuron = LN
-        for l in LN:
-            if(l == "Input"):
-                g.Input = LN[l]
-            else:
-                g.LayersNeuronsInfo.append(
-                    {"layer": l, "neuronNbr": int(LN[l])})
-                g.NeuronsNbr += int(LN[l])
-                g.LayersNbr += 1
-        # get date & time of the simulation
-        g.Date = data["T"]
-        # calculate simulation time
-        try:
-            M = 0
-            if ('spikes' in g.db.list_collection_names()):
-                M = max(M, pymongo.collection.Collection(
-                    g.db, 'spikes').find_one(sort=[("T", -1)])["T"])
-            if ('potential' in g.db.list_collection_names()):
-                M = max(M, pymongo.collection.Collection(
-                    g.db, 'potential').find_one(sort=[("T", -1)])["T"])
-            if ('synapseWeight' in g.db.list_collection_names()):
-                M = max(M, pymongo.collection.Collection(
-                    g.db, 'synapseWeight').find_one(sort=[("T", -1)])["T"])
-            if ('labels' in g.db.list_collection_names()):
-                g.labelsExistance = True
-                M = max(M, pymongo.collection.Collection(
-                    g.db, 'labels').find_one(sort=[("T", -1)])["T"])
-            else:
-                print("No labels")
+            # ------------------------------------------------------------
+            print("done ", self.MODULE_NAME)
 
         except Exception as e:
-            print("MongoError:" + str(e))
+            print("Error:" + str(e))
+            traceback.print_exc()
             pass
-        g.Max = M
-        g.stepMax = int(M/g.updateInterval)+1
-        # get accuracy and neurons labels (if exist)
-        try:
-            data = next(col, None)
-            g.Accuracy = data["MaxS"]
-            g.finalLabels = data["NLabel"]
-
-        except Exception as e:
-            g.Accuracy = "--"
-            print("No label or accuracy recorded")
-            g.finalLabels = None
-            pass
-
-        # ------------------------------------------------------------
-        print("done ", MODULE_NAME)
-
-    except Exception as e:
-        print("Error:" + str(e))
-        traceback.print_exc()
-        pass
diff --git a/src/Modules/MultiLayer/callbacks.py b/src/Modules/MultiLayer/callbacks.py
index 4bca02c47f85222cc66dc1bdce408be7ffd3cadd..2ad459c13a506cab4837eb4c62466d03aab15ab4 100644
--- a/src/Modules/MultiLayer/callbacks.py
+++ b/src/Modules/MultiLayer/callbacks.py
@@ -13,12 +13,13 @@ import dash_html_components as html
 from bson.json_util import dumps, loads
 from dash.exceptions import PreventUpdate
 from dash.dependencies import ALL, MATCH, Input, Output, State
+from src.templates.callbacksOp import callbacksOp
 
-class callbacks():
+class callbacks(callbacksOp):
     """Callbacks class
     """
 
-    def init(self, super, app, g):
+    def __init__(self, super, app, g):
         """Initialize the callback .
 
         Args:
@@ -55,17 +56,17 @@ class callbacks():
             except Exception as e:
                 print("CallbackName:" + str(e))
 
-    # ----------------------------------------------------------------
-    # Callback related Data retreiving functions
-    # ----------------------------------------------------------------
-    try:
+            # ----------------------------------------------------------------
+            # Callback related Data retreiving functions
+            # ----------------------------------------------------------------
+            try:
 
-        print("Add functions here")
-        # ------------------------------------------------------------
-        # Data gethering (MongoDB operations)
-        # ------------------------------------------------------------
+                print("Add functions here")
+                # ------------------------------------------------------------
+                # Data gethering (MongoDB operations)
+                # ------------------------------------------------------------
 
-        print("Add MongoDB functions here")
+                print("Add MongoDB functions here")
 
-    except Exception as e:
-        print("Data process loading:"+str(e))
\ No newline at end of file
+            except Exception as e:
+                print("Data process loading:"+str(e))
\ No newline at end of file
diff --git a/src/Modules/MultiLayer/layout.py b/src/Modules/MultiLayer/layout.py
index da423e4a514e76841144072a9c895020126cdfa1..d7c7ebc2dd471f34a8c8aa04d9a278f72de6eacb 100644
--- a/src/Modules/MultiLayer/layout.py
+++ b/src/Modules/MultiLayer/layout.py
@@ -5,9 +5,9 @@ from collections import deque
 import dash_html_components as html
 import dash_bootstrap_components as dbc
 from .callbacks import callbacks
+from src.templates.layoutOp import layoutOp
 
-
-class layout():
+class layout(layoutOp):
     """ Layout class
     """
     # Needed variables for the graphs --------------------------------
@@ -21,7 +21,7 @@ class layout():
         """
         self.xAxisGraphName.clear()
 
-    def Vis(self, app, g):
+    def Vis(self):
         """ Create layer components
 
         Args:
@@ -46,7 +46,7 @@ class layout():
                 )
             )
             # load callbacks
-            callbacks().init(self, app, g)
+            # callbacks(self.app, self.g)
             # Return the Layer
             return layer
         except Exception as e:
diff --git a/src/Modules/MultiLayer/spark.py b/src/Modules/MultiLayer/spark.py
index db7d04d8dedb0c60a692fff411f2dea0d3ec88b6..cf2195eef34f09798c0a44436bc3b292068b1847 100644
--- a/src/Modules/MultiLayer/spark.py
+++ b/src/Modules/MultiLayer/spark.py
@@ -2,55 +2,59 @@
 """
 
 import traceback
+from src.templates.sparkOp import sparkOp
 
-def process(g):
-    """ Start processing and reduce module count .
+def init(g):
+    spark(g)
 
-    Args:
-        g (Global_Var): reference to access global variables
-    """
-    preProcessing(g)
-    g.modulesNbr = g.modulesNbr - 1
+class spark(sparkOp):
 
-# Spark operations and pre-processing --------------------------------
+    def __init__(self, g):
+        """
+            Args:
+            g (Global_Var): reference to access global variables
+        """
+        module = ""
+        document = ""
+        output_document = ""
+        super().__init__(g, module, document, output_document)
 
+    # Spark operations and pre-processing --------------------------------
 
-def preProcessing(g):
-    """Loads the GDD database into BDD .
 
-    Args:
-        g (Global_Var): reference to access global variables
-    """
-    MODULE_NAME = ""
-    DOCUMENT_NAME = ""
-    OUTPUT_DOCUMENT_NAME = ""
-    MONGODBURL = g.MONGODBURL
-    try:
-        if (not (OUTPUT_DOCUMENT_NAME in g.db.list_collection_names())) and (DOCUMENT_NAME in g.db.list_collection_names()):
+    def preProcessing(self):
+        """ Spark preprocessing .
+        """
+        MODULE_NAME = ""
+        DOCUMENT_NAME = ""
+        OUTPUT_DOCUMENT_NAME = ""
+        MONGODBURL = self.g.MONGODBURL
+        try:
+            if (not (OUTPUT_DOCUMENT_NAME in self.g.db.list_collection_names())) and (DOCUMENT_NAME in self.g.db.list_collection_names()):
 
-            # Spark setup --------------------------------------------
+                # Spark setup --------------------------------------------
 
-            if g.sparkSession == None:
-                g.createSparkSession()
+                if self.g.sparkSession == None:
+                    self.g.createSparkSession()
 
-            # doing the heavy work -----------------------------------
+                # doing the heavy work -----------------------------------
 
-            # Save data into Mongo------------------------------------
+                # Save data into Mongo------------------------------------
 
-            #df.write.format("com.mongodb.spark.sql.DefaultSource") \
-            #        .option("spark.mongodb.output.uri",
-            #                MONGODBURL + g.name + "."+OUTPUT_DOCUMENT_NAME+"?authSource=admin&#readPreference=primaryPreferred").mode("overwrite").save()
+                #df.write.format("com.mongodb.spark.sql.DefaultSource") \
+                #        .option("spark.mongodb.output.uri",
+                #                MONGODBURL + self.g.name + "."+OUTPUT_DOCUMENT_NAME+"?authSource=admin&#readPreference=primaryPreferred").mode("overwrite").save()
 
-            #print("Saved to BDD")
+                #print("Saved to BDD")
 
-        # ------------------------------------------------------------
-        else:
-            if(not DOCUMENT_NAME in g.db.list_collection_names()):
-                print(DOCUMENT_NAME, "not found")
-                g.modules = [module for module in g.modules if module != MODULE_NAME]
-        print("done ", MODULE_NAME)
+            # ------------------------------------------------------------
+            else:
+                if(not DOCUMENT_NAME in self.g.db.list_collection_names()):
+                    print(DOCUMENT_NAME, "not found")
+                    self.g.modules = [module for module in self.g.modules if module != MODULE_NAME]
+            print("done ", MODULE_NAME)
 
-    except Exception as e:
-        print("Error:" + str(e))
-        traceback.print_exc()
-        pass
\ No newline at end of file
+        except Exception as e:
+            print("Error:" + str(e))
+            traceback.print_exc()
+            pass
\ No newline at end of file
diff --git a/src/Modules/Neuron/callbacks.py b/src/Modules/Neuron/callbacks.py
index dc8aa9c1c37e85ed7f663430f3c0f01ef81d3bd7..4e409c79f6f26b62a3f71f19239d9912ffe82b49 100644
--- a/src/Modules/Neuron/callbacks.py
+++ b/src/Modules/Neuron/callbacks.py
@@ -14,12 +14,12 @@ import dash_html_components as html
 from bson.json_util import dumps, loads
 from dash.exceptions import PreventUpdate
 from dash.dependencies import ALL, MATCH, Input, Output, State
-
-class callbacks():
+from src.templates.callbacksOp import callbacksOp
+class callbacks(callbacksOp):
     """ Callbacks class
     """
 
-    def init(self, super, app, g):
+    def __init__(self, super, app, g):
         """ Initialize the callback .
 
         Args:
@@ -59,10 +59,10 @@ class callbacks():
                                 if len([item for item in graphsArea if item["props"]["id"] == "spaceHolder"]) == 1:
                                     updatedBody = [item for item in graphsArea if item["props"]["id"] != "spaceHolder"]
                                                                         
-                                    updatedBody.append(self.addNeuronArea(addButtonClick, selectedLayer, selectedNeuron, g))
+                                    updatedBody.append(addNeuronArea(addButtonClick, selectedLayer, selectedNeuron, g))
                                     return updatedBody
                                 else:
-                                    graphsArea.append(self.addNeuronArea(addButtonClick, selectedLayer, selectedNeuron, g))
+                                    graphsArea.append(addNeuronArea(addButtonClick, selectedLayer, selectedNeuron, g))
                                     return graphsArea
                             else:
                                 return graphsArea
@@ -95,12 +95,12 @@ class callbacks():
                                        ["id"] != "VisComponent"+str(itemDeleted)]
 
                             if(len(newGraphsArea) == 0):
-                                newGraphsArea.append(self.addSpaceHolder(g,app))
+                                newGraphsArea.append(addSpaceHolder(app))
                                 
                             return newGraphsArea
                         else:
                             if(len(graphsArea) == 0):
-                                graphsArea.append(self.addSpaceHolder(g,app))
+                                graphsArea.append(addSpaceHolder(app))
                             return graphsArea
             except Exception as e:
                 print("InsertRemoveNewElement: " + str(e))
@@ -193,7 +193,7 @@ class callbacks():
                     if dash.callback_context.triggered[0]["prop_id"] != '.':
                         # data processing
                         if(sliderValue > 0 and sliderValue <= g.stepMax):
-                            data = self.getSpikesOfNeuron(
+                            data = getSpikesOfNeuron(
                                 int(sliderValue)*float(updateInterval), g, selectedItem)
 
                             if (len(super.xAxisSpikeNbrLabel[selectedItem["index"]]) == 0 or super.xAxisSpikeNbrLabel[selectedItem["index"]][-1] != ("["+g.getLabelTime(g.updateInterval, sliderValue)+","+g.getLabelTime(g.updateInterval, sliderValue+1)+"]")):
@@ -208,15 +208,15 @@ class callbacks():
                                     super.xAxisSpikeNbrLabel[selectedItem["index"]].append(
                                         "["+g.getLabelTime(g.updateInterval, sliderValue)+","+g.getLabelTime(g.updateInterval, sliderValue+1)+"]")
 
-                                output = [self.spikeCountDrawGraph(selectedItem["index"], data, super.xAxisSpikeNbrGraph[selectedItem["index"]], super.xAxisSpikeNbrLabel[selectedItem["index"]], super.yAxisSpikeNbrGraph, isOnSpike),
-                                        self.classDrawGraph(selectedItem["index"], data, isOnAcc, g.finalLabels)]
+                                output = [spikeCountDrawGraph(selectedItem["index"], data, super.xAxisSpikeNbrGraph[selectedItem["index"]], super.xAxisSpikeNbrLabel[selectedItem["index"]], super.yAxisSpikeNbrGraph, isOnSpike),
+                                        classDrawGraph(selectedItem["index"], data, isOnAcc, g.finalLabels)]
 
                                 return output
                             else:
                                 raise PreventUpdate
                         else:
                             if(sliderValue == 0):
-                                data = self.getSpikesOfNeuron(
+                                data = getSpikesOfNeuron(
                                 int(sliderValue)*float(updateInterval), g, selectedItem)
 
                                 super.xAxisSpikeNbrGraph[selectedItem["index"]].append(sliderValue)
@@ -224,8 +224,8 @@ class callbacks():
                                 super.xAxisSpikeNbrLabel[selectedItem["index"]].append(
                                         "["+g.getLabelTime(g.updateInterval, sliderValue)+","+g.getLabelTime(g.updateInterval, sliderValue+1)+"]")
 
-                                output = [self.spikeCountDrawGraph(selectedItem["index"], data, super.xAxisSpikeNbrGraph[selectedItem["index"]], super.xAxisSpikeNbrLabel[selectedItem["index"]], super.yAxisSpikeNbrGraph, isOnSpike),
-                                        self.classDrawGraph(selectedItem["index"], data, isOnAcc, g.finalLabels)]
+                                output = [spikeCountDrawGraph(selectedItem["index"], data, super.xAxisSpikeNbrGraph[selectedItem["index"]], super.xAxisSpikeNbrLabel[selectedItem["index"]], super.yAxisSpikeNbrGraph, isOnSpike),
+                                        classDrawGraph(selectedItem["index"], data, isOnAcc, g.finalLabels)]
                                 
                                 return output
                             else:
@@ -233,7 +233,7 @@ class callbacks():
                     else:
                         # after adding to the screen
                         if(selectedItem["index"] not in super.xAxisSpikeNbrLabel):
-                            data = self.getSpikesOfNeuron(
+                            data = getSpikesOfNeuron(
                                 int(sliderValue)*float(updateInterval), g, selectedItem)
 
                             super.xAxisSpikeNbrGraph[selectedItem["index"]] = deque(maxlen=100)
@@ -243,8 +243,8 @@ class callbacks():
 
                             super.xAxisSpikeNbrLabel[selectedItem["index"]].append("["+g.getLabelTime(g.updateInterval, sliderValue)+","+g.getLabelTime(g.updateInterval, sliderValue+1)+"]")
 
-                            output = [self.spikeCountDrawGraph(selectedItem["index"], data, super.xAxisSpikeNbrGraph[selectedItem["index"]], super.xAxisSpikeNbrLabel[selectedItem["index"]], super.yAxisSpikeNbrGraph, isOnSpike),
-                                        self.classDrawGraph(selectedItem["index"], data, isOnAcc, g.finalLabels)]
+                            output = [spikeCountDrawGraph(selectedItem["index"], data, super.xAxisSpikeNbrGraph[selectedItem["index"]], super.xAxisSpikeNbrLabel[selectedItem["index"]], super.yAxisSpikeNbrGraph, isOnSpike),
+                                        classDrawGraph(selectedItem["index"], data, isOnAcc, g.finalLabels)]
                             
                             return output
                         else:
@@ -275,7 +275,7 @@ class callbacks():
                     if dash.callback_context.triggered[0]["prop_id"] != '.':
                         # data processing
                         if(sliderValue > 0 and sliderValue <= g.stepMax):
-                            data = self.getPotentialOfNeuron(
+                            data = getPotentialOfNeuron(
                                 int(sliderValue)*float(updateInterval), g, selectedItem)
 
                             if (len(super.xAxisPotentialLabel[selectedItem["index"]]) == 0 or super.xAxisPotentialLabel[selectedItem["index"]][-1] != ("["+g.getLabelTime(g.updateInterval, sliderValue)+","+g.getLabelTime(g.updateInterval, sliderValue+1)+"]")):
@@ -290,13 +290,13 @@ class callbacks():
                                     super.xAxisPotentialLabel[selectedItem["index"]].append(
                                         "["+g.getLabelTime(g.updateInterval, sliderValue)+","+g.getLabelTime(g.updateInterval, sliderValue+1)+"]")
 
-                                output = [self.neuronPotentialDrawGraph(selectedItem["index"], data, super.xAxisPotentialGraph[selectedItem["index"]], super.xAxisPotentialLabel[selectedItem["index"]], super.yAxisPotentialGraph, isOn)]
+                                output = [neuronPotentialDrawGraph(selectedItem["index"], data, super.xAxisPotentialGraph[selectedItem["index"]], super.xAxisPotentialLabel[selectedItem["index"]], super.yAxisPotentialGraph, isOn)]
                                 return output
                             else:
                                 raise PreventUpdate
                         else:
                             if(sliderValue == 0):
-                                data = self.getPotentialOfNeuron(
+                                data = getPotentialOfNeuron(
                                 int(sliderValue)*float(updateInterval), g, selectedItem)
 
                                 super.xAxisPotentialGraph[selectedItem["index"]].append(sliderValue)
@@ -304,7 +304,7 @@ class callbacks():
                                 super.xAxisPotentialLabel[selectedItem["index"]].append(
                                         "["+g.getLabelTime(g.updateInterval, sliderValue)+","+g.getLabelTime(g.updateInterval, sliderValue+1)+"]")
 
-                                output = [self.neuronPotentialDrawGraph(selectedItem["index"], data, super.xAxisPotentialGraph[selectedItem["index"]], super.xAxisPotentialLabel[selectedItem["index"]], super.yAxisPotentialGraph, isOn)]
+                                output = [neuronPotentialDrawGraph(selectedItem["index"], data, super.xAxisPotentialGraph[selectedItem["index"]], super.xAxisPotentialLabel[selectedItem["index"]], super.yAxisPotentialGraph, isOn)]
                                 
                                 return output
                             else:
@@ -312,7 +312,7 @@ class callbacks():
                     else:
                         # after adding to the screen
                         if(selectedItem["index"] not in super.xAxisPotentialLabel):
-                            data = self.getPotentialOfNeuron(
+                            data = getPotentialOfNeuron(
                                 int(sliderValue)*float(updateInterval), g, selectedItem)
 
                             super.xAxisPotentialGraph[selectedItem["index"]] = deque(maxlen=100)
@@ -322,7 +322,7 @@ class callbacks():
 
                             super.xAxisPotentialLabel[selectedItem["index"]].append("["+g.getLabelTime(g.updateInterval, sliderValue)+","+g.getLabelTime(g.updateInterval, sliderValue+1)+"]")
 
-                            output = [self.neuronPotentialDrawGraph(selectedItem["index"], data, super.xAxisPotentialGraph[selectedItem["index"]], super.xAxisPotentialLabel[selectedItem["index"]], super.yAxisPotentialGraph, isOn)]
+                            output = [neuronPotentialDrawGraph(selectedItem["index"], data, super.xAxisPotentialGraph[selectedItem["index"]], super.xAxisPotentialLabel[selectedItem["index"]], super.yAxisPotentialGraph, isOn)]
                             
                             return output
                         else:
@@ -330,194 +330,242 @@ class callbacks():
             except Exception as e:
                 print("processPotential: " + str(e))
 
-    try:
+        try:
 
-        # ------------------------------------------------------------
-        # Helper functions
-        # ------------------------------------------------------------
+            # ------------------------------------------------------------
+            # Helper functions
+            # ------------------------------------------------------------
 
-        def addNeuronArea(self, index, layer, neuron, g):
-            """ Adds a new neuron area that contains graphs.
+            def addNeuronArea(index, layer, neuron, g):
+                """ Adds a new neuron area that contains graphs.
 
-            Args:
-                index (int): index of the new added area
-                layer (String): layer id
-                neuron (String): neuron id
-                g (Global_Var): reference to access global variables
+                Args:
+                    index (int): index of the new added area
+                    layer (String): layer id
+                    neuron (String): neuron id
+                    g (Global_Var): reference to access global variables
 
-            Returns:
-                html component that contains the neuron area graphs
-            """
-            return html.Div([
-                html.Div([
+                Returns:
+                    html component that contains the neuron area graphs
+                """
+                return html.Div([
                     html.Div([
-                        html.Div([html.P("Spikes", style={"textAlign": "start", "marginLeft": "20px", "marginTop": "6px", "fontSize": "13px"}),
-                        daq.PowerButton(
-                        id={"index": str(index), "layer": layer, "neuron": neuron,
-                        "type": "Spikes-number-switch"},
-                        on='True',
-                        size=25,
-                        color="#28a745",
-                        style={"marginLeft": "10px","marginRight": "10px"}
-                        ),
-                        html.Div("−", className="btn-danger btn-circle", style={"fontWeight": "500","fontSize":"16px"}, id={"index": str(index), "type": "DeleteComponent"})], className="row", style={"height": "35px"}),
-                        dcc.Graph(id={"index": str(index), "type": "FreqGraph", "layer": layer, "neuron": neuron}, style={
-                        "width": "100%", "height": "290px"}, className="col-12", animate=False, config={"displaylogo": False}),
-                    ], className="col-lg-4 col-sm-12 col-xs-12" if(g.finalLabels != None) else "col-lg-6 col-sm-6 col-xs-6"),
-                    html.Div([
-                        html.Div([html.P("Potential", style={"textAlign": "start", "marginLeft": "20px", "marginTop": "6px", "fontSize": "13px"}),
-                        daq.PowerButton(
-                        id={"index": str(index), "type": "Neuron-potential-switch",
-                        "layer": layer, "neuron": neuron},
-                        on='True',
-                        size=25,
-                        color="#28a745",
-                        style={"marginLeft": "10px"}
-                        )], className="row", style={"height": "35px"}),
-                        dcc.Graph(id={"index": str(index), "type": "PotentialGraph", "layer": layer, "neuron": neuron}, style={
-                        "width": "100%", "height": "290px"}, className="col-12", animate=False, config={"displaylogo": False}),
-                    ], className="col-lg-4 col-sm-6 col-xs-6" if(g.finalLabels != None) else "col-lg-6 col-sm-6 col-xs-6"),
-                    html.Div([
-                        html.Div([html.P("Class", style={"textAlign": "start", "marginLeft": "20px", "marginTop": "6px", "fontSize": "13px"}),
-                        daq.PowerButton(
-                        id={"index": str(index), "type": "Neuron-class-switch",
-                        "layer": layer, "neuron": neuron},
-                        on='True',
-                        size=25,
-                        color="#28a745",
-                        style={"marginLeft": "10px"}),
-                        html.Div([html.P(layer+" Neuron "+neuron, style={"fontSize": "13px", "paddingTop": "6px", "marginRight": "10px"})], 
-                        className="row", style={"direction": "rtl", "width": "70%"})], className="row", style={"height": "35px"}),
-                        dcc.Graph(id={"index": str(index), "type": "AccuracyGraph", "layer": layer, "neuron": neuron}, style={
-                        "width": "100%", "height": "290px"}, className="col-12", animate=False, config={"displaylogo": False})], className="col-lg-4 col-sm-6 col-xs-6" if(g.finalLabels != None) else "", style={} if(g.finalLabels != None) else {'display': 'none'})],className="row")], style={"background": "rgb(242, 248, 255)", "paddingBottom": "10px", "marginBottom": "10px", "margin": "5px", "borderRadius": "10px"}, id="VisComponent"+str(index))
-
-        def addSpaceHolder(self,globalVar,app):
-            """ Adds a space holder area when no graphs are selected.
-
-            Args:
-                globalVar (Global_Var): reference to access global variables
-                app : Flask app
-            Returns:
-                html component that contains the neuron area graphs
-            """
-            return html.Div([
-                html.Div([html.Img(src=app.get_asset_url('holderImg.png'), className="col-6", style={"marginTop":"60px"})], 
-                        className="col-12", style={"width": "100%"})
-            ], style={"background": "rgb(244 244 244)", "paddingBottom": "10px", "marginBottom": "10px", "margin": "5px", "borderRadius": "10px", "height":"335px"},
-                id="spaceHolder")
-
-
-        def spikeCountDrawGraph(self, index, data, xAxis, xAxisLabel, yAxisList, isOn):
-            """ Create bar chart for selected neuron, that contains 
-            spikes count per interval.
-
-            Args:
-                index (int): index of the new added area
-                data (list): data to be added to the graph
-                xAxis (deque): X axis values
-                xAxisLabel (deque): X axis labels
-                yAxisList (dict): dict contains Y axis values
-                isOn (bool): whether this graph is active or not
-
-            Returns:
-                bar chart content (data and layout)
-            """
-            try:
-                if isOn:
-                    if data != None:
-
-                        # filtering data based on layer and neuron
-                        if str(index) not in yAxisList:
-                            yAxisList[str(index)] = deque(maxlen=100)
-
-                        # add data
-                        yAxisList[str(index)].append(len(data))
+                        html.Div([
+                            html.Div([html.P("Spikes", style={"textAlign": "start", "marginLeft": "20px", "marginTop": "6px", "fontSize": "13px"}),
+                            daq.PowerButton(
+                            id={"index": str(index), "layer": layer, "neuron": neuron,
+                            "type": "Spikes-number-switch"},
+                            on='True',
+                            size=25,
+                            color="#28a745",
+                            style={"marginLeft": "10px","marginRight": "10px"}
+                            ),
+                            html.Div("−", className="btn-danger btn-circle", style={"fontWeight": "500","fontSize":"16px"}, id={"index": str(index), "type": "DeleteComponent"})], className="row", style={"height": "35px"}),
+                            dcc.Graph(id={"index": str(index), "type": "FreqGraph", "layer": layer, "neuron": neuron}, style={
+                            "width": "100%", "height": "290px"}, className="col-12", animate=False, config={"displaylogo": False}),
+                        ], className="col-lg-4 col-sm-12 col-xs-12" if(g.finalLabels != None) else "col-lg-6 col-sm-6 col-xs-6"),
+                        html.Div([
+                            html.Div([html.P("Potential", style={"textAlign": "start", "marginLeft": "20px", "marginTop": "6px", "fontSize": "13px"}),
+                            daq.PowerButton(
+                            id={"index": str(index), "type": "Neuron-potential-switch",
+                            "layer": layer, "neuron": neuron},
+                            on='True',
+                            size=25,
+                            color="#28a745",
+                            style={"marginLeft": "10px"}
+                            )], className="row", style={"height": "35px"}),
+                            dcc.Graph(id={"index": str(index), "type": "PotentialGraph", "layer": layer, "neuron": neuron}, style={
+                            "width": "100%", "height": "290px"}, className="col-12", animate=False, config={"displaylogo": False}),
+                        ], className="col-lg-4 col-sm-6 col-xs-6" if(g.finalLabels != None) else "col-lg-6 col-sm-6 col-xs-6"),
+                        html.Div([
+                            html.Div([html.P("Class", style={"textAlign": "start", "marginLeft": "20px", "marginTop": "6px", "fontSize": "13px"}),
+                            daq.PowerButton(
+                            id={"index": str(index), "type": "Neuron-class-switch",
+                            "layer": layer, "neuron": neuron},
+                            on='True',
+                            size=25,
+                            color="#28a745",
+                            style={"marginLeft": "10px"}),
+                            html.Div([html.P(layer+" Neuron "+neuron, style={"fontSize": "13px", "paddingTop": "6px", "marginRight": "10px"})], 
+                            className="row", style={"direction": "rtl", "width": "70%"})], className="row", style={"height": "35px"}),
+                            dcc.Graph(id={"index": str(index), "type": "AccuracyGraph", "layer": layer, "neuron": neuron}, style={
+                            "width": "100%", "height": "290px"}, className="col-12", animate=False, config={"displaylogo": False})], className="col-lg-4 col-sm-6 col-xs-6" if(g.finalLabels != None) else "", style={} if(g.finalLabels != None) else {'display': 'none'})],className="row")], style={"background": "rgb(242, 248, 255)", "paddingBottom": "10px", "marginBottom": "10px", "margin": "5px", "borderRadius": "10px"}, id="VisComponent"+str(index))
+
+            def addSpaceHolder(app):
+                """ Adds a space holder area when no graphs are selected.
+
+                Args:
+                    app : Flask app
+                Returns:
+                    html component that contains the neuron area graphs
+                """
+                return html.Div([
+                    html.Div([html.Img(src=app.get_asset_url('holderImg.png'), className="col-6", style={"marginTop":"60px"})], 
+                            className="col-12", style={"width": "100%"})
+                ], style={"background": "rgb(244 244 244)", "paddingBottom": "10px", "marginBottom": "10px", "margin": "5px", "borderRadius": "10px", "height":"335px"},
+                    id="spaceHolder")
+
+
+            def spikeCountDrawGraph(index, data, xAxis, xAxisLabel, yAxisList, isOn):
+                """ Create bar chart for selected neuron, that contains 
+                spikes count per interval.
+
+                Args:
+                    index (int): index of the new added area
+                    data (list): data to be added to the graph
+                    xAxis (deque): X axis values
+                    xAxisLabel (deque): X axis labels
+                    yAxisList (dict): dict contains Y axis values
+                    isOn (bool): whether this graph is active or not
+
+                Returns:
+                    bar chart content (data and layout)
+                """
+                try:
+                    if isOn:
+                        if data != None:
+
+                            # filtering data based on layer and neuron
+                            if str(index) not in yAxisList:
+                                yAxisList[str(index)] = deque(maxlen=100)
+
+                            # add data
+                            yAxisList[str(index)].append(len(data))
+
+                            return {'data': [
+                                go.Bar(
+                                x=list(xAxis),
+                                y=list(yAxisList[str(index)]),
+                                name='',
+                                width=0.5,
+                                marker_color='rgb(31, 119, 180)',
+                                text=list(xAxisLabel),
+                                hovertemplate="%{text} <b><br>%{y}</b>"
+                                )],
+                                'layout': go.Layout(
+                                xaxis_type='category',
+                                margin={'l': 40, 'r': 0, 't': 0, 'b': 35},
+                                uirevision='no reset of zoom',
+                                yaxis={'title': 'Number of Spikes'},
+                                xaxis={'title': 'Step'}
+                            )}
+                        else:
+                            if str(index) not in yAxisList:
+                                yAxisList[str(index)] = deque(maxlen=100)
 
+                            yAxisList[str(index)].append(0)
+                            return {'data': [
+                                go.Bar(
+                                x=list(xAxis),
+                                y=list(yAxisList[str(index)]),
+                                marker_color='rgb(31, 119, 180)',
+                                name='',
+                                text=list(xAxisLabel),
+                                hovertemplate="%{text} <b><br>%{y}</b>"
+                                )],
+                                'layout': go.Layout(
+                                margin={'l': 40, 'r': 0, 't': 0, 'b': 35},
+                                uirevision='no reset of zoom',
+                                yaxis={'title': 'Number of Spikes'},
+                                xaxis={'title': 'Step'} 
+                            )}
+                    else:
                         return {'data': [
                             go.Bar(
                             x=list(xAxis),
                             y=list(yAxisList[str(index)]),
-                            name='',
-                            width=0.5,
                             marker_color='rgb(31, 119, 180)',
                             text=list(xAxisLabel),
+                            name='',
                             hovertemplate="%{text} <b><br>%{y}</b>"
                             )],
                             'layout': go.Layout(
-                            xaxis_type='category',
                             margin={'l': 40, 'r': 0, 't': 0, 'b': 35},
                             uirevision='no reset of zoom',
                             yaxis={'title': 'Number of Spikes'},
                             xaxis={'title': 'Step'}
                         )}
+                except Exception as e:
+                    print("spikeCountDrawGraph: "+str(e))
+
+            def neuronPotentialDrawGraph(index, data, xAxis, xAxisLabel, yAxisList, isOn):
+                """ Create scatter plot for selected neuron, that contains 
+                membrane potential per interval.
+
+                Args:
+                    index (int): index of the new added area
+                    data (list): data to be added to the graph
+                    xAxis (deque): X axis values
+                    xAxisLabel (deque): X axis labels
+                    yAxisList (dict): dict contains Y axis values
+                    isOn (bool): whether this graph is active or not
+
+                Returns:
+                    scatter plot content (data and layout)
+                """
+                try:
+
+                    if isOn:
+                        if data != None:
+
+                            # filtering data based on layer and neuron
+                            if str(index) not in yAxisList:
+                                yAxisList[str(index)] = deque(maxlen=100)
+
+                            # add data
+                            if len(data) != 0:
+                                yAxisList[str(index)].append(
+                                    statistics.mean([d["V"] for d in data]))
+
+                            return {'data': [
+                                go.Scatter(
+                                x=list(xAxis),
+                                y=list(yAxisList[str(index)]),
+                                mode='lines+markers',
+                                name='',
+                                fill='tozeroy',
+                                marker_color='rgb(44, 160, 44)',
+                                text=list(xAxisLabel),
+                                hovertemplate="%{text} <b><br>%{y}</b>"
+                                )],
+                                'layout': go.Layout(
+                                margin={'l': 40, 'r': 0, 't': 0, 'b': 35},
+                                uirevision='no reset of zoom',
+                                yaxis={'title': 'Potential'},
+                                xaxis={'title': 'Step'}
+
+                            )}
+                        else:
+                            if str(index) not in yAxisList:
+                                yAxisList[str(index)] = deque(maxlen=100)
+                                yAxisList[str(index)].append(0)
+                            else:
+                                if(len(yAxisList[str(index)]) > 0):
+                                    yAxisList[str(index)].append(yAxisList[str(index)][-1])                        
+                                else:
+                                    yAxisList[str(index)].append(0)
+                                    
+                            return {'data': [
+                                go.Scatter(
+                                x=list(xAxis),
+                                y=list(yAxisList[str(index)]),
+                                mode='lines+markers',
+                                name='',
+                                fill='tozeroy',
+                                marker_color='rgb(44, 160, 44)',
+                                text=list(xAxisLabel),
+                                hovertemplate="%{text} <b><br>%{y}</b>"
+                                )],
+                                'layout': go.Layout(
+                                margin={'l': 40, 'r': 0, 't': 0, 'b': 35},
+                                uirevision='no reset of zoom',
+                                yaxis={'title': 'Potential'},
+                                xaxis={'title': 'Step'}
+                            )}
                     else:
                         if str(index) not in yAxisList:
                             yAxisList[str(index)] = deque(maxlen=100)
 
-                        yAxisList[str(index)].append(0)
-                        return {'data': [
-                            go.Bar(
-                            x=list(xAxis),
-                            y=list(yAxisList[str(index)]),
-                            marker_color='rgb(31, 119, 180)',
-                            name='',
-                            text=list(xAxisLabel),
-                            hovertemplate="%{text} <b><br>%{y}</b>"
-                            )],
-                            'layout': go.Layout(
-                            margin={'l': 40, 'r': 0, 't': 0, 'b': 35},
-                            uirevision='no reset of zoom',
-                            yaxis={'title': 'Number of Spikes'},
-                            xaxis={'title': 'Step'} 
-                        )}
-                else:
-                    return {'data': [
-                        go.Bar(
-                        x=list(xAxis),
-                        y=list(yAxisList[str(index)]),
-                        marker_color='rgb(31, 119, 180)',
-                        text=list(xAxisLabel),
-                        name='',
-                        hovertemplate="%{text} <b><br>%{y}</b>"
-                        )],
-                        'layout': go.Layout(
-                        margin={'l': 40, 'r': 0, 't': 0, 'b': 35},
-                        uirevision='no reset of zoom',
-                        yaxis={'title': 'Number of Spikes'},
-                        xaxis={'title': 'Step'}
-                    )}
-            except Exception as e:
-                print("spikeCountDrawGraph: "+str(e))
-
-        def neuronPotentialDrawGraph(self, index, data, xAxis, xAxisLabel, yAxisList, isOn):
-            """ Create scatter plot for selected neuron, that contains 
-            membrane potential per interval.
-
-            Args:
-                index (int): index of the new added area
-                data (list): data to be added to the graph
-                xAxis (deque): X axis values
-                xAxisLabel (deque): X axis labels
-                yAxisList (dict): dict contains Y axis values
-                isOn (bool): whether this graph is active or not
-
-            Returns:
-                scatter plot content (data and layout)
-            """
-            try:
-
-                if isOn:
-                    if data != None:
-
-                        # filtering data based on layer and neuron
-                        if str(index) not in yAxisList:
-                            yAxisList[str(index)] = deque(maxlen=100)
-
-                        # add data
-                        if len(data) != 0:
-                            yAxisList[str(index)].append(
-                                statistics.mean([d["V"] for d in data]))
-
                         return {'data': [
                             go.Scatter(
                             x=list(xAxis),
@@ -534,207 +582,158 @@ class callbacks():
                             uirevision='no reset of zoom',
                             yaxis={'title': 'Potential'},
                             xaxis={'title': 'Step'}
-
                         )}
-                    else:
-                        if str(index) not in yAxisList:
-                            yAxisList[str(index)] = deque(maxlen=100)
-                            yAxisList[str(index)].append(0)
+                except Exception as e:
+                    print("neuronPotentialDrawGraph: "+str(e))
+
+            def classDrawGraph(index, data, isOn, labels):
+                """ Create scatter polar plot for selected neuron, that represents 
+                class responsible on firing theis neuron.
+
+                Args:
+                    index (int): index of the new added area
+                    data (list): data to be added to the graph
+                    isOn (bool): whether this graph is active or not
+                    labels (list): list of labels
+                Returns:
+                    scatter polar plot content (data and layout)
+                """
+                try:
+                    if isOn:
+                        if data != None and labels != None:
+
+                            labels = list(dict.fromkeys(
+                                [("Class:"+str(l["Label"]), 0) for l in labels]))
+                            labels = [list(l) for l in labels]
+
+                            for d in data:
+                                for l in labels:
+                                    if "Class:"+str(d['Input']) == str(l[0]):
+                                        l[1] = l[1]+1
+
+                            theta = [l[0] for l in labels]
+                            labels = [l[1] for l in labels]
+                            return {'data': [
+                                go.Scatterpolar(
+                                theta=theta,
+                                r=labels,
+                                fill='toself',
+                                fillcolor='rgba(255, 127, 14)',
+                                line=dict(color="rgb(255, 127, 14)")
+                                )],
+                                'layout': go.Layout(
+                                polar=dict(
+                                    angularaxis=dict(
+                                    direction="clockwise",
+                                    period=6),
+                                    radialaxis=dict(
+                                    visible=False
+                                    )
+                                ),
+                                showlegend=False,
+                                margin={'l': 0, 'r': 0, 't': 25, 'b': 30},
+                            )
+                            }
                         else:
-                            if(len(yAxisList[str(index)]) > 0):
-                                yAxisList[str(index)].append(yAxisList[str(index)][-1])                        
-                            else:
-                                yAxisList[str(index)].append(0)
-                                
-                        return {'data': [
-                            go.Scatter(
-                            x=list(xAxis),
-                            y=list(yAxisList[str(index)]),
-                            mode='lines+markers',
-                            name='',
-                            fill='tozeroy',
-                            marker_color='rgb(44, 160, 44)',
-                            text=list(xAxisLabel),
-                            hovertemplate="%{text} <b><br>%{y}</b>"
-                            )],
-                            'layout': go.Layout(
-                            margin={'l': 40, 'r': 0, 't': 0, 'b': 35},
-                            uirevision='no reset of zoom',
-                            yaxis={'title': 'Potential'},
-                            xaxis={'title': 'Step'}
-                        )}
-                else:
-                    if str(index) not in yAxisList:
-                        yAxisList[str(index)] = deque(maxlen=100)
-
-                    return {'data': [
-                        go.Scatter(
-                        x=list(xAxis),
-                        y=list(yAxisList[str(index)]),
-                        mode='lines+markers',
-                        name='',
-                        fill='tozeroy',
-                        marker_color='rgb(44, 160, 44)',
-                        text=list(xAxisLabel),
-                        hovertemplate="%{text} <b><br>%{y}</b>"
-                        )],
-                        'layout': go.Layout(
-                        margin={'l': 40, 'r': 0, 't': 0, 'b': 35},
-                        uirevision='no reset of zoom',
-                        yaxis={'title': 'Potential'},
-                        xaxis={'title': 'Step'}
-                    )}
-            except Exception as e:
-                print("neuronPotentialDrawGraph: "+str(e))
-
-        def classDrawGraph(self, index, data, isOn, labels):
-            """ Create scatter polar plot for selected neuron, that represents 
-            class responsible on firing theis neuron.
-
-            Args:
-                index (int): index of the new added area
-                data (list): data to be added to the graph
-                isOn (bool): whether this graph is active or not
-                labels (list): list of labels
-            Returns:
-                scatter polar plot content (data and layout)
-            """
-            try:
-                if isOn:
-                    if data != None and labels != None:
-
-                        labels = list(dict.fromkeys(
-                            [("Class:"+str(l["Label"]), 0) for l in labels]))
-                        labels = [list(l) for l in labels]
-
-                        for d in data:
-                            for l in labels:
-                                if "Class:"+str(d['Input']) == str(l[0]):
-                                    l[1] = l[1]+1
-
-                        theta = [l[0] for l in labels]
-                        labels = [l[1] for l in labels]
-                        return {'data': [
-                            go.Scatterpolar(
-                            theta=theta,
-                            r=labels,
-                            fill='toself',
-                            fillcolor='rgba(255, 127, 14)',
-                            line=dict(color="rgb(255, 127, 14)")
-                            )],
-                            'layout': go.Layout(
-                            polar=dict(
-                                angularaxis=dict(
-                                direction="clockwise",
-                                period=6),
-                                radialaxis=dict(
-                                visible=False
-                                )
-                            ),
-                            showlegend=False,
-                            margin={'l': 0, 'r': 0, 't': 25, 'b': 30},
-                        )
-                        }
+                            return {'data': [
+                                go.Scatterpolar(
+                                theta=[],
+                                r=[],
+                                fill='toself',
+                                fillcolor='rgba(255, 127, 14)',
+                                line=dict(color="rgb(255, 127, 14)")
+                                )],
+                                'layout': go.Layout(
+                                polar=dict(
+                                    radialaxis=dict(
+                                    visible=True
+                                    )
+                                ),
+                                showlegend=False,
+                                margin={'l': 0, 'r': 0, 't': 25, 'b': 30},
+                            )
+                            }
                     else:
                         return {'data': [
-                            go.Scatterpolar(
-                            theta=[],
-                            r=[],
-                            fill='toself',
-                            fillcolor='rgba(255, 127, 14)',
-                            line=dict(color="rgb(255, 127, 14)")
-                            )],
-                            'layout': go.Layout(
-                            polar=dict(
-                                radialaxis=dict(
-                                visible=True
-                                )
-                            ),
+                                go.Scatterpolar(
+                                theta=[],
+                                r=[],
+                                fill='toself',
+                                fillcolor='rgba(255, 127, 14)',
+                                line=dict(color="rgb(255, 127, 14)")
+                                )],
+                                'layout': go.Layout(
+                                polar=dict(
+                                    radialaxis=dict(
+                                    visible=True
+                                    )
+                                ),
                             showlegend=False,
                             margin={'l': 0, 'r': 0, 't': 25, 'b': 30},
                         )
                         }
-                else:
-                    return {'data': [
-                            go.Scatterpolar(
-                            theta=[],
-                            r=[],
-                            fill='toself',
-                            fillcolor='rgba(255, 127, 14)',
-                            line=dict(color="rgb(255, 127, 14)")
-                            )],
-                            'layout': go.Layout(
-                            polar=dict(
-                                radialaxis=dict(
-                                visible=True
-                                )
-                            ),
-                        showlegend=False,
-                        margin={'l': 0, 'r': 0, 't': 25, 'b': 30},
-                    )
-                    }
-            except Exception as e:
-                print("classDrawGraph: "+str(e))
-
-        # ------------------------------------------------------------
-        # MongoDB operations
-        # ------------------------------------------------------------
-
-        def getSpikesOfNeuron(self, timestamp, g, neuronInfo):
-            """ Get spikes per neuron activity in a given interval.
-
-            Args:
-                timestamp (int): timestamp value
-                g (Global_Var): reference to access global variables
-                neuronInfo (list): selected neuron information
-
-            Returns:
-                spikes count
-            """
-            layer = [neuronInfo["layer"]]
-            neuron = [int(neuronInfo["neuron"])]
-
-            # MongoDB---------------------
-            col = pymongo.collection.Collection(g.db, 'spikes')
-            spikeOfNeuron = col.find({"T": {'$gt': timestamp, '$lte': (
-                timestamp+g.updateInterval)}, "i.L": {'$in': layer}, "i.N": {'$in': neuron}})
-            # ----------------------------
-
-            # ToJson----------------------
-            spikeOfNeuron = loads(dumps(spikeOfNeuron))
-            # ----------------------------
-
-            if not spikeOfNeuron:
-                return None
-            return spikeOfNeuron
-
-        def getPotentialOfNeuron(self, timestamp, g, neuronInfo):
-            """ Get neuron membrane potential activity in a given interval.
-
-            Args:
-                timestamp (int): timestamp value
-                g (Global_Var): reference to access global variables
-                neuronInfo (list): selected neuron information
-
-            Returns:
-                neuron membrane potential value
-            """
-            layer = [neuronInfo["layer"]]
-            neuron = [int(neuronInfo["neuron"])]
-            # MongoDB---------------------
-            col = pymongo.collection.Collection(g.db, 'potential')
-            FreqForNeuron = col.find(
-                {"T": {'$gt': timestamp, '$lte': (timestamp+g.updateInterval)}, 
-                "L": {'$in': layer}, "N": {'$in': neuron}})
-            # ----------------------------
-
-            # ToJson----------------------
-            FreqForNeuron = loads(dumps(FreqForNeuron))
-            # ----------------------------
-
-            if not FreqForNeuron:
-                return None
-            return FreqForNeuron
-
-    except Exception as e:
-        print("Helper functions: "+str(e))
\ No newline at end of file
+                except Exception as e:
+                    print("classDrawGraph: "+str(e))
+
+            # ------------------------------------------------------------
+            # MongoDB operations
+            # ------------------------------------------------------------
+
+            def getSpikesOfNeuron(timestamp, g, neuronInfo):
+                """ Get spikes per neuron activity in a given interval.
+
+                Args:
+                    timestamp (int): timestamp value
+                    g (Global_Var): reference to access global variables
+                    neuronInfo (list): selected neuron information
+
+                Returns:
+                    spikes count
+                """
+                layer = [neuronInfo["layer"]]
+                neuron = [int(neuronInfo["neuron"])]
+
+                # MongoDB---------------------
+                col = pymongo.collection.Collection(g.db, 'spikes')
+                spikeOfNeuron = col.find({"T": {'$gt': timestamp, '$lte': (
+                    timestamp+g.updateInterval)}, "i.L": {'$in': layer}, "i.N": {'$in': neuron}})
+                # ----------------------------
+
+                # ToJson----------------------
+                spikeOfNeuron = loads(dumps(spikeOfNeuron))
+                # ----------------------------
+
+                if not spikeOfNeuron:
+                    return None
+                return spikeOfNeuron
+
+            def getPotentialOfNeuron(timestamp, g, neuronInfo):
+                """ Get neuron membrane potential activity in a given interval.
+
+                Args:
+                    timestamp (int): timestamp value
+                    g (Global_Var): reference to access global variables
+                    neuronInfo (list): selected neuron information
+
+                Returns:
+                    neuron membrane potential value
+                """
+                layer = [neuronInfo["layer"]]
+                neuron = [int(neuronInfo["neuron"])]
+                # MongoDB---------------------
+                col = pymongo.collection.Collection(g.db, 'potential')
+                FreqForNeuron = col.find(
+                    {"T": {'$gt': timestamp, '$lte': (timestamp+g.updateInterval)}, 
+                    "L": {'$in': layer}, "N": {'$in': neuron}})
+                # ----------------------------
+
+                # ToJson----------------------
+                FreqForNeuron = loads(dumps(FreqForNeuron))
+                # ----------------------------
+
+                if not FreqForNeuron:
+                    return None
+                return FreqForNeuron
+
+        except Exception as e:
+            print("Helper functions: "+str(e))
\ No newline at end of file
diff --git a/src/Modules/Neuron/layout.py b/src/Modules/Neuron/layout.py
index 9f47756115b5d38c97e668d083c3cd41fec6b7de..518969e656ddf1897f9091e79f73cf54436e7274 100644
--- a/src/Modules/Neuron/layout.py
+++ b/src/Modules/Neuron/layout.py
@@ -11,9 +11,9 @@ import plotly.graph_objects as go
 import dash_core_components as dcc
 import dash_html_components as html
 import dash_bootstrap_components as dbc
+from src.templates.layoutOp import layoutOp
 
-
-class layout():
+class layout(layoutOp):
     """ Layout class
     """
     # Needed variables for the graphs --------------------------------
@@ -45,7 +45,7 @@ class layout():
             self.yAxisSpikeNbrGraph[index] = deque(maxlen=100)
             self.yAxisPotentialGraph[index] = deque(maxlen=100)
 
-    def Vis(self, app, g):
+    def Vis(self):
         """ Create layer components
 
         Args:
@@ -58,7 +58,7 @@ class layout():
         try:
             self.clearData([])
             print("neuron-vis")
-            self.SpikePerNeuron = self.getSpikePerNeuron(g)
+            self.SpikePerNeuron = self.getSpikePerNeuron(self.g)
             layer = dbc.Card(
                 dbc.CardBody(
                     [
@@ -68,10 +68,10 @@ class layout():
                                 dcc.Dropdown(
                                     id='LayerFilterNeuron',
                                     options=[{'label': str(i), 'value': str(i)} for i in (
-                                        i for i in g.Layer_Neuron if i != "Input")],
+                                        i for i in self.g.Layer_Neuron if i != "Input")],
                                     multi=False,
                                     value=[{'label': str(i), 'value': str(i)} for i in (
-                                        i for i in g.Layer_Neuron if i != "Input")][0]["value"],
+                                        i for i in self.g.Layer_Neuron if i != "Input")][0]["value"],
                                     style={'width': '150px', "marginLeft": "10px", "textAlign": "start"}),
                                 dcc.Dropdown(
                                     id='NeuronFilterNeuron',
@@ -81,14 +81,14 @@ class layout():
                                 dbc.Button("+", id="AddComponentNeuron", n_clicks=0, style={
                                     "fontWeight": "500", "marginLeft": "20px", "height": "36px", "backgroundColor": "rgb(68, 71, 99)", "borderColor": "rgb(68, 71, 99)"}), html.Div(id='clear-Neuron', children="False", style={'display': 'none'}), html.Div(id='display-Neuron', children="False", style={'display': 'none'})
                             ], className="row"),
-                            html.Div(id={'type': "GraphsAreaNeuron"}, children=[html.Div(id={'type': "OutputNeurons"}, children=[dcc.Graph(id="SpikePerNeuronFreq", figure=self.SpikePerNeuron3D(g), config={"displaylogo": False}, className="col-6"),
-                                                                                                                                 dcc.Graph(id="SpikePerNeuronNbr", animate=False, config={"displaylogo": False}, className="col-6")], className="row")], style={"textAlign": "-webkit-center", "paddingTop": "10px"}) if(g.finalLabels != None) else html.Div(id={'type': "GraphsAreaNeuron"}, children=[], style={"textAlign": "-webkit-center", "paddingTop": "10px"})
+                            html.Div(id={'type': "GraphsAreaNeuron"}, children=[html.Div(id={'type': "OutputNeurons"}, children=[dcc.Graph(id="SpikePerNeuronFreq", figure=self.SpikePerNeuron3D(self.g), config={"displaylogo": False}, className="col-6"),
+                                                                                                                                 dcc.Graph(id="SpikePerNeuronNbr", animate=False, config={"displaylogo": False}, className="col-6")], className="row")], style={"textAlign": "-webkit-center", "paddingTop": "10px"}) if(self.g.finalLabels != None) else html.Div(id={'type': "GraphsAreaNeuron"}, children=[], style={"textAlign": "-webkit-center", "paddingTop": "10px"})
                         ])
                     ], style={"textAlign": "center", "padding": "10px"}
                 ))
 
             # load callbacks
-            callbacks().init(self, app, g)
+            callbacks(self,self.app, self.g)
             # Return the Layer
             return layer
         except Exception as e:
diff --git a/src/Modules/Neuron/spark.py b/src/Modules/Neuron/spark.py
index e2acfe179f4057832770fcbb6b097623bdeab045..69705a6be5d4dd891b42ca64c88add867f0de785 100644
--- a/src/Modules/Neuron/spark.py
+++ b/src/Modules/Neuron/spark.py
@@ -2,63 +2,62 @@
 """
 
 import traceback
-
-def process(g):
-    """ Start processing and reduce module count .
-
-    Args:
-        g (Global_Var): reference to access global variables
-    """
-    preProcessing(g)
-    g.modulesNbr = g.modulesNbr - 1
-
-# Spark operations and preprocessing----------------------------------
-
-
-def preProcessing(g):
-    """ Apache Spark pre-processing.
-
-    Args:
-        g (Global_Var): reference to access global variables
-    """
-    MODULE_NAME = "Neuron"
-    DOCUMENT_NAME = "spikes"
-    OUTPUT_DOCUMENT_NAME = "SpikePerNeuron"
-    MONGODB_URL = g.MONGODBURL
-    try:
-        if (not (OUTPUT_DOCUMENT_NAME in g.db.list_collection_names())) and (DOCUMENT_NAME in g.db.list_collection_names()):
-
-            # Spark setup --------------------------------------------
-            if g.sparkSession == None:
-                g.createSparkSession()
-            # --------------------------------------------------------
-            # Spike per neuron
-            df = g.sparkSession.read.format("com.mongodb.spark.sql") \
-                .option("spark.mongodb.input.uri", MONGODB_URL + g.name + "."+DOCUMENT_NAME+"?authSource=admin&readPreference=primaryPreferred") \
-                .option("pipeline", "[{ $sort : { T : 1} }]")
-
-            df = df.load()
-
-            print("done reading ...")
-
-            # doing the heavy work -----------------------------------
-
-            df = df.groupBy(df["i"]).count()
-
-            # Data save into MongoDB ---------------------------------
-
-            df.write.format("com.mongodb.spark.sql.DefaultSource") \
-                    .option("spark.mongodb.output.uri",
-                            MONGODB_URL + g.name + "."+OUTPUT_DOCUMENT_NAME+"?authSource=admin&readPreference=primaryPreferred").mode("overwrite").save()
-
-            # --------------------------------------------------------
-        else:
-            if(not DOCUMENT_NAME in g.db.list_collection_names()):
-                print(DOCUMENT_NAME, "not found")
-                g.modules = [module for module in g.modules if module != MODULE_NAME]
-        print("done ", MODULE_NAME)
-
-    except Exception as e:
-        print("Error:" + str(e))
-        traceback.print_exc()
-        pass
+from src.templates.sparkOp import sparkOp
+
+def init(g):
+    spark(g)
+    
+class spark(sparkOp):
+
+    def __init__(self, g):
+        """ 
+        Args:
+            g (Global_Var): reference to access global variables
+        """
+        module = "Neuron"
+        document = "spikes"
+        output_document = "SpikePerNeuron"
+        super().__init__(g, module, document, output_document)
+
+    # Spark operations and preprocessing----------------------------------
+
+    def preProcessing(self):
+        """ Apache Spark pre-processing.
+        """
+        try:
+            if (not (self.OUTPUT_DOCUMENT_NAME in self.g.db.list_collection_names())) and (self.DOCUMENT_NAME in self.g.db.list_collection_names()):
+
+                # Spark setup --------------------------------------------
+                if self.g.sparkSession == None:
+                    self.g.createSparkSession()
+                # --------------------------------------------------------
+                # Spike per neuron
+                df = self.g.sparkSession.read.format("com.mongodb.spark.sql") \
+                    .option("spark.mongodb.input.uri", self.MONGODB_URL + self.g.name + "."+self.DOCUMENT_NAME+"?authSource=admin&readPreference=primaryPreferred") \
+                    .option("pipeline", "[{ $sort : { T : 1} }]")
+
+                df = df.load()
+
+                print("done reading ...")
+
+                # doing the heavy work -----------------------------------
+
+                df = df.groupBy(df["i"]).count()
+
+                # Data save into MongoDB ---------------------------------
+
+                df.write.format("com.mongodb.spark.sql.DefaultSource") \
+                        .option("spark.mongodb.output.uri",
+                                self.MONGODB_URL + self.g.name + "."+self.OUTPUT_DOCUMENT_NAME+"?authSource=admin&readPreference=primaryPreferred").mode("overwrite").save()
+
+                # --------------------------------------------------------
+            else:
+                if(not self.DOCUMENT_NAME in self.g.db.list_collection_names()):
+                    print(self.DOCUMENT_NAME, "not found")
+                    self.g.modules = [module for module in self.g.modules if module != self.MODULE_NAME]
+            print("done ", self.MODULE_NAME)
+
+        except Exception as e:
+            print("Error:" + str(e))
+            traceback.print_exc()
+            pass
diff --git a/src/Modules/Synapse/callbacks.py b/src/Modules/Synapse/callbacks.py
index b7259448a34d8305366fa2d5ee9a8fc5a3057635..99e63de3c966e2809f255919ec9f31af42a0a8d7 100644
--- a/src/Modules/Synapse/callbacks.py
+++ b/src/Modules/Synapse/callbacks.py
@@ -20,13 +20,13 @@ import statistics
 from itertools import groupby
 import numpy as np
 import pandas as pd
+from src.templates.callbacksOp import callbacksOp
 
-
-class callbacks():
+class callbacks(callbacksOp):
     """ Callbacks class
     """
 
-    def init(self, super, app, g):
+    def __init__(self, super, app, g):
         """ Initialize the callback .
 
         Args:
diff --git a/src/Modules/Synapse/layout.py b/src/Modules/Synapse/layout.py
index df175adef4231e751ecfc421aa1ec869161ef62d..d2f8e6a87488a569f3b1b50989e65bf277975ba7 100644
--- a/src/Modules/Synapse/layout.py
+++ b/src/Modules/Synapse/layout.py
@@ -6,9 +6,9 @@ import dash_html_components as html
 import dash_bootstrap_components as dbc
 from .callbacks import callbacks
 import dash_core_components as dcc
+from src.templates.layoutOp import layoutOp
 
-
-class layout():
+class layout(layoutOp):
     """ Layout class
     """
     # Needed variables for the graphs --------------------------------
@@ -38,7 +38,7 @@ class layout():
         
         self.globalHeatMap.clear()
 
-    def Vis(self,app,g):
+    def Vis(self):
         """ Create layer components
 
         Args:
@@ -59,7 +59,7 @@ class layout():
                         dcc.Dropdown(
                         id='LayerFilterSynapse',
                         options=[{'label': str(i), 'value': str(i)} for i in (
-                        i for i in g.Layer_Neuron if i != "Input")], multi=False,
+                        i for i in self.g.Layer_Neuron if i != "Input")], multi=False,
                         style={'width': '150px', "marginLeft": "10px", "textAlign": "start"}),
                         dcc.Dropdown(
                         id='NeuronFilterSynapse', options=[], multi=False,
@@ -91,7 +91,7 @@ class layout():
                 )
             )
             # load callbacks
-            callbacks().init(self,app,g)
+            callbacks(self,self.app,self.g)
             # Return the Layer
             return layer
         except Exception as e:
diff --git a/src/Modules/Synapse/spark.py b/src/Modules/Synapse/spark.py
index 3118a9fdea825fdc19513fcd3d73eca2b4ed1118..6ee4246b8c9a15a45a7f8b2466440625deb02385 100644
--- a/src/Modules/Synapse/spark.py
+++ b/src/Modules/Synapse/spark.py
@@ -4,70 +4,67 @@
 import pymongo
 import traceback
 from pyspark.sql import functions as F
-
-
-def process(g):
-    """ Start processing and reduce module count .
-
-    Args:
-        g (Global_Var): reference to access global variables
-    """
-    preProcessing(g)
-    g.modulesNbr = g.modulesNbr - 1
-
-# Spark operations and preprocessing----------------------------------
-
-
-def preProcessing(g):
-    """ Apache Spark pre-processing.
-
-    Args:
-        g (Global_Var): reference to access global variables
-    """
-    MODULE_NAME = "Synapse"
-    DOCUMENT_NAME = "synapseWeight"
-    OUTPUT_DOCUMENT_NAME_FINAL = "synapseWeightFinal"
-    MONGODB_URL = g.MONGODBURL
-    try:
-        if (not (OUTPUT_DOCUMENT_NAME_FINAL in g.db.list_collection_names())) and (DOCUMENT_NAME in g.db.list_collection_names()):
-
-            # Spark setup---------------------------------------
-            if g.sparkSession == None:
-                g.createSparkSession()
-            # --------------------------------------------------
-            df = g.sparkSession.read.format("com.mongodb.spark.sql") \
-                .option("spark.mongodb.input.uri", MONGODB_URL + g.name + "."+DOCUMENT_NAME+"?authSource=admin&readPreference=primaryPreferred") \
-                .option("pipeline", "[{ $sort: { T: 1 } },{$group : { _id : {To:'$To', C:'$C'}, L : { $last: '$L'}, T : { $last: '$T'},V : { $last: '$V'},index : { $last: '$index'} } }]")
-
-            df = df.load()
-          
-            # Data save into MongoDB ---------------------------------
-
-            df.write.format("com.mongodb.spark.sql.DefaultSource") \
-                .option("spark.mongodb.output.uri",
-                        MONGODB_URL + g.name + "."+OUTPUT_DOCUMENT_NAME_FINAL+"?authSource=admin&readPreference=primaryPreferred").mode('append').save()
-
-            # Indexes creation ---------------------------------------
-
-            print("Indexes creation (please wait...)")
-
-            col = pymongo.collection.Collection(g.db, OUTPUT_DOCUMENT_NAME_FINAL)
-            col.create_index([("_id.L", 1)])
-            col.create_index([("_id", 1)])
-            col.create_index([("_id.To", 1),("_id.C", 1)])
-            col.create_index([("T", 1)])
-            col.create_index([("index", 1)])
-            col.create_index([("V", 1)])
+from src.templates.sparkOp import sparkOp
+
+def init(g):
+    spark(g)
+    
+class spark(sparkOp):
+
+    def __init__(self, g):
+        """ 
+        Args:
+            g (Global_Var): reference to access global variables
+        """
+        module = "Synapse"
+        document = "synapseWeight"
+        output_document = "synapseWeightFinal"
+        super().__init__(g, module, document, output_document)
+
+    # Spark operations and preprocessing----------------------------------
+
+    def preProcessing(self):
+        """ Apache Spark pre-processing.
+        """
+        try:
+            if (not (self.OUTPUT_DOCUMENT_NAME in self.g.db.list_collection_names())) and (self.DOCUMENT_NAME in self.g.db.list_collection_names()):
+
+                # Spark setup---------------------------------------
+                if self.g.sparkSession == None:
+                    self.g.createSparkSession()
+                # --------------------------------------------------
+                df = self.g.sparkSession.read.format("com.mongodb.spark.sql") \
+                    .option("spark.mongodb.input.uri", self.MONGODBURL + self.g.name + "."+self.DOCUMENT_NAME+"?authSource=admin&readPreference=primaryPreferred") \
+                    .option("pipeline", "[{ $sort: { T: 1 } },{$group : { _id : {To:'$To', C:'$C'}, L : { $last: '$L'}, T : { $last: '$T'},V : { $last: '$V'},index : { $last: '$index'} } }]")
+
+                df = df.load()
             
-
-            # --------------------------------------------------------
-        else:
-            if(not DOCUMENT_NAME in g.db.list_collection_names()):
-                print(DOCUMENT_NAME, "not found")
-                g.modules = [module for module in g.modules if module != MODULE_NAME]
-        print("done", MODULE_NAME)
-
-    except Exception as e:
-        print("Error:" + str(e))
-        traceback.print_exc()
-        pass
+                # Data save into MongoDB ---------------------------------
+
+                df.write.format("com.mongodb.spark.sql.DefaultSource") \
+                    .option("spark.mongodb.output.uri",
+                            self.MONGODBURL + self.g.name + "."+self.OUTPUT_DOCUMENT_NAME+"?authSource=admin&readPreference=primaryPreferred").mode('append').save()
+
+                # Indexes creation ---------------------------------------
+
+                print("Indexes creation (please wait...)")
+
+                col = pymongo.collection.Collection(self.g.db, self.OUTPUT_DOCUMENT_NAME)
+                col.create_index([("_id.L", 1)])
+                col.create_index([("_id", 1)])
+                col.create_index([("_id.To", 1),("_id.C", 1)])
+                col.create_index([("T", 1)])
+                col.create_index([("index", 1)])
+                col.create_index([("V", 1)])
+
+                # --------------------------------------------------------
+            else:
+                if(not self.DOCUMENT_NAME in self.g.db.list_collection_names()):
+                    print(self.DOCUMENT_NAME, "not found")
+                    self.g.modules = [module for module in self.g.modules if module != self.MODULE_NAME]
+            print("done", self.MODULE_NAME)
+
+        except Exception as e:
+            print("Error:" + str(e))
+            traceback.print_exc()
+            pass
diff --git a/src/templates/Template Module/__init__.py b/src/templates/Template Module/__init__.py
deleted file mode 100755
index 0519ecba6ea913e21689ec692e81e9e4973fbf73..0000000000000000000000000000000000000000
--- a/src/templates/Template Module/__init__.py	
+++ /dev/null
@@ -1 +0,0 @@
- 
\ No newline at end of file
diff --git a/src/templates/Template Module/callbacks.py b/src/templates/Template Module/callbacks.py
deleted file mode 100644
index c89ac8d96445024c676076c46e3aa4add33dd36b..0000000000000000000000000000000000000000
--- a/src/templates/Template Module/callbacks.py	
+++ /dev/null
@@ -1,62 +0,0 @@
-""" This class contains Dash callbacks
-
-    Dash callbacks are the responsible on updating graphs each step.
-"""
-
-
-class callbacks():
-    """Callbacks class
-    """
-
-    def init(self, super, app, g):
-        """Initialize the callback .
-
-        Args:
-            app : Flask app
-            g (Global_Var): reference to access global variables
-        """
-        # ------------------------------------------------------------
-        #     Callbacks
-        # ------------------------------------------------------------
-        # to prevent creating duplicate callbacks next use
-        if not g.checkExistance(app, "name of one element from layout"):
-
-            # Add callbacks here
-            # Use Input("v-step", "children"),State("interval",
-            # "value") to keep track of time slider
-            try:
-                # @app.callback([Output()], [Input()])
-                # def NeuronSelection(input):
-                # do process here
-                #    return output
-                print("Add Callbacks here")
-
-                try:
-                    @app.callback([Output("display-template", "children"), Output("clear-template", "children")],
-                                  [Input("v-step", "children")], [State("interval", "value"), State("clear", "children"),
-                                                                  State("clear-Neuron", "children"), State("display-Neuron", "children")])
-                    def display(value, step, clear, localClear, display):
-                        if(localClear != clear):
-                            super.clearData()
-
-                        return [display, clear]
-                except Exception as e:
-                    print("display:"+str(e))
-
-            except Exception as e:
-                print("CallbackName:" + str(e))
-
-    # ----------------------------------------------------------------
-    # Callback related Data retreiving functions
-    # ----------------------------------------------------------------
-    try:
-
-        print("Add functions here")
-        # ------------------------------------------------------------
-        # Data gethering (MongoDB operations)
-        # ------------------------------------------------------------
-
-        print("Add MongoDB functions here")
-
-    except Exception as e:
-        print("Data process loading:"+str(e))
diff --git a/src/templates/Template Module/layout.py b/src/templates/Template Module/layout.py
deleted file mode 100644
index dd3e78a13743588253eb369db25c34db47722365..0000000000000000000000000000000000000000
--- a/src/templates/Template Module/layout.py	
+++ /dev/null
@@ -1,53 +0,0 @@
-"""Create a dash layout for the module
-"""
-
-from collections import deque
-import dash_html_components as html
-import dash_bootstrap_components as dbc
-from .callbacks import callbacks
-
-
-class layout():
-    """ Layout class
-    """
-    # Needed variables for the graphs --------------------------------
-    #
-    xAxisGraphName = deque(maxlen=100)
-    #
-    # ----------------------------------------------------------------
-
-    def clearData(self):
-        """ Clear the data when moved forward or backward for more than one step
-        """
-        self.xAxisGraphName.clear()
-
-    def Vis(self, app, g):
-        """ Create layer components
-
-        Args:
-            app : Flask app
-            g (Global_Var): reference to access global variables
-
-        Returns:
-            Dash app layer
-        """
-        try:
-
-            layer = dbc.Card(
-                dbc.CardBody(
-                    [
-                        html.Div(id="template-vis", children=[
-                            # Global show based on selected layer
-                            html.H3("Your Layer here"),
-                            html.Div(id='clear-template', children="False", style={'display': 'none'}), 
-                            html.Div(id='display-template', children="False", style={'display': 'none'})
-                        ])
-                    ], style={"textAlign": "center", "padding": "10px"}
-                )
-            )
-            # load callbacks
-            callbacks().init(self, app, g)
-            # Return the Layer
-            return layer
-        except Exception as e:
-            print("Layer:" + str(e))
diff --git a/src/templates/Template Module/spark.py b/src/templates/Template Module/spark.py
deleted file mode 100644
index 5432f84913cf1773f14ebe503ccbc97fabc054b7..0000000000000000000000000000000000000000
--- a/src/templates/Template Module/spark.py	
+++ /dev/null
@@ -1,56 +0,0 @@
-""" Spark pre-processing operations .
-"""
-
-import traceback
-
-def process(g):
-    """ Start processing and reduce module count .
-
-    Args:
-        g (Global_Var): reference to access global variables
-    """
-    preProcessing(g)
-    g.modulesNbr = g.modulesNbr - 1
-
-# Spark operations and pre-processing --------------------------------
-
-
-def preProcessing(g):
-    """Loads the GDD database into BDD .
-
-    Args:
-        g (Global_Var): reference to access global variables
-    """
-    MODULE_NAME = ""
-    DOCUMENT_NAME = ""
-    OUTPUT_DOCUMENT_NAME = ""
-    MONGODBURL = g.MONGODBURL
-    try:
-        if (not (OUTPUT_DOCUMENT_NAME in g.db.list_collection_names())) and (DOCUMENT_NAME in g.db.list_collection_names()):
-
-            # Spark setup --------------------------------------------
-
-            if g.sparkSession == None:
-                g.createSparkSession()
-
-            # doing the heavy work -----------------------------------
-
-            # Save data into Mongo------------------------------------
-
-            #df.write.format("com.mongodb.spark.sql.DefaultSource") \
-            #        .option("spark.mongodb.output.uri",
-            #                MONGODBURL + g.name + "."+OUTPUT_DOCUMENT_NAME+"?authSource=admin&readPreference=primaryPreferred").mode("overwrite").save()
-
-            #print("Saved to BDD")
-
-        # ------------------------------------------------------------
-        else:
-            if(not DOCUMENT_NAME in g.db.list_collection_names()):
-                print(DOCUMENT_NAME, "not found")
-                g.modules = [module for module in g.modules if module != MODULE_NAME]
-        print("done ", MODULE_NAME)
-
-    except Exception as e:
-        print("Error:" + str(e))
-        traceback.print_exc()
-        pass
diff --git a/src/templates/callbacksOp.py b/src/templates/callbacksOp.py
new file mode 100644
index 0000000000000000000000000000000000000000..9345902131794e1dcf25a1e61d0868533ccda518
--- /dev/null
+++ b/src/templates/callbacksOp.py
@@ -0,0 +1,36 @@
+""" Dash callbacks template. 
+"""
+
+
+from dash.dependencies import Output, Input, State
+
+
+class callbacksOp():
+
+    def __init__(self, app, g):
+        self.app = app 
+        self.g = g
+
+        """Initialize the callback .
+
+        Args:
+            app : Flask app
+            g (Global_Var): reference to access global variables
+        """
+        # ------------------------------------------------------------
+        #     Callbacks
+        # ------------------------------------------------------------
+        # to prevent creating duplicate callbacks next use (to be copied)
+        if not g.checkExistance(app, "name of one element from layout"):
+
+            try:
+                @app.callback([Output("display-template", "children"), Output("clear-template", "children")],
+                                [Input("v-step", "children")], [State("interval", "value"), State("clear", "children"),
+                                                                State("clear-Neuron", "children"), State("display-Neuron", "children")])
+                def display(value, step, clear, localClear, display):
+                    if(localClear != clear):
+                        super.clearData()
+
+                    return [display, clear]
+            except Exception as e:
+                print("display:"+str(e))
\ No newline at end of file
diff --git a/src/templates/layoutOp.py b/src/templates/layoutOp.py
new file mode 100644
index 0000000000000000000000000000000000000000..b45a1b4a260aeb42e3bd4b78c70a0c0e3e57890e
--- /dev/null
+++ b/src/templates/layoutOp.py
@@ -0,0 +1,29 @@
+""" Dash layout template .
+"""
+
+class layoutOp():
+    """ Layout class
+    """
+
+    def load(self, app, g):
+        """ 
+        Args:
+            app : Flask app
+            g (Global_Var): reference to access global variables
+        """
+        self.app = app 
+        self.g = g
+        return self.Vis()
+
+    def clearData(self):
+        """ Clear the data when moved forward or backward for more than one step
+        """
+        print("Clear different deques")
+
+    def Vis(self):
+        """ Create layer components
+
+        Returns:
+            Dash app layer
+        """
+        print("Layout here")
\ No newline at end of file
diff --git a/src/templates/sparkOp.py b/src/templates/sparkOp.py
new file mode 100644
index 0000000000000000000000000000000000000000..8593ed1a1fdd9aa44a8489cef9faf46b2c6b7c93
--- /dev/null
+++ b/src/templates/sparkOp.py
@@ -0,0 +1,23 @@
+""" Spark pre-processing template .
+"""
+
+class sparkOp():
+    def __init__(self,g,module,document,output_document):
+        """ 
+        Args:
+            g (Global_Var): reference to access global variables
+        """
+        self.g = g
+        self.MODULE_NAME = module
+        self.DOCUMENT_NAME = document
+        self.OUTPUT_DOCUMENT_NAME = output_document
+        self.MONGODBURL = g.MONGODBURL
+        self.preProcessing()
+        self.g.modulesNbr = self.g.modulesNbr - 1
+
+    # Spark operations and pre-processing --------------------------------
+
+    def preProcessing(self):
+        """ Preprocessing using Spark and storing data again in DB.
+        """
+        print("Add spark operations here")
\ No newline at end of file