From 73c861cce2f8ef36d3d331ff502638f22b5eafc5 Mon Sep 17 00:00:00 2001
From: Elbez Hammouda <hammoudae@gmail.com>
Date: Tue, 26 Oct 2021 15:06:18 +0200
Subject: [PATCH] Structure updated

---
 .metals/metals.h2.db                       |  Bin 0 -> 135168 bytes
 .metals/metals.log                         | 1542 ++++++++++++++++++++
 VS2N.py                                    |    8 +-
 src/Modules/General/callbacks.py           |    6 +-
 src/Modules/General/layout.py              |   40 +-
 src/Modules/General/spark.py               |  154 +-
 src/Modules/MultiLayer/callbacks.py        |   27 +-
 src/Modules/MultiLayer/layout.py           |    8 +-
 src/Modules/MultiLayer/spark.py            |   80 +-
 src/Modules/Neuron/callbacks.py            |  763 +++++-----
 src/Modules/Neuron/layout.py               |   18 +-
 src/Modules/Neuron/spark.py                |  119 +-
 src/Modules/Synapse/callbacks.py           |    6 +-
 src/Modules/Synapse/layout.py              |   10 +-
 src/Modules/Synapse/spark.py               |  129 +-
 src/templates/Template Module/__init__.py  |    1 -
 src/templates/Template Module/callbacks.py |   62 -
 src/templates/Template Module/layout.py    |   53 -
 src/templates/Template Module/spark.py     |   56 -
 src/templates/callbacksOp.py               |   36 +
 src/templates/layoutOp.py                  |   29 +
 src/templates/sparkOp.py                   |   23 +
 22 files changed, 2312 insertions(+), 858 deletions(-)
 create mode 100644 .metals/metals.h2.db
 create mode 100644 .metals/metals.log
 delete mode 100755 src/templates/Template Module/__init__.py
 delete mode 100644 src/templates/Template Module/callbacks.py
 delete mode 100644 src/templates/Template Module/layout.py
 delete mode 100644 src/templates/Template Module/spark.py
 create mode 100644 src/templates/callbacksOp.py
 create mode 100644 src/templates/layoutOp.py
 create mode 100644 src/templates/sparkOp.py

