diff --git a/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerContainerFactory.java b/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerContainerFactory.java
index 307712e..9dcbd8c 100644
--- a/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerContainerFactory.java
+++ b/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerContainerFactory.java
@@ -103,7 +103,7 @@
         return containers;
     }
 
-    private ContainerImpl createDockerContainer(ServiceConfig config) throws Exception {
+    ContainerImpl createDockerContainer(ServiceConfig config) throws Exception {
         List<String> command = new ArrayList<>();
         command.add("-d");
         command.add("-l");
@@ -152,7 +152,7 @@
     }
 
     @SuppressWarnings({ "rawtypes", "unchecked" })
-    private List<ContainerImpl> discoverContainers(ServiceConfig config) {
+    List<ContainerImpl> discoverContainers(ServiceConfig config) {
         List<ContainerImpl> res = new ArrayList<>();
         List<String> ids = getDockerIDs(config);
         if (ids.size() == 0)
@@ -211,6 +211,7 @@
     }
 
     @Override
+    @SuppressWarnings("rawtypes")
     public Set<String> listServices() throws Exception {
         Set<String> res = new HashSet<>();
         List<String> ids = docker.ps(SERVICE_NAME);
diff --git a/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerController.java b/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerController.java
index 94801b6..78b74b8 100644
--- a/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerController.java
+++ b/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerController.java
@@ -62,6 +62,9 @@
     }
 
     public String inspect(List<String> ids) {
+        if (ids.size() == 0)
+            return "[]";
+
         List<String> cmd = new ArrayList<>();
         cmd.add("docker");
         cmd.add("inspect");
diff --git a/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/ServiceImpl.java b/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/ServiceImpl.java
index 895d809..f852f00 100644
--- a/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/ServiceImpl.java
+++ b/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/ServiceImpl.java
@@ -64,7 +64,11 @@
                     killContainer(containers.remove(0));
                 }
             } else {
-                // TODO implement scaling up
+                for (int i=curSize; i < count; i++) {
+                    ContainerImpl c = factory.createDockerContainer(config);
+                    c.setService(this);
+                    containers.add(c);
+                }
             }
         } catch (Exception e) {
             LocalDockerContainerFactory.LOG.error("Problem changing instance count of service {} to {}",
@@ -87,6 +91,10 @@
 
     @Override
     public void refresh() {
-        // TODO
+        containers.clear();
+        for (ContainerImpl c : factory.discoverContainers(config)) {
+            c.setService(this);
+            containers.add(c);
+        }
     }
 }
