Merge branch 'master' of ssh://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.snaps
diff --git a/.gitignore b/.gitignore
index 24ebfb0..4c88f6c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,12 @@
 spring-build/lib/findbugs
 .DS_Store
 user-ivy.properties
+.gradle
+.classpath
+.project
+.springBeans
+.settings
+bin
+build
+.idea/
+
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 1f9ea18..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "virgo-build"]
-	path = virgo-build
-	url = git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.virgo-build.git
diff --git a/build-snaps/.ant-targets-build.xml b/build-snaps/.ant-targets-build.xml
deleted file mode 100644
index 916f1ed..0000000
--- a/build-snaps/.ant-targets-build.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-build-sample-app
-build-test-apps
-check-proxy
-clean
-clean-integration
-clean-ivy
-clover
-diagnostics
-findbugs
-jar
-javadoc-all
-javadoc-api
-osgi-validate
-p2.extract-publisher
-package-multi-bundle.package
-publish
-publish-ivy
-publish-maven
-quality-multi-bundle.test
-report
-resolve
-set-hudson-proxy
diff --git a/build-snaps/build.xml b/build-snaps/build.xml
deleted file mode 100644
index e2250a5..0000000
--- a/build-snaps/build.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="build-snaps" xmlns:ivy="antlib:org.apache.ivy.ant">
-
-	<path id="unit.test.bundles">
-		<pathelement location="../org.eclipse.virgo.snaps.api"/>
-		<pathelement location="../org.eclipse.virgo.snaps.core"/>
-		<pathelement location="../org.eclipse.virgo.snaps"/>
-	</path>
-
-	<path id="bundles">
-		<path refid="unit.test.bundles" />
-		<pathelement location="../org.eclipse.virgo.snaps.test"/>
-	</path>
-
-	<path id="doc.bundles">
-		<pathelement location="../snaps-guide"/>
-	</path>
-
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../build.versions"/>
-	<import file="${basedir}/package-top-level.xml" />
-	<import file="${basedir}/../virgo-build/multi-bundle/default.xml"/>
-
-	<target name="precommit" depends="clean, clean-integration, test, findbugs, clover"/>
-
-    <target name="publish-build">
-         <antcall target="publish-package-build">
-            <param name="package.file" value="${package.output.file}"/>
-        </antcall>
-    </target>
-    
-    <target name="publish-download">
-         <antcall target="publish-package-download">
-            <param name="package.file" value="${package.output.file}"/>
-        </antcall>
-    </target>
-    
-	<target name="test" depends="build-test-apps">
-		<ant target="quality-multi-bundle.test" />
-	</target>
-
-	<path id="test.apps.bundles">
-		<pathelement location="../test-apps/simple-host"/>
-		<pathelement location="../test-apps/simple-snap"/>
-		<pathelement location="../test-apps/spring-snap"/>
-		<pathelement location="../test-apps/taglib-host"/>
-		<pathelement location="../test-apps/taglib-snap-one"/>
-		<pathelement location="../test-apps/taglib-snap-two"/>
-	</path>
-
-	<target name="build-test-apps" description="Build all of the test applications">
-		<delete dir="${basedir}/../org.eclipse.virgo.snaps.test/src/test/apps" />
-		<mkdir dir="${basedir}/../org.eclipse.virgo.snaps.test/src/test/apps" />
-		<all-bundles target="clean" buildpathRef="test.apps.bundles"></all-bundles>
-		<all-bundles target="jar" buildpathRef="test.apps.bundles"></all-bundles>
-	</target>
-
-	<path id="sample.app.bundles">
-		<pathelement location="../sample/org.eclipse.virgo.snaps.sample.animal"/>
-		<pathelement location="../sample/org.eclipse.virgo.snaps.sample.blue"/>
-		<pathelement location="../sample/org.eclipse.virgo.snaps.sample.cat"/>
-		<pathelement location="../sample/org.eclipse.virgo.snaps.sample.dog"/>
-	</path>
-
-	<target name="build-sample-app" description="Build all of the sample application bundles">
-		<all-bundles target="clean" buildpathRef="sample.app.bundles"></all-bundles>
-		<all-bundles target="jar" buildpathRef="sample.app.bundles"></all-bundles>
-	</target>
-
-</project>
diff --git a/build-snaps/ivy.xml b/build-snaps/ivy.xml
deleted file mode 100644
index aaaab6f..0000000
--- a/build-snaps/ivy.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module
-		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
-		version="1.3">
-
-	<info organisation="org.eclipse.virgo.snaps" module="${ant.project.name}"/>
-
-	<configurations>
-		<include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-	</configurations>
-
-	<publications>
-		<artifact name="subsystem" type="xml" ext="xml"/>
-	</publications>
-
-	<dependencies>
-		<dependency org="org.eclipse.virgo.snaps" name="org.eclipse.virgo.snaps" rev="latest.integration"/>
-		<dependency org="org.eclipse.virgo.snaps" name="org.eclipse.virgo.snaps.core" rev="latest.integration"/>
-		<dependency org="org.eclipse.virgo.snaps" name="org.eclipse.virgo.snaps.api" rev="latest.integration"/>
-	</dependencies>
-
-</ivy-module>
diff --git a/build-snaps/package-bundle.xml b/build-snaps/package-bundle.xml
deleted file mode 100644
index ab94073..0000000
--- a/build-snaps/package-bundle.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="package-bundle">
-
-	<target name="package" depends="ivy.init">
-		<dist-jar/>
-		<src-jar/>
-	</target>
-
-</project>
diff --git a/build-snaps/package-sample.xml b/build-snaps/package-sample.xml
deleted file mode 100644
index 25cebe2..0000000
--- a/build-snaps/package-sample.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="package-sample">
-
-	<target name="package" depends="ivy.init">
-		<src-jar/>
-
-		<property name="subsystem.dir" value="${package.output.dir}/sample"/>
-		<mkdir dir="${subsystem.dir}"/>
-		<dist-jar output.dir="${subsystem.dir}"/>
-	</target>
-
-</project>
diff --git a/build-snaps/package-top-level.xml b/build-snaps/package-top-level.xml
deleted file mode 100644
index 4a7376c..0000000
--- a/build-snaps/package-top-level.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="package-top-level">
-
-	<target name="package">
-		<delete dir="${package.output.dir}" quiet="true"/>
-		<mkdir dir="${package.output.dir}"/>
-		<delete file="${package.output.file}" quiet="true"/>
-		<mkdir dir="${artifacts.dir}"/>
-
-		<all-bundles target="package">
-			<property name="package.output.dir" value="${package.output.dir}"/>
-		</all-bundles>
-
-		<all-bundles target="clean" buildpathRef="doc.bundles" />
-		<all-bundles target="doc-html" buildpathRef="doc.bundles">
-			<property name="docbook.output.dir" value="${package.docs.dir}"/>
-		</all-bundles>
-
-		<all-bundles target="clean" buildpathRef="sample.app.bundles" />
-		<all-bundles target="jar" buildpathRef="sample.app.bundles" />
-		<all-bundles target="package" buildpathRef="sample.app.bundles">
-			<property name="package.output.dir" value="${package.output.dir}"/>
-		</all-bundles>
-
-		<copy todir="${package.output.dir}" failonerror="false">
-			<fileset dir="${basedir}/resources"/>
-		</copy>
-
-		<ant target="javadoc-api" inheritAll="false">
-			<property name="target.dir" value="${package.docs.dir}"/>
-		</ant>
-
-		<replaceregexp match="build.stamp.*\n" replace="" flags="g" file="${package.output.dir}/projects/build.properties"/>
-		<replaceregexp match="release.type=.*" replace="release.type=integration" flags="g" file="${package.output.dir}/projects/build.properties"/>
-
-		<zip destfile="${package.output.file}">
-			<zipfileset dir="${package.dir}"/>
-		</zip>
-	</target>
-
-</project>
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..fd1af11
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,268 @@
+buildscript {
+    repositories {
+        mavenCentral()
+        maven { url 'http://build.eclipse.org/rt/virgo/gradle/bundles/' }
+        maven { url 'https://plugins.gradle.org/m2/' }
+        dependencies {
+            classpath "org.eclipse.virgo.bundlor:org.eclipse.virgo.bundlor.gradle.plugin:${bundlorVersion}"
+            classpath "org.asciidoctor:asciidoctor-gradle-plugin:${asciidoctorVersion}"
+        }
+    }
+}
+
+def timestamp = new Date().format('yyyyMMddHHmmss', TimeZone.getTimeZone('GMT'))
+
+defaultTasks 'clean', 'build', 'snapsDist'
+
+ext.planProjects = [
+	project(':org.eclipse.virgo.snaps')
+]
+
+ext.bundleProjects = [    
+    project(':org.eclipse.virgo.snaps.api'),
+    project(':org.eclipse.virgo.snaps.core')
+]
+
+allprojects {
+    apply plugin: 'base'
+    if (System.properties['ci.build'] == 'true') {
+        def buildQualifier = System.properties['ci.build.qualifier']
+        if(buildQualifier) { 
+            version = version + '.' + buildQualifier
+        } else {
+            version = version + '.' + timestamp
+        }
+    } else {
+        version = version + '.SNAPSHOT'
+    }
+}
+
+configure(bundleProjects + planProjects) {
+    apply plugin: 'java'
+    apply plugin: 'jacoco'
+    apply plugin: 'findbugs'
+
+    sourceCompatibility = '1.7'
+    targetCompatibility = '1.7'
+
+    compileJava {
+        options.encoding = 'UTF-8'
+        options.fork = true
+        doFirst {
+            options.forkOptions.with {
+                executable = 'java'
+                jvmArgs = [
+                    '-cp',
+                    configurations.ecj.asPath,
+                    'org.eclipse.jdt.internal.compiler.batch.Main']
+            }
+        }
+    }
+    compileTestJava {
+        options.encoding = 'UTF-8'
+        options.fork = true
+        doFirst {
+            options.forkOptions.with {
+                executable = 'java'
+                jvmArgs = [
+                    '-cp',
+                    configurations.ecj.asPath,
+                    'org.eclipse.jdt.internal.compiler.batch.Main']
+            }
+        }
+    }
+    repositories {
+		mavenCentral()
+		ivy {
+			url "http://build.eclipse.org/rt/virgo/ivy/bundles/release/"
+			layout "pattern", { artifact "[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" }
+		}
+        ivy {
+            url "http://build.eclipse.org/rt/virgo/ivy/bundles/milestone"
+            layout "pattern", { artifact "[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" }
+        }
+        maven{
+            url "http://build.eclipse.org/rt/virgo/gradle/bundles/"
+        }
+
+	}
+    configurations {
+    	ecj {}
+		testBundles {
+			transitive = false
+		}
+	}	
+	configurations.all {
+  		resolutionStrategy {
+            force "org.eclipse.virgo.mirrored:org.eclipse.osgi:${eclipseOsgiVersion}"
+    	}
+    } 	
+    jar {
+    	// add SUA to archive
+        from "$rootDir/build-bundlor/resources/about/notice.html"
+		duplicatesStrategy 'exclude'
+    }
+    jar.doLast {
+    	// signing the archives
+        if(System.properties['ci.build.signjars'] == 'true') {
+            println '|--> Signing Jar File: ' + archivePath
+            exec {
+                workingDir destinationDir
+                commandLine 'curl',
+                            '-o',
+                            archiveName,
+                            '-F',
+                            "file=@${archiveName}",
+                            '--show-error',
+                            'http://build.eclipse.org:31338/sign'
+            }
+        }
+    }
+    jacoco {
+        toolVersion = "0.7.4.201502262128"
+    }
+    findbugs {
+        sourceSets = [sourceSets.main]
+        ignoreFailures = true
+        effort = "max"
+        reportLevel = "high"
+    }
+    javadoc {
+        failOnError = false
+    }
+    task sourcesJar(type: Jar, dependsOn: classes) {
+    	description 'Assembles a jar archive containing the sources.'
+    	group = 'build'
+	    classifier = 'sources'
+    	from sourceSets.main.allSource
+	}
+	task javadocJar(type: Jar, dependsOn: javadoc) {
+	    description 'Assembles a jar archive containing the javadocs.'
+    	group = 'build'
+	    classifier = 'javadoc'
+	    from javadoc.destinationDir
+	}
+	artifacts {
+		archives sourcesJar, javadocJar
+	}	
+}
+
+configure(bundleProjects) {
+    apply plugin: 'org.eclipse.virgo.bundlor'
+	
+	task('addProjectVersionToGradlePropertiesTask', type: Copy) {
+		ext.outputDir = new File(buildDir, 'bundlor-properties')
+		inputs.file project.rootProject.file('gradle.properties')
+		outputs.dir ext.outputDir
+		from project.rootProject.file('gradle.properties')
+		into ext.outputDir
+		doLast {
+			def gradleProperties = new Properties()
+			gradleProperties.load(new FileReader("${buildDir}/bundlor-properties/gradle.properties"))
+			gradleProperties.setProperty('bundleName', "${archivesBaseName}")
+			gradleProperties.setProperty('timestamp', "${timestamp}")
+			gradleProperties.setProperty('version', "${version}")
+			def writer = new FileWriter("${buildDir}/bundlor-properties/gradle.properties")
+   			try {
+      			gradleProperties.store(writer, 'modified during build process')
+      			writer.flush()
+   			} finally {
+      			writer.close()
+   			}
+		}
+	}
+	task('mergeClassesAndResources', type: Copy, dependsOn: 'compileJava') {
+		ext.bundlorInputPath = new File(buildDir, 'bundlor-inputPath')
+		inputs.file sourceSets.main.output.classesDir
+		inputs.file sourceSets.main.resources
+		outputs.dir ext.bundlorInputPath
+		from sourceSets.main.output.classesDir
+		from sourceSets.main.resources
+		into ext.bundlorInputPath
+	}
+	project.tasks.'bundlor'.dependsOn('addProjectVersionToGradlePropertiesTask', 'mergeClassesAndResources')
+    bundlor {
+    	ext.bundlorInputPath = new File(buildDir, 'bundlor-inputPath')
+		project.tasks['bundlor'].inputs.file ext.bundlorInputPath
+        manifestTemplatePath = "template.mf"
+        propertiesPath = new File("${project.buildDir}/bundlor-properties/gradle.properties")
+		inputPath = ext.bundlorInputPath
+        failOnWarnings = true
+    }
+}
+
+configure(bundleProjects + planProjects) {
+    apply plugin: 'eclipse'
+
+    eclipse {
+        jdt {
+            sourceCompatibility = 1.7
+            targetCompatibility = 1.7            
+        }
+        project {
+            file.beforeMerged {
+                project.natures.clear()
+            }
+            natures = ['org.eclipse.buildship.core.gradleprojectnature']
+        }
+    }
+    cleanEclipse.doLast {
+        delete '.settings'
+        delete 'bin'
+        delete '.springBeans'
+    }
+}
+
+configure(bundleProjects) {	
+	apply plugin: 'maven-publish'
+    publishing {
+    	repositories {
+        	maven {
+                name = "BuildEclipseOrg"
+                url "/opt/public/rt/virgo/gradle/bundles"
+            }
+        }
+        publications {
+            snaps(MavenPublication) {
+                groupId 'org.eclipse.virgo.snaps'
+                from components.java
+				artifact sourcesJar {
+					classifier "sources"
+				}   
+            }
+        }
+    }
+}
+
+task snapsDist(type: Zip, dependsOn: ':snaps-guide:asciidoctor') {
+    description 'Build Snaps distribution Zip file'
+    group = 'distribution'
+    
+	archiveName "snaps-${version}.zip"
+    duplicatesStrategy 'exclude'
+    into("snaps-${version}/dist") {
+        from planProjects.processResources
+        from bundleProjects.jar
+    }
+    into("snaps-${version}/docs/javadoc") {       	 
+    	from bundleProjects.javadocJar
+    }
+    into("snaps-${version}/docs/javadoc-api") {       	 
+    	from './org.eclipse.virgo.snaps.api/build/docs/javadoc'
+    }
+    into("snaps-${version}/docs/html") {       	 
+    	from './snaps-guide/build/asciidoc/html5'
+    }
+    into("snaps-${version}/src") {
+    	from bundleProjects.sourcesJar
+    }
+    into("snaps-${version}") {
+    	from "build-snaps/resources"        
+    }
+}
+
+task wrapper(type: Wrapper) {
+    description 'Creates a local Gradle Wrapper'
+    group = 'Build Setup'
+    gradleVersion = '3.1'
+}
diff --git a/build.versions b/build.versions
index e36e50b..61bae2e 100644
--- a/build.versions
+++ b/build.versions
@@ -42,3 +42,4 @@
 org.eclipse.virgo.medic=3.7.0.D-20140919123043
 org.eclipse.virgo.repository=3.7.0.D-20140919123728
 org.eclipse.gemini.blueprint=2.0.0.M02
