diff --git a/1.554.1.1/Dockerfile b/1.554.1.1/Dockerfile
deleted file mode 100644
index 2ecbf28..0000000
--- a/1.554.1.1/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.554.1.1
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://nectar-downloads.cloudbees.com/jenkins-enterprise/1.554/war/1.554.1.1/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.554.1.1/init.groovy b/1.554.1.1/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.554.1.1/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.554.1.1/jenkins.sh b/1.554.1.1/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.554.1.1/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.554.1.1/plugins.sh b/1.554.1.1/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.554.1.1/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.554.10.1/Dockerfile b/1.554.10.1/Dockerfile
deleted file mode 100644
index 5a23e3f..0000000
--- a/1.554.10.1/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.554.10.1
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://nectar-downloads.cloudbees.com/jenkins-enterprise/1.554/war/1.554.10.1/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.554.10.1/init.groovy b/1.554.10.1/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.554.10.1/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.554.10.1/jenkins.sh b/1.554.10.1/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.554.10.1/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.554.10.1/plugins.sh b/1.554.10.1/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.554.10.1/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.554.11.1/Dockerfile b/1.554.11.1/Dockerfile
deleted file mode 100644
index d995a86..0000000
--- a/1.554.11.1/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.554.11.1
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://nectar-downloads.cloudbees.com/jenkins-enterprise/1.554/war/1.554.11.1/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.554.11.1/init.groovy b/1.554.11.1/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.554.11.1/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.554.11.1/jenkins.sh b/1.554.11.1/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.554.11.1/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.554.11.1/plugins.sh b/1.554.11.1/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.554.11.1/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.554.2.1/Dockerfile b/1.554.2.1/Dockerfile
deleted file mode 100644
index a804ea1..0000000
--- a/1.554.2.1/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.554.2.1
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://nectar-downloads.cloudbees.com/jenkins-enterprise/1.554/war/1.554.2.1/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.554.2.1/init.groovy b/1.554.2.1/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.554.2.1/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.554.2.1/jenkins.sh b/1.554.2.1/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.554.2.1/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.554.2.1/plugins.sh b/1.554.2.1/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.554.2.1/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.554.2.2/Dockerfile b/1.554.2.2/Dockerfile
deleted file mode 100644
index 4550e87..0000000
--- a/1.554.2.2/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.554.2.2
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://nectar-downloads.cloudbees.com/jenkins-enterprise/1.554/war/1.554.2.2/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.554.2.2/init.groovy b/1.554.2.2/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.554.2.2/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.554.2.2/jenkins.sh b/1.554.2.2/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.554.2.2/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.554.2.2/plugins.sh b/1.554.2.2/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.554.2.2/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.565.11.1/Dockerfile b/1.565.11.1/Dockerfile
deleted file mode 100644
index 1cbc2d4..0000000
--- a/1.565.11.1/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.565.11.1
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://nectar-downloads.cloudbees.com/jenkins-enterprise/1.565/war/1.565.11.1/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.565.11.1/init.groovy b/1.565.11.1/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.565.11.1/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.565.11.1/jenkins.sh b/1.565.11.1/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.565.11.1/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.565.11.1/plugins.sh b/1.565.11.1/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.565.11.1/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.565.3.1/Dockerfile b/1.565.3.1/Dockerfile
deleted file mode 100644
index b6e97b8..0000000
--- a/1.565.3.1/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.565.3.1
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://nectar-downloads.cloudbees.com/jenkins-enterprise/1.565/war/1.565.3.1/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.565.3.1/init.groovy b/1.565.3.1/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.565.3.1/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.565.3.1/jenkins.sh b/1.565.3.1/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.565.3.1/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.565.3.1/plugins.sh b/1.565.3.1/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.565.3.1/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/1.580.1.1/Dockerfile b/1.580.1.1/Dockerfile
deleted file mode 100644
index 59e908b..0000000
--- a/1.580.1.1/Dockerfile
+++ /dev/null
@@ -1,45 +0,0 @@
-FROM java:openjdk-7u65-jdk
-
-RUN apt-get update && apt-get install -y wget git curl zip && rm -rf /var/lib/apt/lists/*
-
-ENV JENKINS_HOME /var/jenkins_home
-
-# Jenkins is ran with user `jenkins`, uid = 1000
-# If you bind mount a volume from host/vloume from a data container, 
-# ensure you use same uid
-RUN useradd -d "$JENKINS_HOME" -u 1000 -m -s /bin/bash jenkins
-
-# Jenkins home directoy is a volume, so configuration and build history 
-# can be persisted and survive image upgrades
-VOLUME /var/jenkins_home
-
-# `/usr/share/jenkins/ref/` contains all reference configuration we want 
-# to set on a fresh new installation. Use it to bundle additional plugins 
-# or config file with your custom jenkins Docker image.
-RUN mkdir -p /usr/share/jenkins/ref/init.groovy.d
-
-
-COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-angent-port.groovy
-
-ENV JENKINS_VERSION 1.580.1.1
-
-# could use ADD but this one does not check Last-Modified header 
-# see https://github.com/docker/docker/issues/8331
-RUN curl -L http://nectar-downloads.cloudbees.com/jenkins-enterprise/1.580/war/1.580.1.1/jenkins.war -o /usr/share/jenkins/jenkins.war
-
-ENV JENKINS_UC https://updates.jenkins-ci.org
-RUN chown -R jenkins "$JENKINS_HOME" /usr/share/jenkins/ref
-
-# for main web interface:
-EXPOSE 8080
-
-# will be used by attached slave agents:
-EXPOSE 50000
-
-USER jenkins
-
-COPY jenkins.sh /usr/local/bin/jenkins.sh
-ENTRYPOINT ["/usr/local/bin/jenkins.sh"]
-
-# from a derived Dockerfile, can use `RUN plugin.sh active.txt` to setup /usr/share/jenkins/ref/plugins from a support bundle
-COPY plugins.sh /usr/local/bin/plugins.sh
diff --git a/1.580.1.1/init.groovy b/1.580.1.1/init.groovy
deleted file mode 100644
index 83c3a3d..0000000
--- a/1.580.1.1/init.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-import hudson.model.*;
-import jenkins.model.*;
-
-
-Thread.start {
-      sleep 10000
-      println "--> setting agent port for jnlp"
-      Jenkins.instance.setSlaveAgentPort(50000)
-}
diff --git a/1.580.1.1/jenkins.sh b/1.580.1.1/jenkins.sh
deleted file mode 100755
index 1bd0f85..0000000
--- a/1.580.1.1/jenkins.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /bin/bash
-
-# Copy files from /usr/share/jenkins/ref into /var/jenkins_home
-# So the initial JENKINS-HOME is set with expected content. 
-# Don't override, as this is just a reference setup, and use from UI 
-# can then change this, upgrade plugins, etc.
-copy_reference_file() {
-	f=${1%/} 
-	echo "$f"
-    rel=${f:23}
-    dir=$(dirname ${f})
-    echo " $f -> $rel"    
-	if [[ ! -e /var/jenkins_home/${rel} ]] 
-	then
-		echo "copy $rel to JENKINS_HOME"
-		mkdir -p /var/jenkins_home/${dir:23}
-		cp -r /usr/share/jenkins/ref/${rel} /var/jenkins_home/${rel}; 
-	fi; 
-}
-export -f copy_reference_file
-find /usr/share/jenkins/ref/ -type f -exec bash -c 'copy_reference_file {}' \;
-
-# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
-if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then
-   exec java $JAVA_OPTS -jar /usr/share/jenkins/jenkins.war $JENKINS_OPTS "$@"
-fi
-
-# As argument is not jenkins, assume user want to run his own process, for sample a `bash` shell to explore this image
-exec "$@"
-
diff --git a/1.580.1.1/plugins.sh b/1.580.1.1/plugins.sh
deleted file mode 100755
index e0df32b..0000000
--- a/1.580.1.1/plugins.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/bash
-
-# Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
-# in the reference directory, so user can define a derived Docker image with just :
-# 
-# FROM jenkins
-# COPY plugins.txt /plugins.txt
-# RUN /usr/share/jenkins/plugins.sh /plugins.txt
-# 
-
-REF=/usr/share/jenkins/ref/plugins
-mkdir -p $REF
-
-while read spec; do
-    plugin=(${spec//:/ }); 
-    curl -L ${JENKINS_UC}/download/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.hpi;
-done  < $1
diff --git a/update.sh b/update.sh
index 674de21..3e12e06 100755
--- a/update.sh
+++ b/update.sh
@@ -12,7 +12,6 @@
 	cp Dockerfile.template jenkins.sh plugins.sh init.groovy "$version/"
 	mv "$version/Dockerfile.template" "$version/Dockerfile"
     case $version in
-		1\.*\.*\.*) download="http:\/\/nectar-downloads.cloudbees.com\/jenkins-enterprise\/${version::5}\/war\/$version\/jenkins.war" ;;
     	1\.*\.*) download="http:\/\/mirrors.jenkins-ci.org\/war-stable\/$version\/jenkins.war" ;;
     	*) download="http:\/\/mirrors.jenkins-ci.org\/war\/$version\/jenkins.war" ;;
 	esac
