diff --git a/hudson-scripts/init/0_constants.sh b/hudson-scripts/init/0_constants.sh
index fec7282..6bc67c3 100644
--- a/hudson-scripts/init/0_constants.sh
+++ b/hudson-scripts/init/0_constants.sh
@@ -17,6 +17,8 @@
 
 # Private constants
 export UPDATE_FOLDER="${UPDATE_FOLDER:-updates}"
+export STREAMS_FOLDER="${STREAMS_FOLDER:-streams}"
+export LATEST_FOLDER="${LATEST_FOLDER:-latest}"
 export NIGHTLY_FOLDER="${NIGHTLY_FOLDER:-nightly}"
 export INTEGRATION_FOLDER="${INTEGRATION_FOLDER:-integration}"
 export RELEASES_FOLDER="${RELEASES_FOLDER:-releases}"
diff --git a/hudson-scripts/init/2_functions.sh b/hudson-scripts/init/2_functions.sh
index 8a2d933..6103ce5 100644
--- a/hudson-scripts/init/2_functions.sh
+++ b/hudson-scripts/init/2_functions.sh
@@ -10,49 +10,6 @@
 #    Obeo - initial API and implementation
 # ====================================================================
 
-# retrieved from http://stackoverflow.com/a/12498485
-relpath() {
-    # both $1 and $2 are absolute paths beginning with /
-    # returns relative path to $2/$targetPath from $1/$sourcePath
-    local sourcePath=$1
-    local targetPath=$2
-
-    local common_part=$sourcePath # for now
-    local result="" # for now
- 
-    while [[ "${targetPath#$common_part}" == "${targetPath}" ]]; do
-        # no match, means that candidate common part is not correct
-        # go up one level (reduce common part)
-
-        common_part="$(dirname $common_part)"
-        # and record that we went back, with correct / handling
-        if [[ -z $result ]]; then
-            result=".."
-        else
-            result="../$result"
-        fi
-    done
-
-    if [[ $common_part == "/" ]]; then
-        # special case for root (no common path)
-        result="$result/"
-    fi
-
-    # since we now have identified the common part,
-    # compute the non-common part
-    local forward_part="${targetPath#$common_part}"
-
-    # and now stick all parts together
-    if [[ -n $result ]] && [[ -n $forward_part ]]; then
-        result="$result$forward_part"
-    elif [[ -n $forward_part ]]; then
-        # extra slash removal
-        result="${forward_part:1}"
-    fi
-
-    echo $result
-}
-
 updateLatest() {
     local latestPath=$1
     local prefix=$2
@@ -66,7 +23,7 @@
     if [ ${#allFilesWithPrefix[@]} -gt 0 ]; then
         local latestUpdatePath=$( echo ${allFilesWithPrefix[@]} | tr ' ' '\n' | sort | tail -n 1 )
         if [ ! -z "${latestUpdatePath}" ]; then
-            local relpath=$( relpath ${latestPath} ${UPDATE_NIGHTLY_HOME}/${latestUpdatePath} )
+            local relpath=$( relativize ${latestPath} ${UPDATE_NIGHTLY_HOME}/${latestUpdatePath} )
             local latestUpdateSite_onDisk="file:${UPDATE_NIGHTLY_HOME}/${latestUpdatePath}"
             LSDEBUG "Latest update site on disk is '${latestUpdateSite_onDisk}'"
             if [ -d "${latestPath}" ]; then
@@ -103,7 +60,7 @@
     local latestInStreamPath=$3
 
     local updateSiteURLToClean="${UPDATE_NIGHTLY_URL}/${updateSiteToClean}"
-    local relpath=$( relpath ${streamPath} ${UPDATE_NIGHTLY_HOME}/${updateSiteToClean} )
+    local relpath=$( relativize ${streamPath} ${UPDATE_NIGHTLY_HOME}/${updateSiteToClean} )
 
     LSINFO "Removing '${relpath}' from '${streamPath}'"
     composite-repository -location "${streamPath}" -remove "${relpath}"
@@ -125,7 +82,7 @@
                 LSCRITICAL "There are more than a single update site referenced in the repository ${latestInStreamPath}"
                 exit 1
             elif [ "${updateSiteURLToClean}" = "${latestUpdateSiteInStream[0]}" ]; then
-                relpath=$( relpath ${latestInStreamPath} ${UPDATE_NIGHTLY_HOME}/${updateSiteToClean} )
+                relpath=$( relativize ${latestInStreamPath} ${UPDATE_NIGHTLY_HOME}/${updateSiteToClean} )
                 LSINFO "Removing '${relpath}' from '${latestInStreamPath}'"
                 composite-repository -location "${latestInStreamPath}" -remove "${relpath}"
             fi
diff --git a/hudson-scripts/init/3_filesystem.sh b/hudson-scripts/init/3_filesystem.sh
new file mode 100644
index 0000000..5fa0f7a
--- /dev/null
+++ b/hudson-scripts/init/3_filesystem.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+# ====================================================================
+# Copyright (c) 2014 Obeo
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#    Obeo - initial API and implementation
+# ====================================================================
+
+clean() {
+	local wd="${1}"
+
+	rm -rf "${wd}"
+}
+
+# retrieved from http://stackoverflow.com/a/12498485
+relativize() {
+    # both $1 and $2 are absolute paths beginning with /
+    # returns relative path to $2/$targetPath from $1/$sourcePath
+    local sourcePath=$1
+    local targetPath=$2
+
+    local common_part=$sourcePath # for now
+    local result="" # for now
+ 
+    while [[ "${targetPath#$common_part}" == "${targetPath}" ]]; do
+        # no match, means that candidate common part is not correct
+        # go up one level (reduce common part)
+
+        common_part="$(dirname $common_part)"
+        # and record that we went back, with correct / handling
+        if [[ -z $result ]]; then
+            result=".."
+        else
+            result="../$result"
+        fi
+    done
+
+    if [[ $common_part == "/" ]]; then
+        # special case for root (no common path)
+        result="$result/"
+    fi
+
+    # since we now have identified the common part,
+    # compute the non-common part
+    local forward_part="${targetPath#$common_part}"
+
+    # and now stick all parts together
+    if [[ -n $result ]] && [[ -n $forward_part ]]; then
+        result="$result$forward_part"
+    elif [[ -n $forward_part ]]; then
+        # extra slash removal
+        result="${forward_part:1}"
+    fi
+
+    echo $result
+}
diff --git a/hudson-scripts/init/3_update-site-publish.sh b/hudson-scripts/init/3_update-site-publish.sh
new file mode 100644
index 0000000..e144aa8
--- /dev/null
+++ b/hudson-scripts/init/3_update-site-publish.sh
@@ -0,0 +1,82 @@
+#!/bin/sh
+# ====================================================================
+# Copyright (c) 2014 Obeo
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#    Obeo - initial API and implementation
+# ====================================================================
+
+_retrieveZippedArtifact() {
+	local artifactURL="${1}"
+	local localArtifact="${2}"
+	local unzipTo="${3}"
+
+	curl -s -k "${artifactURL}" > "${localArtifact}"
+
+	if [ -d "${unzipTo}" ]; then
+		rm -rf "${unzipTo}"
+	fi
+	unzip -qq "${localArtifact}" -d "${unzipTo}"
+}
+
+_publishUpdateSiteInStream() {
+	local projectName="${1}"
+	local category="${2}"
+	local home="${3}"
+	local qualifiedVersion="${4}"
+	local stream="${5}"
+
+	local repoLabelPrefix="${projectName}${stream:+ ${stream}.x}"
+
+	local streamPath="${home}${stream:+/${STREAMS_FOLDER}/${stream}.x}"
+	local relPathToUpdateSite=$( relativize "${streamPath}" "${home}/${qualifiedVersion}" )
+
+	LSDEBUG "Adding '${relPathToUpdateSite}' to composite repository '${streamPath}'"
+	composite-repository \
+		-location "${streamPath}" \
+		-add "${relPathToUpdateSite}" \
+		-repositoryName "${repoLabelPrefix} ${category} builds" \
+		-compressed
+		createP2Index "${streamPath}"
+
+	LSDEBUG "Updating latest of stream '${stream}' @ '${streamPath}'"
+	updateLatest "${streamPath}${streamPath:+/}${LATEST_FOLDER}" "${stream}" "${repoLabelPrefix} latest ${category} build"
+}
+
+publishUpdateSite() {
+	local wd="${1}"
+	local projectName="${2}"
+	local category="${3}"
+	local artifactURL="${4}"
+	local qualifiedVersion="${5}"
+	local home="${6}"
+
+	unqualifiedVersion="$(echo ${qualifiedVersion} | sed-regex 's/^([0-9]+\.[0-9]+\.[0-9]+)\..+$/\1/')"
+	LSDEBUG "unqualifiedVersion is '${unqualifiedVersion}'"
+	minorVersion="$(echo ${qualifiedVersion} | sed-regex 's/^([0-9]+\.[0-9]+)\.[0-9]+\..+$/\1/')"
+	LSDEBUG "Minor stream name is '${minorVersion}.x'"
+	majorVersion="$(echo ${qualifiedVersion} | sed-regex 's/^([0-9]+)\.[0-9]+\.[0-9]+\..+$/\1/')"
+	LSDEBUG "Major stream name is '${majorVersion}.x'"
+
+	# the update site
+	LSINFO "Downloading '${artifactURL}'"
+	_retrieveZippedArtifact "${artifactURL}" "${wd}/update-site-${qualifiedVersion}.zip" "${wd}/update-site-${qualifiedVersion}"
+
+	if [ ! -d "${home}/${qualifiedVersion}" ]; then
+		LSDEBUG "Creating folder '${home}/${qualifiedVersion}'"
+		mkdir -p "${home}/${qualifiedVersion}"
+	fi
+
+	LSINFO "Copying update site to '${home}/${qualifiedVersion}'"
+	cp -Rf "${wd}/update-site/"* "${home}/${qualifiedVersion}"
+
+	## streams update
+	_publishUpdateSiteInStream "${projectName}" "${category}" "${home}" "${qualifiedVersion}" "${unqualifiedVersion}"
+	_publishUpdateSiteInStream "${projectName}" "${category}" "${home}" "${qualifiedVersion}" "${minorVersion}"
+	_publishUpdateSiteInStream "${projectName}" "${category}" "${home}" "${qualifiedVersion}" "${majorVersion}"
+	_publishUpdateSiteInStream "${projectName}" "${category}" "${home}" "${qualifiedVersion}" ""
+}
diff --git a/hudson-scripts/publish-nightly.sh b/hudson-scripts/publish-nightly.sh
index c57af79..38c1204 100755
--- a/hudson-scripts/publish-nightly.sh
+++ b/hudson-scripts/publish-nightly.sh
@@ -27,65 +27,6 @@
 
 LSINFO "== Publishing nightly build '${PROJECT_NAME} ${qualifiedVersion}' == "
 
-unqualifiedVersion="$(echo ${qualifiedVersion} | sed-regex 's/^([0-9]+\.[0-9]+\.[0-9]+)\..+$/\1/')"
-LSDEBUG "unqualifiedVersion is '${unqualifiedVersion}'"
-minorVersion="$(echo ${qualifiedVersion} | sed-regex 's/^([0-9]+\.[0-9]+)\.[0-9]+\..+$/\1/')"
-LSDEBUG "Minor stream name is '${minorVersion}.x'"
-majorVersion="$(echo ${qualifiedVersion} | sed-regex 's/^([0-9]+)\.[0-9]+\.[0-9]+\..+$/\1/')"
-LSDEBUG "Major stream name is '${majorVersion}.x'"
-
-# the update site
-
-LSINFO "Downloading '${artifactURL}'"
-artifactName="update-site.zip"
-if [ -f "${WORKING_DIRECTORY}/${artifactName}" ]; then
-	rm -f "${WORKING_DIRECTORY}/${artifactName}"
-fi
-curl -s -k "${artifactURL}" > "${WORKING_DIRECTORY}/${artifactName}"
-
-LSINFO "Unziping '${artifactName}'"
-if [ -d "${WORKING_DIRECTORY}/update-site" ]; then
-	rm -rf "${WORKING_DIRECTORY}/update-site"
-fi
-unzip -qq "${WORKING_DIRECTORY}/${artifactName}" -d "${WORKING_DIRECTORY}/update-site"
-
-if [ ! -d "${UPDATE_NIGHTLY_HOME}/${qualifiedVersion}" ]; then
-	LSINFO "Creating folder '${UPDATE_NIGHTLY_HOME}'"
-	mkdir -p "${UPDATE_NIGHTLY_HOME}/${qualifiedVersion}"
-else
-	LSDEBUG "Folder '${WORKING_DIRECTORY}/${UPDATE_NIGHTLY_HOME}' already exists, do nothing"
-fi
-LSINFO "Copying update site to '${UPDATE_NIGHTLY_HOME}'"
-cp -rf "${WORKING_DIRECTORY}/update-site/"* "${UPDATE_NIGHTLY_HOME}/${qualifiedVersion}"
-
-## streams update
-
-updateStream() {
-	local pathToVersion="${1}"
-	local stream="${2}"
-
-	local streamPath="${stream:+streams/${stream}.x}"
-	local repoPrefix="${PROJECT_NAME}${stream:+ ${stream}.x}"
-
-	LSINFO "Adding '${pathToVersion}' to '${UPDATE_NIGHTLY_HOME}/${streamPath}'"
-
-	composite-repository \
-		-location "${UPDATE_NIGHTLY_HOME}/${streamPath}" \
-		-add "${pathToVersion}" \
-		-repositoryName "${repoPrefix} nightly builds" \
-		-compressed
-		createP2Index "${UPDATE_NIGHTLY_HOME}/${streamPath}"
-
-	updateLatest "${UPDATE_NIGHTLY_HOME}/${streamPath}${streamPath:+/}latest" "${stream}" "${repoPrefix} latest nightly build"
-}
-
-updateStream "../../${qualifiedVersion}" "${unqualifiedVersion}"
-updateStream "../../${qualifiedVersion}" "${minorVersion}"
-updateStream "../../${qualifiedVersion}" "${majorVersion}"
-updateStream "${qualifiedVersion}"       ""
+publishUpdateSite "${WORKING_DIRECTORY}" "${PROJECT_NAME}" "nightly" "${artifactURL}" "${qualifiedVersion}" "${UPDATE_NIGHTLY_HOME}"
 
 LSINFO "== '${PROJECT_NAME} ${qualifiedVersion}' has been published @ '${UPDATE_NIGHTLY_URL}/${qualifiedVersion}' == "
-
-# the javadoc
-
-# the documentation