+
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..6d6c261
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,24 @@
+# Bundlor Metadata
+version = 3.7.0
+description = 'Virgo Snaps allows you to construct a web application from multiple OSGi bundles, each of which serves up content for a distinct sub-portion of your application's URL space.'
+
+# Versions of buildscript dependencies
+bundlorVersion = 1.1.3.M01
+asciidoctorVersion = 1.5.3
+
+# Eclipse Java Compiler Version
+ecjVersion = 4.6.1
+
+# Versions of runtime dependencies
+javaxServletVersion = 3.1.0.20170128
+javaxServletJspVersion = 2.3.0.20170128
+eclipseOsgiVersion = 3.9.1.v20140110-1610
+eclipseGeminiWebVersion = 3.0.0.RC6
+eclipseVirgoVersion = 3.7.0.D-20170130050148
+slf4jVersion = 1.7.22
+apacheCatalinaVersion = 8.5.11
+
+# Versions of test dependencies
+junitVersion = 4.7
+easymockVersion = 2.3
+springframeworkVersion = 4.2.9.RELEASE
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..6ffa237
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..406a815
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed Oct 26 20:20:43 CEST 2016
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.1-bin.zip
diff --git a/gradlew b/gradlew
new file mode 100755
index 0000000..9aa616c
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,169 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+  NONSTOP* )
+    nonstop=true
+    ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [[ "$(uname)" == "Darwin" ]] && [[ "$HOME" == "$PWD" ]]; then
+  cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..e95643d
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windows variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/java6-server.profile b/java6-server.profile
deleted file mode 100644
index 670c0cb..0000000
--- a/java6-server.profile
+++ /dev/null
@@ -1,212 +0,0 @@
-org.osgi.framework.system.packages = \
- javax.accessibility,\
- javax.activation,\
- javax.activation;version="1.1.0",\
- javax.activity,\
- javax.annotation,\
- javax.annotation;version="1.0.0",\
- javax.annotation.processing,\
- javax.crypto,\
- javax.crypto.interfaces,\
- javax.crypto.spec,\
- javax.imageio,\
- javax.imageio.event,\
- javax.imageio.metadata,\
- javax.imageio.plugins.bmp,\
- javax.imageio.plugins.jpeg,\
- javax.imageio.spi,\
- javax.imageio.stream,\
- javax.jws,\
- javax.jws;version="2.0",\
- javax.jws.soap,\
- javax.jws.soap;version="2.0",\
- javax.lang.model,\
- javax.lang.model.element,\
- javax.lang.model.type,\
- javax.lang.model.util,\
- javax.management,\
- javax.management.loading,\
- javax.management.modelmbean,\
- javax.management.monitor,\
- javax.management.openmbean,\
- javax.management.relation,\
- javax.management.remote,\
- javax.management.remote.rmi,\
- javax.management.timer,\
- javax.naming,\
- javax.naming.directory,\
- javax.naming.event,\
- javax.naming.ldap,\
- javax.naming.spi,\
- javax.net,\
- javax.net.ssl,\
- javax.print,\
- javax.print.attribute,\
- javax.print.attribute.standard,\
- javax.print.event,\
- javax.rmi,\
- javax.rmi.CORBA,\
- javax.rmi.ssl,\
- javax.script,\
- javax.script;version="1.1",\
- javax.security.auth,\
- javax.security.auth.callback,\
- javax.security.auth.kerberos,\
- javax.security.auth.login,\
- javax.security.auth.spi,\
- javax.security.auth.x500,\
- javax.security.cert,\
- javax.security.sasl,\
- javax.sound.midi,\
- javax.sound.midi.spi,\
- javax.sound.sampled,\
- javax.sound.sampled.spi,\
- javax.sql,\
- javax.sql.rowset,\
- javax.sql.rowset.serial,\
- javax.sql.rowset.spi,\
- javax.swing,\
- javax.swing.border,\
- javax.swing.colorchooser,\
- javax.swing.event,\
- javax.swing.filechooser,\
- javax.swing.plaf,\
- javax.swing.plaf.basic,\
- javax.swing.plaf.metal,\
- javax.swing.plaf.multi,\
- javax.swing.plaf.synth,\
- javax.swing.table,\
- javax.swing.text,\
- javax.swing.text.html,\
- javax.swing.text.html.parser,\
- javax.swing.text.rtf,\
- javax.swing.tree,\
- javax.swing.undo,\
- javax.tools,\
- javax.transaction,\
- javax.transaction;version="1.0.1",\
- javax.transaction;version="1.1.0",\
- javax.transaction.xa,\
- javax.transaction.xa;version="1.0.1",\
- javax.transaction.xa;version="1.1.0",\
- javax.xml,\
- javax.xml;version="1.0.1",\
- javax.xml.bind,\
- javax.xml.bind;version="2.0",\
- javax.xml.bind.annotation,\
- javax.xml.bind.annotation;version="2.0",\
- javax.xml.bind.annotation.adapters,\
- javax.xml.bind.annotation.adapters;version="2.0",\
- javax.xml.bind.attachment,\
- javax.xml.bind.attachment;version="2.0",\
- javax.xml.bind.helpers,\
- javax.xml.bind.helpers;version="2.0",\
- javax.xml.bind.util,\
- javax.xml.bind.util;version="2.0",\
- javax.xml.crypto,\
- javax.xml.crypto;version="1.0",\
- javax.xml.crypto.dom,\
- javax.xml.crypto.dom;version="1.0",\
- javax.xml.crypto.dsig,\
- javax.xml.crypto.dsig;version="1.0",\
- javax.xml.crypto.dsig.dom,\
- javax.xml.crypto.dsig.dom;version="1.0",\
- javax.xml.crypto.dsig.keyinfo,\
- javax.xml.crypto.dsig.keyinfo;version="1.0",\
- javax.xml.crypto.dsig.spec,\
- javax.xml.crypto.dsig.spec;version="1.0",\
- javax.xml.datatype,\
- javax.xml.namespace,\
- javax.xml.parsers,\
- javax.xml.soap,\
- javax.xml.soap;version="1.3.0",\
- javax.xml.stream,\
- javax.xml.stream;version="1.0.1",\
- javax.xml.stream.events,\
- javax.xml.stream.events;version="1.0.1",\
- javax.xml.stream.util,\
- javax.xml.stream.util;version="1.0.1",\
- javax.xml.transform,\
- javax.xml.transform.dom,\
- javax.xml.transform.sax,\
- javax.xml.transform.stax,\
- javax.xml.transform.stream,\
- javax.xml.validation,\
- javax.xml.ws,\
- javax.xml.ws;version="2.1.1",\
- javax.xml.ws.handler,\
- javax.xml.ws.handler;version="2.1.1",\
- javax.xml.ws.handler.soap,\
- javax.xml.ws.handler.soap;version="2.1.1",\
- javax.xml.ws.http,\
- javax.xml.ws.http;version="2.1.1",\
- javax.xml.ws.soap,\
- javax.xml.ws.soap;version="2.1.1",\
- javax.xml.ws.spi,\
- javax.xml.ws.spi;version="2.1.1",\
- javax.xml.xpath,\
- org.eclipse.virgo.kernel.equinox.extensions;version="3.7.0",\
- org.eclipse.virgo.kernel.equinox.extensions.hooks;version="3.7.0",\
- org.eclipse.virgo.test.launcher;version="3.7.0",\
- org.eclipse.virgo.util.launcher.parser;version="3.7.0",\
- org.ietf.jgss,\
- org.omg.CORBA,\
- org.omg.CORBA_2_3,\
- org.omg.CORBA_2_3.portable,\
- org.omg.CORBA.DynAnyPackage,\
- org.omg.CORBA.ORBPackage,\
- org.omg.CORBA.portable,\
- org.omg.CORBA.TypeCodePackage,\
- org.omg.CosNaming,\
- org.omg.CosNaming.NamingContextExtPackage,\
- org.omg.CosNaming.NamingContextPackage,\
- org.omg.Dynamic,\
- org.omg.DynamicAny,\
- org.omg.DynamicAny.DynAnyFactoryPackage,\
- org.omg.DynamicAny.DynAnyPackage,\
- org.omg.IOP,\
- org.omg.IOP.CodecFactoryPackage,\
- org.omg.IOP.CodecPackage,\
- org.omg.Messaging,\
- org.omg.PortableInterceptor,\
- org.omg.PortableInterceptor.ORBInitInfoPackage,\
- org.omg.PortableServer,\
- org.omg.PortableServer.CurrentPackage,\
- org.omg.PortableServer.POAManagerPackage,\
- org.omg.PortableServer.POAPackage,\
- org.omg.PortableServer.portable,\
- org.omg.PortableServer.ServantLocatorPackage,\
- org.omg.SendingContext,\
- org.omg.stub.java.rmi,\
- org.w3c.dom,\
- org.w3c.dom.bootstrap,\
- org.w3c.dom.css,\
- org.w3c.dom.events,\
- org.w3c.dom.html,\
- org.w3c.dom.ls,\
- org.w3c.dom.ranges,\
- org.w3c.dom.stylesheets,\
- org.w3c.dom.traversal,\
- org.w3c.dom.views ,\
- org.xml.sax,\
- org.xml.sax.ext,\
- org.xml.sax.helpers
-org.osgi.framework.bootdelegation = \
- com_cenqua_clover,\
- com.cenqua.*,\
- com.yourkit.*,\
- org.eclipse.virgo.nano.authentication,\
- com.sun.*,\
- javax.xml.*,\
- org.apache.xerces.jaxp.*,\
- org.w3c.*,\
- org.xml.*,\
- sun.*
-org.osgi.framework.executionenvironment = \
- OSGi/Minimum-1.0,\
- OSGi/Minimum-1.1,\
- J2SE-1.3,\
- J2SE-1.4,\
- J2SE-1.5,\
- JavaSE-1.6
-osgi.java.profile.name = SpringSource-dm-Server-Java6
diff --git a/org.eclipse.virgo.snaps.api/.classpath b/org.eclipse.virgo.snaps.api/.classpath
deleted file mode 100644
index 3b1b1a2..0000000
--- a/org.eclipse.virgo.snaps.api/.classpath
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java">
-		<attributes>
-			<attribute name="org.eclipse.virgo.ide.jdt.core.test.classpathentry" value="false"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="src" path="src/main/resources">
-		<attributes>
-			<attribute name="org.eclipse.virgo.ide.jdt.core.test.classpathentry" value="false"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
-		<attributes>
-			<attribute name="org.eclipse.virgo.ide.jdt.core.test.classpathentry" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/resources">
-		<attributes>
-			<attribute name="org.eclipse.virgo.ide.jdt.core.test.classpathentry" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.osgi/3.8.1.v20120830-144521/org.eclipse.osgi-3.8.1.v20120830-144521.jar" sourcepath="/IVY_CACHE/org.eclipse.osgi/org.eclipse.osgi/3.7.1.R37x_v20110808-1106/org.eclipse.osgi-sources-3.7.1.R37x_v20110808-1106.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar" sourcepath="/IVY_CACHE/javax.servlet/javax.servlet/3.0.0.v201103241009/javax.servlet-sources-3.0.0.v201103241009.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet.jsp/2.2.0.v201112011158/javax.servlet.jsp-2.2.0.v201112011158.jar" sourcepath="/IVY_CACHE/javax.servlet/javax.servlet.jsp/2.2.0.v201103241009/javax.servlet.jsp-sources-2.2.0.v201103241009.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.gemini/org.eclipse.gemini.web.core/2.2.5.RELEASE/org.eclipse.gemini.web.core-2.2.5.RELEASE.jar" sourcepath="/IVY_CACHE/org.eclipse.gemini/org.eclipse.gemini.web.core/2.2.5.RELEASE/org.eclipse.gemini.web.core-sources-2.2.5.RELEASE.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-4.7.0.jar" sourcepath="/IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-sources-4.7.0.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.test/3.1.0.RELEASE/org.springframework.test-3.1.0.RELEASE.jar" sourcepath="/IVY_CACHE/org.springframework/org.springframework.test/3.1.0.RELEASE/org.springframework.test-sources-3.1.0.RELEASE.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-2.3.0.jar" sourcepath="/IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-sources-2.3.0.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.core/3.1.0.RELEASE/org.springframework.core-3.1.0.RELEASE.jar" sourcepath="/IVY_CACHE/org.springframework/org.springframework.core/3.1.0.RELEASE/org.springframework.core-sources-3.1.0.RELEASE.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.aspectj/com.springsource.org.aspectj.runtime/1.6.12.RELEASE/com.springsource.org.aspectj.runtime-1.6.12.RELEASE.jar" sourcepath="/IVY_CACHE/org.aspectj/com.springsource.org.aspectj.runtime/1.6.12.RELEASE/com.springsource.org.aspectj.runtime-sources-1.6.12.RELEASE.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.test/org.eclipse.virgo.test.stubs/3.7.0.D-20140919122823/org.eclipse.virgo.test.stubs-3.7.0.D-20140919122823.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.test/org.eclipse.virgo.test.stubs/3.6.0.D-20120711092322/org.eclipse.virgo.test.stubs-sources-3.6.0.D-20120711092322.jar"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/org.eclipse.virgo.snaps.api/.project b/org.eclipse.virgo.snaps.api/.project
deleted file mode 100644
index 44213a7..0000000
--- a/org.eclipse.virgo.snaps.api/.project
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.virgo.snaps.api</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.springsource.server.ide.bundlor.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.springframework.ide.eclipse.core.springbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
-		<nature>org.springframework.ide.eclipse.core.springnature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-	</natures>
-</projectDescription>
diff --git a/org.eclipse.virgo.snaps.api/.settings/org.eclipse.virgo.ide.bundlor.core.prefs b/org.eclipse.virgo.snaps.api/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
deleted file mode 100644
index 7d52032..0000000
--- a/org.eclipse.virgo.snaps.api/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Apr 15 15:27:27 BST 2009
-org.eclipse.virgo.ide.bundlor.core.template.properties.files=../build.properties;../build.versions
-eclipse.preferences.version=1
diff --git a/org.eclipse.virgo.snaps.api/.settings/org.eclipse.wst.common.project.facet.core.xml b/org.eclipse.virgo.snaps.api/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 92aa290..0000000
--- a/org.eclipse.virgo.snaps.api/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
-  <installed facet="org.eclipse.virgo.server.bundle" version="1.0"/>
-</faceted-project>
diff --git a/org.eclipse.virgo.snaps.api/.settings/org.springframework.ide.eclipse.core.prefs b/org.eclipse.virgo.snaps.api/.settings/org.springframework.ide.eclipse.core.prefs
deleted file mode 100644
index 02fdc3c..0000000
--- a/org.eclipse.virgo.snaps.api/.settings/org.springframework.ide.eclipse.core.prefs
+++ /dev/null
@@ -1,67 +0,0 @@
-#Tue Jul 28 14:51:53 BST 2009
-eclipse.preferences.version=1
-org.springframework.ide.eclipse.core.builders.enable.aopreferencemodelbuilder=true
-org.springframework.ide.eclipse.core.builders.enable.beanmetadatabuilder=true
-org.springframework.ide.eclipse.core.builders.enable.osgibundleupdater=true
-org.springframework.ide.eclipse.core.enable.project.preferences=false
-org.springframework.ide.eclipse.core.validator.enable.com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.enable.com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.enable.com.springsource.sts.server.quickfix.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.core.springvalidator=false
-org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.applicationSymbolicNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.applicationVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleActivationPolicyRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleActivatorRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleManifestVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleSymbolicNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.exportPackageRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.importRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.parsingProblemsRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.requireBundleRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.AvoidDriverManagerDataSource-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ImportElementsAtTopRulee-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ParentBeanSpecifiesAbstractClassRule-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.RefElementRule-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.TooManyBeansInFileRule-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UnnecessaryValueElementRule-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UseBeanInheritance-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.legacyxmlusage.jndiobjectfactory-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.importBundleVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.importLibraryVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.importPackageVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.requireBundleVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanAlias-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanClass-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanConstructorArgument-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinition-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinitionHolder-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanFactory-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanInitDestroyMethod-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanReference-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.methodOverride-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.parsingProblems-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.requiredProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=false
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.core.springClasspath-org.springframework.ide.eclipse.core.springvalidator=false
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.action-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.actionstate-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attribute-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attributemapper-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.beanaction-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationaction-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationresult-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.exceptionhandler-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.import-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.inputattribute-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.mapping-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.outputattribute-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.set-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.state-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.subflowstate-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.transition-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.variable-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.webflowstate-org.springframework.ide.eclipse.webflow.core.validator=true
diff --git a/org.eclipse.virgo.snaps.api/.springBeans b/org.eclipse.virgo.snaps.api/.springBeans
deleted file mode 100644
index 8ce1035..0000000
--- a/org.eclipse.virgo.snaps.api/.springBeans
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
-	<version>1</version>
-	<pluginVersion><![CDATA[2.2.5.200906231226-RC1]]></pluginVersion>
-	<configSuffixes>
-		<configSuffix><![CDATA[xml]]></configSuffix>
-	</configSuffixes>
-	<enableImports><![CDATA[false]]></enableImports>
-	<configs>
-	</configs>
-	<configSets>
-	</configSets>
-</beansProjectDescription>
diff --git a/org.eclipse.virgo.snaps.api/build.gradle b/org.eclipse.virgo.snaps.api/build.gradle
new file mode 100644
index 0000000..a723352
--- /dev/null
+++ b/org.eclipse.virgo.snaps.api/build.gradle
@@ -0,0 +1,15 @@
+description = 'Virgo Snaps API Bundle'
+
+dependencies {
+    ecj group: "org.eclipse.jdt.core.compiler", name: "ecj", version: "${ecjVersion}"
+    
+	compile group: "org.eclipse.virgo.mirrored", name: "javax.servlet", version: javaxServletVersion, configuration: "compile"
+	compile group: "org.eclipse.virgo.mirrored", name: "javax.servlet.jsp", version: javaxServletJspVersion, configuration: "compile"
+	compile group: "org.eclipse.virgo.mirrored", name: "org.eclipse.osgi", version: eclipseOsgiVersion, configuration: "compile"	
+	compile group: "org.eclipse.gemini", name: "org.eclipse.gemini.web.core", version: eclipseGeminiWebVersion, configuration: "compile"
+
+	testCompile "junit:junit:${junitVersion}"
+	testCompile "org.easymock:easymock:${easymockVersion}"
+	testCompile "org.springframework:spring-core:${springframeworkVersion}"
+	testCompile "org.springframework:spring-test:${springframeworkVersion}"
+}
diff --git a/org.eclipse.virgo.snaps.api/build.xml b/org.eclipse.virgo.snaps.api/build.xml
deleted file mode 100644
index fc61a1c..0000000
--- a/org.eclipse.virgo.snaps.api/build.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="org.eclipse.virgo.snaps.api">
-	
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../build.versions"/>
-	<import file="${basedir}/../build-snaps/package-bundle.xml"/>
-	<import file="${basedir}/../virgo-build/standard/default.xml"/>
-
-</project>
diff --git a/org.eclipse.virgo.snaps.api/ivy.xml b/org.eclipse.virgo.snaps.api/ivy.xml
deleted file mode 100644
index a10523a..0000000
--- a/org.eclipse.virgo.snaps.api/ivy.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?> 
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?> 
-<ivy-module xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd" version="1.3">
-    <info organisation="${project.organisation}" module="${ant.project.name}"/>
-
-    <configurations>
-        <include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-    </configurations>
-
-    <publications>
-        <artifact name="${ant.project.name}"/>
-        <artifact name="${ant.project.name}-sources" ext="jar" type="src"/>
-    </publications>
-
-    <dependencies>
-        <dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.osgi" rev="${org.eclipse.osgi}" conf="compile->compile"/>
-        <dependency org="org.eclipse.virgo.mirrored" name="javax.servlet" rev="${javax.servlet}" conf="compile->runtime"/>
-        <dependency org="org.eclipse.virgo.mirrored" name="javax.servlet.jsp" rev="${javax.servlet.jsp}" conf="compile->compile"/>
-        <dependency org="org.eclipse.gemini" name="org.eclipse.gemini.web.core" rev="${org.eclipse.gemini.web}" conf="compile->compile" />
-        <dependency org="org.junit" name="com.springsource.org.junit" rev="${org.junit}" conf="test->runtime"/>
-        <dependency org="org.springframework" name="org.springframework.test" rev="${org.springframework}" conf="test->runtime"/>
-        <dependency org="org.springframework" name="org.springframework.core" rev="${org.springframework}" conf="test->runtime"/>
-        <dependency org="org.easymock" name="com.springsource.org.easymock" rev="${org.easymock}" conf="test->runtime"/>
-        <dependency org="org.eclipse.virgo.test" name="org.eclipse.virgo.test.stubs" rev="${org.eclipse.virgo.test}" conf="test->runtime"/>
-    </dependencies>
-
-</ivy-module>
diff --git a/org.eclipse.virgo.snaps.api/src/test/resources/.gitignore b/org.eclipse.virgo.snaps.api/src/test/resources/.gitkeep
similarity index 100%
rename from org.eclipse.virgo.snaps.api/src/test/resources/.gitignore
rename to org.eclipse.virgo.snaps.api/src/test/resources/.gitkeep
diff --git a/org.eclipse.virgo.snaps.api/template.mf b/org.eclipse.virgo.snaps.api/template.mf
index 2f830c2..e4a0815 100644
--- a/org.eclipse.virgo.snaps.api/template.mf
+++ b/org.eclipse.virgo.snaps.api/template.mf
@@ -4,7 +4,7 @@
 Bundle-Version: ${version}
 Bundle-Name: Snaps API
 Import-Template: 
- org.eclipse.gemini.web.*;version="${org.eclipse.gemini.web:[=.=.=, +1)}",
- javax.servlet.jsp*;version="${javax.servlet.jsp:[=.=.=, +1)}",
- javax.servlet.*;version="${javax.servlet:[-1.6.=, +1)}",
+ org.eclipse.gemini.web.*;version="${eclipseGeminiWebVersion:[=.=.=, +1)}",
+ javax.servlet.jsp*;version="${javaxServletJspVersion:[=.=.=, +1)}",
+ javax.servlet.*;version="${javaxServletVersion:[-1.6.=, +1)}",
  org.osgi.framework;version="0"
diff --git a/org.eclipse.virgo.snaps.core/.classpath b/org.eclipse.virgo.snaps.core/.classpath
deleted file mode 100644
index 9520727..0000000
--- a/org.eclipse.virgo.snaps.core/.classpath
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java">
-		<attributes>
-			<attribute name="org.eclipse.virgo.ide.jdt.core.test.classpathentry" value="false"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="src" path="src/main/resources">
-		<attributes>
-			<attribute name="org.eclipse.virgo.ide.jdt.core.test.classpathentry" value="false"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
-		<attributes>
-			<attribute name="org.eclipse.virgo.ide.jdt.core.test.classpathentry" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/resources">
-		<attributes>
-			<attribute name="org.eclipse.virgo.ide.jdt.core.test.classpathentry" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar" sourcepath="/IVY_CACHE/javax.servlet/javax.servlet/3.0.0.v201103241009/javax.servlet-sources-3.0.0.v201103241009.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.test/3.1.0.RELEASE/org.springframework.test-3.1.0.RELEASE.jar" sourcepath="/IVY_CACHE/org.springframework/org.springframework.test/2.5.6.SEC01/org.springframework.test-sources-2.5.6.SEC01.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-4.7.0.jar" sourcepath="/IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-sources-4.7.0.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1/com.springsource.org.apache.commons.logging-1.1.1.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-2.3.0.jar" sourcepath="/IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-sources-2.3.0.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.deployer/3.7.0.D-20140919123907/org.eclipse.virgo.kernel.deployer-3.7.0.D-20140919123907.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.deployer/3.7.0.D-20140919123907/org.eclipse.virgo.kernel.deployer-sources-3.7.0.D-20140919123907.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.osgi/3.7.0.D-20140919122012/org.eclipse.virgo.util.osgi-3.7.0.D-20140919122012.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.osgi/3.7.0.D-20140919122012/org.eclipse.virgo.util.osgi-sources-3.7.0.D-20140919122012.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.osgi.manifest/3.7.0.D-20140919122012/org.eclipse.virgo.util.osgi.manifest-3.7.0.D-20140919122012.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.osgi.manifest/3.7.0.D-20140919122012/org.eclipse.virgo.util.osgi.manifest-sources-3.7.0.D-20140919122012.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.osgi/3.7.0.D-20140919123907/org.eclipse.virgo.kernel.osgi-3.7.0.D-20140919123907.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.osgi/3.7.0.D-20140919123907/org.eclipse.virgo.kernel.osgi-sources-3.7.0.D-20140919123907.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.gemini/org.eclipse.gemini.web.core/2.2.5.RELEASE/org.eclipse.gemini.web.core-2.2.5.RELEASE.jar" sourcepath="/IVY_CACHE/org.eclipse.gemini/org.eclipse.gemini.web.core/2.2.5.RELEASE/org.eclipse.gemini.web.core-sources-2.2.5.RELEASE.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.slf4j.api/1.7.2.v20121108-1250/org.slf4j.api-1.7.2.v20121108-1250.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.io/3.7.0.D-20140919122012/org.eclipse.virgo.util.io-3.7.0.D-20140919122012.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.gemini/org.eclipse.gemini.web.tomcat/2.2.5.RELEASE/org.eclipse.gemini.web.tomcat-2.2.5.RELEASE.jar" sourcepath="/IVY_CACHE/org.eclipse.gemini/org.eclipse.gemini.web.tomcat/2.2.5.RELEASE/org.eclipse.gemini.web.tomcat-sources-2.2.5.RELEASE.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.common/3.7.0.D-20140919122012/org.eclipse.virgo.util.common-3.7.0.D-20140919122012.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.core/3.1.0.RELEASE/org.springframework.core-3.1.0.RELEASE.jar" sourcepath="/IVY_CACHE/org.springframework/org.springframework.core/3.1.0.RELEASE/org.springframework.core-sources-3.1.0.RELEASE.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/7.0.56.v201412180755/org.apache.catalina-7.0.56.v201412180755.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/7.0.56.v201412180755/org.apache.catalina.source-7.0.56.v201412180755.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.test/org.eclipse.virgo.test.stubs/3.7.0.D-20140919122823/org.eclipse.virgo.test.stubs-3.7.0.D-20140919122823.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.test/org.eclipse.virgo.test.stubs/3.6.0.D-20120711092322/org.eclipse.virgo.test.stubs-sources-3.6.0.D-20120711092322.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.parser.manifest/3.7.0.D-20140919122012/org.eclipse.virgo.util.parser.manifest-3.7.0.D-20140919122012.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.parser.manifest/3.7.0.D-20140919122012/org.eclipse.virgo.util.parser.manifest-sources-3.7.0.D-20140919122012.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.aspectj/com.springsource.org.aspectj.runtime/1.6.12.RELEASE/com.springsource.org.aspectj.runtime-1.6.12.RELEASE.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.slf4j.nop/1.7.2.v201212060727/org.slf4j.nop-1.7.2.v201212060727.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.slf4j.nop/1.7.2.v201212060727/org.slf4j.nop.source-1.7.2.v201212060727.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.medic/org.eclipse.virgo.medic.core/3.7.0.D-20140919123043/org.eclipse.virgo.medic.core-3.7.0.D-20140919123043.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.medic/org.eclipse.virgo.medic/1.0.0.CI-B20/org.eclipse.virgo.medic-sources-1.0.0.CI-B20.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.medic/org.eclipse.virgo.medic/3.7.0.D-20140919123043/org.eclipse.virgo.medic-3.7.0.D-20140919123043.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.artifact/3.7.0.D-20140919123907/org.eclipse.virgo.kernel.artifact-3.7.0.D-20140919123907.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.artifact/3.7.0.D-20140919123907/org.eclipse.virgo.kernel.artifact-sources-3.7.0.D-20140919123907.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.nano/org.eclipse.virgo.nano.core/3.7.0.D-20140919123318/org.eclipse.virgo.nano.core-3.7.0.D-20140919123318.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.core/3.7.0.D-20140919123318/org.eclipse.virgo.kernel.core-sources-3.7.0.D-20140919123318.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.osgi/3.8.1.v20120830-144521/org.eclipse.osgi-3.8.1.v20120830-144521.jar" sourcepath="/IVY_CACHE/org.eclipse.osgi/org.eclipse.osgi/3.7.1.R37x_v20110808-1106/org.eclipse.osgi-sources-3.7.1.R37x_v20110808-1106.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.nano/org.eclipse.virgo.nano.deployer.api/3.7.0.D-20140919123318/org.eclipse.virgo.nano.deployer.api-3.7.0.D-20140919123318.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.medic/org.eclipse.virgo.medic.test/3.7.0.D-20140919123043/org.eclipse.virgo.medic.test-3.7.0.D-20140919123043.jar"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/org.eclipse.virgo.snaps.core/.project b/org.eclipse.virgo.snaps.core/.project
deleted file mode 100644
index a85fe4e..0000000
--- a/org.eclipse.virgo.snaps.core/.project
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.virgo.snaps.core</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.springframework.ide.eclipse.core.springbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.springsource.server.ide.bundlor.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
-		<nature>org.springframework.ide.eclipse.core.springnature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-	</natures>
-</projectDescription>
diff --git a/org.eclipse.virgo.snaps.core/.settings/org.eclipse.virgo.ide.bundlor.core.prefs b/org.eclipse.virgo.snaps.core/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
deleted file mode 100644
index 7d52032..0000000
--- a/org.eclipse.virgo.snaps.core/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Apr 15 15:27:27 BST 2009
-org.eclipse.virgo.ide.bundlor.core.template.properties.files=../build.properties;../build.versions
-eclipse.preferences.version=1
diff --git a/org.eclipse.virgo.snaps.core/.settings/org.eclipse.wst.common.project.facet.core.xml b/org.eclipse.virgo.snaps.core/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 92aa290..0000000
--- a/org.eclipse.virgo.snaps.core/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
-  <installed facet="org.eclipse.virgo.server.bundle" version="1.0"/>
-</faceted-project>
diff --git a/org.eclipse.virgo.snaps.core/.settings/org.springframework.ide.eclipse.beans.core.prefs b/org.eclipse.virgo.snaps.core/.settings/org.springframework.ide.eclipse.beans.core.prefs
deleted file mode 100644
index 6b2ea27..0000000
--- a/org.eclipse.virgo.snaps.core/.settings/org.springframework.ide.eclipse.beans.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Jul 21 14:28:24 BST 2009
-eclipse.preferences.version=1
-org.springframework.ide.eclipse.beans.core.ignoreMissingNamespaceHandler=false
diff --git a/org.eclipse.virgo.snaps.core/.settings/org.springframework.ide.eclipse.core.prefs b/org.eclipse.virgo.snaps.core/.settings/org.springframework.ide.eclipse.core.prefs
deleted file mode 100644
index a44974b..0000000
--- a/org.eclipse.virgo.snaps.core/.settings/org.springframework.ide.eclipse.core.prefs
+++ /dev/null
@@ -1,67 +0,0 @@
-#Wed Jul 29 11:21:17 BST 2009
-eclipse.preferences.version=1
-org.springframework.ide.eclipse.core.builders.enable.aopreferencemodelbuilder=true
-org.springframework.ide.eclipse.core.builders.enable.beanmetadatabuilder=true
-org.springframework.ide.eclipse.core.builders.enable.osgibundleupdater=true
-org.springframework.ide.eclipse.core.enable.project.preferences=false
-org.springframework.ide.eclipse.core.validator.enable.com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.enable.com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.enable.com.springsource.sts.server.quickfix.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.core.springvalidator=false
-org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.applicationSymbolicNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.applicationVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleActivationPolicyRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleActivatorRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleManifestVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleSymbolicNameRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.bundleVersionRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.exportPackageRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.importRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.parsingProblemsRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.server.ide.manifest.core.requireBundleRule-com.springsource.server.ide.manifest.core.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.AvoidDriverManagerDataSource-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ImportElementsAtTopRulee-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.ParentBeanSpecifiesAbstractClassRule-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.RefElementRule-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.TooManyBeansInFileRule-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UnnecessaryValueElementRule-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.com.springsource.sts.bestpractices.UseBeanInheritance-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.bestpractices.legacyxmlusage.jndiobjectfactory-com.springsource.sts.bestpractices.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.importBundleVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.importLibraryVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.importPackageVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.com.springsource.sts.server.quickfix.requireBundleVersionRule-com.springsource.sts.server.quickfix.manifestvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanAlias-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanClass-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanConstructorArgument-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinition-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinitionHolder-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanFactory-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanInitDestroyMethod-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanReference-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.methodOverride-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.parsingProblems-org.springframework.ide.eclipse.beans.core.beansvalidator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.requiredProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=false
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.core.springClasspath-org.springframework.ide.eclipse.core.springvalidator=false
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.action-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.actionstate-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attribute-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attributemapper-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.beanaction-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationaction-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationresult-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.exceptionhandler-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.import-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.inputattribute-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.mapping-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.outputattribute-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.set-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.state-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.subflowstate-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.transition-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.variable-org.springframework.ide.eclipse.webflow.core.validator=true
-org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.webflowstate-org.springframework.ide.eclipse.webflow.core.validator=true
diff --git a/org.eclipse.virgo.snaps.core/.springBeans b/org.eclipse.virgo.snaps.core/.springBeans
deleted file mode 100644
index e0180c6..0000000
--- a/org.eclipse.virgo.snaps.core/.springBeans
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
-	<version>1</version>
-	<pluginVersion><![CDATA[2.2.5.200906231226-RC1]]></pluginVersion>
-	<configSuffixes>
-		<configSuffix><![CDATA[xml]]></configSuffix>
-	</configSuffixes>
-	<enableImports><![CDATA[false]]></enableImports>
-	<configs>
-		<config>src/main/resources/META-INF/spring/module-context.xml</config>
-		<config>src/main/resources/META-INF/spring/osgi-context.xml</config>
-	</configs>
-	<configSets>
-		<configSet>
-			<name><![CDATA[snaps-core]]></name>
-			<allowBeanDefinitionOverriding>true</allowBeanDefinitionOverriding>
-			<incomplete>false</incomplete>
-			<configs>
-				<config>src/main/resources/META-INF/spring/module-context.xml</config>
-				<config>src/main/resources/META-INF/spring/osgi-context.xml</config>
-			</configs>
-		</configSet>
-	</configSets>
-</beansProjectDescription>
diff --git a/org.eclipse.virgo.snaps.core/build.gradle b/org.eclipse.virgo.snaps.core/build.gradle
new file mode 100644
index 0000000..0fc2e04
--- /dev/null
+++ b/org.eclipse.virgo.snaps.core/build.gradle
@@ -0,0 +1,30 @@
+description = 'Virgo Snaps Core Bundle'
+
+dependencies {
+	ecj group: "org.eclipse.jdt.core.compiler", name: "ecj", version: "${ecjVersion}"
+    
+	compile "org.slf4j:slf4j-api:${slf4jVersion}"
+	
+	compile group: "org.eclipse.virgo.mirrored", name: "javax.servlet", version: javaxServletVersion, configuration: "compile"
+	compile group: "org.eclipse.virgo.mirrored", name: "org.eclipse.osgi", version: eclipseOsgiVersion, configuration: "compile"
+	
+	compile group: "org.eclipse.gemini", name: "org.eclipse.gemini.web.core", version: eclipseGeminiWebVersion, configuration: "compile"
+	compile group: "org.eclipse.gemini", name: "org.eclipse.gemini.web.tomcat", version: eclipseGeminiWebVersion, configuration: "compile"
+
+	compile "org.eclipse.virgo:org.eclipse.virgo.util.common:${eclipseVirgoVersion}"
+	compile "org.eclipse.virgo:org.eclipse.virgo.util.io:${eclipseVirgoVersion}"
+	compile "org.eclipse.virgo:org.eclipse.virgo.util.osgi:${eclipseVirgoVersion}"
+	compile "org.eclipse.virgo:org.eclipse.virgo.util.osgi.manifest:${eclipseVirgoVersion}"
+	compile "org.eclipse.virgo:org.eclipse.virgo.medic:${eclipseVirgoVersion}"
+	compile "org.eclipse.virgo:org.eclipse.virgo.nano.core:${eclipseVirgoVersion}"
+	compile "org.eclipse.virgo:org.eclipse.virgo.nano.deployer.api:${eclipseVirgoVersion}"
+	compile "org.eclipse.virgo:org.eclipse.virgo.kernel.artifact:${eclipseVirgoVersion}"
+	compile "org.eclipse.virgo:org.eclipse.virgo.kernel.deployer:${eclipseVirgoVersion}"
+
+	testCompile "org.eclipse.virgo:org.eclipse.virgo.test.stubs:${eclipseVirgoVersion}"
+	testCompile "org.eclipse.virgo:org.eclipse.virgo.medic.test:${eclipseVirgoVersion}"
+	
+	testCompile "junit:junit:${junitVersion}"
+	testCompile "org.easymock:easymock:${easymockVersion}"
+	testCompile "org.springframework:spring-test:${springframeworkVersion}"	
+}
diff --git a/org.eclipse.virgo.snaps.core/build.xml b/org.eclipse.virgo.snaps.core/build.xml
deleted file mode 100644
index 1a02c5d..0000000
--- a/org.eclipse.virgo.snaps.core/build.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="org.eclipse.virgo.snaps.core">
-
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../build.versions"/>
-	<import file="${basedir}/../build-snaps/package-bundle.xml"/>
-	<import file="${basedir}/../virgo-build/standard/default.xml"/>
-
-</project>
diff --git a/org.eclipse.virgo.snaps.core/ivy.xml b/org.eclipse.virgo.snaps.core/ivy.xml
deleted file mode 100644
index a370e77..0000000
--- a/org.eclipse.virgo.snaps.core/ivy.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd" version="1.3">
-	<info organisation="${project.organisation}" module="${ant.project.name}"/>
-	
-	<configurations>
-		<include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-	</configurations>
-	
-	<publications>
-		<artifact name="${ant.project.name}"/>
-		<artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
-	</publications>
-	
-	<dependencies>
-		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.osgi" rev="${org.eclipse.osgi}" conf="compile->compile"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="javax.servlet" rev="${javax.servlet}" conf="compile->runtime"/>
-		<dependency org="org.eclipse.virgo.snaps" name="org.eclipse.virgo.snaps.api" rev="latest.integration" conf="compile->compile"/>
-        <dependency org="org.eclipse.virgo.nano" name="org.eclipse.virgo.nano.deployer.api" rev="${org.eclipse.virgo.nano}" conf="compile->compile"/>
-		<dependency org="org.eclipse.virgo.kernel" name="org.eclipse.virgo.kernel.deployer" rev="${org.eclipse.virgo.kernel}" conf="compile->compile"/>
-		<dependency org="org.eclipse.gemini" name="org.eclipse.gemini.web.core" rev="${org.eclipse.gemini.web}" conf="compile->compile"/>
-		<dependency org="org.eclipse.gemini" name="org.eclipse.gemini.web.tomcat" rev="${org.eclipse.gemini.web}" conf="compile->compile"/>
-		<dependency org="org.eclipse.virgo.util" name="org.eclipse.virgo.util.common" rev="${org.eclipse.virgo.util}" conf="compile->runtime"/>
-		<dependency org="org.eclipse.virgo.util" name="org.eclipse.virgo.util.osgi.manifest" rev="${org.eclipse.virgo.util}" conf="compile->compile"/>
-		<dependency org="org.eclipse.virgo.util" name="org.eclipse.virgo.util.osgi" rev="${org.eclipse.virgo.util}" conf="compile->compile"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.api" rev="${org.slf4j.api}" conf="compile->runtime"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.nop" rev="${org.slf4j.nop}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.medic" name="org.eclipse.virgo.medic" rev="${org.eclipse.virgo.medic}" conf="compile->runtime"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="org.apache.catalina" rev="${org.apache.catalina}" conf="compile->runtime"/>
-		<dependency org="org.eclipse.virgo.medic" name="org.eclipse.virgo.medic.core" rev="${org.eclipse.virgo.medic}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.medic" name="org.eclipse.virgo.medic.test" rev="${org.eclipse.virgo.medic}" conf="test->runtime"/>
-		<dependency org="org.springframework" name="org.springframework.test" rev="${org.springframework}" conf="test->compile"/>
-		<dependency org="org.springframework" name="org.springframework.core" rev="${org.springframework}" conf="test->compile"/>
-		<dependency org="org.junit" name="com.springsource.org.junit" rev="${org.junit}" conf="test->runtime"/>
-		<dependency org="org.easymock" name="com.springsource.org.easymock" rev="${org.easymock}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.test" name="org.eclipse.virgo.test.stubs" rev="${org.eclipse.virgo.test}" conf="test->runtime"/>
-		
-		<!-- Override util from Gemini Web -->
-		<override org="org.eclipse.virgo.util" rev="${org.eclipse.virgo.util}"/>
-		
-	</dependencies>
-	
-</ivy-module>
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/Snap.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/Snap.java
index 189bc61..d39f124 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/Snap.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/Snap.java
@@ -30,4 +30,6 @@
     String getContextPath();
     
     Properties getSnapProperties();
