diff --git a/duniter4j-core-client/src/main/java/org/duniter/core/client/service/ServiceLocator.java b/duniter4j-core-client/src/main/java/org/duniter/core/client/service/ServiceLocator.java
index b399f51d3b652288c98204e1ca4adc0f31af46a7..5f4b669631058ac10953a4ec58dffa722579fa51 100644
--- a/duniter4j-core-client/src/main/java/org/duniter/core/client/service/ServiceLocator.java
+++ b/duniter4j-core-client/src/main/java/org/duniter/core/client/service/ServiceLocator.java
@@ -51,10 +51,12 @@ public class ServiceLocator implements Closeable {
     private BeanFactory beanFactory = null;
 
     protected ServiceLocator() {
+        init();
     }
 
     protected ServiceLocator(BeanFactory beanFactory) {
         this.beanFactory = beanFactory;
+        init();
     }
 
     public void init() {
diff --git a/duniter4j-core-shared/pom.xml b/duniter4j-core-shared/pom.xml
index a65dc535fa17d7bed5892e635fbf9fd73b274f15..05f49740ed0a62d28a031417d2e791d0ce4a0fdb 100644
--- a/duniter4j-core-shared/pom.xml
+++ b/duniter4j-core-shared/pom.xml
@@ -50,26 +50,6 @@
       <artifactId>javax.websocket-api</artifactId>
     </dependency>
 
-    <!--dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-collections4</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpclient</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpcore</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpmime</artifactId>
-    </dependency-->
     <dependency>
       <groupId>org.nuiton</groupId>
       <artifactId>nuiton-config</artifactId>
diff --git a/duniter4j-core-shared/src/main/java/org/duniter/core/beans/BeanFactory.java b/duniter4j-core-shared/src/main/java/org/duniter/core/beans/BeanFactory.java
index 2b69210d3f752e0036901e409ac1fb574247c157..4d1b4d458bc2cd7b40e3b7b7ada17242da1353a8 100644
--- a/duniter4j-core-shared/src/main/java/org/duniter/core/beans/BeanFactory.java
+++ b/duniter4j-core-shared/src/main/java/org/duniter/core/beans/BeanFactory.java
@@ -48,6 +48,9 @@ public class BeanFactory implements Closeable{
         beansCache = new HashMap<>();
         beansLoader = ServiceLoader.load(Bean.class);
         beansClassMap = new HashMap<>();
+        if (log.isTraceEnabled()) {
+            log.trace("Creating new BeanFactory...");
+        }
     }
 
     public <S extends Bean> S getBean(Class<S> clazz) {
diff --git a/duniter4j-elasticsearch/pom.xml b/duniter4j-elasticsearch/pom.xml
index ffd73a66356542553aafeca3bfeb60ab6de6594b..8073567aa8025604d6641c8c992fe14782b83c3e 100644
--- a/duniter4j-elasticsearch/pom.xml
+++ b/duniter4j-elasticsearch/pom.xml
@@ -40,6 +40,12 @@
       <groupId>org.duniter</groupId>
       <artifactId>duniter4j-core-client</artifactId>
       <version>${project.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>com.google.guava</groupId>
+          <artifactId>guava</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <!-- LOGGING DEPENDENCIES - SLF4J -->
     <dependency>
@@ -55,6 +61,7 @@
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
       <optional>true</optional>
+      <scope>runtime</scope>
     </dependency>
 
     <!-- Elastic Search -->
@@ -72,10 +79,17 @@
     <dependency>
       <groupId>net.java.dev.jna</groupId>
       <artifactId>jna</artifactId>
+      <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>net.java.dev.jna</groupId>
       <artifactId>jna-platform</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>net.java.dev.jna</groupId>
+          <artifactId>jna</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
 
     <!-- Unit test -->
@@ -166,24 +180,6 @@
           <plugin>
             <artifactId>maven-dependency-plugin</artifactId>
             <executions>
-              <execution>
-                <id>copy-dependencies</id>
-                <goals>
-                  <goal>copy-dependencies</goal>
-                </goals>
-                <phase>prepare-package</phase>
-                <configuration>
-                  <overWriteReleases>false</overWriteReleases>
-                  <overWriteSnapshots>true</overWriteSnapshots>
-                  <overWriteIfNewer>true</overWriteIfNewer>
-                  <outputDirectory>${project.build.directory}/lib</outputDirectory>
-                  <silent>true</silent>
-                  <includeScope>runtime</includeScope>
-                  <excludeScope>test</excludeScope>
-                  <excludeGroupIds>org.elasticsearch,net.java.dev.jna,com.google.guava</excludeGroupIds>
-                  <excludeArtifactIds>elasticsearch,jna,guava</excludeArtifactIds>
-                </configuration>
-              </execution>
               <execution>
                 <id>unpack-dependencies</id>
                 <goals>
@@ -199,29 +195,70 @@
                       <type>zip</type>
                     </artifactItem>
                   </artifactItems>
-                  <outputDirectory>${project.build.directory}</outputDirectory>
+                  <outputDirectory>${project.build.directory}/</outputDirectory>
                   <silent>true</silent>
                 </configuration>
               </execution>
             </executions>
           </plugin>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-antrun-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>download-attachment-mapper-plugin</id>
+                <phase>prepare-package</phase>
+                <goals>
+                  <goal>run</goal>
+                </goals>
+                <configuration>
+                  <target>
+                    <!-- download file -->
+                    <get src="https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/mapper-attachments/${elasticsearch.version}/mapper-attachments-${elasticsearch.version}.zip"
+                         dest="${project.build.directory}/mapper-attachments-${elasticsearch.version}.zip"
+                         verbose="false"
+                         usetimestamp="true"/>
+                    <unzip src="${project.build.directory}/mapper-attachments-${elasticsearch.version}.zip"
+                           dest="${project.build.directory}/elasticsearch-${elasticsearch.version}/plugins/mapper-attachments"
+                           overwrite="true">
+
+                    </unzip>
+                  </target>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
 
           <plugin>
             <artifactId>maven-assembly-plugin</artifactId>
             <executions>
               <execution>
-                <id>assembly-standalone</id>
+                <id>assembly-plugin</id>
                 <phase>package</phase>
                 <goals>
                   <goal>single</goal>
                 </goals>
                 <configuration>
                   <attach>true</attach>
+                  <appendAssemblyId>false</appendAssemblyId>
                   <finalName>${bundlePrefix}</finalName>
                   <descriptors>
                     <descriptor>
                         ${basedir}/src/main/assembly/plugin.xml
                     </descriptor>
+                  </descriptors>
+                </configuration>
+              </execution>
+              <execution>
+                <id>assembly-standalone</id>
+                <phase>package</phase>
+                <goals>
+                  <goal>single</goal>
+                </goals>
+                <configuration>
+                  <attach>true</attach>
+                  <finalName>${bundlePrefix}</finalName>
+                  <descriptors>
                     <descriptor>
                       ${basedir}/src/main/assembly/standalone.xml
                     </descriptor>
@@ -270,6 +307,140 @@
             </executions>
           </plugin>
 
+          <plugin>
+            <artifactId>maven-dependency-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>unpack-dependencies</id>
+                <goals>
+                  <goal>unpack</goal>
+                </goals>
+                <phase>prepare-package</phase>
+                <configuration>
+                  <artifactItems>
+                    <artifactItem>
+                      <groupId>org.elasticsearch.distribution.zip</groupId>
+                      <artifactId>elasticsearch</artifactId>
+                      <version>${elasticsearch.version}</version>
+                      <type>zip</type>
+                    </artifactItem>
+                  </artifactItems>
+                  <outputDirectory>${project.build.directory}/</outputDirectory>
+                  <silent>true</silent>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-dependency-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>copy-dependencies</id>
+                <phase>initialize</phase>
+                <goals>
+                  <goal>copy-dependencies</goal>
+                </goals>
+                <configuration>
+                  <outputDirectory>${project.build.directory}/es-home/plugins/${project.artifactId}</outputDirectory>
+                  <excludeArtifactIds>jna,jackson-core,log4j,elasticsearch</excludeArtifactIds>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-antrun-plugin</artifactId>
+            <dependencies>
+              <dependency>
+                <groupId>ant-contrib</groupId>
+                <artifactId>ant-contrib</artifactId>
+                <version>1.0b3</version>
+                <exclusions>
+                  <exclusion>
+                    <groupId>ant</groupId>
+                    <artifactId>ant</artifactId>
+                  </exclusion>
+                </exclusions>
+              </dependency>
+            </dependencies>
+            <executions>
+              <execution>
+                <id>download-attachment-mapper-plugin</id>
+                <phase>initialize</phase>
+                <goals>
+                  <goal>run</goal>
+                </goals>
+                <configuration>
+                  <target>
+                    <copy todir="${project.build.directory}/es-home">
+                      <fileset dir="${project.build.directory}/elasticsearch-${elasticsearch.version}">
+                      </fileset>
+                    </copy>
+                    <chmod perm="u+x">
+                      <fileset dir="${project.build.directory}/es-home/bin">
+                        <include name="elasticsearch"/>
+                      </fileset>
+                    </chmod>
+                    <copy todir="${project.build.directory}/es-home/config" overwrite="true">
+                      <fileset dir="${basedir}/src/main/assembly/config">
+                      </fileset>
+                    </copy>
+
+                    <!-- download attachment plugin -->
+                    <get src="https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/mapper-attachments/${elasticsearch.version}/mapper-attachments-${elasticsearch.version}.zip"
+                         dest="${project.build.directory}/mapper-attachments-${elasticsearch.version}.zip"
+                         verbose="false"
+                         usetimestamp="true"/>
+                    <unzip src="${project.build.directory}/mapper-attachments-${elasticsearch.version}.zip"
+                           dest="${project.build.directory}/es-home/plugins/mapper-attachments"
+                           overwrite="true">
+                    </unzip>
+                    <copy todir="${project.build.directory}/es-home/plugins/${project.artifactId}">
+                      <fileset dir="${project.build.directory}/classes">
+                        <include name="plugin-descriptor.properties"/>
+                        <include name="plugin-security.policy"/>
+                      </fileset>
+                    </copy>
+
+                    <!-- remove redundant lib in duniter plugin -->
+                    <ac:for param="file" xmlns:ac="antlib:net.sf.antcontrib">
+                      <path>
+                        <fileset dir="${project.build.directory}/es-home/plugins/${project.artifactId}">
+                          <include name="**/*.jar"/>
+                        </fileset>
+                      </path>
+                      <sequential>
+                        <local name="filename" />
+                        <basename property="filename" file="@{file}"/>
+                        <ac:if>
+                          <available file="${project.build.directory}/es-home/lib/${filename}"/>
+                          <then>
+                            <!--echo message="Remove lib from plugin: ${filename}"/-->
+                            <delete file="${project.build.directory}/es-home/plugins/${project.artifactId}/${filename}"/>
+                          </then>
+                        </ac:if>
+                      </sequential>
+                    </ac:for>
+                    <delete>
+                      <fileset dir="${project.build.directory}/es-home/plugins/${project.artifactId}">
+                        <include name="guava-*.jar"/>
+                      </fileset>
+                    </delete>
+                    <copy todir="${project.build.directory}/es-home/plugins/${project.artifactId}">
+                      <fileset dir="${project.build.directory}">
+                        <include name="${project.artifactId}-${project.version}.${project.packaging}"/>
+                      </fileset>
+                    </copy>
+
+                  </target>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+
           <plugin>
             <groupId>org.codehaus.mojo</groupId>
             <artifactId>exec-maven-plugin</artifactId>
@@ -277,23 +448,12 @@
               <execution>
                 <id>run</id>
                 <goals>
-                  <goal>java</goal>
+                  <goal>exec</goal>
                 </goals>
                 <phase>compile</phase>
                 <configuration>
-                  <mainClass>${exec.mainClass}</mainClass>
-                  <classpathScope>${exec.classpathScope}</classpathScope>
-                  <commandlineArgs>start</commandlineArgs>
-                  <systemProperties>
-                    <property>
-                      <key>duniter4j-elasticsearch.config</key>
-                      <value>${duniter4j-elasticsearch.config}</value>
-                    </property>
-                    <property>
-                      <key>es.path.home</key>
-                      <value>${basedir}/src/test/es-home</value>
-                    </property>
-                  </systemProperties>
+                  <executable>${project.build.directory}/es-home/bin/elasticsearch</executable>
+                  <workingDirectory>${basedir}/src/test/es-home</workingDirectory>
                 </configuration>
               </execution>
             </executions>
@@ -309,9 +469,9 @@
         <duniter4j.basedir>${project.build.directory}</duniter4j.basedir>
         <duniter4j.plugins.directory>${basedir}}/src/test/es-home/plugins</duniter4j.plugins.directory>
         <es.http.cors.allow-origin>*</es.http.cors.allow-origin>
-        <exec.args>
-          start index --host metab.ucoin.fr --port 9201
-        </exec.args>
+        <!--exec.args>
+          start index - -host metab.ucoin.fr - -port 9201
+        </exec.args-->
       </properties>
     </profile>
   </profiles>
diff --git a/duniter4j-elasticsearch/src/main/assembly/config/logging.yml b/duniter4j-elasticsearch/src/main/assembly/config/logging.yml
new file mode 100644
index 0000000000000000000000000000000000000000..4c6f8785375224fe263fba4570714ebce0e3388e
--- /dev/null
+++ b/duniter4j-elasticsearch/src/main/assembly/config/logging.yml
@@ -0,0 +1,87 @@
+# you can override this using by setting a system property, for example -Des.logger.level=DEBUG
+es.logger.level: INFO
+rootLogger: ${es.logger.level}, console, file
+logger:
+  # log action execution errors for easier debugging
+  action: DEBUG
+
+  # deprecation logging, turn to DEBUG to see them
+  deprecation: INFO, deprecation_log_file
+
+  # reduce the logging for aws, too much is logged under the default INFO
+  com.amazonaws: WARN
+  # aws will try to do some sketchy JMX stuff, but its not needed.
+  com.amazonaws.jmx.SdkMBeanRegistrySupport: ERROR
+  com.amazonaws.metrics.AwsSdkMetrics: ERROR
+
+  org.apache.http: INFO
+
+  org.duniter: TRACE
+
+  # gateway
+  #gateway: DEBUG
+  #index.gateway: DEBUG
+
+  # peer shard recovery
+  #indices.recovery: DEBUG
+
+  # discovery
+  #discovery: TRACE
+
+  index.search.slowlog: TRACE, index_search_slow_log_file
+  index.indexing.slowlog: TRACE, index_indexing_slow_log_file
+
+additivity:
+  index.search.slowlog: false
+  index.indexing.slowlog: false
+  deprecation: false
+
+appender:
+  console:
+    type: console
+    layout:
+      type: consolePattern
+      conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
+
+  file:
+    type: dailyRollingFile
+    file: ${path.logs}/${cluster.name}.log
+    datePattern: "'.'yyyy-MM-dd"
+    layout:
+      type: pattern
+      conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %.10000m%n"
+
+  # Use the following log4j-extras RollingFileAppender to enable gzip compression of log files. 
+  # For more information see https://logging.apache.org/log4j/extras/apidocs/org/apache/log4j/rolling/RollingFileAppender.html
+  #file:
+    #type: extrasRollingFile
+    #file: ${path.logs}/${cluster.name}.log
+    #rollingPolicy: timeBased
+    #rollingPolicy.FileNamePattern: ${path.logs}/${cluster.name}.log.%d{yyyy-MM-dd}.gz
+    #layout:
+      #type: pattern
+      #conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
+
+  deprecation_log_file:
+    type: dailyRollingFile
+    file: ${path.logs}/${cluster.name}_deprecation.log
+    datePattern: "'.'yyyy-MM-dd"
+    layout:
+      type: pattern
+      conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
+
+  index_search_slow_log_file:
+    type: dailyRollingFile
+    file: ${path.logs}/${cluster.name}_index_search_slowlog.log
+    datePattern: "'.'yyyy-MM-dd"
+    layout:
+      type: pattern
+      conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
+
+  index_indexing_slow_log_file:
+    type: dailyRollingFile
+    file: ${path.logs}/${cluster.name}_index_indexing_slowlog.log
+    datePattern: "'.'yyyy-MM-dd"
+    layout:
+      type: pattern
+      conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
diff --git a/duniter4j-elasticsearch/src/main/assembly/plugin.xml b/duniter4j-elasticsearch/src/main/assembly/plugin.xml
index 873c5a24970da4c3d070a0d8f53f191c07840aba..39a21301ee04cc92204da80b2b72221d0965fee1 100644
--- a/duniter4j-elasticsearch/src/main/assembly/plugin.xml
+++ b/duniter4j-elasticsearch/src/main/assembly/plugin.xml
@@ -2,6 +2,7 @@
 <assembly>
     <id>plugin</id>
 
+
     <formats>
         <format>zip</format>
     </formats>
@@ -16,6 +17,8 @@
             <excludes>
                 <exclude>org.elasticsearch:elasticsearch</exclude>
                 <exclude>net.java.dev.jna:jna</exclude>
+                <exclude>com.fasterxml.jackson.core:jackson-core</exclude>
+                <exclude>log4j:log4j</exclude>
             </excludes>
         </dependencySet>
     </dependencySets>
@@ -23,7 +26,7 @@
     <fileSets>
         <fileSet>
             <includes>
-                <include>LICENSE*</include>
+                <include>LICENSE</include>
             </includes>
         </fileSet>
 
diff --git a/duniter4j-elasticsearch/src/main/assembly/standalone.xml b/duniter4j-elasticsearch/src/main/assembly/standalone.xml
index fd21009615b9e6f351ffebb6c32a3ea50740a2bc..0f7420fd328dc08ec96baa76e5e347fcbf0f9379 100644
--- a/duniter4j-elasticsearch/src/main/assembly/standalone.xml
+++ b/duniter4j-elasticsearch/src/main/assembly/standalone.xml
@@ -38,26 +38,37 @@
       <outputDirectory/>
       <excludes>
         <exclude>config/elasticsearch.yml</exclude>
+        <exclude>config/logging.yml</exclude>
       </excludes>
     </fileSet>
 
+    <fileSet>
+      <directory>target/elasticsearch-${elasticsearch.version}/config</directory>
+      <outputDirectory>config/old</outputDirectory>
+      <includes>
+        <include>plugin-descriptor.properties</include>
+        <include>plugin-security.policy</include>
+      </includes>
+    </fileSet>
+
     <!-- default configuration file -->
     <fileSet>
       <directory>src/main/assembly/config</directory>
       <outputDirectory>config</outputDirectory>
       <includes>
         <include>elasticsearch.yml</include>
+        <include>logging.yml</include>
       </includes>
     </fileSet>
 
-    <!-- mapper attachment plugin -->
+    <!-- mapper attachment plugin
     <fileSet>
-      <directory>src/test/es-home</directory>
-      <outputDirectory/>
+      <directory>target/assembly</directory>
+      <outputDirectory>plugins</outputDirectory>
       <includes>
-        <include>plugins/mapper-attachments/**/*.*</include>
+        <include>mapper-attachments-${elasticsearch.mapper-attachments.version}.zip</include>
       </includes>
-    </fileSet>
+    </fileSet>-->
 
     <fileSet>
       <directory>target</directory>
@@ -68,34 +79,33 @@
     </fileSet>
 
     <fileSet>
-      <directory>src/main/filtered-resources</directory>
+      <directory>target/classes</directory>
       <outputDirectory>plugins/${project.artifactId}</outputDirectory>
-      <filtered>true</filtered>
       <includes>
         <include>plugin-descriptor.properties</include>
+        <include>plugin-security.policy</include>
       </includes>
     </fileSet>
 
-    <fileSet>
-      <directory>target/lib</directory>
-      <outputDirectory>plugins/${project.artifactId}</outputDirectory>
-      <includes>
-        <include>*.jar</include>
-      </includes>
-      <excludes>
-        <exclude>guava-*.jar</exclude>
-        <exclude>jna-4.1.0.jar</exclude>
-        <exclude>jackson-core-*.jar</exclude>
-      </excludes>
-    </fileSet>
-
     <fileSet>
       <outputDirectory>plugins/${project.artifactId}</outputDirectory>
       <includes>
         <include>LICENSE</include>
       </includes>
     </fileSet>
-
-
   </fileSets>
+
+  <dependencySets>
+    <dependencySet>
+      <outputDirectory>plugins/${project.artifactId}</outputDirectory>
+      <useProjectArtifact>true</useProjectArtifact>
+      <useTransitiveFiltering>true</useTransitiveFiltering>
+      <excludes>
+        <exclude>org.elasticsearch:elasticsearch</exclude>
+        <exclude>net.java.dev.jna:jna</exclude>
+        <exclude>com.fasterxml.jackson.core:jackson-core</exclude>
+        <exclude>log4j:log4j</exclude>
+      </excludes>
+    </dependencySet>
+  </dependencySets>
 </assembly>
diff --git a/duniter4j-elasticsearch/src/main/filtered-resources/plugin-descriptor.properties b/duniter4j-elasticsearch/src/main/filtered-resources/plugin-descriptor.properties
index f0e3dd83df299dd6e23e4816f8f651e4506c1231..1ab4c6e915c42745c50d8b5ebb85818f1405a600 100644
--- a/duniter4j-elasticsearch/src/main/filtered-resources/plugin-descriptor.properties
+++ b/duniter4j-elasticsearch/src/main/filtered-resources/plugin-descriptor.properties
@@ -1,10 +1,9 @@
 name=duniter4j-elasticsearch
-description=${project.description}
-version=1.0
+description=Plugin for Duniter node indexation
 version=${project.version}
 site=false
 jvm=true
 classname=org.duniter.elasticsearch.Plugin
 java.version=1.7
 elasticsearch.version=2.3.3
-isolated=true
\ No newline at end of file
+isolated=true
diff --git a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/ServiceLocator.java b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/ServiceLocator.java
index 54f45a0da931a33316717bf11baa35166cad0220..70f2298177a346c05fb9e2c702b5d3eddf016a58 100644
--- a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/ServiceLocator.java
+++ b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/ServiceLocator.java
@@ -40,17 +40,13 @@ import org.duniter.core.client.service.local.PeerServiceImpl;
 import org.duniter.core.exception.TechnicalException;
 import org.duniter.core.service.CryptoService;
 import org.duniter.core.service.Ed25519CryptoServiceImpl;
-import org.duniter.elasticsearch.PluginSettings;
 import org.elasticsearch.common.inject.Inject;
 import org.elasticsearch.common.inject.Injector;
-import org.elasticsearch.common.inject.Provider;
 import org.elasticsearch.common.inject.Singleton;
 import org.elasticsearch.common.logging.ESLogger;
 import org.elasticsearch.common.logging.ESLoggerFactory;
 
 import java.io.IOException;
-import java.util.HashMap;
-import java.util.ServiceLoader;
 
 @Singleton
 public class ServiceLocator
@@ -58,6 +54,7 @@ public class ServiceLocator
         {
     private static final ESLogger logger = ESLoggerFactory.getLogger(ServiceLocator.class.getName());
 
+    private static BeanFactory beanFactory = null;
 
     @Inject
     public ServiceLocator(Injector injector) {
@@ -65,8 +62,7 @@ public class ServiceLocator
         if (logger.isDebugEnabled()) {
             logger.debug("Starting Duniter4j client ServiceLocator...");
         }
-        //setBeanFactory(new BeanFactory(injector));
-        setBeanFactory(createBeanFactory());
+        setBeanFactory(getOrCreateBeanFactory());
 
         org.duniter.core.client.service.ServiceLocator.setInstance(this);
     }
@@ -84,20 +80,11 @@ public class ServiceLocator
 
     /* -- Internal methods -- */
 
-    class BeanFactory extends org.duniter.core.beans.BeanFactory{
-        private final Injector injector;
-        public BeanFactory(Injector injector) {
-            super();
-            this.injector = injector;
+    protected static BeanFactory getOrCreateBeanFactory() {
+        if (beanFactory != null) {
+            return beanFactory;
         }
-
-        public <S extends Bean> S newBean(Class<S> clazz) {
-            return injector.getInstance(clazz);
-        }
-    }
-
-    protected static org.duniter.core.beans.BeanFactory createBeanFactory() {
-        org.duniter.core.beans.BeanFactory beanFactory = new org.duniter.core.beans.BeanFactory()
+        beanFactory = org.duniter.core.client.service.ServiceLocator.instance().getBeanFactory()
                 .bind(BlockchainRemoteService.class, BlockchainRemoteServiceImpl.class)
                 .bind(NetworkRemoteService.class, NetworkRemoteServiceImpl.class)
                 .bind(WotRemoteService.class, WotRemoteServiceImpl.class)
@@ -115,13 +102,15 @@ public class ServiceLocator
     public static class Provider<T extends Bean> implements org.elasticsearch.common.inject.Provider<T> {
 
         private final Class<T> clazz;
+        private final BeanFactory beanFactory;
 
         public Provider(Class<T> clazz) {
             this.clazz = clazz;
+            this.beanFactory = getOrCreateBeanFactory();
         }
 
         public T get() {
-            return ServiceLocator.instance().getBean(clazz);
+            return beanFactory.getBean(clazz);
         }
     }
 }
diff --git a/pom.xml b/pom.xml
index 65dacf61448731d295bf0dd90df587c9277a8ace..8125e998c22e07da01da4ec603af8bf3dff70c01 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,6 +68,9 @@
     <!-- Could be overriding in modules -->
     <maven.jar.main.class/>
 
+    <!-- skip javadoc for now - FIXME fix java 8 javadoc errors -->
+    <maven.javadoc.skip>true</maven.javadoc.skip>
+
     <!-- distribution management -->
     <distribution.site.id>eis-public-reports</distribution.site.id>
     <distribution.site.host>server.e-is.pro:22</distribution.site.host>
@@ -419,6 +422,18 @@
           <version>2.5</version>
         </plugin>
 
+        <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>wagon-maven-plugin</artifactId>
+          <version>1.0</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-antrun-plugin</artifactId>
+          <version>1.8</version>
+        </plugin>
+
         <plugin>
           <artifactId>maven-changes-plugin</artifactId>
           <version>2.11</version>