diff --git a/build.sbt b/build.sbt
index 98e887d7f5eb2eaaf17f5b3a2604817fa88151b5..99b2d6f23c7ce10c79eda7d0b590d9fd1a3b60e2 100755
--- a/build.sbt
+++ b/build.sbt
@@ -50,19 +50,19 @@ lazy val commonSettings = Seq(
 )
 
 lazy val root = (project in file(".")).
-  aggregate(n2s3, examples, daemon) //n2s3_cluster
+  aggregate(n2s3, examples, daemon, n2s3_cluster)
 
 lazy val n2s3 = (project in file("n2s3")).
   settings(commonSettings: _*)
 
-//lazy val n2s3_cluster = (project in file("n2s3_cluster")).
-//  settings(commonSettings: _*).
-//  dependsOn(n2s3)
+lazy val n2s3_cluster = (project in file("n2s3_cluster")).
+  settings(commonSettings: _*).
+  dependsOn(n2s3)
 
 lazy val examples = (project in file("n2s3_examples")).
   settings(commonSettings: _*).
   dependsOn(n2s3)
-//dependsOn(n2s3, n2s3_cluster)
+  dependsOn(n2s3, n2s3_cluster)
 lazy val daemon = (project in file("n2s3_daemon")).
   settings(commonSettings: _*).
   dependsOn(n2s3)