+    
+	void addHost(Host host);
 }
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/SnapFactoryMonitor.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/SnapFactoryMonitor.java
index 11fcf9e..7318365 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/SnapFactoryMonitor.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/SnapFactoryMonitor.java
@@ -162,26 +162,32 @@
                 
                 Bundle hostBundle = hostReference.getBundle();
 
-                SnapLifecycleState newState = SnapLifecycleState.INIT_FAILED;
-
-                Snap snap = this.factory.createSnap(new Host(hostBundle, servletContext, new RequestRouter(this.snapRegistry, servletContext)));
-                try {
-                    logger.info("Initializing snap '{}'", snap.getContextPath());
-                    snap.init();
-                    
-                    newState = SnapLifecycleState.INIT_SUCCEEDED;
-                    
-                    logger.info("Publishing snap '{}'", snap.getContextPath());
-                    publishSnapService(snap, hostBundle);
-                    
-                } catch (ServletException e) {
-                    this.eventLogger.log(SnapsLogEvents.SNAP_INIT_FAILURE, SnapUtils.boundContextPath(servletContext.getContextPath(), snap.getContextPath()));
-                } finally {
-                	synchronized (this.snapStateMonitor) {                		
-						if (newState == SnapLifecycleState.INIT_SUCCEEDED) {
-							this.snap = snap;
-						}
-                	}                	
+                Host host = new Host(hostBundle, servletContext, new RequestRouter(this.snapRegistry, servletContext));
+                
+                synchronized (this.snapStateMonitor) {
+                	if (this.factory.hasSnap()) {
+                		Snap snap = this.factory.getSnap();
+                		snap.addHost(host);
+                		publishSnapService(snap, hostBundle);
+                	} else {
+                		SnapLifecycleState newState = SnapLifecycleState.INIT_FAILED;
+                		Snap snap = this.factory.createSnap(host);
+                		try {
+                			logger.info("Initializing snap '{}'", snap.getContextPath());
+                			snap.init();
+                			
+                			newState = SnapLifecycleState.INIT_SUCCEEDED;
+                			
+                			logger.info("Publishing snap '{}'", snap.getContextPath());
+                			publishSnapService(snap, hostBundle);
+                		} catch (ServletException e) {
+                			this.eventLogger.log(SnapsLogEvents.SNAP_INIT_FAILURE, SnapUtils.boundContextPath(servletContext.getContextPath(), snap.getContextPath()));
+                		} finally {
+                			if (newState == SnapLifecycleState.INIT_SUCCEEDED) {
+                				this.snap = snap;
+                			}
+                		}
+					}
                 }
             }
         }