diff --git a/.metals/metals.h2.db b/.metals/metals.h2.db
new file mode 100644
index 0000000000000000000000000000000000000000..470c5fe95f3562aafdc138d7d0e9de74b9249aa6
GIT binary patch
literal 135168
zcmdPZRq!xUFwisAcT&*RRp27TXJ8OuU}k0*1*0J_8UmvsFd71*Aut*OqaiRF0;3@?
z8UmvsFd71*Aut*OLns8a`0Ns(&YjJ`z`zD&k5Z!{Fd71*Aut*OqaiRF0;3@?8Umvs
zFd71*Aut*OqaiRF0>dZ-M*IK6C^ARAG8zJ-Aut*OqaiRF0;3@?8UmvsFd71*Aut*O
zqaiRF0ysi|%`M^o|Nr(lWJiTZLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(
zGz5l22nd#Z1bO5C|NsB_*%)LQ`5!RzA7bHO!N%Xm&Y#1<AHc<L!p$$n!}o`u?}7l|
zHX***!hE$Ne2HRw&f<LPl6>q^yw9b1Ps{MGm*brv&s(a<8==f=tI8{<#>=eE^Fov7
zq&CkwkQJkNGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0s2>})@MHUs+Fn>2U9RnR5
zosy!`RGqZMoZ?hhBNh!s78NxtQl3UShB^i;YKklh>R6;*4OmnaSyVKzNg1)ID6pt#
zVv+JR&@t38Vo_3LQP9F7?P|!PpunP_jYZ1cK*x|pPLV}c2aBYu0gJ2xi>y8tDX5Lo
ziY!tr0$Ai-4OpZUSfp44vCBy+ut>59VUdHHE1|$5!6J-XUQCfiltl!KysH6=r~->9
zizpU3uwR80S%g@`u*kX^um~xz2(gG`kpt@#RMcaUz#{2tsjsM~5DrZRDagsdKu<xB
zMG}jiaBzg_80(nmnCh76nCn>RSZXV3;V?x@L5oESiz$%6(o|Gqk;WqHZlYtLuBgT$
zgH6sr$52f{jYSrVoG;vMs)|Z1a#&Qj8YwF(;c%;xf)a~77CjKRDuB`<7Flnoog#u2
zpbV%5B1Z9O2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQRO)0TCf^|6gNx
z`fk)$qaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71&5D*at_y5&E>`^=#
z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Auv2cKtu-I|5qKJz8m$`Xb6mk
zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjD`Rx1Oz40K$HqIh#bYEAut*OqaiRF
z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Un*I1VrS(^Z!c2(sQGp8V!Nb5Eu=C(GVC7
zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2Ehk&3Ic>Z633CtTMMnhmU1V%$(Gz3ONU^E0q
zLtr!nMnhmU1V%$(Gz3ONU^E1VV+e>yfam|^hNIs`{WKZ^qaiRF0;3@?8UmvsFd71*
zAut*OqaiRF0;3@?8Umvs00{v>{p}143<?Y^3_^_jFPQivnE76^@Y%8QUSQ*uVCR{~
z!To}hJClp+GB;N&59exLPDMWUGJbXe0k&L0HdZ0lN{BI|<Y)+thQMeDjD`TQA;2P}
zpupS8=p5wg7~-nn?C9*_>Y@<h=;Y(7pcD}5<m2hAq^IQK8sO^Z;_Bxd86WH)8szM%
zq`{@2prD`>;u;YW@8a(q>g(zk5+54msiY9*8075X7^L9mAEMwF>f@sWQRx)w>EjX~
z;uz%aibElnCX1kgB5xAZDV}~Vt`SIXNXw}#PpphDPR>ZpO^naTEH23}s*Ep=&rGRM
zQt<a9q*6&kskk&bIkmW0Ns~oDL6vt7qoYrVYY>KCvD%}g;OOF_;Oy@g91`T{=@&xC
zw)lc<C53<>PhZENNCj`#NDZaTyyB9?oSf8@_@czTY$Z(vbpJtB$9ua*#+xbWD=6|N
zLPG*712PB6UZ^NkJ#is`?g%{v1>U91P-}3+J@)W`#y^^Y3ZS4ti}<qCqT<Z_Jb1#;
zFg4JGriql);^d;tf)W&IBLf3X^u$wAS&)h_zz9<T#2kbYLjx?PBxj^1XBU^|DuJ8{
zbppZzNtGztG2DPq3Gz&cr>|>ph@)?Sf{Ux0W2jGvf^%q45GWHMWY7X4wIVgS6y(?V
zlFZyxup`j@2}_|0PX7Kru8w|ic`i*|1ts1VST+p}b`4VSbOTGfMtBB?1S=>7J1Qvz
zJNkqus9UC(nkQLUCYc!-8i82q3LcKZ9t!G~MkeN|Y37!u7D-8lX-28ZCaLBr7HP&N
z#^#1e$tg+6X^Cd$iRPAOrm2ahrUoWS21&+gCdp=L78d5IDXC`a3XU$mo_;zCs=RAZ
zGmodAn}3k6V~D4}Uwp8$hpVrnlAe-}zf-)6V~8V0-a&IXR?Ud47H^4`lbn3~oxKqm
z2&;DF%wegdt)R$T2u<Zs8E|GI#vxGk;B00IDQK|T2=}dq64ZfO3JSavU@?Z0xrnhB
zVIH*n1p8XS$<rN69&`5h4G3}#4t8|`Co5>$h6KKor=Md`B$p<aho_5+tDmNVB5xHm
zEFeV?F|Gltj0d^N*D(Mbs~`@6;P7<}P=bYqjshq>C~0aasPb+gGVy@)qnEqHI2I}G
z7^9^fAAct$9R;Oe*FX{ykg<}wf+BAzG|-?4f~*8&OjL*=J5o(Sfp-%{i3k*m(9#-Y
zFpd-i3K3AT2rg2Ps_g*(U?r#)XsQC0CCI4^lG>qa;K@u?L6J8T8e-tYgI-)=%|u|8
zpp+F4Zh_zrtzab$C5SRj6$Mq^rNpJGU`mT4BeW#t=|VzMGE!1jP~^>m1`H)h$%t^^
zfLx}epupQjN%{$fHT67QU<m;|jW|VyxW+sChx&!UR6vsoBz8c_3Z5<$71SbvT|*Qg
zArKF46)G4R7zjRn0`31x2=mVp;b#%$D-`2n6z5Hp;JGi!6Dr01OPYI@3^$i7SE(GA
zlsspj0;jYh2dfhMW@UCG6}IK7Y(Z+Qztvf}G*}jCvT$lKZzi?{JgROq1V%%E^blat
zQc&a#fMjHh-b{#pfRAgKt51Azq_2~|PrR375Tw9@_bJg-C}}8x)M&D3DyZ^KLM_X2
z>OpTEAbPCGZ2%Lr5*uWXj)GEvV~7X1F#vWUq7aAM1}&b!O+RBL77e7%DO3vF2tZg0
z6@_X*?UG^lE*597s4J-QzM^UXC@Hx42f2E>`+?jG4QGrPLkclSHEgV;5ajCS8szHd
z>>7;J@dV4dx`3lpLkU#L5H`yd9QiJ;KCa+FhG1t$7gq&8e`gO@XKxlY1x4OKXgUh@
z^9&4iCDuSh&|^A^1=IxbhZ+l(M)CtT&!UVWV2>_M78L~rUU)YQrBRP?3x-}u3m%da
z;GInLS`?fdagCmUk}Rkmg=^x{WKmX7<*mj(h5`02G>VAIBd%y!#Mi}?K!$KtVo_31
z<n@6DFf{3d5*Si2Lq)+E0+Iv}p@i&44JELJED8z=y!}j2BXNW-iatolf|@3vUJ<M-
z?&lg2q7dfj6Y2^|_(<*vjtmZQ^^Fg94GaaP>Uawi7c*l^3&VJ00~e=w6E_!^cneEM
z(|8L@LklNk3sXZw3uh&Gn1hG2;zRu7VfMhxq0|Owa|sj%7zuz&lSNTMnKu_2DAcl2
zAvnY_C`2LLGsHu|P{GO7$KTIA800r_n~g<YL6x@^M;YYo;UDbk2Wh&+2fGG^xdvgh
zsS(kPl+!HHdt)FE;~xmKG*)7fQ&8j$g?b;FpztI!kR>QN8Jlxq=}lHafwvE9>ln!c
zSiB4EPl4Qz5n<5C40iQ#bq;ZLfrk)uTofuD?&0beALQ!nALIh+w8ICDxHMU06jXUT
zi3$4<e}5n1Lf#B5dxM+Z@nHS<!{5w8iA7pLkvEFy@Hevn7xg&84{W7|60-d)QVI(2
z_{EXuQQ{C{1|;Vr8H5oLT$(JB3JSc<1mf4lGuYP?G;|X0=O5zf=IIO`#zOA(c>0AP
z#~NINk^(&1kmX$?0z89UgOOypG+87R6nJZ(fr!JC!A>FZE}rhL!67iqk<%B{hTss#
zkWjGMevzOe4{eMQPqGqMQ01M8BUy#}2YCm3xVnbKV~+F_Re!jlB{0l+0sQIAO^HPe
zN5>eElAxI%T${L|r80az(7-ZHp~)hupupQhAZ_3^6_NrmeTtC~p;3o04C_1zmnMsd
zf+}x6jwm8CV$cUqF`bJ)Vl0(dgcTHd6QD^K8U^^uU$lt9bT`)M5R?P&|Cb#-|DW`Z
z*r<-t5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2cDnNt<y#HT%sJM63oueTz
z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*Oq=$eY19<*lijj1!qdG=IU^E0q
zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1cpcm2r`5F|B|EY|A$C~jXHBQ1V%$(
zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E2C2mwJRaQ|OowEs^=;Eie-4S~@R7!85Z
z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=CArb;24B-9$Vnf8aqs|-+fzc2c4S~@R7!85Z
z5Eu=C(GVC7fzc2c4S~@R7!85Z5FjH21X;lI|DsG}=pEHE8UmvsFd71*Aut*OqaiRF
z0;3@?8UmvsFd71*Aut*OqaiRfLO_HGJpV5|G+aCC%Fz%Q4S~@R7!85Z5Eu=C(GVC7
zfzc2c4S~@R7!85Z5Eu;saza3m4LtuZG&=uJPUwy584ZEa5Eu=C(GVC7fzc2c4S~@R
z7!85Z5Eu=C(GVC7fuR9J{C0yJD#*aX|CRqU|407!Anqt04S~@R7!85Z5Eu=C(GVC7
zfzc2c4S~@R7!85Z5Eu=C(GVEIA;9d&<jCmw9|jm51+$-nyu-)EzycHe&&a=*k-v_K
z--?;<KS**EkA}c#2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkzz`1sWmjW=uf!sS
z;>z5l{G4L<;6R`7Fyr`muf(EwsF+@HVUAPdv>lU}-GUvtkF31*YoR^^i-4n&t5HaB
zYEfBgkwQvladLiHYEdOfe@vKBd^|)V9xeekWbvL&OTdP7K@3rGRCF~AbS_FwEJ;-;
zNleN~1v?-z%rHJ4A{q}71?gs)e0}3vR*(}mt$;W|+0luSfmhSUM!_wovOKX;AvifB
zH8)YgBeS?9zo-&oqCzs*_!I>@JI@eDCm&ZA29O!gmx0Yta1`VQum9&7z5j2Br{q!R
zkA}c#2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk0G<#K;Rm1p$B9SDsMKf(jE2By
z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkzz`1s5e{(wpM8jXW7PShAut*OqaiRF
z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UlDiK#&K#{-2E%kD5`b(GVC7fzc2c4S~@R
z7!85Z5Eu=C(GVC7fzc2c4S~@R7!84;9Rea;;Q9a2?*Gt^#!=UghQMeDjE2By2#kin
zXb6mkz-S1JhQMeDjE2By2#kgR-VhMv1JD06jh_F9H<(5xM?+vV1V%$(Gz3ONU^E0q
zLtr!nMnhmU1V%$(Gz3ONU`PWdB_5djwHO!~7#R2%7#MhkU}B^6Xb6mkz-S1JhQMeD
ejE2By2#kinXb6mkz-S1JhQMeDjE2B42mt_Yd5<Lk

literal 0
HcmV?d00001

diff --git a/.metals/metals.log b/.metals/metals.log
new file mode 100644
index 0000000..4d5e639
--- /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 eebab82..9a63eae 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 bf16154..0cb5e63 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 c86af49..6ded01e 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 04a6dc6..a2726b6 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 4bca02c..2ad459c 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 da423e4..d7c7ebc 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 db7d04d..cf2195e 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 dc8aa9c..4e409c7 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 9f47756..518969e 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 e2acfe1..69705a6 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 b725944..99e63de 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 df175ad..d2f8e6a 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 3118a9f..6ee4246 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 0519ecb..0000000
--- 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 c89ac8d..0000000
--- 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 dd3e78a..0000000
--- 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 5432f84..0000000
--- 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 0000000..9345902
--- /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 0000000..b45a1b4
--- /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 0000000..8593ed1
--- /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
-- 
GitLab