diff --git a/n2s3_cluster/n2s3_cluster.iml b/n2s3_cluster/n2s3_cluster.iml
new file mode 100644
index 0000000000000000000000000000000000000000..bac2e45c02bb681b710c819042d0a9b49a968255
--- /dev/null
+++ b/n2s3_cluster/n2s3_cluster.iml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/scala" isTestSource="false" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="sbt: org.scala-lang:scala-library:2.12.7:jar" level="project" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/n2s3_daemon/build.sbt b/n2s3_daemon/build.sbt
index 945a328e6c602fe43b7728c0e4f95f12b0f9ed68..bde605f680f6885cf8a793db680283ff6eda05ed 100755
--- a/n2s3_daemon/build.sbt
+++ b/n2s3_daemon/build.sbt
@@ -10,7 +10,7 @@ name             := "N2S3-daemon"
 libraryDependencies ++= {
   val akkaV = "2.3.7"
   Seq(
-    "fr.univ-lille.cristal" %% "n2s3"     % "0.3-SNAPSHOT",
+    "fr.univ-lille.cristal" %% "n2s3"     % "1.1.1",
     "com.typesafe.akka" %% "akka-cluster"   % akkaV
   )
-}
\ No newline at end of file
+}
diff --git a/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleDistribution.scala b/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleDistribution.scala
deleted file mode 100755
index be7ef48f8510d6d1c5babcc11a6b15f80b210e29..0000000000000000000000000000000000000000
--- a/n2s3_examples/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/apps/ExampleDistribution.scala
+++ /dev/null
@@ -1,70 +0,0 @@
-package fr.univ_lille.cristal.emeraude.n2s3.apps
-
-import akka.cluster.Cluster
-import fr.univ_lille.cristal.emeraude.n2s3.cluster.RandomActorDeploymentStrategy
-import fr.univ_lille.cristal.emeraude.n2s3.core.models.properties.{MembranePotentialThreshold, SynapseLTP}
-import fr.univ_lille.cristal.emeraude.n2s3.features.builder.N2S3
-import fr.univ_lille.cristal.emeraude.n2s3.features.builder.connection.types.FullConnection
-import fr.univ_lille.cristal.emeraude.n2s3.features.io.input.N2S3InputStreamCombinators._
-import fr.univ_lille.cristal.emeraude.n2s3.features.io.input._
-import fr.univ_lille.cristal.emeraude.n2s3.models.neurons.LIF
-import fr.univ_lille.cristal.emeraude.n2s3.models.synapses.{InhibitorySynapse, QBGParameters, SimplifiedSTDPWithNegative}
-import fr.univ_lille.cristal.emeraude.n2s3.support.UnitCast._
-import fr.univ_lille.cristal.emeraude.n2s3.support.actors.N2S3ActorSystem
-import squants.electro.ElectricPotentialConversions._
-
-object ExampleDistribution extends App {
-
-  QBGParameters.alf_m = 0.02f
-  QBGParameters.alf_p = 0.06f
-  QBGParameters.beta_m = 3f
-  QBGParameters.beta_p = 2f
-
-  val oversampling = 2
-
-  val n2s3 = new N2S3("N2S3ClusterSystem")
-  val cluster = Cluster(n2s3.system.asInstanceOf[N2S3ActorSystem].system)
-  n2s3.buildProperties.actorDeploymentPolicy = new RandomActorDeploymentStrategy(cluster)
-  cluster.registerOnMemberUp {
-
-    println("I'm up!")
-
-    val inputStream =
-      InputDigitalHex.Entry >>
-        //StreamOversampling[SampleInput](oversampling, oversampling) >>
-        SampleToSpikeTrainConverter[Float, InputSample2D[Float]](0, 23, 150 MilliSecond, 350 MilliSecond) >> N2S3Entry
-        //InputNoiseGenerator(1 hertz)
-
-    val inputLayer = n2s3.createInput(inputStream)
-
-    val unsupervisedLayer = n2s3.createNeuronGroup("Layer1", 18)
-      unsupervisedLayer.setNeuronModel(LIF, Seq(
-        (MembranePotentialThreshold, 2 * oversampling millivolts),
-        (SynapseLTP, 50 MilliSecond)
-      ))
-    inputLayer.connectTo(unsupervisedLayer, (new FullConnection).setDefaultConnectionConstructor(() => new SimplifiedSTDPWithNegative))
-    unsupervisedLayer.connectTo(unsupervisedLayer, (new FullConnection).setDefaultConnectionConstructor(() => new InhibitorySynapse))
-    n2s3.createSynapseWeightGraphOn(inputLayer, unsupervisedLayer)
-
-
-    println("Start Training ...")
-    inputStream.append(new DigitalHexInputStream().repeat(1).shuffle())
-    n2s3.runAndWait()
-
-
-    println("Start Testing ...")
-    unsupervisedLayer.fixNeurons()
-    inputStream.clean()
-    inputStream.append(new DigitalHexInputStream().repeat(1).shuffle())
-    //  n2s3.runAndWait(100)
-    //  inputLayer.setInput(DigitalHex.distributedInput(2, 1))
-    val benchmarkMonitor = n2s3.createBenchmarkMonitor(unsupervisedLayer)
-
-    n2s3.runAndWait()
-
-    println(benchmarkMonitor)
-    benchmarkMonitor.exportToHtmlView("results/test.html")
-
-    System.exit(0)
-  }
-}
diff --git a/n2s3_integration_tests/src/multi-jvm/scala/fr/univ_lille/cristal/emeraude/n2s3/MultiNodeSample.scala b/n2s3_integration_tests/src/multi-jvm/scala/fr/univ_lille/cristal/emeraude/n2s3/MultiNodeSample.scala
deleted file mode 100755
index 3b77aaa401373b152b75bea46b3bf1b17dff1994..0000000000000000000000000000000000000000
--- a/n2s3_integration_tests/src/multi-jvm/scala/fr/univ_lille/cristal/emeraude/n2s3/MultiNodeSample.scala
+++ /dev/null
@@ -1,96 +0,0 @@
-package fr.univ_lille.cristal.emeraude.n2s3
-
-import akka.remote.testkit.MultiNodeSpec
-import akka.testkit.ImplicitSender
-import fr.univ_lille.cristal.emeraude.n2s3.cluster.{ExplicitActorDeploymentStrategy, N2S3ClusteredActorSystem}
-import fr.univ_lille.cristal.emeraude.n2s3.features.builder.{N2S3, NeuronGroupRef}
-import fr.univ_lille.cristal.emeraude.n2s3.models.neurons.LIF
-import fr.univ_lille.cristal.emeraude.n2s3.support.actors.ActorPerNeuronPolicy
-
-class MultiNodeSampleSpecMultiJvmMaster extends MultiNodeSample
-class MultiNodeSampleSpecMultiJvmSlave1 extends MultiNodeSample
-class MultiNodeSampleSpecMultiJvmSlave2 extends MultiNodeSample
-
-class MultiNodeSample extends MultiNodeSpec(MultiNodeSampleConfig)
-  with STMultiNodeSpec with ImplicitSender {
-
-  import MultiNodeSampleConfig._
-
-  def initialParticipants = roles.size
-
-  "An explicit cluster node selector" must {
-
-    "put all actors in given node if global" in {
-      runOn(master) {
-        enterBarrier("deployed")
-        val actorSystem = new N2S3ClusteredActorSystem(system)
-        val n2s3 = new N2S3(actorSystem)
-        n2s3.buildProperties.actorDeploymentPolicy = new ExplicitActorDeploymentStrategy(node(slave1).address)
-
-        val neuronGroup = new NeuronGroupRef(n2s3)
-        neuronGroup.setNeuronModel(LIF)
-        neuronGroup.setNumberOfNeurons(2)
-
-        neuronGroup.setActorPolicy(new ActorPerNeuronPolicy(n2s3))
-        neuronGroup.ensureActorDeployed(n2s3)
-
-        val firstAddress = neuronGroup.neurons.head.getNetworkAddress
-        val secondAddress = neuronGroup.neurons(1).getNetworkAddress
-
-        firstAddress.actor.path.address shouldBe secondAddress.actor.path.address
-        firstAddress.actor.path.address shouldBe node(slave1).address
-        firstAddress.actor.path.address shouldNot be(node(master).address)
-      }
-
-      runOn(slave1) {
-        enterBarrier("deployed")
-      }
-
-      runOn(slave2) {
-        enterBarrier("deployed")
-      }
-
-      enterBarrier("finished")
-    }
-
-    "put all actors in locally configured node" in {
-      runOn(master) {
-        enterBarrier("deployed")
-        val actorSystem = new N2S3ClusteredActorSystem(system)
-        val n2s3 = new N2S3(actorSystem)
-
-        val neuronGroup = new NeuronGroupRef(n2s3)
-        neuronGroup.setIdentifier("1")
-        neuronGroup.setNeuronModel(LIF)
-        neuronGroup.setNumberOfNeurons(10)
-        neuronGroup.setActorPolicy(new ActorPerNeuronPolicy(new ExplicitActorDeploymentStrategy(node(slave1).address)))
-        neuronGroup.ensureActorDeployed(n2s3)
-
-        val neuronGroup2 = new NeuronGroupRef(n2s3)
-        neuronGroup2.setIdentifier("2")
-        neuronGroup2.setNeuronModel(LIF)
-        neuronGroup2.setNumberOfNeurons(10)
-        neuronGroup2.setActorPolicy(new ActorPerNeuronPolicy(new ExplicitActorDeploymentStrategy(node(slave2).address)))
-        neuronGroup2.ensureActorDeployed(n2s3)
-
-
-        neuronGroup.neurons.foreach( n => {
-          n.getNetworkAddress.actor.path.address should be(node(slave1).address)
-        })
-
-        neuronGroup2.neurons.foreach( n =>
-          n.getNetworkAddress.actor.path.address should be (node(slave2).address))
-      }
-
-      runOn(slave1) {
-        enterBarrier("deployed")
-      }
-
-      runOn(slave2) {
-        enterBarrier("deployed")
-      }
-
-      enterBarrier("finished")
-    }
-  }
-}
\ No newline at end of file