diff --git a/buildSrc/src/main/groovy/virgo.java-conventions.gradle b/buildSrc/src/main/groovy/virgo.java-conventions.gradle
index 09b7850..7b22688 100644
--- a/buildSrc/src/main/groovy/virgo.java-conventions.gradle
+++ b/buildSrc/src/main/groovy/virgo.java-conventions.gradle
@@ -24,6 +24,9 @@
         implementation "ch.qos.logback:logback-core:${logbackVersion}"
         implementation "ch.qos.logback:logback-classic:${logbackVersion}"
 
+        implementation "org.apache.httpcomponents:httpcore:${httpcoreVersion}"
+        implementation "org.apache.httpcomponents:httpclient:${httpclientVersion}"
+
         // Eclipse Kepler 4.3.2 (SR2) - local Maven mirror
         implementation "org.eclipse.platform:org.eclipse.osgi:${equinoxVersion}"
         implementation "org.eclipse.platform:org.eclipse.osgi.services:${osgiServicesVersion}"
diff --git a/gradle.properties b/gradle.properties
index c641b7a..ce91d58 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -150,13 +150,14 @@
 commonsDbcpVersion = 1.4.0.v201204271417
 # CQ12541 (PB CQ12051) 1.3.2+
 commonsFileuploadVersion = 1.3.3
-# CQ3956 (PB CQ1765)
-commonsHttpClientVersion = 3.1.0
 
-# CQ9555 (PB Orbit CQ8938)
-httpcomponentsCoreVersion = 4.3.3
-# CQ9556 (PB Orbit CQ8934)
-httpcomponentsClientVersion = 4.3.6
+# CQ3956 (PB CQ1765)
+#commonsHttpClientVersion = 3.1.0
+
+# CQ9555 (PB Orbit CQ8938) Version 4.3.3
+httpcoreVersion = 4.4.12
+# CQ9556 (PB Orbit CQ8934) Version 4.3.6
+httpclientVersion = 4.5.10
 
 # CQ13049
 commonsIoVersion = 2.5
diff --git a/packaging/kernel/build.gradle b/packaging/kernel/build.gradle
index ba1be61..5afc144 100644
--- a/packaging/kernel/build.gradle
+++ b/packaging/kernel/build.gradle
@@ -21,3 +21,11 @@
         }
     }
 }
+
+tasks.register('publishVirgoKernel', PublishProduct) {
+    product = 'kernel'
+    productFileLocation = file("${projectDir}/publish_resources/products/${product}/${product}.product")
+    javaProfileLocation = file("${projectDir}/src/main/dist/configuration/java-server.profile")
+}
+
+distZip.dependsOn(['publishVirgoKernel'])
diff --git a/packaging/kernel/build.gradle.inactive b/packaging/kernel/build.gradle.inactive
index 6633cc5..dd4f832 100644
--- a/packaging/kernel/build.gradle.inactive
+++ b/packaging/kernel/build.gradle.inactive
@@ -1,5 +1,11 @@
 import org.apache.tools.ant.filters.ReplaceTokens
 
+//import static VirgoToolsPlugin.DOWNLOAD_VIRGO_BUILD_TOOLS_TASK_NAME
+//import static VirgoToolsPlugin.installProduct
+//import static VirgoToolsPlugin.publishProduct
+
+//import Config
+
 apply plugin: 'distribution'
 
 distributions {
@@ -20,3 +26,53 @@
         }
     }
 }
