diff --git a/README.md b/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..1eb0b0f7a3565ddb357eea94110afdb88795ca7a
--- /dev/null
+++ b/README.md
@@ -0,0 +1,42 @@
+# LxPlot
+
+A library for data clustering using multi-agent system
+
+## Set up (With Gradle on an existing project)
+
+* Download CluMATE source
+
+* Rename the extracted folder "clumate"
+
+* Create a new gradle project in the same directory as CluMATE
+
+* In this new project, open build.gradle
+
+* Add CluMATE to the dependencies
+```
+dependencies {
+
+    // Add the two following lines
+    // CluMATE
+    implementation project(':clumate')
+    
+    ...
+}
+```
+* Open settings.gradle
+
+* Add link to local CluMATE folder
+include ':clumate'
+project(':clumate').projectDir = new File(settingsDir, '../clumate')
+
+* Click on the Gradle Refresh button
+
+
+## Usage example 
+
+```java
+var clumate = new CluMATE<CustomDataPoint>(new MASSettings(new CustomDataPointSimilarityScoreMethod(), 0.5f, EnumSet.noneOf(AMASOption), new CustomDataPointFuser()))
+
+clumate.fit([new CustomDataPoint(1), new CustomDataPoint(2)])
+var results = clumate.retrieveClusters()
+```
\ No newline at end of file
diff --git a/src/main/java/fr/irit/smac/clumate/amas/ClusterAgent.java b/src/main/java/fr/irit/smac/clumate/amas/ClusterAgent.java
index 0840cf14edab83bb07f8e81a2789a009e79c74b4..958b2eca79dfb162a54c8df0c330d2a14069fadf 100644
--- a/src/main/java/fr/irit/smac/clumate/amas/ClusterAgent.java
+++ b/src/main/java/fr/irit/smac/clumate/amas/ClusterAgent.java
@@ -82,7 +82,7 @@ public class ClusterAgent<T extends DataPoint> extends Agent<ClusterAMAS<T>, Clu
 	protected void onPerceive() {
 		switch (state) {
 			case DORMANT -> {
-				var receivedRequestSimilarityMessage = this.mailbox.read(RequestSimilarityMessage.class);
+				var receivedRequestSimilarityMessage = this.getMailbox().read(RequestSimilarityMessage.class);
 				if (receivedRequestSimilarityMessage.isPresent()) {
 					receivedClusterForRequestSimilarity = receivedRequestSimilarityMessage.get().getCluster();
 					receivedRequestSimilarityRequester = (ClusterAgent) receivedRequestSimilarityMessage.get().getSender();
@@ -93,7 +93,7 @@ public class ClusterAgent<T extends DataPoint> extends Agent<ClusterAMAS<T>, Clu
 			}
 			case WAITING_FOR_REPLY -> {
 				while (mailbox.hasMessageOfType(EvaluatedScoreMessage.class)) {
-					var evaluatedScoreMessage = this.mailbox.read(EvaluatedScoreMessage.class);
+					var evaluatedScoreMessage = this.getMailbox().read(EvaluatedScoreMessage.class);
 					if (evaluatedScoreMessage.isPresent()) {
 						similarityScoresReceived.put((ClusterAgent) evaluatedScoreMessage.get().getSender(), evaluatedScoreMessage.get().getSimilarityScore());
 					}
@@ -172,7 +172,7 @@ public class ClusterAgent<T extends DataPoint> extends Agent<ClusterAMAS<T>, Clu
 				for (var agent : clusterAgentsRoughlySimilarOnReady) {
 					if (logger.isLoggable(Level.INFO))
 						logger.info(this + " sends RequestSimilarityMessage to " + agent);
-					agent.mailbox.receive(new RequestSimilarityMessage(this, cluster));
+					agent.getMailbox().receive(new RequestSimilarityMessage(this, cluster));
 					requestSimilarityMessageSentAgents.add(agent);
 				}