diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 88929fb36c2cd6c19dd6e3eeb57e82542b3bf30b..4cb3b541591a71c61a6ae9a66486ce90d342267e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -49,7 +49,7 @@ stages:
 .base_docker_store_images:
   extends: .base_docker_images
   script:
-#    Do not remove 'bash' or statem ent will be ignored by primitive docker shell
+#    Do not remove 'bash' or statement will be ignored by primitive docker shell
     - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh
 docker_store_images_master_tag:
   extends: .base_docker_store_images
@@ -347,7 +347,6 @@ integration_test_docker:
         tag="$CI_COMMIT_REF_SLUG"
         echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag"
       fi
-    - echo $tag
     - apk add --update make bash docker-compose
     - apk add --update bind-tools
     - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
@@ -367,10 +366,6 @@ integration_test_docker:
     - chmod u+x $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh
 #    Do not remove 'bash' or statement will be ignored by primitive docker shell
     - bash $CI_PROJECT_DIR/sbin/tag_and_push_docker_image.sh pull $tag
-#   TODO(Corne): Remove me
-    - echo $tag
-    - docker image ls
-    - docker ps
 #    Allow integration test to execute
     - chmod u+x $CI_PROJECT_DIR/sbin/run_integration_test.sh
 #    Do not remove 'bash' or statement will be ignored by primitive docker shell
diff --git a/docker-compose/Makefile b/docker-compose/Makefile
index 71ce66e7f164a4ad752b8794f973eca39883b21a..6c6e3c888eaa77b7c23ad0fca6ec0d94a8099bf7 100644
--- a/docker-compose/Makefile
+++ b/docker-compose/Makefile
@@ -33,6 +33,8 @@ else ifeq (stop,$(firstword $(MAKECMDGOALS)))
     SERVICE_TARGET = true
 else ifeq (restart,$(firstword $(MAKECMDGOALS)))
     SERVICE_TARGET = true
+else ifeq (up,$(firstword $(MAKECMDGOALS)))
+    SERVICE_TARGET = true
 else ifeq (build,$(firstword $(MAKECMDGOALS)))
     SERVICE_TARGET = true
 else ifeq (build-nocache,$(firstword $(MAKECMDGOALS)))
@@ -169,7 +171,6 @@ bootstrap: pull build # first start, initialise from scratch
 
 start: up ## start a service (usage: make start <servicename>)
 	if [ $(UNAME_S) = Linux ]; then touch ~/.Xauthority; chmod a+r ~/.Xauthority; fi
-	echo "TEST COMMANDLINE: $(DOCKER_COMPOSE_ARGS) docker-compose $(COMPOSE_FILE_ARGS) start $(SERVICE)"
 	$(DOCKER_COMPOSE_ARGS) docker-compose $(COMPOSE_FILE_ARGS) start $(SERVICE)
 
 stop:  ## stop a service (usage: make stop <servicename>)
diff --git a/sbin/tag_and_push_docker_image.sh b/sbin/tag_and_push_docker_image.sh
index 814c51649d62b502105bbef0295cb827228d4e02..a6c250c0374c80bf1e422a0071f19e2f30c4269f 100755
--- a/sbin/tag_and_push_docker_image.sh
+++ b/sbin/tag_and_push_docker_image.sh
@@ -1,5 +1,45 @@
 #!/bin/bash -e
 
+function usage {
+    echo "./$(basename $0)
+      no arguments, downloads remote images and pushes these to ASTRON registry.
+      The versions downloaded are controlled by the docker-compose/.env file"
+    echo ""
+    echo "./$(basename $0) -h
+      displays this help message"
+    echo ""
+    echo "./$(basename $0) <docker service name> <tag>
+      downloads latest version of image from the ASTRON registry, builds the
+      specified service and pushes the image with the specified tag to the
+      ASTRON registry"
+    echo ""
+    echo "./$(basename $0) pull <tag>
+      downloads all images for the integration test with the specified tag
+      falling back to 'latest' if unavailable. Should neither exist on the
+      ASTRON registry the script will exit 1. The images are retagged to match
+      the output of docker-compose."
+}
+
+# list of arguments expected in the input
+optstring=":h"
+
+while getopts ${optstring} arg; do
+  case ${arg} in
+    h)
+      usage
+      exit 0
+      ;;
+    :)
+      echo "$0: Must supply an argument to -$OPTARG." >&2
+      exit 1
+      ;;
+    ?)
+      echo "Invalid option: -${OPTARG}."
+      exit 2
+      ;;
+  esac
+done
+
 if [ -z "${LOFAR20_DIR+x}" ]; then
   echo "LOFAR20_DIR not set, did you forget to source lofar20rc.sh?"
   exit 1
@@ -8,13 +48,12 @@ fi
 # shellcheck disable=SC1090
 . "${LOFAR20_DIR}/docker-compose/.env" || exit 1
 
-# Array of tuples separated by space inside double quotes
-# These images are downloaded from a remote registry and pushed locally
+# List of images and their tag
 REMOTE_IMAGES=(
-  "tango-dsconfig ${TANGO_DSCONFIG_VERSION}" "tango-java ${TANGO_JAVA_VERSION}"
-  "tango-itango ${TANGO_ITANGO_VERSION}" "tango-pogo ${TANGO_POGO_VERSION}"
-  "tango-cpp ${TANGO_CPP_VERSION}" "tango-db ${TANGO_DB_VERSION}"
-  "tango-dsconfig ${TANGO_DSCONFIG_VERSION}" "tango-rest ${TANGO_REST_VERSION}"
+  "tango-dsconfig:${TANGO_DSCONFIG_VERSION}" "tango-java:${TANGO_JAVA_VERSION}"
+  "tango-itango:${TANGO_ITANGO_VERSION}" "tango-pogo:${TANGO_POGO_VERSION}"
+  "tango-cpp:${TANGO_CPP_VERSION}" "tango-db:${TANGO_DB_VERSION}"
+  "tango-dsconfig:${TANGO_DSCONFIG_VERSION}" "tango-rest:${TANGO_REST_VERSION}"
 )
 
 # If first argument of bash script not set run first stage
@@ -23,11 +62,8 @@ if [ -z "${1+x}" ]; then
 
   # Iterate over al the REMOTE_IMAGES and pull them from remote and push local
   for image in "${REMOTE_IMAGES[@]}"; do
-    # Set, splits tuple into $1 and $2
-    # shellcheck disable=SC2086
-    set -- $image
-    remote_url="${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}-${1}:${2}"
-    local_url="${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/${1}:${2}"
+    remote_url="${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}-${image}"
+    local_url="${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/${image}"
     docker pull "${remote_url}"
     docker tag "${remote_url}" "${local_url}"
     docker push "${local_url}"