+
+task ('assembleKernel', dependsOn: [
+    'installProductKernel',
+    'packageResourcesAndProducts'
+]) {
+    installDist.dependsOn(['assembleKernel'])
+    distZip.dependsOn(['assembleKernel'])
+}
+
+task ('packageResourcesAndProducts', dependsOn: [
+//    ':kernel:org.eclipse.virgo.kernel.equinox.extensions:jar',
+//    ':kernel:org.eclipse.virgo.management.console:war',
+    ':nano:org.eclipse.virgo.nano.authentication:jar',
+    ':nano:org.eclipse.virgo.nano.shutdown:jar',
+    ':util:org.eclipse.virgo.util.env:jar',
+]) {
+    doLast {
+        packageConfiguration('lib', configurations.nanoLib, file("${buildDir}/common_resources/lib/"))
+        packageConfiguration('libPersistence', configurations.nanoLibPersistence, file("${buildDir}/common_resources/lib/persistence/"))
+        packageConfiguration('libEndorsed', configurations.nanoLibEndorsed, file("${buildDir}/common_resources/lib/endorsed/"))
+        packageConfiguration('pluginsExtras', configurations.kernelPluginsExtras, file("${buildDir}/common_resources/plugins"))
+        packageConfiguration('repositoryExt', configurations.repositoryExt, file("${buildDir}/common_resources/repository/ext"))
+        packageConfiguration('pickup', configurations.nanoPickup, file("${buildDir}/common_resources/pickup/"))
+    }
+}
+
+task ('publishKernel', dependsOn: [
+    ':org.eclipse.virgo.site:publishBase',
+    ':org.eclipse.virgo.site:publishKernelBase',
+]) {
+    description = "Publishes a product to a p2 repository. The publishing uses ANY environment configurations."
+
+    def product = 'kernel'
+    def productFileLocation = file("${projectDir}/publish_resources/products/${product}/${product}.product")
+    def javaProfileLocation = file("${projectDir}/src/main/dist/configuration/java-server.profile")
+
+    doLast() { publishProduct(project, productFileLocation, javaProfileLocation) }
+}
+
+task ('installProductKernel', dependsOn: ['publishKernel',]) {
+
+    description = "Installs a Virgo product to a desired destination. Default profile(roaming) is VIRGOProfile, the environment cofigurations are ANY."
+
+    def product = 'kernel'
+    def shortProduct = 'VK'
+    def destinationDir = file("${buildDir}/${shortProduct}/${product}")
+    def productIu = "${product}.product"
+
+    doLast() { installProduct(project, productIu, destinationDir) }
+}
diff --git a/repository/build.gradle b/repository/build.gradle.inactive
similarity index 100%
rename from repository/build.gradle
rename to repository/build.gradle.inactive
diff --git a/repository/org.eclipse.virgo.repository/build.gradle b/repository/org.eclipse.virgo.repository/build.gradle
new file mode 100644
index 0000000..42aa152
--- /dev/null
+++ b/repository/org.eclipse.virgo.repository/build.gradle
@@ -0,0 +1,35 @@
+plugins {
+	id 'virgo.java-conventions'
+}
+
+project(':repository:org.eclipse.virgo.repository') {
+    dependencies {
+		implementation project(':util:org.eclipse.virgo.util.common')
+		implementation project(':util:org.eclipse.virgo.util.io')
+		implementation project(':util:org.eclipse.virgo.util.jmx')
+		implementation project(':util:org.eclipse.virgo.util.math')
+		implementation project(':util:org.eclipse.virgo.util.osgi')
+		implementation project(':util:org.eclipse.virgo.util.osgi.manifest')
+		implementation project(':medic:org.eclipse.virgo.medic')
+
+        implementation 'org.slf4j:slf4j-api'
+        implementation 'org.eclipse.platform:org.eclipse.osgi'
+
+		implementation 'org.apache.httpcomponents:httpcore'
+		implementation 'org.apache.httpcomponents:httpclient'
+
+//		testimplementation group: 'org.easymock', name: 'easymock', version: easymockVersion
+
+		testImplementation project(':medic:org.eclipse.virgo.medic.test')
+		testImplementation project(':test:org.eclipse.virgo.test.stubs')
+//		testImplementation group: 'org.eclipse.virgo.mirrored', name: 'org.apache.commons.codec', version: commonsCodecVersion, ext: "jar"
+//		testImplementation group: 'org.eclipse.virgo.mirrored', name: 'org.apache.commons.logging', version: commonsLoggingVersion, ext: "jar"
+
+//		testRuntime "org.aspectj:aspectjrt:${project.aspectjVersion}"
+//
+//		if (System.properties['weaving.enabled'] == 'true') {
+//            aspectpath project(':medic:org.eclipse.virgo.medic')
+//            aspectpath project(':util:org.eclipse.virgo.util.jmx')
+//        }
+	}
+}
diff --git a/repository/org.eclipse.virgo.repository/src/main/java/org/eclipse/virgo/repository/internal/remote/ArtifactDescriptorStoreWatcher.java b/repository/org.eclipse.virgo.repository/src/main/java/org/eclipse/virgo/repository/internal/remote/ArtifactDescriptorStoreWatcher.java
index f9e65ea..0153a2f 100644
--- a/repository/org.eclipse.virgo.repository/src/main/java/org/eclipse/virgo/repository/internal/remote/ArtifactDescriptorStoreWatcher.java
+++ b/repository/org.eclipse.virgo.repository/src/main/java/org/eclipse/virgo/repository/internal/remote/ArtifactDescriptorStoreWatcher.java
@@ -11,18 +11,20 @@
 
 package org.eclipse.virgo.repository.internal.remote;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.zip.GZIPInputStream;