@@ -217,7 +223,11 @@
 
         private void unregisterHostListener() {
             logger.info("No longer listening for hosts to be registered.");
-            this.context.removeServiceListener(this);
+            try {
+				this.context.removeServiceListener(this);
+			} catch (IllegalStateException e) {
+				logger.warn("Could not remove host listener. Reason: " + e.getMessage());
+			}
         }
 
 		public void serviceChanged(ServiceEvent event) {
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/SnapHostDefinition.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/SnapHostDefinition.java
index e84df10..c6374f5 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/SnapHostDefinition.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/SnapHostDefinition.java
@@ -11,19 +11,20 @@
 
 package org.eclipse.virgo.snaps.core.internal;
 
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.eclipse.virgo.snaps.core.internal.deployer.SnapFactory;
-import org.osgi.framework.Constants;
-import org.osgi.framework.ServiceReference;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import org.eclipse.virgo.util.osgi.manifest.VersionRange;
 import org.eclipse.virgo.util.osgi.manifest.parse.HeaderDeclaration;
 import org.eclipse.virgo.util.osgi.manifest.parse.HeaderParser;
 import org.eclipse.virgo.util.osgi.manifest.parse.HeaderParserFactory;
 import org.eclipse.virgo.util.osgi.manifest.parse.ParserLogger;
+import org.osgi.framework.Constants;
+import org.osgi.framework.ServiceReference;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public final class SnapHostDefinition {
 
@@ -46,18 +47,22 @@
         return this.versionRange;
     }
 
-    public static SnapHostDefinition parse(String descriptor) {
+    public static Set<SnapHostDefinition> parse(String descriptor) {
         HeaderParser parser = createHeaderParser();
         List<HeaderDeclaration> header = parser.parseHeader(descriptor);
-        if (header == null || header.size() != 1) {
+        if (header == null) {
             logger.error("Invalid Snap-Host header '{}'", descriptor);
             throw new IllegalArgumentException("Invalid Snap-Host header '" + descriptor + "'");
         }
-        HeaderDeclaration declaration = header.get(0);
-        String factoryName = declaration.getNames().get(0);
 
-        String rangeString = declaration.getAttributes().get(Constants.VERSION_ATTRIBUTE);
-        return createSnapHostDefinition(factoryName, rangeString);
+        Set<SnapHostDefinition> hostDefinitions = new HashSet<SnapHostDefinition>();
+        for (HeaderDeclaration declaration:header) {
+        	String factoryName = declaration.getNames().get(0);
+        	String rangeString = declaration.getAttributes().get(Constants.VERSION_ATTRIBUTE);
+        	hostDefinitions.add(createSnapHostDefinition(factoryName, rangeString));
+        }
+        
+        return hostDefinitions;
     }
 
     public static SnapHostDefinition fromServiceReference(ServiceReference<SnapFactory> snapFactoryReference) {
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/SnapUtils.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/SnapUtils.java
index 2db87b3..664a1be 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/SnapUtils.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/SnapUtils.java
@@ -11,11 +11,12 @@
 
 package org.eclipse.virgo.snaps.core.internal;
 
+import java.util.Set;
+
 import javax.servlet.http.HttpServletRequest;
 
-import org.osgi.framework.Bundle;
-
 import org.eclipse.virgo.util.osgi.manifest.BundleManifest;
+import org.osgi.framework.Bundle;
 
 public final class SnapUtils {
 
@@ -48,7 +49,7 @@
         return manifest.getHeader(HEADER_SNAP_HOST) != null;
     }
 
-    public static SnapHostDefinition getSnapHostHeader(BundleManifest manifest) {
+    public static Set<SnapHostDefinition> getSnapHostHeader(BundleManifest manifest) {
         String header = manifest.getHeader(HEADER_SNAP_HOST);
         return (header == null ? null : SnapHostDefinition.parse(header));
     }
@@ -62,7 +63,7 @@
     }
 
     /**
-     * Catenate the host and snap context paths, <i>unless</i> host context path ends with a path separator.<br/>
+     * Concatenate the host and snap context paths, <i>unless</i> host context path ends with a path separator.<br/>
      * <code>null</code> {@link String}s are converted to the empty string <code>""</code>.
      * @param hostContextPath the host context path
      * @param snapContextPath the snap context path
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/deployer/SnapFactory.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/deployer/SnapFactory.java
index 03de854..4572303 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/deployer/SnapFactory.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/deployer/SnapFactory.java
@@ -16,9 +16,13 @@
 
 public interface SnapFactory {
     
-    static final String FACTORY_NAME_PROPERTY = "snap.factory.host.name";
+   String FACTORY_NAME_PROPERTY = "snap.factory.host.name";
 
-    static final String FACTORY_RANGE_PROPERTY = "snap.factory.host.range";
+   String FACTORY_RANGE_PROPERTY = "snap.factory.host.range";
 
     Snap createSnap(Host host);
+    
+    boolean hasSnap();
+    
+    Snap getSnap();
 }
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/deployer/SnapLifecycleListener.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/deployer/SnapLifecycleListener.java
index 1fb702d..ef186d6 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/deployer/SnapLifecycleListener.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/deployer/SnapLifecycleListener.java
@@ -13,28 +13,29 @@
 
 import java.io.IOException;
 import java.util.Dictionary;
+import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.eclipse.gemini.web.tomcat.spi.WebBundleClassLoaderFactory;
+import org.eclipse.virgo.kernel.install.artifact.BundleInstallArtifact;
+import org.eclipse.virgo.kernel.install.artifact.InstallArtifact;
+import org.eclipse.virgo.kernel.install.artifact.InstallArtifactLifecycleListenerSupport;
+import org.eclipse.virgo.medic.eventlog.EventLogger;
+import org.eclipse.virgo.nano.deployer.api.core.DeploymentException;
+import org.eclipse.virgo.nano.shim.scope.Scope;
 import org.eclipse.virgo.snaps.core.internal.SnapHostDefinition;
 import org.eclipse.virgo.snaps.core.internal.SnapUtils;
 import org.eclipse.virgo.snaps.core.internal.webapp.WebAppSnapFactory;
+import org.eclipse.virgo.util.osgi.ServiceRegistrationTracker;
+import org.eclipse.virgo.util.osgi.manifest.BundleManifest;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.ServiceRegistration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.eclipse.virgo.nano.deployer.api.core.DeploymentException;
-import org.eclipse.virgo.kernel.install.artifact.BundleInstallArtifact;
-import org.eclipse.virgo.kernel.install.artifact.InstallArtifact;
-import org.eclipse.virgo.kernel.install.artifact.InstallArtifactLifecycleListenerSupport;
-import org.eclipse.virgo.nano.shim.scope.Scope;
-import org.eclipse.virgo.medic.eventlog.EventLogger;
-import org.eclipse.gemini.web.tomcat.spi.WebBundleClassLoaderFactory;
-import org.eclipse.virgo.util.osgi.ServiceRegistrationTracker;
-import org.eclipse.virgo.util.osgi.manifest.BundleManifest;
-
 /**
  * <strong>Concurrent Semantics</strong><br />
  * Thread-safe.
@@ -64,28 +65,36 @@
             Bundle bundle = ((BundleInstallArtifact) installArtifact).getBundle();
             BundleManifest bundleManifest = getBundleManifest((BundleInstallArtifact) installArtifact);
 
-            ServiceRegistration<SnapFactory> registration = createAndRegisterSnapFactoryService(bundle, bundleManifest);
+            Set<ServiceRegistration<SnapFactory>> registrations = createAndRegisterSnapFactoryService(bundle, bundleManifest);
 
-            ServiceRegistrationTracker registrationTracker = new ServiceRegistrationTracker();
-            registrationTracker.track(registration);
+            for (ServiceRegistration<SnapFactory> registration:registrations) {
+            	ServiceRegistrationTracker registrationTracker = new ServiceRegistrationTracker();
+            	registrationTracker.track(registration);
 
-            this.registrationTrackers.put(installArtifact, registrationTracker);
+            	this.registrationTrackers.put(installArtifact, registrationTracker);
+            }
         }
     }
 
-    ServiceRegistration<SnapFactory> createAndRegisterSnapFactoryService(Bundle bundle, BundleManifest bundleManifest) {
+    Set<ServiceRegistration<SnapFactory>> createAndRegisterSnapFactoryService(Bundle bundle, BundleManifest bundleManifest) {
         logger.info("Creating a SnapFactory for bundle '{}'", bundle);
         SnapFactory snapFactory = new WebAppSnapFactory(bundle, this.classLoaderFactory, this.eventLogger);
 
-        SnapHostDefinition hostDefinition = SnapUtils.getSnapHostHeader(bundleManifest);
+        Set<SnapHostDefinition> hostDefinitions = SnapUtils.getSnapHostHeader(bundleManifest);
 
-        Dictionary<String, String> serviceProperties= new Hashtable<String, String>();
-        serviceProperties.put(Scope.PROPERTY_SERVICE_SCOPE, Scope.SCOPE_ID_GLOBAL); // expose service outside any containing scope
-        serviceProperties.put(SnapFactory.FACTORY_NAME_PROPERTY, hostDefinition.getSymbolicName());
-        serviceProperties.put(SnapFactory.FACTORY_RANGE_PROPERTY, hostDefinition.getVersionRange().toParseString());
+        Set<ServiceRegistration<SnapFactory>> registrations = new HashSet<ServiceRegistration<SnapFactory>>();
+        
+        for (SnapHostDefinition hostDefinition : hostDefinitions) {
+        	Dictionary<String, String> serviceProperties= new Hashtable<String, String>();
+        	serviceProperties.put(Scope.PROPERTY_SERVICE_SCOPE, Scope.SCOPE_ID_GLOBAL); // expose service outside any containing scope
+        	serviceProperties.put(SnapFactory.FACTORY_NAME_PROPERTY, hostDefinition.getSymbolicName());
+        	serviceProperties.put(SnapFactory.FACTORY_RANGE_PROPERTY, hostDefinition.getVersionRange().toParseString());
 
-        ServiceRegistration<SnapFactory> registration = bundle.getBundleContext().registerService(SnapFactory.class, snapFactory, serviceProperties);
-        return registration;
+        	ServiceRegistration<SnapFactory> registration = bundle.getBundleContext().registerService(SnapFactory.class, snapFactory, serviceProperties);
+        	registrations.add(registration);
+        }
+        
+        return registrations;
     }
 
     static BundleManifest getBundleManifest(BundleInstallArtifact bundleInstallArtifact) throws DeploymentException {
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/SnapServletContext.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/SnapServletContext.java
index 82ab2c4..5c55e90 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/SnapServletContext.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/SnapServletContext.java
@@ -36,9 +36,8 @@
 import javax.servlet.descriptor.JspConfigDescriptor;
 
 import org.eclipse.virgo.snaps.core.internal.SnapException;
-import org.osgi.framework.Bundle;
-
 import org.eclipse.virgo.util.common.IterableEnumeration;
+import org.osgi.framework.Bundle;
 
 /**
  * TODO Document SnapServletContext
@@ -52,13 +51,13 @@
 public class SnapServletContext implements ServletContext {
 
     private static final String HOST_PATH_PREFIX = "host:";
-    
+
     private final ServletContext delegate;
-    
+
     private final Bundle snapBundle;
-    
+
     private final String snapContextPath;
-    
+
     private final Map<String, Object> attributes = new ConcurrentHashMap<String, Object>();
 
     public SnapServletContext(ServletContext delegate, Bundle snapBundle, String snapContextPath) {
@@ -66,7 +65,7 @@
         this.snapBundle = snapBundle;
         this.snapContextPath = snapContextPath;
     }
-    
+
     public String getSnapContextPath() {
         return this.snapContextPath;
     }
@@ -81,7 +80,7 @@
         if (attribute == null) {
             attribute = delegate.getAttribute(name);
         }
-        return attribute; 
+        return attribute;
     }
 
     /**
@@ -90,7 +89,7 @@
      */
     public Enumeration<String> getAttributeNames() {
         Set<String> attributeNamesSet = new HashSet<String>(this.attributes.keySet());
-        IterableEnumeration<String> delegateAttributeNames = new IterableEnumeration<String>((Enumeration<String>)delegate.getAttributeNames());        
+        IterableEnumeration<String> delegateAttributeNames = new IterableEnumeration<String>((Enumeration<String>) delegate.getAttributeNames());
         for (String delegateAttributeName : delegateAttributeNames) {
             attributeNamesSet.add(delegateAttributeName);
         }
@@ -194,18 +193,18 @@
      * @see javax.servlet.ServletContext#getResource(java.lang.String)
      */
     public URL getResource(String path) throws MalformedURLException {
-    	boolean hostOnly = false;
+        boolean hostOnly = false;
         if (path.startsWith(HOST_PATH_PREFIX)) {
             path = path.substring(HOST_PATH_PREFIX.length());
             hostOnly = true;
         }
-		if (path == null || !path.startsWith("/")) {
-			throw new MalformedURLException(String.format("'%s' is not a valid resource path", path));
-		}
-        if(hostOnly){
-        	return delegate.getResource(path);
+        if (path == null || !path.startsWith("/")) {
+            throw new MalformedURLException(String.format("'%s' is not a valid resource path", path));
+        }
+        if (hostOnly) {
+            return delegate.getResource(path);
         } else {
-        	URL resource = getLocalResource(path);
+            URL resource = getLocalResource(path);
             if (resource == null) {
                 resource = delegate.getResource(path);
             }
@@ -230,14 +229,14 @@
         if (path.startsWith(HOST_PATH_PREFIX)) {
             path = path.substring(HOST_PATH_PREFIX.length());
         } else {
-	        URL resource = getLocalResource(path);
-	        if (resource != null) {
-	            try {
-	                return resource.openStream();
-	            } catch (IOException e) {
-	                throw new SnapException("Failed to open stream for resource " + resource + " in bundle " + this.snapBundle, e);
-	            }
-	        }
+            URL resource = getLocalResource(path);
+            if (resource != null) {
+                try {
+                    return resource.openStream();
+                } catch (IOException e) {
+                    throw new SnapException("Failed to open stream for resource " + resource + " in bundle " + this.snapBundle, e);
+                }
+            }
         }
         return delegate.getResourceAsStream(path);
     }
@@ -247,21 +246,21 @@
      * @return
      * @see javax.servlet.ServletContext#getResourcePaths(java.lang.String)
      */
-    public Set<String> getResourcePaths(String path) {       
+    public Set<String> getResourcePaths(String path) {
         Enumeration<?> entryPaths = this.snapBundle.getEntryPaths(path);
         if (entryPaths == null) {
             return null;
         } else {
             Set<String> resourcePaths = new HashSet<String>();
             while (entryPaths.hasMoreElements()) {
-                String entryPath = (String)entryPaths.nextElement();
+                String entryPath = (String) entryPaths.nextElement();
                 if (path.startsWith("/") && !entryPath.startsWith("/")) {
                     entryPath = "/" + entryPath;
                 }
-                resourcePaths.add((String)entryPath);
+                resourcePaths.add((String) entryPath);
             }
             return resourcePaths;
-        }                
+        }
     }
 
     /**
@@ -353,133 +352,138 @@
         this.attributes.put(name, object);
     }
 
-	@Override
-	public int getEffectiveMajorVersion() {
-		return this.delegate.getEffectiveMajorVersion();
-	}
+    @Override
+    public int getEffectiveMajorVersion() {
+        return this.delegate.getEffectiveMajorVersion();
+    }
 
-	@Override
-	public int getEffectiveMinorVersion() {
-		return this.delegate.getEffectiveMinorVersion();
-	}
+    @Override
+    public int getEffectiveMinorVersion() {
+        return this.delegate.getEffectiveMinorVersion();
+    }
 
-	@Override
-	public boolean setInitParameter(String name, String value) {
-		return this.delegate.setInitParameter(name, value);
-	}
+    @Override
+    public boolean setInitParameter(String name, String value) {
+        return this.delegate.setInitParameter(name, value);
+    }
 
-	@Override
-	public Dynamic addServlet(String servletName, String className) {
-		return this.delegate.addServlet(servletName, className);
-	}
+    @Override
+    public Dynamic addServlet(String servletName, String className) {
+        return this.delegate.addServlet(servletName, className);
+    }
 
-	@Override
-	public Dynamic addServlet(String servletName, Servlet servlet) {
-		return this.delegate.addServlet(servletName, servlet);
-	}
+    @Override
+    public Dynamic addServlet(String servletName, Servlet servlet) {
+        return this.delegate.addServlet(servletName, servlet);
+    }
 
-	@Override
-	public Dynamic addServlet(String servletName, Class<? extends Servlet> servletClass) {
-		return this.delegate.addServlet(servletName, servletClass);
-	}
+    @Override
+    public Dynamic addServlet(String servletName, Class<? extends Servlet> servletClass) {
+        return this.delegate.addServlet(servletName, servletClass);
+    }
 
-	@Override
-	public <T extends Servlet> T createServlet(Class<T> clazz) throws ServletException {
-		return this.delegate.createServlet(clazz);
-	}
+    @Override
+    public <T extends Servlet> T createServlet(Class<T> clazz) throws ServletException {
+        return this.delegate.createServlet(clazz);
+    }
 
-	@Override
-	public ServletRegistration getServletRegistration(String servletName) {
-		return this.delegate.getServletRegistration(servletName);
-	}
+    @Override
+    public ServletRegistration getServletRegistration(String servletName) {
+        return this.delegate.getServletRegistration(servletName);
+    }
 
-	@Override
-	public Map<String, ? extends ServletRegistration> getServletRegistrations() {
-		return this.delegate.getServletRegistrations();
-	}
+    @Override
+    public Map<String, ? extends ServletRegistration> getServletRegistrations() {
+        return this.delegate.getServletRegistrations();
+    }
 
-	@Override
-	public javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, String className) {
-		return this.delegate.addFilter(filterName, className);
-	}
+    @Override
+    public javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, String className) {
+        return this.delegate.addFilter(filterName, className);
+    }
 
-	@Override
-	public javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, Filter filter) {
-		return this.delegate.addFilter(filterName, filter);
-	}
+    @Override
+    public javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, Filter filter) {
+        return this.delegate.addFilter(filterName, filter);
+    }
 
-	@Override
-	public javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, Class<? extends Filter> filterClass) {
-		return this.delegate.addFilter(filterName, filterClass);
-	}
+    @Override
+    public javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, Class<? extends Filter> filterClass) {
+        return this.delegate.addFilter(filterName, filterClass);
+    }
 
-	@Override
-	public <T extends Filter> T createFilter(Class<T> clazz) throws ServletException {
-		return this.delegate.createFilter(clazz);
-	}
+    @Override
+    public <T extends Filter> T createFilter(Class<T> clazz) throws ServletException {
+        return this.delegate.createFilter(clazz);
+    }
 
-	@Override
-	public FilterRegistration getFilterRegistration(String filterName) {
-		return this.delegate.getFilterRegistration(filterName);
-	}
+    @Override
+    public FilterRegistration getFilterRegistration(String filterName) {
+        return this.delegate.getFilterRegistration(filterName);
+    }
 
-	@Override
-	public Map<String, ? extends FilterRegistration> getFilterRegistrations() {
-		return this.delegate.getFilterRegistrations();
-	}
+    @Override
+    public Map<String, ? extends FilterRegistration> getFilterRegistrations() {
+        return this.delegate.getFilterRegistrations();
+    }
 
-	@Override
-	public SessionCookieConfig getSessionCookieConfig() {
-		return this.delegate.getSessionCookieConfig();
-	}
+    @Override
+    public SessionCookieConfig getSessionCookieConfig() {
+        return this.delegate.getSessionCookieConfig();
+    }
 
-	@Override
-	public void setSessionTrackingModes(Set<SessionTrackingMode> sessionTrackingModes) {
-		this.delegate.setSessionTrackingModes(sessionTrackingModes);
-	}
+    @Override
+    public void setSessionTrackingModes(Set<SessionTrackingMode> sessionTrackingModes) {
+        this.delegate.setSessionTrackingModes(sessionTrackingModes);
+    }
 
-	@Override
-	public Set<SessionTrackingMode> getDefaultSessionTrackingModes() {
-		return this.delegate.getDefaultSessionTrackingModes();
-	}
+    @Override
+    public Set<SessionTrackingMode> getDefaultSessionTrackingModes() {
+        return this.delegate.getDefaultSessionTrackingModes();
+    }
 
-	@Override
-	public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() {
-		return this.delegate.getEffectiveSessionTrackingModes();
-	}
+    @Override
+    public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() {
+        return this.delegate.getEffectiveSessionTrackingModes();
+    }
 
-	@Override
-	public void addListener(String className) {
-		this.delegate.addListener(className);
-	}
+    @Override
+    public void addListener(String className) {
+        this.delegate.addListener(className);
+    }
 
-	@Override
-	public <T extends EventListener> void addListener(T t) {
-		this.delegate.addListener(t);
-	}
+    @Override
+    public <T extends EventListener> void addListener(T t) {
+        this.delegate.addListener(t);
+    }
 
-	@Override
-	public void addListener(Class<? extends EventListener> listenerClass) {
-		this.delegate.addListener(listenerClass);
-	}
+    @Override
+    public void addListener(Class<? extends EventListener> listenerClass) {
+        this.delegate.addListener(listenerClass);
+    }
 
-	@Override
-	public <T extends EventListener> T createListener(Class<T> clazz) throws ServletException {
-		return this.delegate.createListener(clazz);
-	}
+    @Override
+    public <T extends EventListener> T createListener(Class<T> clazz) throws ServletException {
+        return this.delegate.createListener(clazz);
+    }
 
-	@Override
-	public JspConfigDescriptor getJspConfigDescriptor() {
-		return this.delegate.getJspConfigDescriptor();
-	}
+    @Override
+    public JspConfigDescriptor getJspConfigDescriptor() {
+        return this.delegate.getJspConfigDescriptor();
+    }
 
-	@Override
-	public ClassLoader getClassLoader() {
-		return this.delegate.getClassLoader();
-	}
+    @Override
+    public ClassLoader getClassLoader() {
+        return this.delegate.getClassLoader();
+    }
 
-	@Override
-	public void declareRoles(String... roleNames) {
-		this.delegate.declareRoles(roleNames);
-	}
+    @Override
+    public void declareRoles(String... roleNames) {
+        this.delegate.declareRoles(roleNames);
+    }
+
+    @Override
+    public String getVirtualServerName() {
+        return this.delegate.getVirtualServerName();
+    }
 }
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/WebAppSnap.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/WebAppSnap.java
index 173720b..e63f3af 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/WebAppSnap.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/WebAppSnap.java
@@ -85,7 +85,7 @@
      * 
      * @throws ServletException
      */
-    public final void init() throws ServletException {
+    public synchronized final void init() throws ServletException {
         logger.info("Initializing snap '{}'", this.contextPath);
         WebXml webXml = BundleWebXmlLoader.loadWebXml(this.snapBundle);
         SnapServletContext servletContext = new SnapServletContext(this.host.getServletContext(), this.snapBundle, this.contextPath);
@@ -179,4 +179,15 @@
         }
         return properties;
     }
+    
+	@Override
+	public synchronized void addHost(Host host) {
+		logger.info("Adding host '{}' to snap '{}'", host.getBundle(), this.contextPath);
+        SnapServletContext servletContext = new SnapServletContext(host.getServletContext(), this.snapBundle, this.contextPath);
+	    servletContext.setAttribute(WebContainer.ATTRIBUTE_BUNDLE_CONTEXT, this.snapBundle.getBundleContext());
+
+	    this.virtualContainer.addHost(servletContext);
+
+	    this.eventLogger.log(SnapsLogEvents.SNAP_BOUND, SnapUtils.boundContextPath(host.getServletContext().getContextPath(), this.contextPath));
+	}
 }
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/WebAppSnapFactory.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/WebAppSnapFactory.java
index dfde7c8..d8bb9ef 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/WebAppSnapFactory.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/WebAppSnapFactory.java
@@ -31,6 +31,8 @@
 
     private final EventLogger eventLogger;
 
+	private WebAppSnap webAppSnap;
+
     public WebAppSnapFactory(Bundle snapBundle, WebBundleClassLoaderFactory webBundleClassLoaderFactory, EventLogger eventLogger) {
         this.snapBundle = snapBundle;
         this.classLoaderFactory = webBundleClassLoaderFactory;
@@ -39,7 +41,18 @@
 
     public Snap createSnap(Host host) {
         logger.info("Creating new snap that binds snap bundle '{}' to host bundle '{}'", this.snapBundle, host.getBundle());
-        return new WebAppSnap(host, this.snapBundle, this.classLoaderFactory, this.eventLogger);
+        webAppSnap = new WebAppSnap(host, this.snapBundle, this.classLoaderFactory, this.eventLogger);
+		return webAppSnap;
     }
+    
+	@Override
+	public boolean hasSnap() {
+		return this.webAppSnap != null;
+	}
+
+	@Override
+	public Snap getSnap() {
+		return webAppSnap;
+	}
 
 }
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/FilterManager.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/FilterManager.java
index bb16747..edbbfc8 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/FilterManager.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/FilterManager.java
@@ -37,8 +37,8 @@
 
 class FilterManager {
     
-    private final SnapServletContext snapServletContext;
-    
+	private final List<SnapServletContext> snapServletContexts = new ArrayList<>();
+	
     private final ClassLoader classLoader;        
     
     private final List<FilterHolder> filters = Collections.synchronizedList(new ArrayList<FilterHolder>());
@@ -47,22 +47,28 @@
     
     private final List<ServletNameFilterMapping> servletNameFilterMappings = Collections.synchronizedList(new ArrayList<ServletNameFilterMapping>());
     
+	private WebXml webXml;
+
+	private Map<String, FilterHolder> filtersMap;
+    
     public FilterManager(WebXml webXml, SnapServletContext snapServletContext, ClassLoader classLoader) {
-        this.snapServletContext = snapServletContext;
+    	this.webXml = webXml;
+		this.snapServletContexts.add(snapServletContext);
         this.classLoader = classLoader;
 
-        reifyWebXml(webXml);
+        this.filtersMap = processFilters();
+        reifyWebXml(snapServletContext);
     }
     
-    private void reifyWebXml(WebXml webXml) {
-        Map<String, FilterHolder> filters = processFilters(webXml);
-        processFilterMappings(webXml, filters);
-    }            
+    private void reifyWebXml(SnapServletContext snapServletContext) {
+        processUrlPatternFilterMappings(snapServletContext);
+        processServletNameFilterMappings();
+    }           
     
-    private Map<String, FilterHolder> processFilters(WebXml webXml) throws SnapException {
+    private Map<String, FilterHolder> processFilters() throws SnapException {
         Map<String, FilterHolder> filtersMap = new HashMap<String, FilterHolder>();
         
-        for (FilterDefinition filterDefinition : webXml.getFilterDefinitions()) {
+        for (FilterDefinition filterDefinition : this.webXml.getFilterDefinitions()) {
             try {
                 Class<?> filterClass = ManagerUtils.loadComponentClass(filterDefinition.getFilterClassName(), this.classLoader);
                 if (Filter.class.isAssignableFrom(filterClass)) {
@@ -86,24 +92,26 @@
         return filtersMap;
     }
     
-    private void processFilterMappings(WebXml webXml, Map<String, FilterHolder> filters) throws SnapException {
-        for (UrlPatternFilterMappingDefinition definition : webXml.getUrlPatternFilterMappingDefinitions()) {
-            Filter filter = filters.get(definition.getFilterName()).getInstance();
-            this.urlPatternFilterMappings.add(new UrlPatternFilterMapping(filter, ManagerUtils.expandMapping(definition.getUrlPattern(), this.snapServletContext), definition.getFilterDispatcherTypes()));
-        }
-        
-        for (ServletNameFilterMappingDefinition definition : webXml.getServletNameFilterMappingDefinitions()) {
-            Filter filter = filters.get(definition.getFilterName()).getInstance();
-            this.servletNameFilterMappings.add(new ServletNameFilterMapping(filter, definition.getServletName(), definition.getFilterDispatcherTypes()));            
+    private void processUrlPatternFilterMappings(SnapServletContext snapServletContext) throws SnapException {
+        for (UrlPatternFilterMappingDefinition definition : this.webXml.getUrlPatternFilterMappingDefinitions()) {
+            Filter filter = this.filtersMap.get(definition.getFilterName()).getInstance();
+            this.urlPatternFilterMappings.add(new UrlPatternFilterMapping(filter, ManagerUtils.expandMapping(definition.getUrlPattern(), snapServletContext), definition.getFilterDispatcherTypes()));
         }
     }
+
+	private void processServletNameFilterMappings() {
+		for (ServletNameFilterMappingDefinition definition : this.webXml.getServletNameFilterMappingDefinitions()) {
+            Filter filter = this.filtersMap.get(definition.getFilterName()).getInstance();
+            this.servletNameFilterMappings.add(new ServletNameFilterMapping(filter, definition.getServletName(), definition.getFilterDispatcherTypes()));            
+        }
+	}
     
     void init() throws ServletException {
         try {
             ManagerUtils.doWithThreadContextClassLoader(this.classLoader, new ClassLoaderCallback<Void>() {
                 public Void doWithClassLoader() throws ServletException {
                     for (FilterHolder filterHolder : filters) {                        
-                        FilterConfig config = new ImmutableFilterConfig(filterHolder.getDefinition(), snapServletContext);
+                        FilterConfig config = new ImmutableFilterConfig(filterHolder.getDefinition(), snapServletContexts.get(0));
                         try {
                             filterHolder.getInstance().init(config);
                         } catch (ServletException se) {
@@ -187,4 +195,9 @@
             return this.dispatcherTypes.contains(dispatcherType) && this.servletName.equals(servletName);
         }
     }
+    
+	public void addSnapServletContext(SnapServletContext snapServletContext) {
+		this.snapServletContexts.add(snapServletContext);
+		processUrlPatternFilterMappings(snapServletContext);
+	}
 }
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/HttpServletRequestWrapper.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/HttpServletRequestWrapper.java
index d68a2e1..aaaeea6 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/HttpServletRequestWrapper.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/HttpServletRequestWrapper.java
@@ -32,6 +32,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpUpgradeHandler;
 import javax.servlet.http.Part;
 
 /**
@@ -502,85 +503,108 @@
     /**
      * {@inheritDoc}
      */
-	public ServletContext getServletContext() {
-		return this.delegate.getServletContext();
-	}
+    public ServletContext getServletContext() {
+        return this.delegate.getServletContext();
+    }
 
     /**
      * {@inheritDoc}
      */
-	public AsyncContext startAsync() throws IllegalStateException {
-		return this.delegate.startAsync();
-	}
+    public AsyncContext startAsync() throws IllegalStateException {
+        return this.delegate.startAsync();
+    }
 
     /**
      * {@inheritDoc}
      */
-	public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException {
-		return this.delegate.startAsync(servletRequest, servletResponse);
-	}
+    public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException {
+        return this.delegate.startAsync(servletRequest, servletResponse);
+    }
 
     /**
      * {@inheritDoc}
      */
-	public boolean isAsyncStarted() {
-		return this.delegate.isAsyncStarted();
-	}
+    public boolean isAsyncStarted() {
+        return this.delegate.isAsyncStarted();
+    }
 
     /**
      * {@inheritDoc}
      */
-	public boolean isAsyncSupported() {
-		return this.delegate.isAsyncSupported();
-	}
+    public boolean isAsyncSupported() {
+        return this.delegate.isAsyncSupported();
+    }
 
     /**
      * {@inheritDoc}
      */
-	public AsyncContext getAsyncContext() {
-		return this.delegate.getAsyncContext();
-	}
+    public AsyncContext getAsyncContext() {
+        return this.delegate.getAsyncContext();
+    }
 
     /**
      * {@inheritDoc}
      */
-	public DispatcherType getDispatcherType() {
-		return this.delegate.getDispatcherType();
-	}
+    public DispatcherType getDispatcherType() {
+        return this.delegate.getDispatcherType();
+    }
 
     /**
      * {@inheritDoc}
      */
-	public boolean authenticate(HttpServletResponse response) throws IOException, ServletException {
-		return this.delegate.authenticate(response);
-	}
+    public boolean authenticate(HttpServletResponse response) throws IOException, ServletException {
+        return this.delegate.authenticate(response);
+    }
 
     /**
      * {@inheritDoc}
      */
-	public void login(String username, String password) throws ServletException {
-		this.delegate.login(username, password);
-	}
+    public void login(String username, String password) throws ServletException {
+        this.delegate.login(username, password);
+    }
 
     /**
      * {@inheritDoc}
      */
-	public void logout() throws ServletException {
-		this.delegate.logout();
-	}
+    public void logout() throws ServletException {
+        this.delegate.logout();
+    }
 
     /**
      * {@inheritDoc}
      */
-	public Collection<Part> getParts() throws IOException, ServletException {
-		return this.delegate.getParts();
-	}
+    public Collection<Part> getParts() throws IOException, ServletException {
+        return this.delegate.getParts();
+    }
 
     /**
      * {@inheritDoc}
      */
-	public Part getPart(String name) throws IOException, ServletException {
-		return this.delegate.getPart(name);
-	}
+    public Part getPart(String name) throws IOException, ServletException {
+        return this.delegate.getPart(name);
+    }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public long getContentLengthLong() {
+        return this.delegate.getContentLengthLong();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String changeSessionId() {
+        return this.delegate.changeSessionId();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public <T extends HttpUpgradeHandler> T upgrade(Class<T> arg0) throws IOException, ServletException {
+        return this.delegate.upgrade(arg0);
+    }
 }
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/ServletManager.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/ServletManager.java
index 9f49f74..c168168 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/ServletManager.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/ServletManager.java
@@ -12,6 +12,8 @@
 package org.eclipse.virgo.snaps.core.internal.webapp.container;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -45,19 +47,22 @@
 
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
-    private final SnapServletContext snapServletContext;
+    private final List<SnapServletContext> snapServletContexts = new ArrayList<>();
 
     private final ClassLoader classLoader;
 
     private final UrlPatternMatcher patternMatcher = new UrlPatternMatcher();
 
     private final Map<String, ServletHolder> servlets = new ConcurrentHashMap<String, ServletHolder>();
+    
+	private WebXml webXml;
 
     ServletManager(WebXml webXml, SnapServletContext snapServletContext, ClassLoader classLoader) {
-        this.snapServletContext = snapServletContext;
+    	this.webXml = webXml;
+		this.snapServletContexts.add(snapServletContext);
         this.classLoader = classLoader;
 
-        reifyWebXml(webXml);
+        reifyWebXml(snapServletContext);
     }
 
     void init() throws ServletException {
@@ -67,7 +72,7 @@
                 public Void doWithClassLoader() throws ServletException {
                     for (Map.Entry<String, ServletHolder> entry : servlets.entrySet()) {
                         ServletHolder holder = entry.getValue();
-                        ServletConfig config = new ImmutableServletConfig(holder.getDefinition(), snapServletContext);
+                        ServletConfig config = new ImmutableServletConfig(holder.getDefinition(),  snapServletContexts.get(0));
                         holder.getInstance().init(config);
                         // TODO Log which servlet failed, and re-throw
                     }
@@ -98,13 +103,13 @@
         }
     }
 
-    private void reifyWebXml(WebXml webXml) {
-        processServlets(webXml);
-        processServletMappingDefinitions(webXml);
+    private void reifyWebXml(SnapServletContext snapServletContext) {
+        processServlets();
+        processServletMappingDefinitions(snapServletContext);
     }
 
-    private void processServlets(WebXml webXml) throws SnapException {
-        for (ServletDefinition servletDefinition : webXml.getServletDefinitions()) {
+    private void processServlets( ) throws SnapException {
+        for (ServletDefinition servletDefinition : this.webXml.getServletDefinitions()) {
             try {
                 Class<?> servletClass = ManagerUtils.loadComponentClass(servletDefinition.getServletClassName(), this.classLoader);
                 Servlet servlet = (Servlet) servletClass.newInstance();
@@ -126,10 +131,10 @@
         }
     }
 
-    private void processServletMappingDefinitions(WebXml webXml) {
-        for (ServletMappingDefinition mappingDefinition : webXml.getServletMappingDefinitions()) {
+    private void processServletMappingDefinitions(SnapServletContext snapServletContext) {
+        for (ServletMappingDefinition mappingDefinition : this.webXml.getServletMappingDefinitions()) {
             this.patternMatcher.addMapping(mappingDefinition.getServletName(), ManagerUtils.expandMapping(mappingDefinition.getUrlPattern(),
-                this.snapServletContext));
+                snapServletContext));
             // TODO Validate, probably in WebXml, the referenced servlets exist, etc.
         }
     }
@@ -159,4 +164,9 @@
             return mapping;
         }
     }
+    
+	public void addSnapServletContext(SnapServletContext snapServletContext) {
+		this.snapServletContexts.add(snapServletContext);
+		processServletMappingDefinitions(snapServletContext);
+	}
 }
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/SnapHttpSession.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/SnapHttpSession.java
index 83d5544..05b2c6e 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/SnapHttpSession.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/SnapHttpSession.java
@@ -19,10 +19,13 @@
 
 import org.eclipse.virgo.snaps.core.internal.webapp.SnapServletContext;
 
-
+@SuppressWarnings("deprecation")
 public final class SnapHttpSession extends HttpSessionWrapper {
 
     private static final String QUALIFIED_NAME_MARKER = "##";
+    
+    // This constant should have the same value as within org.springframework.aop.scope.ScopedProxyUtils
+    private static final String TARGET_NAME_PREFIX = "scopedTarget.";
 
     private final SnapServletContext snapServletContext;
 
@@ -48,18 +51,23 @@
     @Override
     public void removeAttribute(String name) {
         super.removeAttribute(qualifyName(name));
+        if (name.startsWith(TARGET_NAME_PREFIX)) {
+        	super.removeAttribute(name);
+        }
     }
 
     @Override
     public void setAttribute(String name, Object value) {
         super.setAttribute(qualifyName(name), value);
+        if (name.startsWith(TARGET_NAME_PREFIX)) {
+        	super.setAttribute(name, value);
+        }
     }
 
-    @SuppressWarnings("deprecation")
-	@Override
-	public HttpSessionContext getSessionContext() {
-		throw new RuntimeException(new OperationNotSupportedException("getSessionContext is deprecated"));
-	}
+    @Override
+    public HttpSessionContext getSessionContext() {
+        throw new RuntimeException(new OperationNotSupportedException("getSessionContext is deprecated"));
+    }
 
     private String qualifyName(String baseName) {
         return QUALIFIED_NAME_MARKER + this.snapServletContext.getSnapContextPath() + "." + baseName;
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/StandardVirtualContainer.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/StandardVirtualContainer.java
index e9bdbae..15d4205 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/StandardVirtualContainer.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/StandardVirtualContainer.java
@@ -93,4 +93,10 @@
     public SnapServletContext getSnapServletContext() {
         return this.snapServletContext;
     }
+    
+	@Override
+	public void addHost(SnapServletContext servletContext) {
+		this.servletManager.addSnapServletContext(servletContext);
+		this.filterManager.addSnapServletContext(servletContext);
+	}
 }
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/VirtualContainer.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/VirtualContainer.java
index ba0e4ee..a15c433 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/VirtualContainer.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/VirtualContainer.java
@@ -36,4 +36,6 @@
     VirtualContainerRequestDispatcher createDispatcher();
     
     SnapServletContext getSnapServletContext();
+    
+	void addHost(SnapServletContext servletContext);
 }
diff --git a/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/SnapFactoryMonitorTests.java b/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/SnapFactoryMonitorTests.java
index 627c4d3..218244d 100644
--- a/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/SnapFactoryMonitorTests.java
+++ b/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/SnapFactoryMonitorTests.java
@@ -69,13 +69,13 @@
 
         SnapFactory factory = createMock(SnapFactory.class);
         expect(factory.createSnap(isA(Host.class))).andReturn(snap);
+        expect(factory.hasSnap()).andReturn(Boolean.FALSE);
 
         replay(factory, snap);
         publishFactory(factory, "travel", "[1.0, 2.0)");
 
         assertSnapPublished("/hotels", host);
         verify(factory, snap);
-
     }
 
     @Test
@@ -90,6 +90,7 @@
 
         SnapFactory factory = createMock(SnapFactory.class);
         expect(factory.createSnap(isA(Host.class))).andReturn(snap);
+        expect(factory.hasSnap()).andReturn(Boolean.FALSE);
         publishFactory(factory, "travel", "[1.0, 2.0)");
 
         replay(factory, snap);
@@ -129,6 +130,7 @@
 
         SnapFactory factory = createMock(SnapFactory.class);
         expect(factory.createSnap(isA(Host.class))).andReturn(snap);
+        expect(factory.hasSnap()).andReturn(Boolean.FALSE);
         replay(factory, snap);
 
         publishFactory(factory, "travel", "[1.0, 3.0)");
@@ -149,6 +151,7 @@
 
         SnapFactory factory = createMock(SnapFactory.class);
         expect(factory.createSnap(isA(Host.class))).andReturn(snap);
+        expect(factory.hasSnap()).andReturn(Boolean.FALSE);
         publishFactory(factory, "travel", "[1.0, 2.0)");
 
         replay(factory, snap);
@@ -222,6 +225,7 @@
 
         final SnapFactory factory = createMock(SnapFactory.class);
         expect(factory.createSnap(isA(Host.class))).andReturn(slice);
+        expect(factory.hasSnap()).andReturn(Boolean.FALSE);
         replay(factory, slice);
 
         // public snap factory bound to "clinic" host
diff --git a/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/SnapHostDefinitionTests.java b/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/SnapHostDefinitionTests.java
index 5dea8c0..15ac663 100644
--- a/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/SnapHostDefinitionTests.java
+++ b/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/SnapHostDefinitionTests.java
@@ -11,32 +11,52 @@
 
 package org.eclipse.virgo.snaps.core.internal;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.*;
 
-import org.eclipse.virgo.snaps.core.internal.SnapHostDefinition;
-import org.junit.Test;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
 
 import org.eclipse.virgo.util.osgi.manifest.VersionRange;
+import org.junit.Test;
 
 
 public class SnapHostDefinitionTests {
 
     @Test
     public void testStandard() {
-        SnapHostDefinition def = SnapHostDefinition.parse("travel;version=\"[1.2, 1.3)\"");
-        assertEquals("travel", def.getSymbolicName());
-        assertEquals(new VersionRange("[1.2, 1.3)"), def.getVersionRange());
+    	Set<SnapHostDefinition> definitions = SnapHostDefinition.parse("travel;version=\"[1.2, 1.3)\"");
+		assertEquals(1, definitions.size());
+
+		SnapHostDefinition definition = definitions.iterator().next();
+		assertEquals("travel", definition.getSymbolicName());
+		assertEquals(new VersionRange("[1.2, 1.3)"), definition.getVersionRange());
     }
     
-    @Test
-    public void testWithoutRange() {
-        SnapHostDefinition def = SnapHostDefinition.parse("travel");
-        assertEquals("travel", def.getSymbolicName());
-        assertEquals(VersionRange.NATURAL_NUMBER_RANGE, def.getVersionRange());
-    }
+	@Test
+	public void testWithoutRange() {
+		Set<SnapHostDefinition> definitions = SnapHostDefinition.parse("travel");
+		assertEquals(1, definitions.size());
+
+		SnapHostDefinition definition = definitions.iterator().next();
+		assertEquals("travel", definition.getSymbolicName());
+		assertEquals(VersionRange.NATURAL_NUMBER_RANGE, definition.getVersionRange());
+	}
     
-    @Test(expected=IllegalArgumentException.class)
-    public void testInvalid() {
-        SnapHostDefinition.parse("travel,hotels");
-    }
+	@Test
+	public void testMultiple() throws Exception {
+		Set<SnapHostDefinition> definitions = SnapHostDefinition.parse("travel,ski;version=\"[1.4, 2)\"");
+
+		Map<String, VersionRange> expected = new HashMap<>();
+		expected.put("travel", VersionRange.NATURAL_NUMBER_RANGE);
+		expected.put("ski", new VersionRange("[1.4, 2)"));
+		assertEquals(expected.size(), definitions.size());
+
+		for (SnapHostDefinition host : definitions) {
+			VersionRange expectedRange = expected.get(host.getSymbolicName());
+			
+			assertNotNull("Could not find a header for " + host.getSymbolicName(), expectedRange);
+			assertEquals(expectedRange, host.getVersionRange());
+		}
+	}
 }
diff --git a/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/SnapUtilsTests.java b/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/SnapUtilsTests.java
index b83c413..fe40385 100644
--- a/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/SnapUtilsTests.java
+++ b/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/SnapUtilsTests.java
@@ -23,15 +23,13 @@
 
 import java.util.Dictionary;
 import java.util.Hashtable;
+import java.util.Set;
 
-import org.eclipse.virgo.snaps.core.internal.SnapHostDefinition;
-import org.eclipse.virgo.snaps.core.internal.SnapUtils;
+import org.eclipse.virgo.util.osgi.manifest.BundleManifest;
 import org.junit.Test;
 import org.osgi.framework.Bundle;
 import org.springframework.mock.web.MockHttpServletRequest;
 
-import org.eclipse.virgo.util.osgi.manifest.BundleManifest;
-
 public class SnapUtilsTests {
 
     @Test
@@ -84,9 +82,11 @@
         expect(manifest.getHeader(SnapUtils.HEADER_SNAP_HOST)).andReturn("travel;version=\"[1.2, 1.3)\"");
         
         replay(manifest);
-        SnapHostDefinition header = SnapUtils.getSnapHostHeader(manifest);
+        Set<SnapHostDefinition> header = SnapUtils.getSnapHostHeader(manifest);
+        assertEquals(1, header.size());
+        
         assertNotNull(header);
-        assertEquals("travel", header.getSymbolicName());
+        assertEquals("travel", header.iterator().next().getSymbolicName());
         verify(manifest);
     }
     
@@ -96,7 +96,7 @@
         expect(manifest.getHeader(SnapUtils.HEADER_SNAP_HOST)).andReturn(null);
         
         replay(manifest);
-        SnapHostDefinition header = SnapUtils.getSnapHostHeader(manifest);
+        Set<SnapHostDefinition> header = SnapUtils.getSnapHostHeader(manifest);
         assertNull(header);
         verify(manifest);
     }
diff --git a/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/deployer/SnapLifecycleListenerTests.java b/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/deployer/SnapLifecycleListenerTests.java
index 2e6c7d8..876c469 100644
--- a/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/deployer/SnapLifecycleListenerTests.java
+++ b/org.eclipse.virgo.snaps.core/src/test/java/org/eclipse/virgo/snaps/core/internal/deployer/SnapLifecycleListenerTests.java
@@ -18,20 +18,17 @@
 
 import java.io.IOException;
 
-import org.eclipse.virgo.snaps.core.internal.deployer.SnapFactory;
-import org.eclipse.virgo.snaps.core.internal.deployer.SnapLifecycleListener;
-import org.junit.Test;
-import org.osgi.framework.Version;
-
-import org.eclipse.virgo.nano.deployer.api.core.DeploymentException;
+import org.eclipse.gemini.web.tomcat.spi.WebBundleClassLoaderFactory;
 import org.eclipse.virgo.kernel.install.artifact.BundleInstallArtifact;
 import org.eclipse.virgo.medic.test.eventlog.MockEventLogger;
+import org.eclipse.virgo.nano.deployer.api.core.DeploymentException;
 import org.eclipse.virgo.test.stubs.framework.OSGiAssert;
 import org.eclipse.virgo.test.stubs.framework.StubBundle;
 import org.eclipse.virgo.test.stubs.framework.StubBundleContext;
-import org.eclipse.gemini.web.tomcat.spi.WebBundleClassLoaderFactory;
 import org.eclipse.virgo.util.osgi.manifest.BundleManifest;
 import org.eclipse.virgo.util.osgi.manifest.internal.StandardBundleManifest;
+import org.junit.Test;
+import org.osgi.framework.Version;
 
 public class SnapLifecycleListenerTests {
 
@@ -65,4 +62,5 @@
 
         verify(installArtifact, classLoaderFactory);
     }
+
 }
diff --git a/org.eclipse.virgo.snaps.core/template.mf b/org.eclipse.virgo.snaps.core/template.mf
index 9047432..f570e42 100644
--- a/org.eclipse.virgo.snaps.core/template.mf
+++ b/org.eclipse.virgo.snaps.core/template.mf
@@ -4,16 +4,16 @@
 Bundle-Version: ${version}
 Bundle-Name: Snaps Core
 Import-Template: 
- org.eclipse.virgo.kernel.*;version="${org.eclipse.virgo.kernel:[=.=.=, +1)}",
- org.eclipse.virgo.nano.*;version="${org.eclipse.virgo.nano:[=.=.=, +1)}",
- org.eclipse.virgo.util.*;version="${org.eclipse.virgo.util:[=.=.=, +1)}",
- org.eclipse.gemini.web.*;version="${org.eclipse.gemini.web:[=.=.=, +1)}",
- org.eclipse.virgo.medic.*;version="${org.eclipse.virgo.medic:[=.=.=, +1)}",
- javax.servlet.jsp*;version="${javax.servlet.jsp:[=.=.=, +1)}",
- javax.servlet.*;version="${javax.servlet:[-1.6.=, +1)}",
+ org.eclipse.virgo.kernel.*;version="${eclipseVirgoVersion:[=.=.=, +1)}",
+ org.eclipse.virgo.nano.*;version="${eclipseVirgoVersion:[=.=.=, +1)}",
+ org.eclipse.virgo.util.*;version="${eclipseVirgoVersion:[=.=.=, +1)}",
+ org.eclipse.virgo.medic.*;version="${eclipseVirgoVersion:[=.=.=, +1)}",
+ org.eclipse.gemini.web.*;version="${eclipseGeminiWebVersion:[=.=.=, +1)}",
+ javax.servlet.jsp*;version="${javaxServletJspVersion:[=.=.=, +1)}",
+ javax.servlet.*;version="${javaxServletVersion:[-1.6.=, +1)}",
  javax.naming.*;version="0",
- org.apache.catalina.*;version="${org.apache.catalina:[=.=.=,+1)}",
- org.slf4j.*;version="${org.slf4j.api:[=.=.=,=.+1.=)]}",
+ org.apache.catalina.*;version="${apacheCatalinaVersion:[=.=.=,+1)}",
+ org.slf4j.*;version="${slf4jVersion:[=.=.=,=.+1.=)]}",
  javax.xml.parsers.*;version="0",
  org.osgi.*;version="0",
  org.w3c.dom.*;version="0",
diff --git a/org.eclipse.virgo.snaps.test/.classpath b/org.eclipse.virgo.snaps.test/.classpath
deleted file mode 100644
index 163cec7..0000000
--- a/org.eclipse.virgo.snaps.test/.classpath
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-4.7.0.jar" sourcepath="/IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-sources-4.7.0.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.test/org.eclipse.virgo.test.framework/3.7.0.D-20140919122823/org.eclipse.virgo.test.framework-3.7.0.D-20140919122823.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.test/org.eclipse.virgo.test.framework/3.7.0.D-20140919122823/org.eclipse.virgo.test.framework-sources-3.7.0.D-20140919122823.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.osgi/3.8.1.v20120830-144521/org.eclipse.osgi-3.8.1.v20120830-144521.jar" sourcepath="/IVY_CACHE/org.eclipse.osgi/org.eclipse.osgi/3.7.1.R37x_v20110808-1106/org.eclipse.osgi-sources-3.7.1.R37x_v20110808-1106.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.common/3.7.0.D-20140919122012/org.eclipse.virgo.util.common-3.7.0.D-20140919122012.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.osgi/3.7.0.D-20140919122012/org.eclipse.virgo.util.osgi-3.7.0.D-20140919122012.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.osgi/3.7.0.D-20140919122012/org.eclipse.virgo.util.osgi-sources-3.7.0.D-20140919122012.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.osgi.manifest/3.7.0.D-20140919122012/org.eclipse.virgo.util.osgi.manifest-3.7.0.D-20140919122012.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.osgi.manifest/3.7.0.D-20140919122012/org.eclipse.virgo.util.osgi.manifest-sources-3.7.0.D-20140919122012.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.nano/org.eclipse.virgo.nano.core/3.7.0.D-20140919123318/org.eclipse.virgo.nano.core-3.7.0.D-20140919123318.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.core/3.7.0.D-20140919123318/org.eclipse.virgo.kernel.core-sources-3.7.0.D-20140919123318.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.deployer/3.7.0.D-20140919123907/org.eclipse.virgo.kernel.deployer-3.7.0.D-20140919123907.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.deployer.core/3.7.0.D-20140919123907/org.eclipse.virgo.kernel.deployer.core-sources-3.7.0.D-20140919123907.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.io/3.7.0.D-20140919122012/org.eclipse.virgo.util.io-3.7.0.D-20140919122012.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.equinox.event/1.2.100.v20111010-1614/org.eclipse.equinox.event-1.2.100.v20111010-1614.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.test/org.eclipse.virgo.test.launcher/3.7.0.D-20140919122823/org.eclipse.virgo.test.launcher-3.7.0.D-20140919122823.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.osgi/org.eclipse.virgo.osgi.launcher/3.6.0.D-20120711092707/org.eclipse.virgo.osgi.launcher-sources-3.6.0.D-20120711092707.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.kernel/org.eclipse.virgo.kernel.equinox.extensions/3.7.0.D-20140919123907/org.eclipse.virgo.kernel.equinox.extensions-3.7.0.D-20140919123907.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.osgi/org.eclipse.virgo.kernel.equinox.extensions/3.6.0.D-20120711092707/org.eclipse.virgo.kernel.equinox.extensions-sources-3.6.0.D-20120711092707.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.osgi.services/3.3.0.v20120307-2102/org.eclipse.osgi.services-3.3.0.v20120307-2102.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.nano/org.eclipse.virgo.nano.deployer.api/3.7.0.D-20140919123318/org.eclipse.virgo.nano.deployer.api-3.7.0.D-20140919123318.jar"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/org.eclipse.virgo.snaps.test/.project b/org.eclipse.virgo.snaps.test/.project
deleted file mode 100644
index f21d140..0000000
--- a/org.eclipse.virgo.snaps.test/.project
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.virgo.snaps.test</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.springframework.ide.eclipse.core.springbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
-		<nature>org.springframework.ide.eclipse.core.springnature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-	</natures>
-</projectDescription>
diff --git a/org.eclipse.virgo.snaps.test/.settings/org.eclipse.wst.common.project.facet.core.xml b/org.eclipse.virgo.snaps.test/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 92aa290..0000000
--- a/org.eclipse.virgo.snaps.test/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
-  <installed facet="org.eclipse.virgo.server.bundle" version="1.0"/>
-</faceted-project>
diff --git a/org.eclipse.virgo.snaps.test/.springBeans b/org.eclipse.virgo.snaps.test/.springBeans
deleted file mode 100644
index d079ca1..0000000
--- a/org.eclipse.virgo.snaps.test/.springBeans
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
-	<version>1</version>
-	<pluginVersion><![CDATA[2.2.4.RELEASE]]></pluginVersion>
-	<configSuffixes>
-		<configSuffix><![CDATA[xml]]></configSuffix>
-	</configSuffixes>
-	<enableImports><![CDATA[false]]></enableImports>
-	<configs>
-	</configs>
-	<configSets>
-	</configSets>
-</beansProjectDescription>
diff --git a/org.eclipse.virgo.snaps.test/build.gradle b/org.eclipse.virgo.snaps.test/build.gradle
new file mode 100644
index 0000000..f4283c3
--- /dev/null
+++ b/org.eclipse.virgo.snaps.test/build.gradle
@@ -0,0 +1,18 @@
+/*
+EXCLUDING THIS PROJECT FOR NOW AS THE TEST NEED TO BE UPDATED TO RUN AGAIN!
+*/
+
+description = 'Virgo Snaps Test Bundle'
+
+dependencies {
+	ecj group: "org.eclipse.jdt.core.compiler", name: "ecj", version: "${ecjVersion}"
+    
+    testCompile project(":org.eclipse.virgo.snaps.api")
+    testCompile project(":org.eclipse.virgo.snaps.core")
+    
+	testCompile "org.eclipse.virgo:org.eclipse.virgo.util.osgi.manifest:${eclipseVirgoVersion}"
+	testCompile "org.eclipse.virgo:org.eclipse.virgo.util.osgi:${eclipseVirgoVersion}"
+	
+	testCompile "junit:junit:${junitVersion}"
+	testCompile "org.eclipse.virgo:org.eclipse.virgo.test.framework:${eclipseVirgoVersion}"	
+}
diff --git a/org.eclipse.virgo.snaps.test/build.xml b/org.eclipse.virgo.snaps.test/build.xml
deleted file mode 100644
index eacfbaf..0000000
--- a/org.eclipse.virgo.snaps.test/build.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="org.eclipse.virgo.snaps.test">
-
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../build.versions"/>
-	<import file="${basedir}/../virgo-build/standard/default.xml"/>
-
-</project>
diff --git a/org.eclipse.virgo.snaps.test/ivy.xml b/org.eclipse.virgo.snaps.test/ivy.xml
deleted file mode 100644
index 68e199d..0000000
--- a/org.eclipse.virgo.snaps.test/ivy.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd" version="1.3">
-	<info organisation="${project.organisation}" module="${ant.project.name}"/>
-
-	<configurations>
-		<include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-	</configurations>
-
-	<publications>
-		<artifact name="${ant.project.name}"/>
-		<artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
-	</publications>
-
-	<dependencies>
-		<dependency org="org.eclipse.virgo.util" name="org.eclipse.virgo.util.osgi.manifest" rev="${org.eclipse.virgo.util}" conf="compile->compile"/>
-		<dependency org="org.eclipse.virgo.util" name="org.eclipse.virgo.util.osgi" rev="${org.eclipse.virgo.util}" conf="compile->compile"/>
-		<dependency org="org.eclipse.virgo.snaps" name="org.eclipse.virgo.snaps.api" rev="latest.integration"/>
-		<dependency org="org.eclipse.virgo.snaps" name="org.eclipse.virgo.snaps.core" rev="latest.integration"/>
-		<dependency org="org.eclipse.virgo.kernel" name="org.eclipse.virgo.kernel" rev="${org.eclipse.virgo.kernel}" conf="test->compile"/>
-		<dependency org="org.eclipse.virgo.nano" name="org.eclipse.virgo.nano.core" rev="${org.eclipse.virgo.nano}" conf="test->compile"/>
-		<dependency org="org.eclipse.virgo.nano" name="org.eclipse.virgo.nano.deployer.api" rev="${org.eclipse.virgo.nano}" conf="test->compile"/>
-		<dependency org="org.eclipse.virgo.nano" name="org.eclipse.virgo.nano.deployer.hot" rev="${org.eclipse.virgo.nano}" conf="test->compile"/>
-        <dependency org="org.eclipse.virgo.nano" name="org.eclipse.virgo.nano.management" rev="${org.eclipse.virgo.nano}" conf="test->compile"/>
-		<dependency org="org.eclipse.virgo.web" name="org.eclipse.virgo.web.tomcat.support" rev="${org.eclipse.virgo.web}" conf="test->compile"/>
-		<dependency org="org.eclipse.virgo.web" name="org.eclipse.virgo.web.tomcat" rev="${org.eclipse.virgo.web}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.test" name="org.eclipse.virgo.test.framework" rev="${org.eclipse.virgo.test}" conf="test->runtime"/>
-		<dependency org="org.springframework" name="org.springframework.test" rev="${org.springframework}" conf="test->runtime"/>
-		<dependency org="org.springframework" name="org.springframework.spring-library" rev="${org.springframework}" conf="test->runtime"/>
-		<dependency org="org.springframework" name="org.springframework.aspects" rev="${org.springframework}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.jcl" rev="${org.slf4j.jcl}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.jul" rev="${org.slf4j.jul}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.medic" name="org.eclipse.virgo.medic" rev="${org.eclipse.virgo.medic}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.medic" name="org.eclipse.virgo.medic.core" rev="${org.eclipse.virgo.medic}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="javax.mail" rev="${javax.mail}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="javax.persistence" rev="${javax.persistence}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="javax.websocket" rev="${javax.websocket}" conf="test->runtime"/>
-		<dependency org="javax.servlet" name="com.springsource.javax.servlet.jsp.jstl" rev="${javax.servlet.jsp.jstl}" conf="test->runtime"/>
-		<dependency org="org.apache.taglibs" name="com.springsource.org.apache.taglibs.standard" rev="${org.apache.taglibs}" conf="test->runtime" />
-		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.event" rev="${org.eclipse.equinox.event}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.util" rev="${org.eclipse.equinox.util}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.ds" rev="${org.eclipse.equinox.ds}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.cm" rev="${org.eclipse.equinox.cm}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.region" rev="${org.eclipse.equinox.region}" conf="test->runtime"/>
-		<dependency org="org.junit" name="com.springsource.org.junit" rev="${org.junit}" conf="test->runtime"/>
-		<dependency org="org.easymock" name="com.springsource.org.easymock" rev="${org.easymock}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="com.springsource.org.aspectj.weaver" rev="${org.aspectj}" conf="test->runtime"/>
-    	<dependency org="org.eclipse.virgo.medic" name="org.eclipse.virgo.medic.core" rev="${org.eclipse.virgo.medic}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.medic" name="org.eclipse.virgo.medic.logbackcorefragment" rev="${org.eclipse.virgo.medic}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.medic" name="org.eclipse.virgo.medic.logbackclassicfragment" rev="${org.eclipse.virgo.medic}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="ch.qos.logback.classic" rev="${ch.qos.logback.classic}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="ch.qos.logback.core" rev="${ch.qos.logback.core}" conf="test->runtime"/>
-		<dependency org="org.eclipse.virgo.mirrored" name="ch.qos.logback.slf4j" rev="${ch.qos.logback.slf4j}" conf="test->runtime"/>
-
-
-		<!-- Prevent Xerces and Xalan from being on the classpath to work around Java bug 6723276 during integration testing -->
-		<exclude org="org.apache.xerces"/>
-		<exclude org="org.apache.xalan"/>
-        <exclude org="javax.servlet" module="javax.servlet"/>
-        <exclude org="org.eclipse.osgi"/>
-		
-		<!--  Prevent Derby coming down until we move to a Spring version when its JDCB bundle's Derby dependency is optional 
-		<exclude org="org.apache.derby"/>-->
-		<override org="org.aspectj" rev="${org.aspectj}" />
-		<override org="org.eclipse.virgo.util" rev="${org.eclipse.virgo.util}"/>
-		<override org="org.eclipse.virgo.repository" rev="${org.eclipse.virgo.repository}"/>
-		<override org="org.eclipse.virgo.kernel" rev="${org.eclipse.virgo.kernel}"/>
-		<override org="org.eclipse.gemini" module="org.eclipse.gemini.web.core" rev="${org.eclipse.gemini.web}"/>
-		<override org="org.eclipse.gemini" module="org.eclipse.gemini.web.tomcat" rev="${org.eclipse.gemini.web}"/>
-	</dependencies>
-
-</ivy-module>
diff --git a/org.eclipse.virgo.snaps.test/src/main/java/.gitignore b/org.eclipse.virgo.snaps.test/src/main/java/.gitkeep
similarity index 100%
rename from org.eclipse.virgo.snaps.test/src/main/java/.gitignore
rename to org.eclipse.virgo.snaps.test/src/main/java/.gitkeep
diff --git a/org.eclipse.virgo.snaps.test/src/main/java/.gitignore b/org.eclipse.virgo.snaps.test/src/main/java/org/eclipse/virgo/snaps/test/.gitkeep
similarity index 100%
copy from org.eclipse.virgo.snaps.test/src/main/java/.gitignore
copy to org.eclipse.virgo.snaps.test/src/main/java/org/eclipse/virgo/snaps/test/.gitkeep
diff --git a/org.eclipse.virgo.snaps/build.gradle b/org.eclipse.virgo.snaps/build.gradle
new file mode 100644
index 0000000..11cb478
--- /dev/null
+++ b/org.eclipse.virgo.snaps/build.gradle
@@ -0,0 +1,5 @@
+description = 'Virgo Snaps Plan deployment unit'
+
+processResources {
+    expand (version: version)
+}
\ No newline at end of file
diff --git a/org.eclipse.virgo.snaps/build.xml b/org.eclipse.virgo.snaps/build.xml
deleted file mode 100644
index 8102136..0000000
--- a/org.eclipse.virgo.snaps/build.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="org.eclipse.virgo.snaps">
-
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../build.versions"/>
-	<import file="${basedir}/../build-snaps/package-bundle.xml"/>
-	<import file="${basedir}/../virgo-build/resource/default.xml"/>
-
-</project>
diff --git a/org.eclipse.virgo.snaps/ivy.xml b/org.eclipse.virgo.snaps/ivy.xml
deleted file mode 100644
index f4b6fd0..0000000
--- a/org.eclipse.virgo.snaps/ivy.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module
-		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
-		version="1.3">
-
-	<info organisation="${project.organisation}" module="${ant.project.name}"/>
-
-	<configurations>
-		<include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-	</configurations>
-
-	<publications>
-		<artifact name="org.eclipse.virgo.snaps" type="plan" ext="plan"/>
-	</publications>
-
-	<dependencies>
-		<dependency org="org.eclipse.virgo.kernel" name="org.eclipse.virgo.kernel" rev="${org.eclipse.virgo.kernel}" conf="provided->compile"/>
-        <dependency org="org.eclipse.virgo.nano" name="org.eclipse.virgo.nano.core" rev="${org.eclipse.virgo.nano}" conf="provided->compile"/>
-        <dependency org="org.eclipse.virgo.nano" name="org.eclipse.virgo.nano.deployer.api" rev="${org.eclipse.virgo.nano}" conf="provided->compile"/>
-		<dependency org="org.eclipse.virgo.snaps" name="org.eclipse.virgo.snaps.core" rev="latest.integration"/>
-		<dependency org="org.eclipse.virgo.snaps" name="org.eclipse.virgo.snaps.api" rev="latest.integration"/>
-
-	</dependencies>
-
-</ivy-module>
diff --git a/org.eclipse.virgo.snaps.api/src/test/resources/.gitignore b/org.eclipse.virgo.snaps/src/main/java/org/eclipse/virgo/snaps/.gitkeep
similarity index 100%
copy from org.eclipse.virgo.snaps.api/src/test/resources/.gitignore
copy to org.eclipse.virgo.snaps/src/main/java/org/eclipse/virgo/snaps/.gitkeep
diff --git a/org.eclipse.virgo.snaps/src/main/resources/org.eclipse.virgo.snaps.plan b/org.eclipse.virgo.snaps/src/main/resources/org.eclipse.virgo.snaps.plan
new file mode 100644
index 0000000..697d4b4
--- /dev/null
+++ b/org.eclipse.virgo.snaps/src/main/resources/org.eclipse.virgo.snaps.plan
@@ -0,0 +1,9 @@
+<plan name="org.eclipse.virgo.snaps" version="${version}" scoped="false"
+	atomic="true" xmlns="http://www.eclipse.org/virgo/schema/plan"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.eclipse.org/virgo/schema/plan 
+		http://www.eclipse.org/virgo/schema/plan/eclipse-virgo-plan.xsd">
+
+	<artifact type="bundle" name="org.eclipse.virgo.snaps.api" version="${version}" />
+	<artifact type="bundle" name="org.eclipse.virgo.snaps.core" version="${version}" />
+</plan>
diff --git a/org.eclipse.virgo.snaps/src/org.eclipse.virgo.snaps.plan b/org.eclipse.virgo.snaps/src/org.eclipse.virgo.snaps.plan
deleted file mode 100644
index 8b39d79..0000000
--- a/org.eclipse.virgo.snaps/src/org.eclipse.virgo.snaps.plan
+++ /dev/null
@@ -1,10 +0,0 @@
-<plan name="org.eclipse.virgo.snaps" version="3.0.0" scoped="false" atomic="true"
-                xmlns="http://www.springsource.org/schema/dm-server/plan"
-                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                xsi:schemaLocation="
-                        http://www.springsource.org/schema/dm-server/plan 
-                        http://www.springsource.org/schema/dm-server/plan/springsource-dm-server-plan.xsd">
-
-        <artifact type="bundle" name="org.eclipse.virgo.snaps.api" version="[3, 4)"/>
-        <artifact type="bundle" name="org.eclipse.virgo.snaps.core" version="[3, 4)"/>
-</plan>
diff --git a/sample/org.eclipse.virgo.snaps.sample.animal/.classpath b/sample/org.eclipse.virgo.snaps.sample.animal/.classpath
deleted file mode 100644
index 15b13e4..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.animal/.classpath
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry kind="src" path="src/main/resources"/>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.virgo.snaps.api"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
-		<attributes>
-			<attribute name="owner.project.facets" value="java"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet.jsp.jstl/1.2.0.v201105211821/javax.servlet.jsp.jstl-1.2.0.v201105211821.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.apache.taglibs/com.springsource.org.apache.taglibs.standard/1.1.2.v20110517/com.springsource.org.apache.taglibs.standard-1.1.2.v20110517.jar"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/sample/org.eclipse.virgo.snaps.sample.animal/.project b/sample/org.eclipse.virgo.snaps.sample.animal/.project
deleted file mode 100644
index 0de073c..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.animal/.project
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.virgo.snaps.sample.animal</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.springframework.ide.eclipse.core.springbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.validation.validationbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.springsource.server.ide.bundlor.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
-		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
-		<nature>org.springframework.ide.eclipse.core.springnature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
-		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
-	</natures>
-</projectDescription>
diff --git a/sample/org.eclipse.virgo.snaps.sample.animal/.settings/.jsdtscope b/sample/org.eclipse.virgo.snaps.sample.animal/.settings/.jsdtscope
deleted file mode 100644
index bbb8e68..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.animal/.settings/.jsdtscope
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
-		<attributes>
-			<attribute name="hide" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
-	<classpathentry kind="output" path=""/>
-</classpath>
diff --git a/sample/org.eclipse.virgo.snaps.sample.animal/.settings/org.eclipse.virgo.ide.bundlor.core.prefs b/sample/org.eclipse.virgo.snaps.sample.animal/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
deleted file mode 100644
index ad66f73..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.animal/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Apr 15 15:27:27 BST 2009
-org.eclipse.virgo.ide.bundlor.core.template.properties.files=../../build.properties;../../build.versions
-eclipse.preferences.version=1
diff --git a/sample/org.eclipse.virgo.snaps.sample.animal/.settings/org.eclipse.wst.common.component b/sample/org.eclipse.virgo.snaps.sample.animal/.settings/org.eclipse.wst.common.component
deleted file mode 100644
index e85b51b..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.animal/.settings/org.eclipse.wst.common.component
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project-modules id="moduleCoreId" project-version="1.5.0">
-	<wb-module deploy-name="animal.menu.bar">
-		<wb-resource deploy-path="/" source-path="/src/main/webapp"/>
-		<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
-		<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
-		<property name="context-root" value="animal-menu-bar"/>
-		<property name="java-output-path" value="target/classes"/>
-	</wb-module>
-</project-modules>
diff --git a/sample/org.eclipse.virgo.snaps.sample.animal/.settings/org.eclipse.wst.common.project.facet.core.xml b/sample/org.eclipse.virgo.snaps.sample.animal/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 2739bed..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.animal/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
-  <installed facet="org.eclipse.virgo.server.bundle" version="1.0"/>
-  <installed facet="jst.java" version="6.0"/>
-  <installed facet="jst.web" version="2.5"/>
-</faceted-project>
diff --git a/sample/org.eclipse.virgo.snaps.sample.animal/.settings/org.eclipse.wst.jsdt.ui.superType.container b/sample/org.eclipse.virgo.snaps.sample.animal/.settings/org.eclipse.wst.jsdt.ui.superType.container
deleted file mode 100644
index 3bd5d0a..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.animal/.settings/org.eclipse.wst.jsdt.ui.superType.container
+++ /dev/null
@@ -1 +0,0 @@
-org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
diff --git a/sample/org.eclipse.virgo.snaps.sample.animal/.settings/org.eclipse.wst.jsdt.ui.superType.name b/sample/org.eclipse.virgo.snaps.sample.animal/.settings/org.eclipse.wst.jsdt.ui.superType.name
deleted file mode 100644
index 05bd71b..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.animal/.settings/org.eclipse.wst.jsdt.ui.superType.name
+++ /dev/null
@@ -1 +0,0 @@
-Window
\ No newline at end of file
diff --git a/sample/org.eclipse.virgo.snaps.sample.animal/.springBeans b/sample/org.eclipse.virgo.snaps.sample.animal/.springBeans
deleted file mode 100644
index d0f3ac5..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.animal/.springBeans
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
-	<version>1</version>
-	<pluginVersion><![CDATA[2.6.0.201104111100-PATCH]]></pluginVersion>
-	<configSuffixes>
-		<configSuffix><![CDATA[xml]]></configSuffix>
-	</configSuffixes>
-	<enableImports><![CDATA[false]]></enableImports>
-	<configs>
-		<config>src/main/webapp/WEB-INF/admin-servlet.xml</config>
-		<config>src/main/webapp/WEB-INF/applicationContext.xml</config>
-	</configs>
-	<configSets>
-	</configSets>
-</beansProjectDescription>
diff --git a/sample/org.eclipse.virgo.snaps.sample.animal/build.xml b/sample/org.eclipse.virgo.snaps.sample.animal/build.xml
deleted file mode 100644
index 7f17a65..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.animal/build.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="org.eclipse.virgo.snaps.sample.animal">
-
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../../build.versions"/>
-	<import file="${basedir}/../../build-snaps/package-sample.xml"/>
-	<import file="${basedir}/../../virgo-build/wab/default.xml"/>
-
-</project>
diff --git a/sample/org.eclipse.virgo.snaps.sample.animal/ivy.xml b/sample/org.eclipse.virgo.snaps.sample.animal/ivy.xml
deleted file mode 100644
index 495c3cb..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.animal/ivy.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
-        version="1.3">
-
-    <info organisation="com.springsource.snaps.menu-bar" module="${ant.project.name}"/>
-
-    <configurations>
-        <include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-    </configurations>
-
-    <publications>
-        <artifact name="${ant.project.name}" type="wab" ext="jar"/>
-        <artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
-    </publications>
-
-    <dependencies/>
-
-</ivy-module>
diff --git a/sample/org.eclipse.virgo.snaps.sample.blue/.classpath b/sample/org.eclipse.virgo.snaps.sample.blue/.classpath
deleted file mode 100644
index 66844db..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.blue/.classpath
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry kind="src" path="src/main/resources"/>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/sample/org.eclipse.virgo.snaps.sample.blue/.project b/sample/org.eclipse.virgo.snaps.sample.blue/.project
deleted file mode 100644
index cd34fcf..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.blue/.project
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.virgo.snaps.sample.blue</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.springsource.server.ide.bundlor.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.springframework.ide.eclipse.core.springbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.validation.validationbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
-		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
-		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
-		<nature>org.springframework.ide.eclipse.core.springnature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
-	</natures>
-</projectDescription>
diff --git a/sample/org.eclipse.virgo.snaps.sample.blue/.settings/.jsdtscope b/sample/org.eclipse.virgo.snaps.sample.blue/.settings/.jsdtscope
deleted file mode 100644
index bbb8e68..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.blue/.settings/.jsdtscope
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
-		<attributes>
-			<attribute name="hide" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
-	<classpathentry kind="output" path=""/>
-</classpath>
diff --git a/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.jdt.core.prefs b/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index c5ce38f..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-#Wed Jul 01 16:18:05 BST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.virgo.ide.bundlor.core.prefs b/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
deleted file mode 100644
index ad66f73..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Apr 15 15:27:27 BST 2009
-org.eclipse.virgo.ide.bundlor.core.template.properties.files=../../build.properties;../../build.versions
-eclipse.preferences.version=1
diff --git a/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.wst.common.component b/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.wst.common.component
deleted file mode 100644
index 2324d8f..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.wst.common.component
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project-modules id="moduleCoreId" project-version="1.5.0">
-    <wb-module deploy-name="green.style.snap">
-        <wb-resource deploy-path="/" source-path="/src/main/webapp" />
-        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java" />
-        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources" />
-        <property name="context-root" value="styling" />
-        <property name="java-output-path" value="target/classes" />
-    </wb-module>
-</project-modules>
diff --git a/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.wst.common.project.facet.core.xml b/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 8a303d1..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
-  <installed facet="org.eclipse.virgo.server.bundle" version="1.0"/>
-  <installed facet="jst.java" version="5.0"/>
-  <installed facet="jst.web" version="2.5"/>
-</faceted-project>
diff --git a/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.wst.jsdt.ui.superType.container b/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.wst.jsdt.ui.superType.container
deleted file mode 100644
index 3bd5d0a..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.wst.jsdt.ui.superType.container
+++ /dev/null
@@ -1 +0,0 @@
-org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
diff --git a/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.wst.jsdt.ui.superType.name b/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.wst.jsdt.ui.superType.name
deleted file mode 100644
index 05bd71b..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.blue/.settings/org.eclipse.wst.jsdt.ui.superType.name
+++ /dev/null
@@ -1 +0,0 @@
-Window
\ No newline at end of file
diff --git a/sample/org.eclipse.virgo.snaps.sample.blue/.springBeans b/sample/org.eclipse.virgo.snaps.sample.blue/.springBeans
deleted file mode 100644
index 5152991..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.blue/.springBeans
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
-	<version>1</version>
-	<pluginVersion><![CDATA[2.2.5.M1]]></pluginVersion>
-	<configSuffixes>
-		<configSuffix><![CDATA[xml]]></configSuffix>
-	</configSuffixes>
-	<enableImports><![CDATA[false]]></enableImports>
-	<configs>
-	</configs>
-	<configSets>
-	</configSets>
-</beansProjectDescription>
diff --git a/sample/org.eclipse.virgo.snaps.sample.blue/build.xml b/sample/org.eclipse.virgo.snaps.sample.blue/build.xml
deleted file mode 100644
index f128e52..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.blue/build.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="org.eclipse.virgo.snaps.sample.blue">
-	
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../../build.versions"/>
-	<import file="${basedir}/../../build-snaps/package-sample.xml"/>
-	<import file="${basedir}/../../virgo-build/wab/default.xml"/>
-
-</project>
diff --git a/sample/org.eclipse.virgo.snaps.sample.blue/ivy.xml b/sample/org.eclipse.virgo.snaps.sample.blue/ivy.xml
deleted file mode 100644
index e126443..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.blue/ivy.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
-        version="1.3">
-
-    <info organisation="com.springsource.snaps.styling" module="${ant.project.name}"/>
-
-    <configurations>
-        <include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-    </configurations>
-
-    <publications>
-        <artifact name="${ant.project.name}" type="wab" ext="jar"/>
-        <artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
-    </publications>
-
-    <dependencies/>
-
-</ivy-module>
diff --git a/sample/org.eclipse.virgo.snaps.sample.cat/.classpath b/sample/org.eclipse.virgo.snaps.sample.cat/.classpath
deleted file mode 100644
index aae92ed..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.cat/.classpath
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry kind="src" path="src/main/resources"/>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
-		<attributes>
-			<attribute name="owner.project.facets" value="java"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.web/3.1.0.RELEASE/org.springframework.web-3.1.0.RELEASE.jar" sourcepath="/IVY_CACHE/org.springframework/org.springframework.web/3.1.0.RELEASE/org.springframework.web-sources-3.1.0.RELEASE.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.context/3.1.0.RELEASE/org.springframework.context-3.1.0.RELEASE.jar" sourcepath="/IVY_CACHE/org.springframework/org.springframework.context/3.1.0.RELEASE/org.springframework.context-sources-3.1.0.RELEASE.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.web.servlet/3.1.0.RELEASE/org.springframework.web.servlet-3.1.0.RELEASE.jar" sourcepath="/IVY_CACHE/org.springframework/org.springframework.web.servlet/3.1.0.RELEASE/org.springframework.web.servlet-sources-3.1.0.RELEASE.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar" sourcepath="/IVY_CACHE/javax.servlet/javax.servlet/3.0.0.v201103241009/javax.servlet-sources-3.0.0.v201103241009.jar"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/sample/org.eclipse.virgo.snaps.sample.cat/.project b/sample/org.eclipse.virgo.snaps.sample.cat/.project
deleted file mode 100644
index 28a4372..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.cat/.project
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.virgo.snaps.sample.cat</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.springsource.server.ide.bundlor.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.springframework.ide.eclipse.core.springbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.validation.validationbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
-		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
-		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
-		<nature>org.springframework.ide.eclipse.core.springnature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
-	</natures>
-</projectDescription>
diff --git a/sample/org.eclipse.virgo.snaps.sample.cat/.settings/.jsdtscope b/sample/org.eclipse.virgo.snaps.sample.cat/.settings/.jsdtscope
deleted file mode 100644
index bbb8e68..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.cat/.settings/.jsdtscope
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
-		<attributes>
-			<attribute name="hide" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
-	<classpathentry kind="output" path=""/>
-</classpath>
diff --git a/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.jdt.core.prefs b/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index c5ce38f..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-#Wed Jul 01 16:18:05 BST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.virgo.ide.bundlor.core.prefs b/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
deleted file mode 100644
index ad66f73..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Apr 15 15:27:27 BST 2009
-org.eclipse.virgo.ide.bundlor.core.template.properties.files=../../build.properties;../../build.versions
-eclipse.preferences.version=1
diff --git a/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.wst.common.component b/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.wst.common.component
deleted file mode 100644
index 7b3c816..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.wst.common.component
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project-modules id="moduleCoreId" project-version="1.5.0">
-    <wb-module deploy-name="cat.menu.item">
-        <wb-resource deploy-path="/" source-path="/src/main/webapp" />
-        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java" />
-        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources" />
-        <property name="context-root" value="cat" />
-        <property name="java-output-path" value="target/classes" />
-    </wb-module>
-</project-modules>
diff --git a/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.wst.common.project.facet.core.xml b/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 8a303d1..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
-  <installed facet="org.eclipse.virgo.server.bundle" version="1.0"/>
-  <installed facet="jst.java" version="5.0"/>
-  <installed facet="jst.web" version="2.5"/>
-</faceted-project>
diff --git a/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.wst.jsdt.ui.superType.container b/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.wst.jsdt.ui.superType.container
deleted file mode 100644
index 3bd5d0a..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.wst.jsdt.ui.superType.container
+++ /dev/null
@@ -1 +0,0 @@
-org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
diff --git a/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.wst.jsdt.ui.superType.name b/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.wst.jsdt.ui.superType.name
deleted file mode 100644
index 05bd71b..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.cat/.settings/org.eclipse.wst.jsdt.ui.superType.name
+++ /dev/null
@@ -1 +0,0 @@
-Window
\ No newline at end of file
diff --git a/sample/org.eclipse.virgo.snaps.sample.cat/.springBeans b/sample/org.eclipse.virgo.snaps.sample.cat/.springBeans
deleted file mode 100644
index cf5df9e..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.cat/.springBeans
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
-	<version>1</version>
-	<pluginVersion><![CDATA[2.6.0.201104111100-PATCH]]></pluginVersion>
-	<configSuffixes>
-		<configSuffix><![CDATA[xml]]></configSuffix>
-	</configSuffixes>
-	<enableImports><![CDATA[false]]></enableImports>
-	<configs>
-		<config>src/main/webapp/WEB-INF/cat-servlet.xml</config>
-	</configs>
-	<configSets>
-	</configSets>
-</beansProjectDescription>
diff --git a/sample/org.eclipse.virgo.snaps.sample.cat/build.xml b/sample/org.eclipse.virgo.snaps.sample.cat/build.xml
deleted file mode 100644
index 1ef211e..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.cat/build.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="org.eclipse.virgo.snaps.sample.cat">
-	
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../../build.versions"/>
-	<import file="${basedir}/../../build-snaps/package-sample.xml"/>
-	<import file="${basedir}/../../virgo-build/wab/default.xml"/>
-
-</project>
diff --git a/sample/org.eclipse.virgo.snaps.sample.cat/ivy.xml b/sample/org.eclipse.virgo.snaps.sample.cat/ivy.xml
deleted file mode 100644
index 86b294d..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.cat/ivy.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
-        version="1.3">
-
-    <info organisation="com.springsource.snaps.menu-bar" module="${ant.project.name}"/>
-
-    <configurations>
-        <include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-    </configurations>
-
-    <publications>
-        <artifact name="${ant.project.name}" type="wab" ext="jar"/>
-        <artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
-    </publications>
-
-    <dependencies>    
-		<dependency org="org.eclipse.virgo.mirrored" name="javax.servlet" rev="${javax.servlet}" conf="provided->runtime"/>
-		<dependency org="org.springframework" name="org.springframework.context" rev="${org.springframework}" conf="provided->runtime"/>
-		<dependency org="org.springframework" name="org.springframework.web" rev="${org.springframework}" conf="provided->runtime"/>
-        <dependency org="org.springframework" name="org.springframework.web.servlet" rev="${org.springframework}" conf="provided->runtime"/>
-	</dependencies>
-
-</ivy-module>
diff --git a/sample/org.eclipse.virgo.snaps.sample.dog/.classpath b/sample/org.eclipse.virgo.snaps.sample.dog/.classpath
deleted file mode 100644
index 4455dcc..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.dog/.classpath
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry kind="src" path="src/main/resources"/>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
-		<attributes>
-			<attribute name="owner.project.facets" value="java"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/sample/org.eclipse.virgo.snaps.sample.dog/.project b/sample/org.eclipse.virgo.snaps.sample.dog/.project
deleted file mode 100644
index 042ac1e..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.dog/.project
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.virgo.snaps.sample.dog</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.springsource.server.ide.bundlor.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.springframework.ide.eclipse.core.springbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.wst.validation.validationbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
-		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
-		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
-		<nature>org.springframework.ide.eclipse.core.springnature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
-	</natures>
-</projectDescription>
diff --git a/sample/org.eclipse.virgo.snaps.sample.dog/.settings/.jsdtscope b/sample/org.eclipse.virgo.snaps.sample.dog/.settings/.jsdtscope
deleted file mode 100644
index bbb8e68..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.dog/.settings/.jsdtscope
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
-		<attributes>
-			<attribute name="hide" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
-	<classpathentry kind="output" path=""/>
-</classpath>
diff --git a/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.jdt.core.prefs b/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index c5ce38f..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-#Wed Jul 01 16:18:05 BST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.virgo.ide.bundlor.core.prefs b/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
deleted file mode 100644
index ad66f73..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Apr 15 15:27:27 BST 2009
-org.eclipse.virgo.ide.bundlor.core.template.properties.files=../../build.properties;../../build.versions
-eclipse.preferences.version=1
diff --git a/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.wst.common.component b/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.wst.common.component
deleted file mode 100644
index aff3e84..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.wst.common.component
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project-modules id="moduleCoreId" project-version="1.5.0">
-    <wb-module deploy-name="dog.menu.item">
-        <wb-resource deploy-path="/" source-path="/src/main/webapp" />
-        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java" />
-        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources" />
-        <property name="context-root" value="dog" />
-        <property name="java-output-path" value="target/classes" />
-    </wb-module>
-</project-modules>
diff --git a/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.wst.common.project.facet.core.xml b/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 8a303d1..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
-  <installed facet="org.eclipse.virgo.server.bundle" version="1.0"/>
-  <installed facet="jst.java" version="5.0"/>
-  <installed facet="jst.web" version="2.5"/>
-</faceted-project>
diff --git a/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.wst.jsdt.ui.superType.container b/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.wst.jsdt.ui.superType.container
deleted file mode 100644
index 3bd5d0a..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.wst.jsdt.ui.superType.container
+++ /dev/null
@@ -1 +0,0 @@
-org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
diff --git a/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.wst.jsdt.ui.superType.name b/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.wst.jsdt.ui.superType.name
deleted file mode 100644
index 05bd71b..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.dog/.settings/org.eclipse.wst.jsdt.ui.superType.name
+++ /dev/null
@@ -1 +0,0 @@
-Window
\ No newline at end of file
diff --git a/sample/org.eclipse.virgo.snaps.sample.dog/.springBeans b/sample/org.eclipse.virgo.snaps.sample.dog/.springBeans
deleted file mode 100644
index 5152991..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.dog/.springBeans
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
-	<version>1</version>
-	<pluginVersion><![CDATA[2.2.5.M1]]></pluginVersion>
-	<configSuffixes>
-		<configSuffix><![CDATA[xml]]></configSuffix>
-	</configSuffixes>
-	<enableImports><![CDATA[false]]></enableImports>
-	<configs>
-	</configs>
-	<configSets>
-	</configSets>
-</beansProjectDescription>
diff --git a/sample/org.eclipse.virgo.snaps.sample.dog/build.xml b/sample/org.eclipse.virgo.snaps.sample.dog/build.xml
deleted file mode 100644
index 18533f6..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.dog/build.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="org.eclipse.virgo.snaps.sample.dog">
-	
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../../build.versions"/>
-	<import file="${basedir}/../../build-snaps/package-sample.xml"/>
-	<import file="${basedir}/../../virgo-build/wab/default.xml"/>
-
-</project>
diff --git a/sample/org.eclipse.virgo.snaps.sample.dog/ivy.xml b/sample/org.eclipse.virgo.snaps.sample.dog/ivy.xml
deleted file mode 100644
index 495c3cb..0000000
--- a/sample/org.eclipse.virgo.snaps.sample.dog/ivy.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
-        version="1.3">
-
-    <info organisation="com.springsource.snaps.menu-bar" module="${ant.project.name}"/>
-
-    <configurations>
-        <include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-    </configurations>
-
-    <publications>
-        <artifact name="${ant.project.name}" type="wab" ext="jar"/>
-        <artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
-    </publications>
-
-    <dependencies/>
-
-</ivy-module>
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..2a6b54b
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,6 @@
+rootProject.name = 'snaps-root'
+include ':org.eclipse.virgo.snaps'
+include ':org.eclipse.virgo.snaps.api'
+include ':org.eclipse.virgo.snaps.core'
+include ':snaps-guide'
+
diff --git a/snaps-guide/.project b/snaps-guide/.project
deleted file mode 100644
index bbe17ca..0000000
--- a/snaps-guide/.project
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>snaps-guide</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-	</buildSpec>
-	<natures>
-	</natures>
-</projectDescription>
diff --git a/snaps-guide/build.gradle b/snaps-guide/build.gradle
new file mode 100644
index 0000000..5d1975b
--- /dev/null
+++ b/snaps-guide/build.gradle
@@ -0,0 +1,3 @@
+description = 'Virgo Snaps documentation'
+
+apply plugin: 'org.asciidoctor.convert'
diff --git a/snaps-guide/build.xml b/snaps-guide/build.xml
deleted file mode 100644
index 7d70637..0000000
--- a/snaps-guide/build.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="virgo-snaps-guide">
-	
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../build.versions"/>
-	<import file="${basedir}/../virgo-build/docbook/default.xml"/>
-
-	<filterset id="docbook.filters">
-		<filter token="bundle.version" value="${bundle.version}"/>
-		<filtersfile file="${basedir}/filters.properties"/>
-	</filterset>
-
-</project>
diff --git a/snaps-guide/filters.properties b/snaps-guide/filters.properties
deleted file mode 100644
index 9b1f08d..0000000
--- a/snaps-guide/filters.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-project.name=Virgo
-umbrella.product.name=Virgo Server
-tomcat.product.name=Virgo Server for Apache Tomcat
-tomcat.product.name.short=VTS
-jetty.product.name=Virgo Jetty Server
-jetty.product.name.short=VTS
-kernel.product.name=Virgo Kernel
-kernel.product.name.short=VK
-snaps.product.name=Virgo Snaps
-snaps.product.name.short=VS
-ebr=SpringSource Enterprise Bundle Repository
\ No newline at end of file
diff --git a/snaps-guide/ivy.xml b/snaps-guide/ivy.xml
deleted file mode 100644
index 2ef6586..0000000
--- a/snaps-guide/ivy.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module
-		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
-		version="1.3">
-
-	<info organisation="org.eclipse.virgo.documentation" module="${ant.project.name}"/>
-
-	<configurations>
-		<include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-   	    <conf name="doc" visibility="public" description="Documentation"/>
-	</configurations>
-
-	<publications>
-		<!-- <artifact name="${ant.project.name}" ext="pdf" type="pdf"/> -->
-		<artifact name="${ant.project.name}" ext="zip" type="zip"/>
-		<artifact name="${ant.project.name}-single" ext="zip" type="zip"/>
-	</publications>
-
-	<dependencies/>
-
-</ivy-module>
diff --git a/snaps-guide/src/docs/asciidoc/further-reading.adoc b/snaps-guide/src/docs/asciidoc/further-reading.adoc
new file mode 100644
index 0000000..ce21f39
--- /dev/null
+++ b/snaps-guide/src/docs/asciidoc/further-reading.adoc
@@ -0,0 +1,17 @@
+[[further-reading]]
+== Further Reading
+
+The User and Programmer Guides provide a lot of information about using
+and developing applications for the Virgo Server.
+
+http://www.eclipse.org/virgo/documentation/[Virgo Documentation
+page]
+
+link:../../virgo-programmer-guide/html/index.html[Virgo Server for Apache Tomcat
+Programmer Guide]
+
+link:../../virgo-user-guide/html/index.html[Virgo Server for Apache Tomcat User
+Guide]
+
+http://www.slideshare.net/cgfrost/eclipsecon2011-virgo-snaps[Slides from
+a presentation at EclipseCon 2011 about Virgo Snaps.]
diff --git a/snaps-guide/images/s2-logo.png b/snaps-guide/src/docs/asciidoc/images/s2-logo.png
similarity index 100%
rename from snaps-guide/images/s2-logo.png
rename to snaps-guide/src/docs/asciidoc/images/s2-logo.png
Binary files differ
diff --git a/snaps-guide/images/sampleApp.png b/snaps-guide/src/docs/asciidoc/images/sampleApp.png
similarity index 100%
rename from snaps-guide/images/sampleApp.png
rename to snaps-guide/src/docs/asciidoc/images/sampleApp.png
Binary files differ
diff --git a/snaps-guide/images/sampleBlue.png b/snaps-guide/src/docs/asciidoc/images/sampleBlue.png
similarity index 100%
rename from snaps-guide/images/sampleBlue.png
rename to snaps-guide/src/docs/asciidoc/images/sampleBlue.png
Binary files differ
diff --git a/snaps-guide/images/sampleCat.png b/snaps-guide/src/docs/asciidoc/images/sampleCat.png
similarity index 100%
rename from snaps-guide/images/sampleCat.png
rename to snaps-guide/src/docs/asciidoc/images/sampleCat.png
Binary files differ
diff --git a/snaps-guide/images/sampleDog.png b/snaps-guide/src/docs/asciidoc/images/sampleDog.png
similarity index 100%
rename from snaps-guide/images/sampleDog.png
rename to snaps-guide/src/docs/asciidoc/images/sampleDog.png
Binary files differ
diff --git a/snaps-guide/images/snapsAndHosts.png b/snaps-guide/src/docs/asciidoc/images/snapsAndHosts.png
similarity index 100%
rename from snaps-guide/images/snapsAndHosts.png
rename to snaps-guide/src/docs/asciidoc/images/snapsAndHosts.png
Binary files differ
diff --git a/snaps-guide/images/snapsZipFile.png b/snaps-guide/src/docs/asciidoc/images/snapsZipFile.png
similarity index 100%
rename from snaps-guide/images/snapsZipFile.png
rename to snaps-guide/src/docs/asciidoc/images/snapsZipFile.png
Binary files differ
diff --git a/snaps-guide/images/virgo-logo-large.png b/snaps-guide/src/docs/asciidoc/images/virgo-logo-large.png
similarity index 100%
rename from snaps-guide/images/virgo-logo-large.png
rename to snaps-guide/src/docs/asciidoc/images/virgo-logo-large.png
Binary files differ
diff --git a/snaps-guide/images/virgo-logo-small.png b/snaps-guide/src/docs/asciidoc/images/virgo-logo-small.png
similarity index 100%
rename from snaps-guide/images/virgo-logo-small.png
rename to snaps-guide/src/docs/asciidoc/images/virgo-logo-small.png
Binary files differ
diff --git a/snaps-guide/src/docs/asciidoc/installing.adoc b/snaps-guide/src/docs/asciidoc/installing.adoc
new file mode 100644
index 0000000..ea2e11f
--- /dev/null
+++ b/snaps-guide/src/docs/asciidoc/installing.adoc
@@ -0,0 +1,92 @@
+[[installation]]
+== Installing Virgo Snaps
+
+[[installation-zip]]
+=== Installing from the Zip Download
+
+VS is distributed as a Zip file. This can be
+downloaded from http://www.eclipse.org/virgo/download/[here].
+
+Once the Zip file is unpacked you will find several things inside,
+including a copy of this documentation in the `docs` folder. The layout
+is shown below.
+
+image::images/snapsZipFile.png[]
+
+Take the bundles and plan in the `dist` folder and place them in either
+the `/repository/usr` or `/repository/ext` folder of your Virgo install.
+Later you need the bundles in the `sample` folder. If you wish to view
+the source for VS or its sample, then these are
+in the `src` folder.
+
+In order to start the Snaps system as a part of your
+Virgo Server for Apache Tomcat, the Snaps plan needs to be referenced from the
+`initialArtifacts` property. This is located in the config file at
+`${SERVER_HOME}/config/org.eclipse.virgo.kernel.userregion.properties`.
+The property should be extended like this.
+
+....
+initialArtifacts=repository:plan/org.eclipse.virgo.kernel.userregion.springdm, 
+        repository:plan/org.eclipse.virgo.web.tomcat, 
+        repository:plan/org.eclipse.virgo.snaps
+....
+
+Now you are ready to check that Snaps is working.
+
+[[installation-post]]
+=== Verifying it's working
+
+The sample application in the Zip file demonstrates all of the features
+of Snaps. You will cover this application in detail later, but for now
+install it to verify that you have a working Snaps install. Start the
+server up and check the output it produces contains the following:
+
+....
+<DE0004I> Starting plan 'org.eclipse.virgo.snaps' version '3.0.0'. 
+<DE0004I> Starting bundle 'org.eclipse.virgo.snaps.api' version '[version]'. 
+<DE0005I> Started bundle 'org.eclipse.virgo.snaps.api' version '[version]'. 
+<DE0004I> Starting bundle 'org.eclipse.virgo.snaps.core' version '[version]'. 
+<DE0005I> Started bundle 'org.eclipse.virgo.snaps.core' version '[version]'. 
+<DE0005I> Started plan 'org.eclipse.virgo.snaps' version '3.0.0'.
+....
+
+Open up the Virgo Admin Console by navigating to
+`http://localhost:8080/admin` and then go to the artifacts tab to deploy
+some new bundles. The first bundle to deploy is located at
+`/sample/org.eclipse.virgo.snaps.sample.animal-[version].jar`,
+select it in the browser and upload. In the terminal window you started
+the Virgo Server for Apache Tomcat in you should see the usual messages about the
+bundle starting and this message:
+
+....
+<SN0000I> Host created for path '/animal-menu-bar'
+....
+
+This shows that the host has been registered and is ready for Snaps to
+attach to it. To view the application take your browser to
+`http://localhost:8080/animal-menu-bar/`. You should be presented with a
+green looking page that has a menu bar with two links on it. One will
+take you to the page you are currently on while the other goes back to
+the admin page.
+
+This is all very nice, but it's time to deploy another snap that will
+dynamicaly add some extra content to the app. The next bundle to deploy
+is located at
+`/sample/org.eclipse.virgo.snaps.sample.dog-[version].jar`.
+Deploy it the same way as the last one using the admin console and check
+the messages to verify it has been bound to the host:
+
+....
+<SN0010I> Snap bound to path '/animal-menu-bar/dog' 
+....
+
+In your browser, go back to the application and refresh the page and a
+new menu item should now be present. If you click it a new page will
+load with content from the newly installed snap. In this case a picture
+of a dog.
+
+image::images/sampleDog.png[]
+
+You have now verified that your install is working and can continue on
+to learn how Snaps works and how you can use it to break up your web
+applications.
diff --git a/snaps-guide/src/docs/asciidoc/introduction.adoc b/snaps-guide/src/docs/asciidoc/introduction.adoc
new file mode 100644
index 0000000..23db8f2
--- /dev/null
+++ b/snaps-guide/src/docs/asciidoc/introduction.adoc
@@ -0,0 +1,36 @@
+[[introduction]]
+== Introduction
+
+This Guide covers Virgo Snaps and assumes you are already
+familiar with OSGi and Eclipse Virgo. See link:#further-reading[here].
+
+[[introduction-concepts]]
+=== Concepts
+
+Using Virgo Snaps, or VS for short, you
+can construct a web application from multiple OSGi bundles, each of
+which serves up content for a distinct sub-portion of your application's
+URL space. VS applications are arranged in a
+parent/child structure, with each application having at most one
+top-level parent, and zero or more children/grand children and so on.
+Parents are referred to as the hosts, children as snaps.
+
+image::images/snapsAndHosts.png[]
+
+Here you see that any `HTTP` requests for '/app' will be dealt with by
+the host bundle while '/app/orders' and '/app/billing' will be dealt
+with by their respective snaps bundles. Each host/snap can use
+completely different web technologies to deal with the requests,
+Virgo Snaps places no restrictions on your choices. The
+developer decides how to split the application up and how closely to
+couple the host and various snaps. VS has been
+designed to be as un-invasive as possible while still making it easy to
+share information between the host and its snaps.
+
+[[introduction-prereqs]]
+=== Prerequisites
+
+VS requires Virgo Server for Apache Tomcat and Java SE 6
+or later to be installed. Java is available from http://www.java.com/
+and elsewhere. Virgo Server for Apache Tomcat is available from
+http://www.eclipse.org/virgo/download/[here].
diff --git a/snaps-guide/src/docs/asciidoc/known-issues.adoc b/snaps-guide/src/docs/asciidoc/known-issues.adoc
new file mode 100644
index 0000000..1360e59
--- /dev/null
+++ b/snaps-guide/src/docs/asciidoc/known-issues.adoc
@@ -0,0 +1,11 @@
+[[known-issues]]
+== Known Issues
+
+This section describes known issues that you might run into, along with
+corresponding workarounds.
+
+[[known-issues-jetty-restriction]]
+=== Virgo Jetty Server Restriction
+
+Virgo Snaps is not supported on the Virgo Jetty Server,
+please use with the Virgo Server for Apache Tomcat.
diff --git a/snaps-guide/src/docs/asciidoc/sample-application.adoc b/snaps-guide/src/docs/asciidoc/sample-application.adoc
new file mode 100644
index 0000000..aaef3f0
--- /dev/null
+++ b/snaps-guide/src/docs/asciidoc/sample-application.adoc
@@ -0,0 +1,107 @@
+[[sample-application]]
+== A Sample Application
+
+The Virgo Snaps Zip file comes with a sample application that
+you may have already deployed to verify your VS
+install. In this chapter you will look at it in more detail to see how
+an application can be composed and see all the Snaps features in action.
+
+[[sample-application-structure]]
+=== Structure of the sample application
+
+The application is very simple, it consists of just a front end,
+composed of four bundles, a host with three Snaps.
+
+image::images/sampleApp.png[]
+
+The host and three snaps show their `Snap-ContextPath`s. The Cat and Dog
+snaps both contribute content while the final snap just contributes
+styling information in the form of `css` files. The following sections
+look at each of these in detail.
+
+[[sample-application-host]]
+=== The Host bundle
+
+This bundle is very simple with no Java code. It defines the Snaps
+filter in its `web.xml` just as you have seen in the
+link:#using-snaps-configuring-the-host[Using Snaps] section. The menu
+bar uses the taglibs support to render links for each registered Snap.
+
+....
+<ul>
+    <li><a href="<c:url value="/"/>">Home</a></li>
+    <snaps:snaps var="snaps">
+        <c:forEach var="snap" items="${snaps}">
+            <c:if test="${snap.contextPath ne '/styles'}">
+                <li><a href="<c:url value="${snap.contextPath}${snap.properties['link.path']}"/>">
+                    ${snap.properties['link.text']}</a>
+                </li>
+            </c:if>
+        </c:forEach>
+    </snaps:snaps>
+</ul>
+        
+....
+
+This is very similar to an example you have already seen. It puts the
+links in a list and adds a link at the beginning to return to the host.
+The properties it is referencing are located in the snaps themselves at
+`/META-INF/snap.properties`.
+
+[[sample-application-new-content]]
+=== Adding New Content
+
+If you now deploy both the Dog and Cat snaps, two new items will appear
+on the menu bar, each providing content from their respective snaps.
+
+image::images/sampleCat.png[]
+
+If you look at the Cat page you will see it is also displaying some
+properties. The Cat Snap is a little more complex, it has it's own
+`DispatcherServlet` defined in its `web.xml` and a controller defined
+using annotations. If you look at the controller code you will see where
+these two properties come from.
+
+....
+@Controller
+public class CatController {
+
+    @RequestMapping("/meow")
+    public ModelAndView cat(HttpServletRequest request) throws IOException {
+        URL host = request.getServletContext().getResource("host:/WEB-INF/sample.properties");
+        Properties host_props = new Properties();
+        if(host != null){
+            host_props.load(host.openStream());
+        }
+        URL snap = request.getServletContext().getResource("/WEB-INF/sample.properties");
+        Properties snap_props = new Properties();
+        if(snap != null){
+            snap_props.load(snap.openStream());
+        }
+        return new ModelAndView("index").addObject("host", host_props.getProperty("some.property"))
+                    .addObject("snap", snap_props.getProperty("some.property"));
+    }
+}
+        
+....
+
+There are two properties files called `sample.properties` located at the
+same path within both the Cat snap and the host. Each contains a
+property called `some.property` but with distinct value. Looking at the
+code above you can see the `host:` prefix being used to ensure the first
+lookup only looks in the host and skips the snap. These values are then
+placed in the Model for the JSP page to render.
+
+[[sample-application-dynamic-styling]]
+=== Re-styling
+
+Finally the Blue styling snap shows how Snaps can be used in other ways.
+Deploying this will cause all requests to `/styles` to be redirected and
+the application will change in appearance but not content. All this
+happens without re-deploying the host bundle, although you may need to
+do a full refresh to clear your browser's cache.
+
+image::images/sampleBlue.png[]
+
+This is the same page as before, being rendered by the host and the Cat
+snap, but with the style information now coming from the Blue snap.
diff --git a/snaps-guide/src/docs/asciidoc/using-snaps.adoc b/snaps-guide/src/docs/asciidoc/using-snaps.adoc
new file mode 100644
index 0000000..8e477e0
--- /dev/null
+++ b/snaps-guide/src/docs/asciidoc/using-snaps.adoc
@@ -0,0 +1,108 @@
+[[using-snaps]]
+== Using Virgo Snaps in your application
+
+Every snap or host should also be a regular WAB (Web Application
+Bundle), all you have to do is add some additional configuration to
+benefit from VS.
+
+[[using-snaps-configuring-the-host]]
+=== Configuring the Host
+
+In the WAB that is to act as a host to Snaps bundles, all that needs to
+be added is a filter in the hosts ' `web.xml`'. This filter can be
+mapped to any sub path that you want forwarded to registered snaps. It
+is important to note the extra `dispatcher` declarations in the
+`filter-mapping`. Without these internal lookups, resources like JSPs
+won't get passed to the appropriate snap when needed.
+
+....
+<filter>
+    <filter-name>host-filter-name</filter-name>
+    <filter-class>org.eclipse.virgo.snaps.core.SnapHostFilter</filter-class>
+</filter>
+
+<filter-mapping>
+    <filter-name>host-filter-name</filter-name>
+    <url-pattern>/*</url-pattern>
+    <dispatcher>INCLUDE</dispatcher>
+    <dispatcher>FORWARD</dispatcher>
+    <dispatcher>REQUEST</dispatcher>
+</filter-mapping>
+        
+....
+
+[[using-snaps-configuring-a-snap]]
+=== Configuring a Snap
+
+A snap is a normal WAB with the addition of two extra manifest headers.
+The first `Snap-Host` is used to resolve the WAB you want to act as a
+host for this snap. The second `Snap-ContextPath` gives the path the
+snap will answer to. In order to reach the snap a request must be made
+for the host's context path, plus any path in the host's Snaps filter
+followed by the path given with the `Snap-ContextPath` header.
+
+....
+Snap-Host: org.eclipse.virgo.snaps.sample.animal;version="${version:[=.=.=, =.+1)}"
+Snap-ContextPath: /dog
+        
+....
+
+[[using-snaps-taglibs]]
+=== Using the Snaps taglibs
+
+There is a tag library available that makes information about the Snaps
+environment available to the host from within a JSP page. The prefix and
+URI to declare are
+`<%@ taglib prefix="snaps" uri="http://www.eclipse.org/virgo/snaps" 
+            %>`. You can now access an array of all the Snaps currently
+registered with the host. Each snap in the array has two values, the
+first is the context path the Snap is registered with, as given in the
+snaps manifest header. The second is an array of properties, if any,
+given in a property file in the snap. The file must be in the `META-INF
+            ` directory and have a name of `snap.properties`. The
+following code snippet shows all of these in use to produce links to
+each of the installed snaps.
+
+....
+<snaps:snaps var="snaps">
+    <c:forEach var="snap" items="${snaps}">
+        <a href="<c:url value="${snap.contextPath}${snap.properties['link.path']}"/>">
+                     ${snap.properties['link.text']}</a>
+    </c:forEach>
+</snaps:snaps>
+        
+....
+
+The first line uses the Snaps tag library to place the array of snaps
+into the `snaps` variable. Then a `forEach` loop goes through each snap.
+The content of the `forEach` loop is the really interesting bit. The
+first variable `${snap.contextPath}` returns the context path of the
+snap. The two lookups are for properties
+`${snap.properties['something']}`. They rely on the snap having the
+properties file in place with `link.path` and `link.text` defined in it.
+This shows the flexibility you have for defining your own contract
+between the host and its snaps. In this case each snap can contribute
+extra information about how links in a menu should be constructed.
+
+[[using-snaps-host-prefix]]
+=== Referencing Resources
+
+If the snap needs to lookup any resources, this can be done in the
+normal way and if the resource cannot be found in the snap, then the
+host will be checked. Remember that a host and all its snaps use a
+single `ServletContext`. As the snap is always checked first it can hide
+resources at the same path in its host. So if you want to look up a
+resource in the snaps host that exists in the snap simply prefix the
+path with `host:`. This will then cause the Snaps system to bypass the
+snap and look only in its host for the requested resource. If it is not
+found in its host the snap will NOT be checked, the lookup will return
+with nothing.
+
+....
+request.getServletContext().getResource("host:/WEB-INF/sample.properties");
+            
+....
+
+This line of Java code gets the ServletContext from the HttpRequest
+object and then tries to get a resource from the host, bypassing the
+snap.
diff --git a/snaps-guide/src/docs/asciidoc/virgo-snaps-guide.adoc b/snaps-guide/src/docs/asciidoc/virgo-snaps-guide.adoc
new file mode 100644
index 0000000..ac0cadd
--- /dev/null
+++ b/snaps-guide/src/docs/asciidoc/virgo-snaps-guide.adoc
@@ -0,0 +1,26 @@
+= Virgo Snaps User Guide
+Daniel Marthaler
+2017-02-04
+:nofooter:
+
+[%hardbreaks]
+Christopher Frost
+Daniel Marthaler
+
+*Virgo Snaps {project-version}* image:images/virgo-logo-large.png[Eclipse Virgo,300,float="right"]
+
+[%hardbreaks]
+VMware Inc. - initial contribution
+Copyright (C) 2009, 2011 VMware Inc. and others
+
+'''
+
+:toc:
+
+:numbered:
+include::introduction.adoc[]
+include::installing.adoc[]
+include::using-snaps.adoc[]
+include::sample-application.adoc[]
+include::further-reading.adoc[]
+include::known-issues.adoc[]
diff --git a/snaps-guide/src/further-reading.xml b/snaps-guide/src/further-reading.xml
deleted file mode 100644
index 8fabcea..0000000
--- a/snaps-guide/src/further-reading.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-		"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="further-reading">
-	<title>Further Reading</title>
-	<para>
-		The User and Programmer Guides provide a lot of information about using and developing applications for the @umbrella.product.name@.
-	</para>
-	<para>
-		<ulink url="http://www.eclipse.org/virgo/documentation/">
-			@project.name@ Documentation page
-		</ulink>
-	</para>
-	<para>
-		<ulink url="../../virgo-programmer-guide/html/index.html">
-			@tomcat.product.name@ Programmer Guide
-		</ulink>
-	</para>
-	<para>
-		<ulink url="../../virgo-user-guide/html/index.html">
-			@tomcat.product.name@ User Guide
-		</ulink>
-	</para>
-	<para>
-		<ulink url="http://www.slideshare.net/cgfrost/eclipsecon2011-virgo-snaps">
-			Slides from a presentation at EclipseCon 2011 about @snaps.product.name@.
-		</ulink>
-	</para>
-</chapter>
\ No newline at end of file
diff --git a/snaps-guide/src/installing.xml b/snaps-guide/src/installing.xml
deleted file mode 100644
index df2b3d0..0000000
--- a/snaps-guide/src/installing.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-		"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="installation">
-	<title>Installing @snaps.product.name@</title>
-	
-	<section id="installation-zip">
-		<title>Installing from the Zip Download</title>
-		<para>
-			@snaps.product.name.short@ is distributed as a Zip file. This can be downloaded from 
-			<ulink url="http://www.eclipse.org/virgo/download/">here</ulink>.
-		</para>
-		<para>
-			Once the Zip file is unpacked you will find several things inside, including a copy of this documentation in the 
-			<literal>docs</literal> folder. The layout is shown below.
-		</para>
-		<para>
-			<imagedata fileref="images/snapsZipFile.png" align="center" width="12cm"/>
-		</para>
-		<para>
-			Take the bundles and plan in the <literal>dist</literal> folder and place them in either the <literal>/repository/usr</literal> 
-			or <literal>/repository/ext</literal> folder of your Virgo install. Later you need the bundles in the <literal>sample</literal> 
-			folder. If you wish to view the source for @snaps.product.name.short@ or its sample, then these are in the <literal>src</literal> 
-			folder.
-		</para>
-		<para>
-			In order to start the Snaps system as a part of your @tomcat.product.name@, the Snaps plan needs to be referenced 
-			from the <literal>initialArtifacts</literal> property. This is located in the config file at 
-			<literal>${SERVER_HOME}/config/org.eclipse.virgo.kernel.userregion.properties</literal>. The property should be 
-			extended like this.
-		</para>
-		<screen>initialArtifacts=repository:plan/org.eclipse.virgo.kernel.userregion.springdm, 
-		repository:plan/org.eclipse.virgo.web.tomcat, 
-		<emphasis>repository:plan/org.eclipse.virgo.snaps</emphasis></screen>
-		<para>
-			Now you are ready to check that Snaps is working.
-		</para>
-	</section>
-	
-	<section id="installation-post">
-		<title>Verifying it's working</title>
-		<para>
-			The sample application in the Zip file demonstrates all of the features of Snaps. You will cover this application in 
-			detail later, but for now install it to verify that you have a working Snaps install. Start the server up and check 
-			the output it produces contains the following:
-		</para>
-		<screen>&#60;DE0004I&#62; Starting plan 'org.eclipse.virgo.snaps' version '3.0.0'. 
-&#60;DE0004I&#62; Starting bundle 'org.eclipse.virgo.snaps.api' version '@bundle.version@'. 
-&#60;DE0005I&#62; Started bundle 'org.eclipse.virgo.snaps.api' version '@bundle.version@'. 
-&#60;DE0004I&#62; Starting bundle 'org.eclipse.virgo.snaps.core' version '@bundle.version@'. 
-&#60;DE0005I&#62; Started bundle 'org.eclipse.virgo.snaps.core' version '@bundle.version@'. 
-&#60;DE0005I&#62; Started plan 'org.eclipse.virgo.snaps' version '3.0.0'.</screen>
-		<para>
-			Open up the @project.name@ Admin Console by navigating to <literal>http://localhost:8080/admin</literal> and then go 
-			to the artifacts tab to deploy some new bundles. The first bundle to deploy is located at 
-			<literal>/sample/org.eclipse.virgo.snaps.sample.animal-@bundle.version@.jar</literal>, select it in the browser and 
-			upload. In the terminal window you started the @tomcat.product.name@ in you should see the usual messages about the 
-			bundle starting and this message:
-		</para>
-		<screen>&#60;SN0000I&#62; Host created for path '/animal-menu-bar'</screen>
-		<para>
-			This shows that the host has been registered and is ready for Snaps to attach to it. To view the application take 
-			your browser to <literal>http://localhost:8080/animal-menu-bar/</literal>. You should be presented with a green looking 
-			page that has a menu bar with two links on it. One will take you to the page you are currently on while the other goes 
-			back to the admin page.
-		</para>
-		<para>
-			This is all very nice, but it's time to deploy another snap that will dynamicaly add some extra content to the app. The next bundle
-			to deploy is located at <literal>/sample/org.eclipse.virgo.snaps.sample.dog-@bundle.version@.jar</literal>. Deploy it the same way 
-			as the last one using the admin console and check the messages to verify it has been bound to the host:
-		</para>
-		<screen>&#60;SN0010I&#62; Snap bound to path '/animal-menu-bar/dog' </screen>
-		<para>
-			In your browser, go back to the application and refresh the page and a new menu item should now be present. If you click it a new 
-			page will load with content from the newly installed snap. In this case a picture of a dog.
-		</para>
-		<para>	
-			<imagedata fileref="images/sampleDog.png"/>
-		</para>
-		<para>
-			You have now verified that your install is working and can continue on to learn how Snaps works and how you can use it to break up 
-			your web applications.
-		</para>
-	</section>
-	
-</chapter>
diff --git a/snaps-guide/src/introduction.xml b/snaps-guide/src/introduction.xml
deleted file mode 100644
index 9394989..0000000
--- a/snaps-guide/src/introduction.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-		"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="introduction">
-	<title>Introduction</title>
-	<para>
-		This Guide covers @snaps.product.name@ and assumes you are already familiar with OSGi and @project.name@. See <link linkend="further-reading">here</link>.
-	</para>
-	
-	<section id="introduction-concepts">
-		<title>Concepts</title>
-		<para>
-			Using @snaps.product.name@, or @snaps.product.name.short@ for short, you can construct a web application from multiple OSGi 
-			bundles, each of which serves up content for a distinct sub-portion of your application's URL space. @snaps.product.name.short@ 
-			applications are arranged in a parent/child structure, with each application having at most one top-level parent, and zero or more 
-			children/grand children and so on. Parents are referred to as the hosts, children as snaps.
-		</para>
-		<para>
-			<imagedata fileref="images/snapsAndHosts.png"/>
-		</para>
-		<para>
-			Here you see that any <literal>HTTP</literal> requests for '/app' will be dealt with by the host bundle while '/app/orders' 
-			and '/app/billing' will be dealt with by their respective snaps bundles. Each host/snap can use completely different web technologies 
-			to deal with the requests, @snaps.product.name.short@ places no restrictions on your choices. The developer decides how to split 
-			the application up and how closely to couple the host and various snaps. @snaps.product.name.short@ has been designed to be as 
-			un-invasive as possible while still making it easy to share information between the host and its snaps.
-		</para>
-	</section>
-	
-	<section id="introduction-prereqs">
-		<title>Prerequisites</title>
-		<para>
-			@snaps.product.name.short@ requires @tomcat.product.name@ and Java SE 6 or later to be installed. Java is available from 
-			<ulink url="http://www.java.com/">http://www.java.com/</ulink> and elsewhere. @tomcat.product.name@ is available from 
-			<ulink url="http://www.eclipse.org/virgo/download/">here</ulink>.
-		</para>
-	</section>
-	
-</chapter>
\ No newline at end of file
diff --git a/snaps-guide/src/known-issues.xml b/snaps-guide/src/known-issues.xml
deleted file mode 100644
index 0248011..0000000
--- a/snaps-guide/src/known-issues.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-		"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="known-issues">
-	<title>Known Issues</title>
-	<para>
-		This section describes known issues that you might run into, along with corresponding workarounds.
-	</para>
-	
-	<section id="known-issues-jetty-restriction">
-		<title>@jetty.product.name@ Restriction</title>
-		<para>
-			@snaps.product.name@ is not supported on the @jetty.product.name@, please use with the @tomcat.product.name@.
-		</para>
-	</section>
-	
-</chapter>
\ No newline at end of file
diff --git a/snaps-guide/src/sample-application.xml b/snaps-guide/src/sample-application.xml
deleted file mode 100644
index 44d5877..0000000
--- a/snaps-guide/src/sample-application.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-		"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="sample-application">
-	<title>A Sample Application</title>
-	<para>
-		The @snaps.product.name@ Zip file comes with a sample application that you may have already deployed to verify 
-		your @snaps.product.name.short@ install. In this chapter you will look at it in more detail to see how an 
-		application can be composed and see all the Snaps features in action.
-	</para>
-	<section id="sample-application-structure">
-		<title>Structure of the sample application</title>
-		<para>
-			The application is very simple, it consists of just a front end, composed of four bundles, a host with 
-			three Snaps.
-		</para>
-		<para>
-			<imagedata fileref="images/sampleApp.png"/>
-		</para>
-		<para>
-			The host and three snaps show their <literal>Snap-ContextPath</literal>s. The Cat and Dog snaps both 
-			contribute content while the final snap just contributes styling information in the form of <literal>css</literal> 
-			files. The following sections look at each of these in detail.
-		</para>
-	</section>
-	
-	<section id="sample-application-host">
-		<title>The Host bundle</title>
-		<para>
-			This bundle is very simple with no Java code. It defines the Snaps filter in its <literal>web.xml</literal> 
-			just as you have seen in the <link linkend="using-snaps-configuring-the-host">Using Snaps</link> section. The 
-			menu bar uses the taglibs support to render links for each registered Snap.  
-		</para>
-		<programlisting>
-<![CDATA[<ul>
-    <li><a href="<c:url value="/"/>">Home</a></li>
-    <snaps:snaps var="snaps">
-        <c:forEach var="snap" items="${snaps}">
-            <c:if test="${snap.contextPath ne '/styles'}">
-                <li><a href="<c:url value="${snap.contextPath}${snap.properties['link.path']}"/>">
-                    ${snap.properties['link.text']}</a>
-                </li>
-            </c:if>
-        </c:forEach>
-    </snaps:snaps>
-</ul>]]>
-		</programlisting>
-		<para>
-			This is very similar to an example you have already seen. It puts the links in a list and adds a link at the 
-			beginning to return to the host. The properties it is referencing are located in the snaps themselves at 
-			<literal>/META-INF/snap.properties</literal>.
-		</para>
-	</section>
-	
-	<section id="sample-application-new-content">
-		<title>Adding New Content</title>
-		<para>
-			If you now deploy both the Dog and Cat snaps, two new items will appear on the menu bar, each providing content 
-			from their respective snaps.
-		</para>
-		<para>
-			<imagedata fileref="images/sampleCat.png"/>
-		</para>
-		<para>
-			If you look at the Cat page you will see it is also displaying some properties. The Cat Snap is a little more 
-			complex, it has it's own <literal>DispatcherServlet</literal> defined in its <literal>web.xml</literal> and a 
-			controller defined using annotations. If you look at the controller code you will see where these two properties 
-			come from.
-		</para>
-<programlisting>
-<![CDATA[@Controller
-public class CatController {
-
-    @RequestMapping("/meow")
-    public ModelAndView cat(HttpServletRequest request) throws IOException {
-        URL host = request.getServletContext().getResource("host:/WEB-INF/sample.properties");
-        Properties host_props = new Properties();
-        if(host != null){
-            host_props.load(host.openStream());
-        }
-        URL snap = request.getServletContext().getResource("/WEB-INF/sample.properties");
-        Properties snap_props = new Properties();
-        if(snap != null){
-            snap_props.load(snap.openStream());
-        }
-        return new ModelAndView("index").addObject("host", host_props.getProperty("some.property"))
-                    .addObject("snap", snap_props.getProperty("some.property"));
-    }
-}]]>
-		</programlisting>
-		<para>
-			There are two properties files called <literal>sample.properties</literal> located at the same path within both 
-			the Cat snap and the host. Each contains a property called <literal>some.property</literal> but with distinct 
-			value. Looking at the code above you can see the <code>host:</code> prefix being used to ensure the first lookup
-			only looks in the host and skips the snap. These values are then placed in the Model for the JSP page to render.
-		</para>
-	</section>
-	
-	<section id="sample-application-dynamic-styling">
-		<title>Re-styling</title>
-		<para>
-			Finally the Blue styling snap shows how Snaps can be used in other ways. Deploying this will cause all requests 
-			to <literal>/styles</literal> to be redirected and the application will change in appearance but not content. All 
-			this happens without re-deploying the host bundle, although you may need to do a full refresh to clear your browser's 
-			cache.
-		</para>
-		<para>
-			<imagedata fileref="images/sampleBlue.png"/>
-		</para>
-		This is the same page as before, being rendered by the host and the Cat snap, but with the style information now coming
-		from the Blue snap.
-	</section>
-	
-</chapter>
\ No newline at end of file
diff --git a/snaps-guide/src/using-snaps.xml b/snaps-guide/src/using-snaps.xml
deleted file mode 100644
index f61a6e2..0000000
--- a/snaps-guide/src/using-snaps.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-		"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="using-snaps">
-	<title>Using @snaps.product.name@ in your application</title>
-	<para>
-		Every snap or host should also be a regular WAB (Web Application Bundle), all you have to do is add some additional 
-		configuration to benefit from @snaps.product.name.short@.
-	</para>
-	
-	<section id="using-snaps-configuring-the-host">
-		<title>Configuring the Host</title>
-		<para>
-			In the WAB that is to act as a host to Snaps bundles, all that needs to be added is a filter in the hosts '
-			<literal>web.xml</literal>'. This filter can be mapped to any sub path that you want forwarded to registered 
-			snaps. It is important to note the extra <literal>dispatcher</literal> declarations in the <literal>filter-mapping</literal>. 
-			Without these internal lookups, resources like JSPs won't get passed to the appropriate snap when needed.
-		</para>
-		<programlisting>
-<![CDATA[<filter>
-    <filter-name>host-filter-name</filter-name>
-    <filter-class>org.eclipse.virgo.snaps.core.SnapHostFilter</filter-class>
-</filter>
-
-<filter-mapping>
-    <filter-name>host-filter-name</filter-name>
-    <url-pattern>/*</url-pattern>
-    <dispatcher>INCLUDE</dispatcher>
-    <dispatcher>FORWARD</dispatcher>
-    <dispatcher>REQUEST</dispatcher>
-</filter-mapping>]]>
-		</programlisting>
-	</section>
-	
-	<section id="using-snaps-configuring-a-snap">
-		<title>Configuring a Snap</title>
-		<para>
-			A snap is a normal WAB with the addition of two extra manifest headers. The first <literal>Snap-Host</literal> is used 
-			to resolve the WAB you want to act as a host for this snap. The second <literal>Snap-ContextPath</literal> gives the 
-			path the snap will answer to. In order to reach the snap a request must be made for the host's context path, plus any 
-			path in the host's Snaps filter followed by the path given with the <literal>Snap-ContextPath</literal> header.
-		</para>
-		<programlisting>
-<![CDATA[Snap-Host: org.eclipse.virgo.snaps.sample.animal;version="${version:[=.=.=, =.+1)}"
-Snap-ContextPath: /dog]]>
-		</programlisting>
-	</section>
-	
-	<section id="using-snaps-taglibs">
-		<title>Using the Snaps taglibs</title>
-		<para>
-			There is a tag library available that makes information about the Snaps environment available to the host from within a 
-			JSP page. The prefix and URI to declare are <code>&#60;%@ taglib prefix="snaps" uri="http://www.eclipse.org/virgo/snaps" 
-			%&#62;</code>. You can now access an array of all the Snaps currently registered with the host. Each snap in the array
-			has two values, the first is the context path the Snap is registered with, as given in the snaps manifest header. The 
-			second is an array of properties, if any, given in a property file in the snap. The file must be in the <literal>META-INF
-			</literal> directory and have a name of <literal>snap.properties</literal>. The following code snippet shows all of these 
-			in use to produce links to each of the installed snaps.
-		</para>
-		<programlisting>
-<![CDATA[<snaps:snaps var="snaps">
-    <c:forEach var="snap" items="${snaps}">
-        <a href="<c:url value="${snap.contextPath}${snap.properties['link.path']}"/>">
-                     ${snap.properties['link.text']}</a>
-    </c:forEach>
-</snaps:snaps>]]>
-		</programlisting>
-		<para>
-			The first line uses the Snaps tag library to place the array of snaps into the <code>snaps</code> variable. Then a 
-			<code>forEach</code> loop goes through each snap. The content of the <code>forEach</code> loop is the really interesting 
-			bit. The first variable <code>${snap.contextPath}</code> returns the context path of the snap. The two lookups are for 
-			properties <code>${snap.properties['something']}</code>. They rely on the snap having the properties file in place with 
-			<literal>link.path</literal> and <literal>link.text</literal> defined in it. This shows the flexibility you have for defining 
-			your own contract between the host and its snaps. In this case each snap can contribute extra information about how links in 
-			a menu should be constructed.
-		</para>
-	</section>
-	
-	<section id="using-snaps-host-prefix">
-		<title>Referencing Resources</title>
-		<para>
-			If the snap needs to lookup any resources, this can be done in the normal way and if the resource cannot be found in the snap, 
-			then the host will be checked. Remember that a host and all its snaps use a single <literal>ServletContext</literal>. As the 
-			snap is always checked first it can hide resources at the same path in its host. So if you want to look up a resource in the 
-			snaps host that exists in the snap simply prefix the path with <code>host:</code>. This will then cause the Snaps system to 
-			bypass the snap and look only in its host for the requested resource. If it is not found in its host the snap will NOT be 
-			checked, the lookup will return with nothing.
-			<programlisting>
-<![CDATA[request.getServletContext().getResource("host:/WEB-INF/sample.properties");]]>
-			</programlisting>
-			<para>
-				This line of Java code gets the ServletContext from the HttpRequest object and then tries to get a resource from the host, 
-				bypassing the snap.
-			</para>
-		</para>
-	</section>
-	
-</chapter>
\ No newline at end of file
diff --git a/snaps-guide/src/virgo-snaps-guide.xml b/snaps-guide/src/virgo-snaps-guide.xml
deleted file mode 100644
index e981c5c..0000000
--- a/snaps-guide/src/virgo-snaps-guide.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 
-		"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<book xmlns:xi="http://www.w3.org/2001/XInclude">
-	<bookinfo>
-		<title>@snaps.product.name@ User Guide</title>
-		<titleabbrev>Snaps User Guide</titleabbrev>
-		<productname>@snaps.product.name@</productname>
-		<releaseinfo>@bundle.version@</releaseinfo>
-
-		<mediaobject>
-			<imageobject role="fo">
-				<imagedata align="center" fileref="images/virgo-logo-small.png" format="PNG" />
-			</imageobject>
-			<imageobject role="html">
-				<imagedata align="right" fileref="images/virgo-logo-small.png" format="PNG" />
-			</imageobject>
-		</mediaobject>
-
-		<authorgroup>
-			<author>
-				<firstname>Christopher</firstname>
-				<surname>Frost</surname>
-			</author>
-		</authorgroup>
-
-		<legalnotice>
-			<para>
-				Copyright &copy; 2011 VMware Inc.
-			</para>
-		</legalnotice>
-	</bookinfo>
-
-	<toc />
-	<xi:include href="introduction.xml"/>
-	<xi:include href="installing.xml"/>
-	<xi:include href="using-snaps.xml"/>
-	<xi:include href="sample-application.xml"/>
-    <xi:include href="further-reading.xml"/>
-    <xi:include href="known-issues.xml"/>
-</book>
diff --git a/test-apps/simple-host/.classpath b/test-apps/simple-host/.classpath
deleted file mode 100644
index dbef789..0000000
--- a/test-apps/simple-host/.classpath
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry kind="src" path="src/main/webapp"/>
-	<classpathentry kind="src" path="src/main/resources"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.virgo.snaps.core"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/test-apps/simple-host/.project b/test-apps/simple-host/.project
deleted file mode 100644
index aae123e..0000000
--- a/test-apps/simple-host/.project
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>simple-host</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.springframework.ide.eclipse.core.springbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.springsource.server.ide.bundlor.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
-		<nature>org.springframework.ide.eclipse.core.springnature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-	</natures>
-</projectDescription>
diff --git a/test-apps/simple-host/.settings/org.eclipse.virgo.ide.bundlor.core.prefs b/test-apps/simple-host/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
deleted file mode 100644
index ad66f73..0000000
--- a/test-apps/simple-host/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Apr 15 15:27:27 BST 2009
-org.eclipse.virgo.ide.bundlor.core.template.properties.files=../../build.properties;../../build.versions
-eclipse.preferences.version=1
diff --git a/test-apps/simple-host/.settings/org.eclipse.wst.common.project.facet.core.xml b/test-apps/simple-host/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 92aa290..0000000
--- a/test-apps/simple-host/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
-  <installed facet="org.eclipse.virgo.server.bundle" version="1.0"/>
-</faceted-project>
diff --git a/test-apps/simple-host/.springBeans b/test-apps/simple-host/.springBeans
deleted file mode 100644
index d079ca1..0000000
--- a/test-apps/simple-host/.springBeans
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
-	<version>1</version>
-	<pluginVersion><![CDATA[2.2.4.RELEASE]]></pluginVersion>
-	<configSuffixes>
-		<configSuffix><![CDATA[xml]]></configSuffix>
-	</configSuffixes>
-	<enableImports><![CDATA[false]]></enableImports>
-	<configs>
-	</configs>
-	<configSets>
-	</configSets>
-</beansProjectDescription>
diff --git a/test-apps/simple-host/build.xml b/test-apps/simple-host/build.xml
deleted file mode 100644
index 8bb1b59..0000000
--- a/test-apps/simple-host/build.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="simple-host">
-
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../../build.versions"/>
-	<property name="wab.output.dir" value="${basedir}/../../org.eclipse.virgo.snaps.test/target/test-apps"/>
-	<import file="${basedir}/../../virgo-build/wab/default.xml"/>
-
-</project>
diff --git a/test-apps/simple-host/ivy.xml b/test-apps/simple-host/ivy.xml
deleted file mode 100644
index e9db7d1..0000000
--- a/test-apps/simple-host/ivy.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
-        version="1.3">
-
-    <info organisation="org.eclipse.virgo.snaps" module="${ant.project.name}"/>
-
-    <configurations>
-        <include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-    </configurations>
-
-    <publications>
-        <artifact name="${ant.project.name}" type="wab" ext="jar"/>
-        <artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
-    </publications>
-
-    <dependencies>
-        <dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.api" rev="${org.slf4j.api}" conf="provided->runtime"/>
-        <dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.nop" rev="${org.slf4j.nop}" conf="test->runtime"/>
- 	    <dependency org="org.eclipse.virgo.mirrored" name="javax.servlet" rev="${javax.servlet}" conf="provided->runtime"/>
-    </dependencies>
-
-</ivy-module>
diff --git a/test-apps/simple-snap/.classpath b/test-apps/simple-snap/.classpath
deleted file mode 100644
index f91dd9e..0000000
--- a/test-apps/simple-snap/.classpath
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry kind="src" path="src/main/webapp"/>
-	<classpathentry kind="src" path="src/main/resources"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar" sourcepath="/IVY_CACHE/javax.servlet/com.springsource.javax.servlet/3.0.0.v201103241009/com.springsource.javax.servlet-sources-3.0.0.v201103241009.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.osgi/3.8.1.v20120830-144521/org.eclipse.osgi-3.8.1.v20120830-144521.jar" sourcepath="/IVY_CACHE/org.eclipse.osgi/org.eclipse.osgi/3.7.1.R37x_v20110808-1106/org.eclipse.osgi-sources-3.7.1.R37x_v20110808-1106.jar"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.virgo.snaps.core"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/test-apps/simple-snap/.project b/test-apps/simple-snap/.project
deleted file mode 100644
index 4876a4c..0000000
--- a/test-apps/simple-snap/.project
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>simple-snap</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.springframework.ide.eclipse.core.springbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.springsource.server.ide.bundlor.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
-		<nature>org.springframework.ide.eclipse.core.springnature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-	</natures>
-</projectDescription>
diff --git a/test-apps/simple-snap/.settings/org.eclipse.virgo.ide.bundlor.core.prefs b/test-apps/simple-snap/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
deleted file mode 100644
index ad66f73..0000000
--- a/test-apps/simple-snap/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Apr 15 15:27:27 BST 2009
-org.eclipse.virgo.ide.bundlor.core.template.properties.files=../../build.properties;../../build.versions
-eclipse.preferences.version=1
diff --git a/test-apps/simple-snap/.settings/org.eclipse.wst.common.project.facet.core.xml b/test-apps/simple-snap/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 92aa290..0000000
--- a/test-apps/simple-snap/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
-  <installed facet="org.eclipse.virgo.server.bundle" version="1.0"/>
-</faceted-project>
diff --git a/test-apps/simple-snap/.springBeans b/test-apps/simple-snap/.springBeans
deleted file mode 100644
index d079ca1..0000000
--- a/test-apps/simple-snap/.springBeans
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
-	<version>1</version>
-	<pluginVersion><![CDATA[2.2.4.RELEASE]]></pluginVersion>
-	<configSuffixes>
-		<configSuffix><![CDATA[xml]]></configSuffix>
-	</configSuffixes>
-	<enableImports><![CDATA[false]]></enableImports>
-	<configs>
-	</configs>
-	<configSets>
-	</configSets>
-</beansProjectDescription>
diff --git a/test-apps/simple-snap/build.xml b/test-apps/simple-snap/build.xml
deleted file mode 100644
index ee2b873..0000000
--- a/test-apps/simple-snap/build.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="simple-snap">
-
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../../build.versions"/>
-	<property name="wab.output.dir" value="${basedir}/../../org.eclipse.virgo.snaps.test/target/test-apps"/>
-	<import file="${basedir}/../../virgo-build/wab/default.xml"/>
-
-</project>
diff --git a/test-apps/simple-snap/ivy.xml b/test-apps/simple-snap/ivy.xml
deleted file mode 100644
index 5d8257d..0000000
--- a/test-apps/simple-snap/ivy.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
-        version="1.3">
-
-    <info organisation="org.eclipse.virgo.snaps" module="${ant.project.name}"/>
-
-    <configurations>
-        <include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-    </configurations>
-
-    <publications>
-        <artifact name="${ant.project.name}" type="wab" ext="jar"/>
-        <artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
-    </publications>
-
-    <dependencies>
-    	<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.osgi" rev="${org.eclipse.osgi}" conf="provided->runtime"/>
-        <dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.api" rev="${org.slf4j.api}" conf="provided->runtime"/>
-	    <dependency org="org.eclipse.virgo.mirrored" name="javax.servlet" rev="${javax.servlet}" conf="provided->runtime"/>
-        <dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.nop" rev="${org.slf4j.nop}" conf="test->runtime"/>
-    </dependencies>
-
-</ivy-module>
diff --git a/test-apps/spring-snap/.classpath b/test-apps/spring-snap/.classpath
deleted file mode 100644
index da2405f..0000000
--- a/test-apps/spring-snap/.classpath
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry kind="src" path="src/main/webapp"/>
-	<classpathentry kind="src" path="src/main/resources"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar" sourcepath="/IVY_CACHE/javax.servlet/com.springsource.javax.servlet/3.0.0.v201103241009/com.springsource.javax.servlet-sources-3.0.0.v201103241009.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.web.servlet/3.1.0.RELEASE/org.springframework.web.servlet-3.1.0.RELEASE.jar" sourcepath="/IVY_CACHE/org.springframework/org.springframework.web.servlet/3.1.0.RELEASE/org.springframework.web.servlet-sources-3.1.0.RELEASE.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.core/3.1.0.RELEASE/org.springframework.core-3.1.0.RELEASE.jar" sourcepath="/IVY_CACHE/org.springframework/org.springframework.core/3.1.0.RELEASE/org.springframework.core-sources-3.1.0.RELEASE.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.context/3.1.0.RELEASE/org.springframework.context-3.1.0.RELEASE.jar" sourcepath="/IVY_CACHE/org.springframework/org.springframework.context/3.1.0.RELEASE/org.springframework.context-sources-3.1.0.RELEASE.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.web/3.1.0.RELEASE/org.springframework.web-3.1.0.RELEASE.jar" sourcepath="/IVY_CACHE/org.springframework/org.springframework.web/3.1.0.RELEASE/org.springframework.web-sources-3.1.0.RELEASE.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.springframework/org.springframework.beans/3.1.0.RELEASE/org.springframework.beans-3.1.0.RELEASE.jar" sourcepath="/IVY_CACHE/org.springframework/org.springframework.beans/3.1.0.RELEASE/org.springframework.beans-sources-3.1.0.RELEASE.jar"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.virgo.snaps.core"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/test-apps/spring-snap/.project b/test-apps/spring-snap/.project
deleted file mode 100644
index 8f82fb2..0000000
--- a/test-apps/spring-snap/.project
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>spring-snap</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.springframework.ide.eclipse.core.springbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.springsource.server.ide.bundlor.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
-		<nature>org.springframework.ide.eclipse.core.springnature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-	</natures>
-</projectDescription>
diff --git a/test-apps/spring-snap/.settings/org.eclipse.virgo.ide.bundlor.core.prefs b/test-apps/spring-snap/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
deleted file mode 100644
index ad66f73..0000000
--- a/test-apps/spring-snap/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Apr 15 15:27:27 BST 2009
-org.eclipse.virgo.ide.bundlor.core.template.properties.files=../../build.properties;../../build.versions
-eclipse.preferences.version=1
diff --git a/test-apps/spring-snap/.settings/org.eclipse.wst.common.project.facet.core.xml b/test-apps/spring-snap/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 92aa290..0000000
--- a/test-apps/spring-snap/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
-  <installed facet="org.eclipse.virgo.server.bundle" version="1.0"/>
-</faceted-project>
diff --git a/test-apps/spring-snap/.springBeans b/test-apps/spring-snap/.springBeans
deleted file mode 100644
index a8d841a..0000000
--- a/test-apps/spring-snap/.springBeans
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
-	<version>1</version>
-	<pluginVersion><![CDATA[2.2.5.M1]]></pluginVersion>
-	<configSuffixes>
-		<configSuffix><![CDATA[xml]]></configSuffix>
-	</configSuffixes>
-	<enableImports><![CDATA[false]]></enableImports>
-	<configs>
-		<config>src/main/webapp/WEB-INF/snap-servlet.xml</config>
-	</configs>
-	<configSets>
-	</configSets>
-</beansProjectDescription>
diff --git a/test-apps/spring-snap/build.xml b/test-apps/spring-snap/build.xml
deleted file mode 100644
index afe6de0..0000000
--- a/test-apps/spring-snap/build.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="spring-snap">
-
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../../build.versions"/>
-	<property name="wab.output.dir" value="${basedir}/../../org.eclipse.virgo.snaps.test/target/test-apps"/>
-	<import file="${basedir}/../../virgo-build/wab/default.xml"/>
-
-</project>
diff --git a/test-apps/spring-snap/ivy.xml b/test-apps/spring-snap/ivy.xml
deleted file mode 100644
index 58fcd33..0000000
--- a/test-apps/spring-snap/ivy.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
-        version="1.3">
-
-    <info organisation="org.eclipse.virgo.snaps" module="${ant.project.name}"/>
-
-    <configurations>
-        <include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-    </configurations>
-
-    <publications>
-        <artifact name="${ant.project.name}" type="wab" ext="jar"/>
-        <artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
-    </publications>
-
-    <dependencies>
-        <dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.api" rev="${org.slf4j.api}" conf="provided->runtime"/>
-	    <dependency org="org.eclipse.virgo.mirrored" name="javax.servlet" rev="${javax.servlet}" conf="provided->runtime"/>
-	    <dependency org="org.springframework" name="org.springframework.spring-library" rev="${org.springframework}" conf="provided->runtime"/>
-        
-        <dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.nop" rev="${org.slf4j.nop}" conf="test->runtime"/>
-    </dependencies>
-
-</ivy-module>
diff --git a/test-apps/taglib-host/.classpath b/test-apps/taglib-host/.classpath
deleted file mode 100644
index 2093cf8..0000000
--- a/test-apps/taglib-host/.classpath
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry kind="src" path="src/main/webapp"/>
-	<classpathentry kind="src" path="src/main/resources"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.virgo.snaps.api"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/test-apps/taglib-host/.project b/test-apps/taglib-host/.project
deleted file mode 100644
index b2b09b2..0000000
--- a/test-apps/taglib-host/.project
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>taglib-host</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.springframework.ide.eclipse.core.springbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.springsource.server.ide.bundlor.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
-		<nature>org.springframework.ide.eclipse.core.springnature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-	</natures>
-</projectDescription>
diff --git a/test-apps/taglib-host/.settings/org.eclipse.virgo.ide.bundlor.core.prefs b/test-apps/taglib-host/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
deleted file mode 100644
index ad66f73..0000000
--- a/test-apps/taglib-host/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Apr 15 15:27:27 BST 2009
-org.eclipse.virgo.ide.bundlor.core.template.properties.files=../../build.properties;../../build.versions
-eclipse.preferences.version=1
diff --git a/test-apps/taglib-host/.settings/org.eclipse.wst.common.project.facet.core.xml b/test-apps/taglib-host/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 92aa290..0000000
--- a/test-apps/taglib-host/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
-  <installed facet="org.eclipse.virgo.server.bundle" version="1.0"/>
-</faceted-project>
diff --git a/test-apps/taglib-host/.springBeans b/test-apps/taglib-host/.springBeans
deleted file mode 100644
index d079ca1..0000000
--- a/test-apps/taglib-host/.springBeans
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
-	<version>1</version>
-	<pluginVersion><![CDATA[2.2.4.RELEASE]]></pluginVersion>
-	<configSuffixes>
-		<configSuffix><![CDATA[xml]]></configSuffix>
-	</configSuffixes>
-	<enableImports><![CDATA[false]]></enableImports>
-	<configs>
-	</configs>
-	<configSets>
-	</configSets>
-</beansProjectDescription>
diff --git a/test-apps/taglib-host/build.xml b/test-apps/taglib-host/build.xml
deleted file mode 100644
index 09759e4..0000000
--- a/test-apps/taglib-host/build.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="taglib-host">
-
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../../build.versions"/>
-	<property name="wab.output.dir" value="${basedir}/../../org.eclipse.virgo.snaps.test/target/test-apps"/>
-	<import file="${basedir}/../../virgo-build/wab/default.xml"/>
-
-</project>
diff --git a/test-apps/taglib-host/ivy.xml b/test-apps/taglib-host/ivy.xml
deleted file mode 100644
index e9db7d1..0000000
--- a/test-apps/taglib-host/ivy.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
-        version="1.3">
-
-    <info organisation="org.eclipse.virgo.snaps" module="${ant.project.name}"/>
-
-    <configurations>
-        <include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-    </configurations>
-
-    <publications>
-        <artifact name="${ant.project.name}" type="wab" ext="jar"/>
-        <artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
-    </publications>
-
-    <dependencies>
-        <dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.api" rev="${org.slf4j.api}" conf="provided->runtime"/>
-        <dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.nop" rev="${org.slf4j.nop}" conf="test->runtime"/>
- 	    <dependency org="org.eclipse.virgo.mirrored" name="javax.servlet" rev="${javax.servlet}" conf="provided->runtime"/>
-    </dependencies>
-
-</ivy-module>
diff --git a/test-apps/taglib-snap-one/.classpath b/test-apps/taglib-snap-one/.classpath
deleted file mode 100644
index f91dd9e..0000000
--- a/test-apps/taglib-snap-one/.classpath
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry kind="src" path="src/main/webapp"/>
-	<classpathentry kind="src" path="src/main/resources"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar" sourcepath="/IVY_CACHE/javax.servlet/com.springsource.javax.servlet/3.0.0.v201103241009/com.springsource.javax.servlet-sources-3.0.0.v201103241009.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.osgi/3.8.1.v20120830-144521/org.eclipse.osgi-3.8.1.v20120830-144521.jar" sourcepath="/IVY_CACHE/org.eclipse.osgi/org.eclipse.osgi/3.7.1.R37x_v20110808-1106/org.eclipse.osgi-sources-3.7.1.R37x_v20110808-1106.jar"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.virgo.snaps.core"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/test-apps/taglib-snap-one/.project b/test-apps/taglib-snap-one/.project
deleted file mode 100644
index 2d6de7e..0000000
--- a/test-apps/taglib-snap-one/.project
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>taglib-snap-one</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.springframework.ide.eclipse.core.springbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.springsource.server.ide.bundlor.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
-		<nature>org.springframework.ide.eclipse.core.springnature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-	</natures>
-</projectDescription>
diff --git a/test-apps/taglib-snap-one/.settings/org.eclipse.virgo.ide.bundlor.core.prefs b/test-apps/taglib-snap-one/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
deleted file mode 100644
index ad66f73..0000000
--- a/test-apps/taglib-snap-one/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Apr 15 15:27:27 BST 2009
-org.eclipse.virgo.ide.bundlor.core.template.properties.files=../../build.properties;../../build.versions
-eclipse.preferences.version=1
diff --git a/test-apps/taglib-snap-one/.settings/org.eclipse.wst.common.project.facet.core.xml b/test-apps/taglib-snap-one/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 92aa290..0000000
--- a/test-apps/taglib-snap-one/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
-  <installed facet="org.eclipse.virgo.server.bundle" version="1.0"/>
-</faceted-project>
diff --git a/test-apps/taglib-snap-one/.springBeans b/test-apps/taglib-snap-one/.springBeans
deleted file mode 100644
index d079ca1..0000000
--- a/test-apps/taglib-snap-one/.springBeans
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
-	<version>1</version>
-	<pluginVersion><![CDATA[2.2.4.RELEASE]]></pluginVersion>
-	<configSuffixes>
-		<configSuffix><![CDATA[xml]]></configSuffix>
-	</configSuffixes>
-	<enableImports><![CDATA[false]]></enableImports>
-	<configs>
-	</configs>
-	<configSets>
-	</configSets>
-</beansProjectDescription>
diff --git a/test-apps/taglib-snap-one/build.xml b/test-apps/taglib-snap-one/build.xml
deleted file mode 100644
index 18b8899..0000000
--- a/test-apps/taglib-snap-one/build.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="taglib-snap-one">
-
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../../build.versions"/>
-	<property name="wab.output.dir" value="${basedir}/../../org.eclipse.virgo.snaps.test/target/test-apps"/>
-	<import file="${basedir}/../../virgo-build/wab/default.xml"/>
-
-</project>
diff --git a/test-apps/taglib-snap-one/ivy.xml b/test-apps/taglib-snap-one/ivy.xml
deleted file mode 100644
index 5d8257d..0000000
--- a/test-apps/taglib-snap-one/ivy.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
-        version="1.3">
-
-    <info organisation="org.eclipse.virgo.snaps" module="${ant.project.name}"/>
-
-    <configurations>
-        <include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-    </configurations>
-
-    <publications>
-        <artifact name="${ant.project.name}" type="wab" ext="jar"/>
-        <artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
-    </publications>
-
-    <dependencies>
-    	<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.osgi" rev="${org.eclipse.osgi}" conf="provided->runtime"/>
-        <dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.api" rev="${org.slf4j.api}" conf="provided->runtime"/>
-	    <dependency org="org.eclipse.virgo.mirrored" name="javax.servlet" rev="${javax.servlet}" conf="provided->runtime"/>
-        <dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.nop" rev="${org.slf4j.nop}" conf="test->runtime"/>
-    </dependencies>
-
-</ivy-module>
diff --git a/test-apps/taglib-snap-two/.classpath b/test-apps/taglib-snap-two/.classpath
deleted file mode 100644
index f91dd9e..0000000
--- a/test-apps/taglib-snap-two/.classpath
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry kind="src" path="src/main/webapp"/>
-	<classpathentry kind="src" path="src/main/resources"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar" sourcepath="/IVY_CACHE/javax.servlet/com.springsource.javax.servlet/3.0.0.v201103241009/com.springsource.javax.servlet-sources-3.0.0.v201103241009.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.osgi/3.8.1.v20120830-144521/org.eclipse.osgi-3.8.1.v20120830-144521.jar" sourcepath="/IVY_CACHE/org.eclipse.osgi/org.eclipse.osgi/3.7.1.R37x_v20110808-1106/org.eclipse.osgi-sources-3.7.1.R37x_v20110808-1106.jar"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.virgo.snaps.core"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/test-apps/taglib-snap-two/.project b/test-apps/taglib-snap-two/.project
deleted file mode 100644
index 049ba7b..0000000
--- a/test-apps/taglib-snap-two/.project
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>taglib-snap-two</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.springframework.ide.eclipse.core.springbuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.springsource.server.ide.bundlor.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
-		<nature>org.springframework.ide.eclipse.core.springnature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
-	</natures>
-</projectDescription>
diff --git a/test-apps/taglib-snap-two/.settings/org.eclipse.virgo.ide.bundlor.core.prefs b/test-apps/taglib-snap-two/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
deleted file mode 100644
index ad66f73..0000000
--- a/test-apps/taglib-snap-two/.settings/org.eclipse.virgo.ide.bundlor.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Apr 15 15:27:27 BST 2009
-org.eclipse.virgo.ide.bundlor.core.template.properties.files=../../build.properties;../../build.versions
-eclipse.preferences.version=1
diff --git a/test-apps/taglib-snap-two/.settings/org.eclipse.wst.common.project.facet.core.xml b/test-apps/taglib-snap-two/.settings/org.eclipse.wst.common.project.facet.core.xml
deleted file mode 100644
index 92aa290..0000000
--- a/test-apps/taglib-snap-two/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<faceted-project>
-  <installed facet="org.eclipse.virgo.server.bundle" version="1.0"/>
-</faceted-project>
diff --git a/test-apps/taglib-snap-two/.springBeans b/test-apps/taglib-snap-two/.springBeans
deleted file mode 100644
index d079ca1..0000000
--- a/test-apps/taglib-snap-two/.springBeans
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
-	<version>1</version>
-	<pluginVersion><![CDATA[2.2.4.RELEASE]]></pluginVersion>
-	<configSuffixes>
-		<configSuffix><![CDATA[xml]]></configSuffix>
-	</configSuffixes>
-	<enableImports><![CDATA[false]]></enableImports>
-	<configs>
-	</configs>
-	<configSets>
-	</configSets>
-</beansProjectDescription>
diff --git a/test-apps/taglib-snap-two/build.xml b/test-apps/taglib-snap-two/build.xml
deleted file mode 100644
index bc063fd..0000000
--- a/test-apps/taglib-snap-two/build.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="taglib-snap-two">
-
-	<property file="${basedir}/../build.properties"/>
-	<property file="${basedir}/../../build.versions"/>
-	<property name="wab.output.dir" value="${basedir}/../../org.eclipse.virgo.snaps.test/target/test-apps"/>
-	<import file="${basedir}/../../virgo-build/wab/default.xml"/>
-
-</project>
diff --git a/test-apps/taglib-snap-two/ivy.xml b/test-apps/taglib-snap-two/ivy.xml
deleted file mode 100644
index 5d8257d..0000000
--- a/test-apps/taglib-snap-two/ivy.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" href="http://ivyrep.jayasoft.org/ivy-doc.xsl"?>
-<ivy-module
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"
-        version="1.3">
-
-    <info organisation="org.eclipse.virgo.snaps" module="${ant.project.name}"/>
-
-    <configurations>
-        <include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
-    </configurations>
-
-    <publications>
-        <artifact name="${ant.project.name}" type="wab" ext="jar"/>
-        <artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
-    </publications>
-
-    <dependencies>
-    	<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.osgi" rev="${org.eclipse.osgi}" conf="provided->runtime"/>
-        <dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.api" rev="${org.slf4j.api}" conf="provided->runtime"/>
-	    <dependency org="org.eclipse.virgo.mirrored" name="javax.servlet" rev="${javax.servlet}" conf="provided->runtime"/>
-        <dependency org="org.eclipse.virgo.mirrored" name="org.slf4j.nop" rev="${org.slf4j.nop}" conf="test->runtime"/>
-    </dependencies>
-
-</ivy-module>
diff --git a/virgo-build b/virgo-build
deleted file mode 160000
index b3513e2..0000000
--- a/virgo-build
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit b3513e2cdfc6f908d7b03f30a2e863c3203b62cb