-
-import org.apache.commons.httpclient.Header;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.http.Header;
+import org.apache.http.HttpStatus;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
 import org.eclipse.virgo.repository.configuration.RemoteRepositoryConfiguration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.zip.GZIPInputStream;
+
 
 final class ArtifactDescriptorStoreWatcher {
 
@@ -42,17 +44,17 @@
 
     static final class StoreUpdaterThread extends Thread {
 
+        private static final Logger LOGGER = LoggerFactory.getLogger(StoreUpdaterThread.class);
+
         private static final String RESPONSE_HEADER_ETAG = "Etag";
-        
-        private static final String REPONSE_HEADER_CONTENT_ENCODING = "Content-Encoding";
-        
+
+        private static final String RESPONSE_HEADER_CONTENT_ENCODING = "Content-Encoding";
+
         private static final String CONTENT_ENCODING_GZIP = "gzip";
 
         private static final String REQUEST_HEADER_IF_NONE_MATCH = "If-None-Match";
 
-        private static final Logger LOGGER = LoggerFactory.getLogger(StoreUpdaterThread.class);
-
-        private final HttpClient httpClient = new HttpClient();
+        private final CloseableHttpClient httpClient = HttpClients.createDefault();
 
         private final long msUpdateInterval;
 
@@ -84,22 +86,23 @@
             DescriptorStore descriptorStore = descriptorStoreFactory.recoverDescriptorStore();
 
             while (this.update) {
-                GetMethod getIndex = new GetMethod(this.repositoryUri);
+                HttpGet getIndex = new HttpGet(this.repositoryUri);
 
                 if (descriptorStore != null) {
-                    getIndex.addRequestHeader(REQUEST_HEADER_IF_NONE_MATCH, descriptorStore.getEtag());
+                    getIndex.addHeader(REQUEST_HEADER_IF_NONE_MATCH, descriptorStore.getEtag());
                 }
 
                 int responseCode;
                 try {
-                    responseCode = this.httpClient.executeMethod(getIndex);
+                    CloseableHttpResponse response = httpClient.execute(getIndex);
+                    responseCode = response.getStatusLine().getStatusCode();
                     if (this.countContiguousHttpClientFailures > 0) {
                         LOGGER.info(String.format("Remote repository '%s' re-accessed after failure.", this.repositoryName));
                         this.countContiguousHttpClientFailures = 0;
                     }
                     if (responseCode == HttpStatus.SC_OK || responseCode == HttpStatus.SC_NOT_MODIFIED) {
                         if (responseCode == HttpStatus.SC_OK) {
-                            descriptorStore = readNewDescriptorStore(getIndex);
+                            descriptorStore = readNewDescriptorStore(response);
                         }
                         this.mutableDepository.setDescriptorStore(descriptorStore);
                     } else {
@@ -134,18 +137,18 @@
                 this.repositoryName));
         }
 
-        private String getETag(GetMethod getIndex) {
-            Header responseHeader = getIndex.getResponseHeader(RESPONSE_HEADER_ETAG);
+        private String getETag(CloseableHttpResponse response) {
+            Header responseHeader = response.getFirstHeader(RESPONSE_HEADER_ETAG);
             return responseHeader == null ? null : responseHeader.getValue();
         }
 
-        private DescriptorStore readNewDescriptorStore(GetMethod getDescriptorStore) {
+        private DescriptorStore readNewDescriptorStore(CloseableHttpResponse response) {
             try {
-                String etag = getETag(getDescriptorStore);
+                String etag = getETag(response);
                 
-                InputStream storeStream = getDescriptorStore.getResponseBodyAsStream();
+                InputStream storeStream = response.getEntity().getContent();
                 
-                Header contentEncodingResponseHeader = getDescriptorStore.getResponseHeader(REPONSE_HEADER_CONTENT_ENCODING);
+                Header contentEncodingResponseHeader = response.getFirstHeader(RESPONSE_HEADER_CONTENT_ENCODING);
                 if (contentEncodingResponseHeader != null && CONTENT_ENCODING_GZIP.equals(contentEncodingResponseHeader.getValue())) {
                     storeStream = new GZIPInputStream(storeStream);
                 }
diff --git a/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/eventlog/DynamicDelegationEventLoggerTests.java b/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/eventlog/DynamicDelegationEventLoggerTests.java
index cd8f581..8e73d93 100644
--- a/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/eventlog/DynamicDelegationEventLoggerTests.java
+++ b/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/eventlog/DynamicDelegationEventLoggerTests.java
@@ -21,17 +21,13 @@
 import org.eclipse.virgo.medic.eventlog.Level;
 import org.eclipse.virgo.medic.eventlog.LogEvent;
 import org.eclipse.virgo.medic.test.eventlog.MockEventLogger;
-import org.eclipse.virgo.repository.internal.eventlog.DynamicDelegationEventLogger;
 import org.eclipse.virgo.test.stubs.framework.StubBundleContext;
 import org.eclipse.virgo.test.stubs.support.ObjectClassFilter;
 
-
-/** 
- */
 public class DynamicDelegationEventLoggerTests {
     
 	@Test
-    public void dynamicDelegation() throws Exception {
+    public void dynamicDelegation() {
         StubBundleContext bundleContext = new StubBundleContext();
         bundleContext.addFilter(new ObjectClassFilter(EventLogger.class));
         
diff --git a/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/RemoteRepositoryTests.java b/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/RemoteRepositoryTests.java
index 12aabae..98c9cdd 100644
--- a/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/RemoteRepositoryTests.java
+++ b/repository/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/RemoteRepositoryTests.java
@@ -34,7 +34,7 @@
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
-import org.apache.commons.httpclient.HttpStatus;
+import org.apache.http.HttpStatus;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -53,7 +53,6 @@
 import org.eclipse.virgo.repository.configuration.StubRepositoryConfiguration;
 import org.eclipse.virgo.repository.internal.PersistentRepository;
 import org.eclipse.virgo.repository.internal.RepositoryLogEvents;
-import org.eclipse.virgo.repository.internal.remote.RemoteRepository;
 import org.eclipse.virgo.repository.management.RepositoryInfo;
 import org.eclipse.virgo.util.io.FileCopyUtils;
 import org.eclipse.virgo.util.io.NetUtils;
diff --git a/settings.gradle b/settings.gradle
index f4a34c8..b03f191 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -17,7 +17,7 @@
 //include ':medic:org.eclipse.virgo.medic.logbackcorefragment'
 //include ':medic:org.eclipse.virgo.medic.logbackclassicfragment'
 
-//include ':repository:org.eclipse.virgo.repository'
+include ':repository:org.eclipse.virgo.repository'
 
 include ':nano:org.eclipse.virgo.nano.authentication'
 include ':nano:org.eclipse.virgo.nano.core'
