This commit was manufactured by cvs2svn to create tag
'GROOVY_1_0_BETA_4'.

git-svn-id: http://svn.codehaus.org/groovy/tags/GROOVY_1_0_BETA_4@933 a5544e8c-8a19-0410-ba12-f9af4593a198
diff --git a/groovy/groovy-native/README b/groovy/groovy-native/README
deleted file mode 100644
index 9049c27..0000000
--- a/groovy/groovy-native/README
+++ /dev/null
@@ -1,120 +0,0 @@
-This is a proof-of-concept for compiling Groovy to native code.
-
-Goals:
- - Better performance / reduced overheads (cpu, memory, start-up time).
- - Appealing alternative to Perl/Python/Ruby/shell-scripts.
- - Simple install (src tarball, RPM, dpkg, windows installer, OS-X whatever).
- - No JVM required.
- - Ability to use Groovy to access less Javaish libraries (POSIXy stuff, MFC, .NET).
- - Ability to use Groovy (and Java) objects from other languages (C, C++, Perl, Python, Ruby, .NET, etc)
-
-WARNING: This is an experiment. It's a proof-of-concept. It probably won't work. But maybe it will.
-
-The first attempt at this package uses the GNU GCJ compiler. This is built on top of GCC and is 
-available for UNIXy platforms (including Linux and OS-X) and Windows (with Cygwin).
-
-These are the first set of goals for the experiment. 
-
-
-
-*** Goal 1 : Native standalone executable of .groovy file.
-[Complete]
-
-The existing Groovy compiler (running on a JVM) can compile .groovy files to .class files.
-GCJ can then compile these .class files to .o binary objects.
-GCJ can link these objects (together with a native version of the Groovy runtime library) into a 
-native executable.
-
-The challenge is building the native runtime library. In particular, identifying if the runtime 
-byte-code generation, custom class-loaders and dynamic proxies will cause problems when moved to 
-native code.
-
-Certain features of the Groovy language may be excluded to meet this goal and a JVM is still 
-required at build time.  
-
-
-
-*** Goal 2 : Native Groovy libraries.
-[In progress]
-
-Compile a collection of .groovy files into a .so that can be linked to from other Groovy or native
-libraries. 
-
-Provide samples for Groovy, C and C++ apps all linking to another Groovy library.
-
-
-
-*** Goal 3 : Native .groovy compiler.
-[Not started]
-
-The actual Groovy compiler should be native (as well as the runtime) allowing Groovy to be developed
-entirely without a JVM present.
-
-
-
-*** Goal 4 : Usable tool set.
-[In progress]
-
-A set of simple wrapper tools should be provided for common features:
- - Compiling and linking a Groovy library or standalone executable.
- - JIT style interpreter (like Python) that runs a Groovy script directly by recompiling if necessary.
- - #!/usr/local/bin/groovy style declaration for scripts allowing direct invocation.
-
-
-
-*** Goal 5 : Runtime interpreter.
-[Not started]
-
-Allow Groovy snippets to be evaluated dynamically at runtime (the functionality of GroovyClassLoader).
-This could get tricky.
-
-
-
-*** Goal 6 : Complete language features.
-[Not started]
-
-Get all the unit tests running on the native Groovy. This excludes Java specific extras such as JMS 
-and Servlets.
-
-
-
-*** Goal 7 : Installation bundle.
-[Not started]
-
-Provide a UNIX installation bundle that contains scripts and instructions for getting native Groovy
-running on a machine.
-
-
-
-*** Goal 8 : Optimizations.
-[Not started]
-
-Profile code to see how it can be made snappier. Especially important is the startup time. A plain
-GCJ compiled Java file starts within <50ms, whereas Groovy is taking much longer.
-
-
-
-*** Goal 9 : Provide Groovy with simple access to native libraries.
-[Not started]
-
-Extend the Groovy library and build tools to allow easy access to code outside of Groovy/Java from 
-Groovy classes.
-
-Something like:
-
-import ncurses // use libncurses/ncurses.h
-class Thingy {
-  void doStuff(name) {
-    ncurses.printw("Hello ${name}") // print string
-    ncurses.refresh()               // display it on screen
-    ncurses.getch()                 // wait for key press
-  }
-}
-
-
-
-
-
-
-
-- Joe Walnes <joe@thoughtworks.net>
diff --git a/groovy/groovy-native/examples/001-standalone-executable/README b/groovy/groovy-native/examples/001-standalone-executable/README
deleted file mode 100644
index fefdd4d..0000000
--- a/groovy/groovy-native/examples/001-standalone-executable/README
+++ /dev/null
@@ -1,15 +0,0 @@
-Read README in parent directory first. And read the README in the grand-parent directory
-before that! Seriously, it's important!
-
-
-
-This demo simply compiles a single Simple.groovy class into a native executable that can
-be invoked using ./Simple
-
-Steps:
- * Read the other README files.
- * ./build.sh
- * ./Simple
-
-
-- Joe Walnes <joe@thoughtworks.net>
diff --git a/groovy/groovy-native/examples/001-standalone-executable/Simple.groovy b/groovy/groovy-native/examples/001-standalone-executable/Simple.groovy
deleted file mode 100644
index b67e0d3..0000000
--- a/groovy/groovy-native/examples/001-standalone-executable/Simple.groovy
+++ /dev/null
@@ -1,19 +0,0 @@
-class Simple {
-  doSomething() {
-    data = ["name": "James", "location": "London"]
-    for (e in data) {
-      println("entry ${e.key} is ${e.value}")
-    }
-  }
-  
-  closureExample(collection) {
-    collection.each { println("value ${it}") }
-  }
-  
-  static void main(args) {
-    values = [1, 2, 3, "abc", "moo"]
-    foo = new Simple()
-    foo.closureExample(values)
-    foo.doSomething()
-  }
-}
diff --git a/groovy/groovy-native/examples/001-standalone-executable/build.sh b/groovy/groovy-native/examples/001-standalone-executable/build.sh
deleted file mode 100644
index e1ca0b1..0000000
--- a/groovy/groovy-native/examples/001-standalone-executable/build.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-$GROOVY_HOME/bin/groovyc Simple.groovy
-CLASSPATH=../../libgroovy/libgroovy.jar gcj --main=Simple -o Simple -L../../libgroovy -lgroovy *.class
-rm -rf *.class
-
diff --git a/groovy/groovy-native/examples/README b/groovy/groovy-native/examples/README
deleted file mode 100644
index a01ddda..0000000
--- a/groovy/groovy-native/examples/README
+++ /dev/null
@@ -1,16 +0,0 @@
-These are the examples for libgroovy. If you don't know what I'm talking about, read
-the README in the parent directory.
-
-Before running any of the examples:
- * Build libgroovy (instructions in libgroovy directory).
- * Set GROOVY_HOME to wherever Groovy may reside.
- * Append the libgroovy directory to LD_LIBRARY_PATH if not already present.
-   
-   export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/groovy-native/libgroovy
-
-The example directory names are prefixed with a number so you can step through the 
-examples in a logical order.
-
-
-- Joe Walnes <joe@thoughtworks.net>
-
diff --git a/groovy/groovy-native/libgroovy/README b/groovy/groovy-native/libgroovy/README
deleted file mode 100644
index 0314b9d..0000000
--- a/groovy/groovy-native/libgroovy/README
+++ /dev/null
@@ -1,59 +0,0 @@
-See README in parent directory before reading on.
-
-Okay, so now you know what this is all about.
-
-
-
-*** Introduction
-
-libgroovy is the core native Groovy library for runtime use. Any Groovy application
-requires this library (and the standard libgcj libraries) to run.
-
-libgroovy only contains a subset of the standard Groovy library. Currently it only
-runs basic Groovy scripts.
-
-You may notice that there are no actual source files here. This is because libgroovy
-is built from the Java source files from Groovy. The source files for the Java ASM 
-library are also required.
-
-
-
-*** Building the library.
-
-This library currently only compiles on UNIX.
-
-You need:
- - JDK.
- - GCJ.
- - The Java source for Groovy and ASM.
- - Bash.
-
-Edit build.sh and set the appropriate variables at the top of the script.
-
-./build.sh
-(may take some time and generate a collection of warnings - but hopefully no errors).
-
-If all goes to plan, you should end up with libgroovy.so and libgroovy.jar in the current
-directory. 
-
-
-
-*** Notes on how the library is built.
-
-The stripped down library only tries to compile the classes listed in groovy-src and asm-src.
-
-Certain tweaks needed to be made to get the source to compile as GCJ only partially supports 
-the J2SE1.4 library. Rather than modify the Groovy source, build.sh patches the source using
-patch.diff to get the code to compile (although nobbling some features in doing so).
-
-
-
-*** How to use the library.
-
-Coming soon. In the mean time, look at one of the examples.
-
-
-
-- Joe Walnes <joe@thoughtworks.net>
-
-
diff --git a/groovy/groovy-native/libgroovy/asm-src b/groovy/groovy-native/libgroovy/asm-src
deleted file mode 100644
index e89f128..0000000
--- a/groovy/groovy-native/libgroovy/asm-src
+++ /dev/null
@@ -1,10 +0,0 @@
-org/objectweb/asm/ClassVisitor.java
-org/objectweb/asm/ClassWriter.java
-org/objectweb/asm/CodeVisitor.java
-org/objectweb/asm/Constants.java
-org/objectweb/asm/CodeWriter.java
-org/objectweb/asm/Edge.java
-org/objectweb/asm/Item.java
-org/objectweb/asm/Label.java
-org/objectweb/asm/Type.java
-org/objectweb/asm/ByteVector.java
diff --git a/groovy/groovy-native/libgroovy/build.sh b/groovy/groovy-native/libgroovy/build.sh
deleted file mode 100644
index fd1be84..0000000
--- a/groovy/groovy-native/libgroovy/build.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/sh
-
-# Ensure these paths are correct
-
-#JAVA_HOME=/usr/local/java
-GROOVY_HOME=~/groovy-1.0-beta-2
-GROOVY_SRC=$GROOVY_HOME/src/main
-ASM_SRC=~/ASM/dev/src
-
-# End of paths
-
-
-
-
-BUILD_DIR=build
-LIB_NAME=groovy
-
-rm -rf $BUILD_DIR lib$LIB_NAME.{jar,so}
-mkdir -p $BUILD_DIR
-
-BASE_DIR=`pwd`
-cd $BUILD_DIR
-BUILD_DIR=`pwd`
-cd $BASE_DIR
-
-# Copy mimimum required source files to temp directory
-(cd $GROOVY_SRC && cp --parents `grep -v '#' $BASE_DIR/groovy-src` $BUILD_DIR)
-(cd $ASM_SRC && cp --parents `grep -v '#' $BASE_DIR/asm-src` $BUILD_DIR)
-
-# Patch the source files
-patch --silent -f -p0 -d $BUILD_DIR < patch.diff
-
-# .java -> .class
-find $BUILD_DIR -name \*.java | xargs gcj -C
-
-# .class -> .jar
-jar -cf lib$LIB_NAME.jar -C $BUILD_DIR .
-
-# .class -> .so
-gcj -shared -o lib$LIB_NAME.so lib$LIB_NAME.jar
-
-# clean up
-rm -rf $BUILD_DIR
-
diff --git a/groovy/groovy-native/libgroovy/groovy-src b/groovy/groovy-native/libgroovy/groovy-src
deleted file mode 100644
index 0030e97..0000000
--- a/groovy/groovy-native/libgroovy/groovy-src
+++ /dev/null
@@ -1,128 +0,0 @@
-groovy/lang/Closure.java
-groovy/lang/ClosureException.java
-groovy/lang/GString.java
-groovy/lang/GroovyClassLoader.java
-groovy/lang/GroovyLog.java
-groovy/lang/GroovyObject.java
-groovy/lang/GroovyObjectSupport.java
-groovy/lang/GroovyShell.java
-groovy/lang/IntRange.java
-groovy/lang/MetaClass.java
-groovy/lang/MetaClassRegistry.java
-groovy/lang/NonEmptySequence.java
-groovy/lang/ObjectRange.java
-groovy/lang/Range.java
-groovy/lang/Reference.java
-groovy/lang/Script.java
-groovy/lang/ScriptContext.java
-groovy/lang/Sequence.java
-groovy/lang/Tuple.java
-groovy/util/Bitwise.java
-groovy/util/BuilderSupport.java
-groovy/util/ClosureComparator.java
-groovy/util/IndentPrinter.java
-groovy/util/MapEntry.java
-groovy/util/Node.java
-groovy/util/NodeBuilder.java
-groovy/util/NodePrinter.java
-groovy/util/OrderBy.java
-org/codehaus/groovy/GroovyException.java
-org/codehaus/groovy/ast/ASTNode.java
-org/codehaus/groovy/ast/ClassNode.java
-org/codehaus/groovy/ast/CodeVisitorSupport.java
-org/codehaus/groovy/ast/CompileUnit.java
-org/codehaus/groovy/ast/ConstructorNode.java
-org/codehaus/groovy/ast/FieldNode.java
-org/codehaus/groovy/ast/GroovyClassVisitor.java
-org/codehaus/groovy/ast/GroovyCodeVisitor.java
-org/codehaus/groovy/ast/InnerClassNode.java
-org/codehaus/groovy/ast/MetadataNode.java
-org/codehaus/groovy/ast/MethodNode.java
-org/codehaus/groovy/ast/MixinNode.java
-org/codehaus/groovy/ast/ModuleNode.java
-org/codehaus/groovy/ast/Parameter.java
-org/codehaus/groovy/ast/PropertyNode.java
-org/codehaus/groovy/ast/expr/ArgumentListExpression.java
-org/codehaus/groovy/ast/expr/ArrayExpression.java
-org/codehaus/groovy/ast/expr/BinaryExpression.java
-org/codehaus/groovy/ast/expr/BooleanExpression.java
-org/codehaus/groovy/ast/expr/ClassExpression.java
-org/codehaus/groovy/ast/expr/ClosureExpression.java
-org/codehaus/groovy/ast/expr/ConstantExpression.java
-org/codehaus/groovy/ast/expr/ConstructorCallExpression.java
-org/codehaus/groovy/ast/expr/Expression.java
-org/codehaus/groovy/ast/expr/FieldExpression.java
-org/codehaus/groovy/ast/expr/GStringExpression.java
-org/codehaus/groovy/ast/expr/ListExpression.java
-org/codehaus/groovy/ast/expr/MapEntryExpression.java
-org/codehaus/groovy/ast/expr/MapExpression.java
-org/codehaus/groovy/ast/expr/MethodCallExpression.java
-org/codehaus/groovy/ast/expr/NamedArgumentListExpression.java
-org/codehaus/groovy/ast/expr/NotExpression.java
-org/codehaus/groovy/ast/expr/PostfixExpression.java
-org/codehaus/groovy/ast/expr/PrefixExpression.java
-org/codehaus/groovy/ast/expr/PropertyExpression.java
-org/codehaus/groovy/ast/expr/RangeExpression.java
-org/codehaus/groovy/ast/expr/RegexExpression.java
-org/codehaus/groovy/ast/expr/StaticMethodCallExpression.java
-org/codehaus/groovy/ast/expr/TupleExpression.java
-org/codehaus/groovy/ast/expr/VariableExpression.java
-org/codehaus/groovy/ast/stmt/AssertStatement.java
-org/codehaus/groovy/ast/stmt/BlockStatement.java
-org/codehaus/groovy/ast/stmt/BreakStatement.java
-org/codehaus/groovy/ast/stmt/CaseStatement.java
-org/codehaus/groovy/ast/stmt/CatchStatement.java
-org/codehaus/groovy/ast/stmt/ContinueStatement.java
-org/codehaus/groovy/ast/stmt/DoWhileStatement.java
-org/codehaus/groovy/ast/stmt/EmptyStatement.java
-org/codehaus/groovy/ast/stmt/ExpressionStatement.java
-org/codehaus/groovy/ast/stmt/ForStatement.java
-org/codehaus/groovy/ast/stmt/IfStatement.java
-org/codehaus/groovy/ast/stmt/ReturnStatement.java
-org/codehaus/groovy/ast/stmt/Statement.java
-org/codehaus/groovy/ast/stmt/SwitchStatement.java
-org/codehaus/groovy/ast/stmt/SynchronizedStatement.java
-org/codehaus/groovy/ast/stmt/ThrowStatement.java
-org/codehaus/groovy/ast/stmt/TryCatchStatement.java
-org/codehaus/groovy/ast/stmt/WhileStatement.java
-org/codehaus/groovy/classgen/ClassGenerator.java
-org/codehaus/groovy/classgen/ClassGeneratorException.java
-org/codehaus/groovy/classgen/VariableScopeCodeVisitor.java
-org/codehaus/groovy/classgen/CompilerFacade.java
-org/codehaus/groovy/classgen/GeneratorContext.java
-org/codehaus/groovy/classgen/MethodCaller.java
-org/codehaus/groovy/classgen/Variable.java
-org/codehaus/groovy/classgen/Verifier.java
-org/codehaus/groovy/classgen/VerifierCodeVisitor.java
-org/codehaus/groovy/runtime/ClassExtender.java
-org/codehaus/groovy/runtime/DefaultGroovyMethods.java
-org/codehaus/groovy/runtime/Invoker.java
-org/codehaus/groovy/runtime/InvokerException.java
-org/codehaus/groovy/runtime/InvokerHelper.java
-org/codehaus/groovy/runtime/InvokerInvocationException.java
-org/codehaus/groovy/runtime/IteratorClosureAdapter.java
-org/codehaus/groovy/runtime/MethodClosure.java
-org/codehaus/groovy/runtime/MethodHelper.java
-org/codehaus/groovy/runtime/NoSuchClassException.java
-org/codehaus/groovy/runtime/NoSuchMethodException.java
-org/codehaus/groovy/runtime/NoSuchPropertyException.java
-org/codehaus/groovy/syntax/AbstractTokenStream.java
-org/codehaus/groovy/syntax/LookAheadExhaustionException.java
-org/codehaus/groovy/syntax/SyntaxException.java
-org/codehaus/groovy/syntax/Token.java
-org/codehaus/groovy/syntax/TokenStream.java
-org/codehaus/groovy/syntax/TokenMismatchException.java
-org/codehaus/groovy/syntax/lexer/AbstractCharStream.java
-org/codehaus/groovy/syntax/lexer/CharStream.java
-org/codehaus/groovy/syntax/lexer/InputStreamCharStream.java
-org/codehaus/groovy/syntax/lexer/Lexer.java
-org/codehaus/groovy/syntax/lexer/LexerTokenStream.java
-org/codehaus/groovy/syntax/lexer/UnexpectedCharacterException.java
-org/codehaus/groovy/syntax/lexer/LexerException.java
-org/codehaus/groovy/syntax/lexer/UnterminatedStringLiteralException.java
-org/codehaus/groovy/syntax/parser/ASTBuilder.java
-org/codehaus/groovy/syntax/parser/CSTNode.java
-org/codehaus/groovy/syntax/parser/UnexpectedTokenException.java
-org/codehaus/groovy/syntax/parser/ParserException.java
-org/codehaus/groovy/syntax/parser/Parser.java
-org/codehaus/groovy/syntax/lexer/StringCharStream.java
diff --git a/groovy/groovy-native/libgroovy/patch.diff b/groovy/groovy-native/libgroovy/patch.diff
deleted file mode 100644
index 68b0bce..0000000
--- a/groovy/groovy-native/libgroovy/patch.diff
+++ /dev/null
@@ -1,82 +0,0 @@
---- org/codehaus/groovy/runtime/Invoker.java	2004-01-06 16:37:49.000000000 +0000
-+++ org/codehaus/groovy/runtime/Invoker.java	2004-01-06 16:38:46.000000000 +0000
-@@ -62,8 +62,6 @@
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- 
--import com.mockobjects.util.NotImplementedException;
--
- /**
-  * A helper class to invoke methods or extract properties on arbitrary Java objects dynamically
-  * 
-@@ -244,7 +242,7 @@
- 					return matcher.group();
- 				}
- 				public void remove() {
--					throw new NotImplementedException();
-+					throw new UnsupportedOperationException();
- 				}
-         	};
-         }
---- ./org/codehaus/groovy/runtime/InvokerHelper.java.orig	2004-01-06 17:13:41.000000000 +0000
-+++ ./org/codehaus/groovy/runtime/InvokerHelper.java	2004-01-06 17:14:24.000000000 +0000
-@@ -170,7 +170,7 @@
-         }
-         else if (object instanceof Matcher) {
-             Matcher matcher = (Matcher) object;
--            return matcher.find();
-+	    throw new UnsupportedOperationException("Matcher.find()");
-         }
-         else if (object instanceof Collection) {
-             Collection collection = (Collection) object;
---- ./org/codehaus/groovy/runtime/Invoker.java.orig	2004-01-06 17:14:52.000000000 +0000
-+++ ./org/codehaus/groovy/runtime/Invoker.java	2004-01-06 17:17:41.000000000 +0000
-@@ -227,8 +227,7 @@
- 				public boolean hasNext() {
- 					if (done) return false;
- 					if (!found) {
--						found = matcher.find();
--						if (!found) done = true;
-+						throw new UnsupportedOperationException("Matcher.find()");
- 					}
- 					return found;
- 				}
-@@ -239,7 +238,7 @@
- 						}
- 					}
- 					found = false;
--					return matcher.group();
-+					throw new UnsupportedOperationException("Matcher.group()");
- 				}
- 				public void remove() {
- 					throw new UnsupportedOperationException();
-@@ -485,7 +484,7 @@
-     		pattern = Pattern.compile(toString(right));
-     	}
-     	String stringToCompare = toString(left);
--    	return pattern.matcher(stringToCompare).matches();
-+	throw new UnsupportedOperationException("Matcher");
-     }
- 
- 	/**
---- ./org/codehaus/groovy/runtime/DefaultGroovyMethods.java.orig	2004-01-06 17:18:17.000000000 +0000
-+++ ./org/codehaus/groovy/runtime/DefaultGroovyMethods.java	2004-01-06 17:19:36.000000000 +0000
-@@ -221,7 +221,7 @@
-     }
- 
-     public static boolean isCase(Pattern caseValue, Object switchValue) {
--        return caseValue.matcher(switchValue.toString()).matches();
-+	throw new UnsupportedOperationException("Matcher.matches()");
-     }
- 
-     // Collection based methods
-@@ -850,8 +850,7 @@
-     }
- 
-     public static String minus(String left, Object value) {
--        String text = toString(value);
--        return left.replaceFirst(text, "");
-+	throw new UnsupportedOperationException("String.replaceFirst()");
-     }
- 
-     public static String multiply(String self, Number factor) {
diff --git a/groovy/modules/groovy-swt/.classpath b/groovy/modules/groovy-swt/.classpath
deleted file mode 100644
index 05ca103..0000000
--- a/groovy/modules/groovy-swt/.classpath
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main"/>
-	<classpathentry kind="src" path="src/examples"/>
-	<classpathentry output="target/test-classes" kind="src" path="src/test"/>
-	<classpathentry kind="var" path="MAVEN_REPO/junit/jars/junit-3.8.1.jar"/>
-	<classpathentry sourcepath="JRE_SRC" kind="var" path="JRE_LIB"/>
-	<classpathentry kind="var" path="MAVEN_REPO/asm/jars/asm-1.4.1.jar"/>
-	<classpathentry kind="var" path="MAVEN_REPO/asm/jars/asm-util-1.4.1.jar"/>
-	<classpathentry kind="var" path="MAVEN_REPO/asm/jars/asm-attrs-1.4.1.jar"/>
-	<classpathentry kind="var" path="MAVEN_REPO/commons-collections/jars/commons-collections-3.0.jar"/>
-	<classpathentry kind="var" path="MAVEN_REPO/commons-logging/jars/commons-logging-1.0.3.jar"/>
-	<classpathentry kind="var" path="MAVEN_REPO/groovy/jars/groovy-1.0-beta-4-snapshot.jar"/>
-	<classpathentry kind="var" path="MAVEN_REPO/swt/jars/swt-win32-3.0m7.jar"/>
-	<classpathentry kind="var" path="MAVEN_REPO/swt/jars/jface-3.0m7.jar"/>
-	<classpathentry kind="var" path="MAVEN_REPO/swt/jars/forms-3.0m7.jar"/>
-	<classpathentry kind="var" path="MAVEN_REPO/swt/jars/runtime-3.0m7.jar"/>
-	<classpathentry kind="var" path="MAVEN_REPO/swt/jars/osgi-3.0m7.jar"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
diff --git a/groovy/modules/groovy-swt/.cvsignore b/groovy/modules/groovy-swt/.cvsignore
deleted file mode 100644
index 4e1b955..0000000
--- a/groovy/modules/groovy-swt/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*.log
-target
diff --git a/groovy/modules/groovy-swt/.project b/groovy/modules/groovy-swt/.project
deleted file mode 100644
index 9e5b5c0..0000000
--- a/groovy/modules/groovy-swt/.project
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<projectDescription>
-  <name>groovy-swt</name>
-  <comment>groovy-swt</comment>
-  <projects>
-  </projects>
-  <buildSpec>
-    <buildCommand>
-      <name>org.eclipse.jdt.core.javabuilder</name>
-      <arguments>
-      </arguments>
-    </buildCommand>
-  </buildSpec>
-  <natures>
-    <nature>org.eclipse.jdt.core.javanature</nature>
-  </natures>
-</projectDescription>
\ No newline at end of file
diff --git a/groovy/modules/groovy-swt/LICENSE.txt b/groovy/modules/groovy-swt/LICENSE.txt
deleted file mode 100644
index 0f6cb23..0000000
--- a/groovy/modules/groovy-swt/LICENSE.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-/*
- $Id$
-
- Copyright 2003 (C) James Strachan and Bob Mcwhirter. All Rights Reserved.
-
- Redistribution and use of this software and associated documentation
- ("Software"), with or without modification, are permitted provided
- that the following conditions are met:
-
- 1. Redistributions of source code must retain copyright
-    statements and notices.  Redistributions must also contain a
-    copy of this document.
-
- 2. Redistributions in binary form must reproduce the
-    above copyright notice, this list of conditions and the
-    following disclaimer in the documentation and/or other
-    materials provided with the distribution.
-
- 3. The name "groovy" must not be used to endorse or promote
-    products derived from this Software without prior written
-    permission of The Codehaus.  For written permission,
-    please contact info@codehaus.org.
-
- 4. Products derived from this Software may not be called "groovy"
-    nor may "groovy" appear in their names without prior written
-    permission of The Codehaus. "groovy" is a registered
-    trademark of The Codehaus.
-
- 5. Due credit should be given to The Codehaus -
-    http://groovy.codehaus.org/
-
- THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
- NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
- THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
diff --git a/groovy/modules/groovy-swt/maven.xml b/groovy/modules/groovy-swt/maven.xml
deleted file mode 100644
index 21e4482..0000000
--- a/groovy/modules/groovy-swt/maven.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<project default="default" xmlns:j="jelly:core" xmlns:u="jelly:util" >
-
-  <goal name="default" prereqs="clean, groovy:compile-tests">
-  </goal>	
-  
-  <goal name="setclasspath">
-    <path id="test.classpath">
-      <pathelement path="${maven.build.dest}"/>
-      <pathelement path="target/classes"/>
-      <pathelement path="target/test-classes"/>
-      <path refid="maven.dependency.classpath"/>
-    </path>
-    <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" classpathref="test.classpath"/> 
-  </goal>
-  
-  <goal name="groovy:compile" prereqs="java:compile, setclasspath" description="Compiles the main code">
-    <copy todir="${basedir}/target/classes">
-      <fileset dir="${basedir}/src/main">
-        <include name="**/*.groovy"/>
-        <exclude name="CVS/*"/>
-      </fileset>
-    </copy>
-    <groovyc destdir="${basedir}/target/classes" srcdir="${basedir}/target/classes" listfiles="true">
-      <classpath refid="test.classpath"/>
-    </groovyc>
-  </goal>
-  
-  <goal name="groovy:compile-tests" prereqs="groovy:compile, setclasspath" description="Compiles the test cases">
-    <mkdir dir="${basedir}/target/test-classes"/>
-    <copy todir="${basedir}/target/test-classes">
-      <fileset dir="${basedir}/src/test">
-        <include name="**/*.groovy"/>
-        <exclude name="**/notworking/*.groovy"/>
-        <exclude name="**/parser/*.groovy"/>
-        <exclude name="CVS/*"/>
-      </fileset>
-    </copy>
-    <touch>
-		<fileset dir="${basedir}/target/test-classes" includes="**/*.groovy"/>
-    </touch>
-    <groovyc destdir="${basedir}/target/test-classes" srcdir="${basedir}/target/test-classes" listfiles="true">
-      	<classpath refid="test.classpath"/>
-    </groovyc>
-  </goal>
-
-  
-</project>
diff --git a/groovy/modules/groovy-swt/project.properties b/groovy/modules/groovy-swt/project.properties
deleted file mode 100644
index 9f423d2..0000000
--- a/groovy/modules/groovy-swt/project.properties
+++ /dev/null
@@ -1,46 +0,0 @@
-maven.compile.source=1.4
-maven.compile.target=1.4
-maven.test.source=1.4
-maven.compile.deprecation=true
-maven.compile.debug=true
-maven.compile.optimize=true
-
-maven.javadoc.links=http://java.sun.com/j2se/1.4.1/docs/api/
-maven.javadoc.source=1.4
-
-maven.test.search.classdir = true
-
-maven.junit.fork=true
-maven.junit.usefile=true
-
-groovy.install.staging.dest=${maven.build.dir}/install/
-maven.html2xdoc.dir=${maven.build.dir}/html
-
-maven.xdoc.date = left
-
-#####################################################
-# codehaus theme
-#####################################################
-maven.xdoc.theme.url=http://codehaus.org/codehaus-style.css
-
-#####################################################
-# Where the jars are uploaded
-#####################################################
-maven.repo.central = dist.codehaus.org
-maven.repo.central.directory = /www/dist.codehaus.org
-
-#maven.repo.remote=http://www.ibiblio.org/maven
-maven.repo.remote=http://dist.codehaus.org
-
-
-#####################################################
-# swt platform
-# possible values, win32, linux-gtk, macosx
-# 
-# for linux-gtk enable gtk deps in project.xml
-#####################################################
-platform=win32
-#platform=linux-gtk
-#platform=macosx
-
-
diff --git a/groovy/modules/groovy-swt/project.xml b/groovy/modules/groovy-swt/project.xml
deleted file mode 100644
index 71ec86a..0000000
--- a/groovy/modules/groovy-swt/project.xml
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<project>
-	<pomVersion>3</pomVersion>
-	<name>groovy-swt</name>
-	<groupId>groovy-swt</groupId>
-	<id>groovy-swt</id>
-	<currentVersion>0.1-dev</currentVersion>
-	<organization>
-		<name>The Codehaus</name>
-		<url>http://codehaus.org</url>
-		<logo>http://codehaus.org/codehaus-small.gif</logo>
-	</organization>
-	<inceptionYear>2004</inceptionYear>
-	<package>groovy.swt, groovy.jface</package>
-	
-	<description>groovy-swt</description>
-	
-	<url>http://groovy.codehaus.org/</url>
-	
-	<siteAddress>groovy.codehaus.org</siteAddress>
-	<siteDirectory>/www/groovy.codehaus.org</siteDirectory>
-	<issueTrackingUrl>http://jira.codehaus.org/secure/BrowseProject.jspa?id=10242&amp;report=roadmap</issueTrackingUrl>
-	
-	<repository>
-		<connection>scm:cvs:pserver:anonymous@cvs.codehaus.org:/scm/cvspublic:groovy/modules/groovy-swt</connection>
-		<developerConnection>scm:cvs:ext:${maven.username}@cvs.codehaus.org:/scm/cvspublic:groovy/modules/groovy-swt</developerConnection>
-		<url>http://cvs.groovy.codehaus.org/viewcvs.cgi/groovy/modules/groovy-swt</url>
-	</repository>
-	
-	<versions />
-	
-	<developers>
-		<developer>
-			<name>Christiaan ten Klooster</name>
-			<id>ckl</id>
-			<email>ckl@dacelo.nl</email>
-			<organization>Dacelo WebDevelopment</organization>
-			<roles>
-				<role>Founder</role>
-				<role>Developer</role>
-			</roles>
-		</developer>
-	</developers>
-	
-	<dependencies>
-		<!-- groovy dependencies -->
-		<dependency>
-			<id>asm</id>
-			<version>1.4.1</version>
-			<url>http://asm.objectweb.org/</url>
-		</dependency>
-		<dependency>
-			<id>asm+util</id>
-			<version>1.4.1</version>
-			<url>http://asm.objectweb.org/</url>
-		</dependency>
-		<dependency>
-			<id>asm+attrs</id>
-			<version>1.4.1</version>
-			<url>http://asm.objectweb.org/</url>
-		</dependency>
-		<dependency>
-			<id>commons-collections</id>
-			<version>3.0</version>
-		</dependency>
-		<dependency>
-			<id>commons-logging</id>
-			<version>1.0.3</version>
-		</dependency>
-		<dependency>
-			<id>groovy</id>
-			<version>1.0-beta-4-snapshot</version>
-		</dependency>
-  	
-		<!-- swt libs -->
-		<dependency>
-			<id>swt-${platform}</id>
-			<groupId>swt</groupId>
-			<version>3.0m7</version>
-		</dependency>
-		<dependency>
-			<id>jface</id>
-			<groupId>swt</groupId>
-			<version>3.0m7</version>
-		</dependency>
-		<dependency>
-			<id>forms</id>
-			<groupId>swt</groupId>
-			<version>3.0m7</version>
-		</dependency>
-		<dependency>
-			<id>runtime</id>
-			<groupId>swt</groupId>
-			<version>3.0m7</version>
-		</dependency>
-		<dependency>
-			<id>osgi</id>
-			<groupId>swt</groupId>
-			<version>3.0m7</version>
-		</dependency>           
-		<!-- swt-gtk dependencies , disabled by default -->
-		<!-- dependency>
-			<id>swt-gtk-pi</id>
-			<groupId>swt</groupId>
-			<version>3.0m7</version>
-		</dependency>
-		<dependency>
-			<id>swt-mozilla</id>
-			<groupId>swt</groupId>
-			<version>3.0m7</version>
-		</dependency -->       
-  
-		<!-- only used for testing/demos -->
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<version>3.8.1</version>
-		</dependency>
-	
-	</dependencies>
-
-	
-	<build>
-		<nagEmailAddress>groovy-scm@lists.codehaus.org</nagEmailAddress>
-		<sourceDirectory>src/main</sourceDirectory>
-		<unitTestSourceDirectory>src/test</unitTestSourceDirectory>
-		<aspectSourceDirectory/>
-		
-		<unitTest>
-			<resources>
-				<resource>
-					<directory>src/test</directory>
-					<includes>
-						<include>**/*.properties</include>
-						<include>**/*.xml</include>
-					</includes>
-				</resource>
-			</resources>
-			
-			<includes>
-				<include>**/*Test.*</include>
-				<include>**/*Bug.*</include>
-			</includes>
-		
-		</unitTest>
-		
-		<resources>
-			<resource>
-				<directory>src/main</directory>
-				<includes>
-					<include>**/*.properties</include>
-					<include>**/*.xml</include>
-				</includes>
-			</resource>
-		</resources>
-	
-	</build>
-	
-	<reports>
-		<report>maven-license-plugin</report>
-		<report>maven-checkstyle-plugin</report>
-		<report>maven-pmd-plugin</report>
-		<report>maven-jdepend-plugin</report>
-		<report>maven-changelog-plugin</report>
-		<!-- report>maven-statcvs-plugin</report -->
-		<report>maven-file-activity-plugin</report>
-		<report>maven-developer-activity-plugin</report>
-		<report>maven-jxr-plugin</report>
-		<report>maven-javadoc-plugin</report>
-		<report>maven-junit-report-plugin</report>
-		<report>maven-faq-plugin</report>
-		<report>maven-clover-plugin</report>
-		<report>maven-changes-plugin</report>
-	</reports>
-
-</project>
diff --git a/groovy/modules/groovy-swt/settings.props b/groovy/modules/groovy-swt/settings.props
deleted file mode 100644
index 3a9cf66..0000000
--- a/groovy/modules/groovy-swt/settings.props
+++ /dev/null
@@ -1,2 +0,0 @@
-#Fri Feb 20 19:43:20 CET 2004

-var1=true

diff --git a/groovy/modules/groovy-swt/src/examples/groovy/jface/ApplicationWindowDemo.groovy b/groovy/modules/groovy-swt/src/examples/groovy/jface/ApplicationWindowDemo.groovy
deleted file mode 100644
index 09f6d0f..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/jface/ApplicationWindowDemo.groovy
+++ /dev/null
@@ -1,36 +0,0 @@
-package groovy.jface.examples

-

-import groovy.jface.JFaceBuilder

-

-class ApplicationWindowDemo {

-    property mainapp

-        

-    void run() {

-        swt = new JFaceBuilder()

-        

-	    mainapp = swt.applicationWindow() { 	

-	         	

-	         	menuManager( text:"File" ) {

-	         		action ( text:"Very Nice", closure:{ println "Very Nice !!!" } )

-	         		separator()

-	         		action ( text:"Check me", checked:true, closure:{ println "I've been checked" } )

-	         	}

-	

-	         	menuManager( text:"Edit" ) {

-	         		action ( text:"Say Hi Statusbar", closure:{ mainapp.setStatus('Hello ...') } )

-	         	}

-	       

-				fillLayout ( type:"vertical" )

-	

-				label( text:"A big red label", background:[204, 0, 0] ) 

-				label( text:"I can barelly read this", foreground:[0,200,0] )  

-				label( text:"It sure looks like the dutch flag", foreground:[0,0,150], background:[0, 0, 153] )

-	 

-		}

-  

-		mainapp.MenuBarManager.updateAll( true )

-		mainapp.getShell().pack()

-		mainapp.open()

-

-	}

-}

diff --git a/groovy/modules/groovy-swt/src/examples/groovy/jface/PreferencesDemo.groovy b/groovy/modules/groovy-swt/src/examples/groovy/jface/PreferencesDemo.groovy
deleted file mode 100644
index 9a24661..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/jface/PreferencesDemo.groovy
+++ /dev/null
@@ -1,39 +0,0 @@
-package groovy.jface.examples

-

-import groovy.jface.JFaceBuilder

-

-class PreferencesDemo {

-	property pd

-

-    void run() {

-        jface = new JFaceBuilder()

-		mainapp = jface.applicationWindow() { 	        

-		

-			pd = preferenceDialog() {

-				

-				preferencePage( title:"General settings", filename:"settings.props" ) { 

-					booleanFieldEditor (propertyName:"var1", title:"It's boolean" )

-					colorFieldEditor( propertyName:"var2", title:"MainColor" )

-					directoryFieldEditor(propertyName:"var3", title:"Directory"	)

-					fileFieldEditor( propertyName:"var4", title:"File" )

-					fontFieldEditor( propertyName:"var5", title:"Font" )

-					integerFieldEditor( propertyName:"var6", title:"Integer" )

-					stringFieldEditor( propertyName:"var7", title:"String" )

-				} 

-								

-				preferencePage( title:"Personal settings", filename:"settings.props" ) { 

-					booleanFieldEditor( propertyName:"var8", title:"It's boolean" )

-					colorFieldEditor( propertyName:"var2", title:"MainColor" )

-					directoryFieldEditor( propertyName:"var9", title:"Directory" )

-					fileFieldEditor( propertyName:"var10", title:"File" )

-					fontFieldEditor( propertyName:"var11", title:"Font" )

-					integerFieldEditor( propertyName:"var12", title:"Integer" )

-					stringFieldEditor( propertyName:"var13", title:"String" )

-				} 

-			}

-		}

-		

-	  	pd.open()

-	}

-  

-}

diff --git a/groovy/modules/groovy-swt/src/examples/groovy/jface/RunDemoApplicationWindow.java b/groovy/modules/groovy-swt/src/examples/groovy/jface/RunDemoApplicationWindow.java
deleted file mode 100644
index ea75fc9..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/jface/RunDemoApplicationWindow.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package groovy.jface;
-
-import groovy.lang.GroovyObject;
-import groovy.swt.SwtTest;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class RunDemoApplicationWindow extends SwtTest {
-    public void testWizardDemo() throws Exception {
-        GroovyObject object = compile("src/examples/groovy/jface/ApplicationWindowDemo.groovy");
-        object.invokeMethod("run", null);
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/examples/groovy/jface/RunDemoPreferences.java b/groovy/modules/groovy-swt/src/examples/groovy/jface/RunDemoPreferences.java
deleted file mode 100644
index 6f0ff54..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/jface/RunDemoPreferences.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package groovy.jface;
-
-import groovy.lang.GroovyObject;
-import groovy.swt.SwtTest;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class RunDemoPreferences extends SwtTest {
-    public void testPreferencesDemo() throws Exception {
-        GroovyObject object = compile("src/examples/groovy/jface/PreferencesDemo.groovy");
-        object.invokeMethod("run", null);
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/examples/groovy/jface/RunDemoWizard.java b/groovy/modules/groovy-swt/src/examples/groovy/jface/RunDemoWizard.java
deleted file mode 100644
index 706400f..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/jface/RunDemoWizard.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package groovy.jface;
-
-import groovy.lang.GroovyObject;
-import groovy.swt.SwtTest;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class RunDemoWizard extends SwtTest {
-    public void testWizardDemo() throws Exception {
-        GroovyObject object = compile("src/examples/groovy/jface/WizardDemo.groovy");
-        object.invokeMethod("run", null);
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/examples/groovy/jface/WizardDemo.groovy b/groovy/modules/groovy-swt/src/examples/groovy/jface/WizardDemo.groovy
deleted file mode 100644
index 60401ac..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/jface/WizardDemo.groovy
+++ /dev/null
@@ -1,87 +0,0 @@
-package groovy.jface.examples

-

-import groovy.jface.JFaceBuilder

-

-class WizardDemo extends Script {

-    property mainapp

-    property wizardPage1

-    property text    

-    property wizardDialog1

-    

-    run() {

-		jface = new JFaceBuilder()

-

-		mainapp = jface.applicationWindow() { 	

-		

-  			wizardDialog1 = wizardDialog() {

-  			

-				wizardPage1 = wizardPage( title:"Step 1", description:"Step 1", closure: { parent |

-					jface.composite( parent ) {

-						gridLayout( numColumns:2 )

-						label( text:"Some input" )

-

-						text = text()

-						label( text:"Label 1" )

-						

-						button( text:"Set Message") {

-							onEvent( type:"Selection" , closure: { 

-								wizardPage1.setMessage( text.getText() ) 								

-							})

-						}	

-	

-						label( text:"Label 2" )

-						button( text:"Set Error Message" ) {

-							onEvent( type:"Selection", closure: {

-								wizardPage1.setErrorMessage('ErrorMessage: This step is not complete') 

-							})

-						}

-						

-						label( text:"Label 3" )

-						button ( text:"Set Page Complete" ) {

-							onEvent ( type:"Selection", closure: {

-								wizardPage1.setPageComplete(true)

-							})

-						}

-					} 

-		

-				})

-				

-				wizardPage2 = wizardPage( title:"Step 2", description:"Step 2", closure: { parent |

-					jface.composite( parent ) {

-						gridLayout( numColumns:"2" )

-						label( text:"Label 3" )

-						button( text:"Do nothing" )

-					}

-				})

-							

-				wizardPage3 = wizardPage( title:"Step 3", description:"Step 3", closure: { parent |

-					jface.composite( parent ) {

-						gridLayout( numColumns:"2" )

-						label( text:"Label 4" )

-						button( text:"Do nothing" )

-					}

-				})	

-				

-			} 

-			

-		}

-		

-		wizardPage1.setPageComplete(false)

-		wizardDialog1.open()

-

-	}

-	

-	void onPerformFinish() {

-		println "onPerformFinish called ..."

-	}	 

-

-	void onPerformCancel() {

-		println "onPerformCancel called ......"

-	}

-	

-}

-

-

-

-

-

diff --git a/groovy/modules/groovy-swt/src/examples/groovy/swt/About.groovy b/groovy/modules/groovy-swt/src/examples/groovy/swt/About.groovy
deleted file mode 100644
index 5034629..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/swt/About.groovy
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.dacelo.guidedsales.ui

-

-class About extends Script {

-        

-    run( ) {       

-		subapp = guiBuilder.shell( parent ) {

-		

-			gridLayout()

-			

-			group( text:"Groovy Swt", background:[255, 255, 255] ) {

-				gridLayout()

-				

-				label( text:"groove fun !" ,background:[255, 255, 255] )

-				label( text:"Email: ckl@dacelo.nl", background:[255, 255, 255] )

-			}

-		}

-

-		subapp.pack()

-		subapp.open()

-	}

-	

-}

diff --git a/groovy/modules/groovy-swt/src/examples/groovy/swt/BrowserDemo.groovy b/groovy/modules/groovy-swt/src/examples/groovy/swt/BrowserDemo.groovy
deleted file mode 100644
index f5c3bf0..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/swt/BrowserDemo.groovy
+++ /dev/null
@@ -1,96 +0,0 @@
-package groovy.swt.examples

-

-import groovy.swt.SwtBuilder

-

-class BrowserSwtDemo extends Script {

-    property swt

-    property shell

-    property browser

-    property location

-    property status

-    property progressBar

-        

-    void run() {

-        swt = new SwtBuilder()

-        

-        shell = swt.shell( text:"The Browser Test", location:[100,100], size:[700,600] ) {

-         	gridLayout(numColumns:3) 

-

-        	toolBar( style:"none" ) {

-        		gridData( horizontalSpan:3 )

-        	

-        		toolItem(style:"push", text:"Back") {

-        			onEvent(type:"Selection", closure:{ browser.back() }) 

-        		}

-        		

-        		toolItem(style:"push", text:"Forward") {

-        			onEvent(type:"Selection", closure:{ browser.forward() } ) 

-        		}

-        		

-        		toolItem(style:"push", text:"Stop") {	

-        			onEvent(type:"Selection", closure:{ browser.stop() } )

-        		}

-        		

-        		toolItem(style:"push", text:"Refresh") { 

-        			onEvent(type:"Selection", closure:{ browser.refresh() } )

-        		}

-        		

-        		toolItem(style:"push", text:"Go") {

-        			onEvent(type:"Selection", closure:{ 

-        				browser.setUrl( location.getText() ) 

-        			})

-        		}

-        	}

-

-        	label( style:"none", text:"Address" )

-        	location = text( style:"Border" ) {  

-	        	gridData( horizontalAlignment:"fill", horizontalSpan:2, grabExcessHorizontalSpace:true )

-        	}

-

-

-			browser = browser( style:"border" ) {

-				gridData( horizontalAlignment:"fill", verticalAlignment:"fill", horizontalSpan:3, grabExcessHorizontalSpace:true, grabExcessVerticalSpace:true)

-

- 				locationListener(type:"changed", closure: { event |

-					location.setText( event.location )

-				})

-	 	

-				progressListener(type:"changed", closure: { event |

-					if (event.total != 0) {

-						ratio = event.current * 100 / event.total

-						progressBar.setSelection( Integer.parseInt("" + Math.round(Double.parseDouble("" + ratio))) )

-					}

-				})

-			

-				progressListener(type:"completed", closure: { 

-					progressBar.setSelection(0)

-				})

-		

-				statusTextListener( closure: { event |

-					status.setText(event.text)	

-				})

-				

-			}

-		

-			status = label( style:"none", text:"" ) {

-				gridData( style:"fill_horizontal", horizontalSpan:2) 

-			}

-		

-			progressBar = progressBar () {

-				gridData( horizontalAlignment:"end" )

-			}

-				

-        }

-        

-		browser.setUrl( "http://feeds.codehaus.org/" )

-		shell.open()

-	

-		while(! shell.isDisposed()) { 

-			if (! shell.display.readAndDispatch()) {

-				shell.display.sleep();

-			}

-		}

-			

-		shell.display.dispose()	

-	}

-}

diff --git a/groovy/modules/groovy-swt/src/examples/groovy/swt/FormDemo.groovy b/groovy/modules/groovy-swt/src/examples/groovy/swt/FormDemo.groovy
deleted file mode 100644
index 5604304..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/swt/FormDemo.groovy
+++ /dev/null
@@ -1,97 +0,0 @@
-package groovy.swt.examples

-

-import groovy.jface.JFaceBuilder

-

-class ApplicationDemo {

-    property mainapp

-        

-    void run() {

-        jface = new JFaceBuilder()

-

-        mainapp = jface.applicationWindow( title:"The forms demo", size:[700,800], location:[0,0] ) { 	

-         	gridLayout ( numColumns:2 )

-			form( text:"Hello, Eclipse Forms" ) {

-				gridData( style:"fill_both" )

-				tableWrapLayout()

-

-				formSection( text:"section1", description:"description of section1", style:"description, twistie" ) {

-					tableWrapData( style:"fill" )

-					

-					expansionListener( type:"expansionStateChanging", closure: { println "expansionStateChanging ... " + it } )

-					expansionListener( type:"expansionStateChanged", closure: { println "expansionStateChanged ... " + it } )

-					

-					htmlText = "<form>"

-					htmlText += "<li>list item</li>"

-					htmlText += "<p>this html code with an url: http://groovy.codehaus.org</p>"

-					htmlText += "<li style=\"text\" value=\"1.\">list item 2</li>"

-			        htmlText += "<li style=\"text\" value=\"2.\">list item 3</li>"

-			        htmlText += "</form>"

-					

-					formFormattedText( text:htmlText, parseTags:true, expandURLs:true )					

-					

-					formButton ( text:"This is radiobutton1", style:"radio" ) 

-					formButton ( text:"This is radiobutton2", style:"radio" ) 

-					

-					formButton ( text:"This is a ARROW button", style:"arrow" ) {

-						onEvent(type:"Selection", closure:{ println "stop selecting me !!!" }) 

-					}	

-					formButton ( text:"This is a PUSH button", style:"push" ) {

-	        			onEvent(type:"Selection", closure:{ println "stop pushing me !!!" }) 

-	        		}

-					formButton ( text:"This is a TOGGLE button", style:"TOGGLE" ) {

-						onEvent(type:"Selection", closure:{ println it.event }) 

-					}

-					

-				}

-				

-				formSection( text:"section2", description:"description of section2", style:"description, twistie" ) {

-					tableWrapData( style:"fill" )

-					formLabel( text:"This is a label in section 2" )

-					formExpandableComposite( text:"formExpandableComposite" )

-				}

-

-				formSection( text:"section3", description:"description of section3", style:"description, twistie" ) {

-					tableWrapData( style:"fill" )

-					formLabel( text:"Below me is a tree" )

-	       			formTree()

-				}

-				

-				formSeparator( style:"separator, horizontal" ) {

-					tableWrapData( style:"fill" )

-				}

-				

-				formButton( text:"This is a formButton" )

-				

-       			formCompositeSeparator()

-								

-				formHyperlink( text:"this is a hyperlink" ) {

-					hyperlinkListener( type:"hyperlinkUpdate", closure: { println "hyperlinkUpdate ... " + it } )

-					hyperlinkListener( type:"linkEntered", closure: { println "linkEntered ... " + it } )

-					hyperlinkListener( type:"linkExited", closure: { println "linkExited ... " + it } )

-					hyperlinkListener( type:"linkActivated", closure: { println "linkActivated ... " + it } )

-				}

-       			

-       			formLabel( text:"This is a formLabel, folowed by a formTable" )

-       			formTable() {

-	       			tableWrapData( style:"fill" )

-       			}

-     

-     			

-       			

-       			// NOT FULLY IMPLEMENTED YET:

-       			// formImageHyperlink( text:"formImageHyperlink" )

-       			// formPageBook( text:"formPageBook" )

-       			

-			}

-			

-			form( text:"hello formScrolledForm" ) {

-				gridData( style:"fill_both" )

-				formLabel( text:"my parent is a scrolledForm" )

-				formButton( text:"formButton" )

-			}

-		}

-		

-		mainapp.getShell().pack()

-		mainapp.open()

-	}

-}

diff --git a/groovy/modules/groovy-swt/src/examples/groovy/swt/GuiBuilderDemo.groovy b/groovy/modules/groovy-swt/src/examples/groovy/swt/GuiBuilderDemo.groovy
deleted file mode 100644
index 606b83f..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/swt/GuiBuilderDemo.groovy
+++ /dev/null
@@ -1,71 +0,0 @@
-package groovy.swt.examples
-
-import groovy.swt.guibuilder.ApplicationGuiBuilder
-
-class ApplicationGuiDemo extends Script {
-    //property builder1
-	// property mainapp
-	//property comp2
-
-    
-    run() {
-    	println "THIS DEMO IS UNDER CONSTRUCTION, EXPECT THE UNEXPECTED"
-    	
-        builder1 = new ApplicationGuiBuilder("src/test/groovy/swt/examples/")
-
-		mainapp1 = builder1.applicationWindow( title:"The ApplicationGuiDemo", size:[700,400] ) { 
-			gridLayout(numColumns:2) 
-			
-			toolBar( style:"horizontal" ){
-				toolItem( text:"Blue" ) {
-					onEvent( type:"Selection", closure:{
-						builder1.rebuild( parent:comp1, closure:{ 
-							builder1.composite( it ) {
-								fillLayout()
-								label( text:"12121212" )
-							}
-							comp1.pack()
-						})
-					})
-				}				
-				
-				toolItem( text:"Red" ) {
-					onEvent( type:"Selection", closure:{
-						builder1.rebuild( parent:comp1, closure:{ 
-							builder1.composite( it ) {
-								fillLayout()
-								label( text:"34343434" )
-							}
-							comp1.pack()
-						})
-					})
-				}				
-				
-				toolItem( text:"Show About" ){
-					onEvent( type:"Selection", closure:{
-						// builder1.run( script:"About.groovy", parent:mainapp1 )
-					})
-				}				
-			}			
-		
-			parent = composite() {
-				gridData( horizontalAlignment:"fill", horizontalSpan:2, grabExcessHorizontalSpace:true )
-				gridLayout(numColumns:2) 
-				
-				comp1 = composite( background:[100, 100, 100], foreground:[100, 255, 100] ) {
-					fillLayout()
-					button( text:"test" )
-				}
-				comp2 = composite( background:[0, 255, 0], foreground:[100, 255, 100] ) {
-					fillLayout()				
-					button( text:"test" )
-				}
-				comp3 = composite( background:[255, 50, 200] )
-				comp4 = composite( background:[200, 70, 99] )
-			}
-		}
-		
-		mainapp1.getShell().pack()
-		mainapp1.open()
-	}
-}
diff --git a/groovy/modules/groovy-swt/src/examples/groovy/swt/RunDemoBrowser.java b/groovy/modules/groovy-swt/src/examples/groovy/swt/RunDemoBrowser.java
deleted file mode 100644
index 9913e7a..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/swt/RunDemoBrowser.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package groovy.swt;
-
-import groovy.lang.GroovyObject;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class RunDemoBrowser extends SwtTest {
-    public void testBasic() throws Exception
-    {
-        GroovyObject object = compile("src/examples/groovy/swt/BrowserDemo.groovy");
-        object.invokeMethod("run", null);
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/examples/groovy/swt/RunDemoTableTree.java b/groovy/modules/groovy-swt/src/examples/groovy/swt/RunDemoTableTree.java
deleted file mode 100644
index a0f80b0..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/swt/RunDemoTableTree.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package groovy.swt;
-
-import groovy.lang.GroovyObject;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class RunDemoTableTree extends SwtTest {
-    public void testBasic() throws Exception {
-        GroovyObject object = compile("src/examples/groovy/swt/TableTreeDemo.groovy");
-        object.invokeMethod("run", null);
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/examples/groovy/swt/RunDemoTree.java b/groovy/modules/groovy-swt/src/examples/groovy/swt/RunDemoTree.java
deleted file mode 100644
index c20d206..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/swt/RunDemoTree.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package groovy.swt;
-
-import groovy.lang.GroovyObject;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class RunDemoTree extends SwtTest {
-    public void testBasic() throws Exception {
-        GroovyObject object = compile("src/examples/groovy/swt/TreeDemo.groovy");
-        object.invokeMethod("run", null);
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/examples/groovy/swt/RunFormDemo.java b/groovy/modules/groovy-swt/src/examples/groovy/swt/RunFormDemo.java
deleted file mode 100644
index cd16da4..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/swt/RunFormDemo.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package groovy.swt;
-
-import groovy.lang.GroovyObject;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class RunFormDemo extends SwtTest {
-    public void testBasic() throws Exception
-    {
-        GroovyObject object = compile("src/examples/groovy/swt/FormDemo.groovy");
-        object.invokeMethod("run", null);
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/examples/groovy/swt/RunGuiBuilderDemo.java b/groovy/modules/groovy-swt/src/examples/groovy/swt/RunGuiBuilderDemo.java
deleted file mode 100644
index 984e7d4..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/swt/RunGuiBuilderDemo.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package groovy.swt;
-
-import groovy.lang.GroovyObject;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class RunGuiBuilderDemo extends SwtTest {
-    public void testBasic() throws Exception
-    {
-        GroovyObject object = compile("src/examples/groovy/swt/GuiBuilderDemo.groovy");
-        object.invokeMethod("run", null);
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/examples/groovy/swt/TableTreeDemo.groovy b/groovy/modules/groovy-swt/src/examples/groovy/swt/TableTreeDemo.groovy
deleted file mode 100644
index 80f29f7..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/swt/TableTreeDemo.groovy
+++ /dev/null
@@ -1,43 +0,0 @@
-package groovy.swt.examples

-

-import groovy.swt.SwtBuilder

-

-class TableTreeDemo {

-    property swt

-        

-    void run() {

-        swt = new SwtBuilder()

-        

-        shell = swt.shell ( text:'The TableTree Test1', location:[100,100], size:[700,600] ) {

-         	gridLayout(numColumns:3) 

-         	

-         	tableTree( toolTipText:"This is a table tree!", style:"multi, full_selection" ) {  

-			

-				gridData( style:"fill_both" ) 

-				

-				tableTreeItem ( text:"root1" )  {

-						tableTreeItem ( text:"child 1-1" )  

-						tableTreeItem ( text:"child 1-2" )  								

-						tableTreeItem ( text:"child 1-3" )  								

-				}

-

-				tableTreeItem ( text:"root2" )  {

-						tableTreeItem ( text:"child 2-1" )  

-						tableTreeItem ( text:"child 2-2" )  								

-						tableTreeItem ( text:"child 2-3" )  								

-				}

-				

-			}

-		}

-        

-		shell.open()

-	

-		while(! shell.isDisposed()) { 

-			if (! shell.display.readAndDispatch()) {

-				shell.display.sleep();

-			}

-		}

-			

-		shell.display.dispose()	

-	}

-}

diff --git a/groovy/modules/groovy-swt/src/examples/groovy/swt/TreeDemo.groovy b/groovy/modules/groovy-swt/src/examples/groovy/swt/TreeDemo.groovy
deleted file mode 100644
index 9991035..0000000
--- a/groovy/modules/groovy-swt/src/examples/groovy/swt/TreeDemo.groovy
+++ /dev/null
@@ -1,49 +0,0 @@
-package groovy.swt.examples

-

-import groovy.swt.SwtBuilder

-

-class SwtDemo {

-    property swt

-        

-    void run() {

-        swt = new SwtBuilder()

-        

-        shell = swt.shell ( text:'The Swt Demo #1', location:[100,100], size:[700,600] ) {

-         	gridLayout(numColumns:3) 

- 

-			tree( toolTipText:"This is a tree!", style:"multi" ) {

-			

-				gridData( style:"fill_both" )

-			

-				treeItem( text:"A" ) {

-					treeItem( text:"A/A" )

-					treeItem( text:"A/B" )

-					treeItem( text:"A/C" )

-				}

-				

-				treeItem( text:"B" ) {

-					treeItem( text:"B/A" )

-					treeItem( text:"B/B" )

-					treeItem( text:"B/C" )

-				}

-						

-				menu( style:"pop_up" ) {

-					menuItem( text:"do something!" )

-					menuItem( text:"do something else" )

-				}

-				

-			}

-		

-        }

-        

-		shell.open()

-	

-		while(! shell.isDisposed()) { 

-			if (! shell.display.readAndDispatch()) {

-				shell.display.sleep();

-			}

-		}

-			

-		shell.display.dispose()	

-	}

-}

diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/JFaceBuilder.java b/groovy/modules/groovy-swt/src/main/groovy/jface/JFaceBuilder.java
deleted file mode 100644
index 693338e..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/JFaceBuilder.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Created on Feb 25, 2004
- *
- */
-package groovy.jface;
-
-import groovy.jface.factory.DoubleClickListenerFactory;
-import groovy.jface.factory.MenuManagerFactory;
-import groovy.jface.factory.PreferencesDialogFactory;
-import groovy.jface.factory.PreferencesFieldEditorFactory;
-import groovy.jface.factory.PreferencesPageFactory;
-import groovy.jface.factory.SelectionChangedListenerFactory;
-import groovy.jface.factory.WindowFactory;
-import groovy.jface.factory.WizardDialogFactory;
-import groovy.jface.factory.WizardPageFactory;
-import groovy.jface.impl.ApplicationWindowImpl;
-import groovy.swt.SwtBuilder;
-import groovy.swt.factory.ActionFactory;
-import groovy.swt.factory.ImageFactory;
-
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.preference.BooleanFieldEditor;
-import org.eclipse.jface.preference.ColorFieldEditor;
-import org.eclipse.jface.preference.DirectoryFieldEditor;
-import org.eclipse.jface.preference.FileFieldEditor;
-import org.eclipse.jface.preference.FontFieldEditor;
-import org.eclipse.jface.preference.IntegerFieldEditor;
-import org.eclipse.jface.preference.StringFieldEditor;
-import org.eclipse.jface.viewers.CheckboxTreeViewer;
-import org.eclipse.jface.viewers.TableTreeViewer;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TreeViewer;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class JFaceBuilder extends SwtBuilder {
-    protected void registerWidgets() {
-        super.registerWidgets();
-
-        // Viewer
-        registerBeanFactory("tableViewer", TableViewer.class);
-        registerBeanFactory("tableTreeViewer", TableTreeViewer.class);
-        registerBeanFactory("treeViewer", TreeViewer.class);
-        registerBeanFactory("checkboxTreeViewer", CheckboxTreeViewer.class);
-
-        // Event
-        registerFactory("doubleClickListener", new DoubleClickListenerFactory());
-        registerFactory("selectionChangedListener", 
-        new SelectionChangedListenerFactory());
-
-        // Window
-        registerFactory("applicationWindow", new WindowFactory(ApplicationWindowImpl.class));
-
-        // ContributionManager
-        registerFactory("menuManager", new MenuManagerFactory());
-
-        // Action tags
-        registerFactory("action", new ActionFactory());
-
-        // ContributionItem
-        registerBeanFactory("separator", Separator.class);
-
-        // Wizard
-        registerFactory("wizardDialog", new WizardDialogFactory());
-        registerFactory("wizardPage", new WizardPageFactory());
-
-        // Preference
-        registerFactory("preferenceDialog", new PreferencesDialogFactory());
-        registerFactory("preferencePage", new PreferencesPageFactory());
-        registerFactory("booleanFieldEditor", new PreferencesFieldEditorFactory(
-        BooleanFieldEditor.class));
-        registerFactory("colorFieldEditor", new PreferencesFieldEditorFactory(
-        ColorFieldEditor.class));
-        registerFactory("directoryFieldEditor", new PreferencesFieldEditorFactory(
-        DirectoryFieldEditor.class));
-        registerFactory("fileFieldEditor", new PreferencesFieldEditorFactory(
-        FileFieldEditor.class));
-        registerFactory("fontFieldEditor", new PreferencesFieldEditorFactory(
-        FontFieldEditor.class));
-        registerFactory("integerFieldEditor", new PreferencesFieldEditorFactory(
-        IntegerFieldEditor.class));
-        //registerBeanFactory("radioGroupFieldEditor",
-        // RadioGroupFieldEditor.class);
-        //registerBeanFactory("stringButtonFieldEditor",
-        // StringButtonFieldEditor.class);
-        registerFactory("stringFieldEditor", new PreferencesFieldEditorFactory(
-        StringFieldEditor.class));
-
-        // other
-        registerFactory("image", new ImageFactory());
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/ActionImpl.java b/groovy/modules/groovy-swt/src/main/groovy/jface/factory/ActionImpl.java
deleted file mode 100644
index 7c5cb73..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/ActionImpl.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Created on Feb 28, 2004
- *
- */
-package groovy.jface.factory;
-
-import groovy.lang.Closure;
-import groovy.swt.ClosureSupport;
-import org.eclipse.jface.action.Action;
-import org.eclipse.swt.widgets.Event;
-
-/**
- * @author <a href:ckl at dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class ActionImpl extends Action implements ClosureSupport {
-    private Closure closure;
-    private Event event;
-
-    public void runWithEvent(Event event) {
-        if (closure == null) {
-            throw new NullPointerException(
-            "No closure has been configured for this Listener");
-        }
-        this.event = event;
-        closure.call(this);
-    }
-
-    public Closure getClosure() {
-        return closure;
-    }
-
-    public void setClosure(Closure closure) {
-        this.closure = closure;
-    }
-
-    public Event getEvent() {
-        return event;
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/DoubleClickListenerFactory.java b/groovy/modules/groovy-swt/src/main/groovy/jface/factory/DoubleClickListenerFactory.java
deleted file mode 100644
index 8764a9b..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/DoubleClickListenerFactory.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Created on Feb 25, 2004
- *
- */
-package groovy.jface.factory;
-
-import groovy.lang.Closure;
-import groovy.swt.ClosureSupport;
-import groovy.swt.InvalidParentException;
-import groovy.swt.factory.AbstractSwtFactory;
-import groovy.swt.factory.SwtFactory;
-import java.util.Map;
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.StructuredViewer;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class DoubleClickListenerFactory extends AbstractSwtFactory implements 
-SwtFactory, IDoubleClickListener, ClosureSupport {
-    private Closure closure;
-
-    /*
-     * @see groovy.swt.factory.AbstractSwtFactory#newInstance(java.util.Map,
-     *      java.lang.Object)
-     */
-    public Object newInstance(Map properties, Object parent)
-    throws GroovyException {
-        if (parent instanceof StructuredViewer) {
-            StructuredViewer viewer = (StructuredViewer) parent;
-            viewer.addDoubleClickListener(this);
-        }
-        else {
-            throw new InvalidParentException("structuredViewer");
-        }
-        return parent;
-    }
-
-    /*
-     * @see groovy.swt.ClosureSupport#getClosure()
-     */
-    public Closure getClosure() {
-        return closure;
-    }
-
-    /*
-     * @see groovy.swt.ClosureSupport#setClosure(groovy.lang.Closure)
-     */
-    public void setClosure(Closure closure) {
-        this.closure = closure;
-    }
-
-    /*
-     * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
-     */
-    public void doubleClick(DoubleClickEvent event) {
-        closure.call(this);
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/MenuManagerFactory.java b/groovy/modules/groovy-swt/src/main/groovy/jface/factory/MenuManagerFactory.java
deleted file mode 100644
index 72e2959..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/MenuManagerFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package groovy.jface.factory;
-
-import groovy.lang.MissingPropertyException;
-import groovy.swt.factory.AbstractSwtFactory;
-import groovy.swt.factory.SwtFactory;
-import java.util.Map;
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.window.ApplicationWindow;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class MenuManagerFactory extends AbstractSwtFactory implements SwtFactory {
-
-    /*
-     * @see groovy.swt.impl.SwtFactory#newInstance(java.util.Map,
-     *      java.lang.Object)
-     */
-    public Object newInstance(Map properties, Object parent)
-    throws GroovyException {
-        
-        String text = (String) properties.remove("text");
-        if (text == null) {
-            throw new MissingPropertyException("text", 
-            String.class);
-        }
-        
-        MenuManager menuManager = new MenuManager(text);
-        if (parent instanceof ApplicationWindow) {
-            ApplicationWindow window = (ApplicationWindow) parent;
-            if (window != null) {
-                window.getMenuBarManager().add(menuManager);
-            }
-        }
-        
-        return menuManager;
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/PreferencesDialogFactory.java b/groovy/modules/groovy-swt/src/main/groovy/jface/factory/PreferencesDialogFactory.java
deleted file mode 100644
index df53f8a..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/PreferencesDialogFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package groovy.jface.factory;
-
-import groovy.jface.impl.PreferenceDialogImpl;
-import groovy.swt.InvalidParentException;
-import groovy.swt.factory.AbstractSwtFactory;
-import groovy.swt.factory.SwtFactory;
-
-import java.util.Map;
-
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class PreferencesDialogFactory extends AbstractSwtFactory implements 
-SwtFactory {
-
-    /*
-     * @see groovy.swt.impl.SwtFactory#newInstance(java.util.Map,
-     *      java.lang.Object)
-     */
-    public Object newInstance(Map properties, Object parent)
-    throws GroovyException {
-        Shell parentShell = getParentShell(parent);
-        if (parent != null) {
-            PreferenceManager pm = new PreferenceManager();
-            return new PreferenceDialogImpl(parentShell, pm);
-        }
-        else {
-            throw new InvalidParentException(
-            "applicationWindow or shell");
-        }
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/PreferencesFieldEditorFactory.java b/groovy/modules/groovy-swt/src/main/groovy/jface/factory/PreferencesFieldEditorFactory.java
deleted file mode 100644
index d33429c..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/PreferencesFieldEditorFactory.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package groovy.jface.factory;
-
-import groovy.jface.impl.PreferencePageFieldEditorImpl;
-import groovy.lang.MissingPropertyException;
-import groovy.swt.InvalidParentException;
-import groovy.swt.factory.AbstractSwtFactory;
-import groovy.swt.factory.SwtFactory;
-
-import java.util.Map;
-
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.jface.preference.FieldEditor;
-import org.eclipse.jface.preference.PreferencePage;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class PreferencesFieldEditorFactory extends AbstractSwtFactory implements
-        SwtFactory {
-
-    private Class beanClass;
-
-    public PreferencesFieldEditorFactory(Class beanClass) {
-        this.beanClass = beanClass;
-    }
-
-    public Object newInstance(Map properties, Object parent)
-            throws GroovyException {
-
-        if (beanClass == null) { throw new GroovyException(
-                "No Class available to create the FieldEditor"); }
-
-        // check location
-        if (!(parent instanceof PreferencePage)) { throw new InvalidParentException(
-                "preferencePage"); }
-
-        String name = (String) properties.get("propertyName");
-        if (name == null) { throw new MissingPropertyException("propertyName",
-                FieldEditor.class); }
-
-        String labelText = (String) properties.get("title");
-        if (labelText == null) { throw new MissingPropertyException("title",
-                FieldEditor.class); }
-
-        PreferencePageFieldEditorImpl preferencePageImpl = (PreferencePageFieldEditorImpl) parent;
-        preferencePageImpl.addFieldCreator(beanClass, name, labelText);
-
-        return preferencePageImpl;
-    }
-
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/PreferencesPageFactory.java b/groovy/modules/groovy-swt/src/main/groovy/jface/factory/PreferencesPageFactory.java
deleted file mode 100644
index 3a4cf6f..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/PreferencesPageFactory.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package groovy.jface.factory;
-
-import groovy.jface.impl.PreferenceDialogImpl;
-import groovy.jface.impl.PreferencePageFieldEditorImpl;
-import groovy.lang.MissingPropertyException;
-import groovy.swt.InvalidParentException;
-import groovy.swt.factory.AbstractSwtFactory;
-import groovy.swt.factory.SwtFactory;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.jface.preference.PreferenceNode;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.preference.PreferenceStore;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class PreferencesPageFactory extends AbstractSwtFactory implements
-        SwtFactory {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory
-            .getLog(PreferencesPageFactory.class);
-
-    /*
-     * @see groovy.swt.impl.SwtFactory#newInstance(java.util.Map,
-     *           java.lang.Object)
-     */
-    public Object newInstance(Map properties, Object parent)
-            throws GroovyException {
-
-        // check location
-        if (!(parent instanceof PreferenceDialog)) { throw new InvalidParentException(
-                "preferenceDialog"); }
-
-        PreferenceDialogImpl preferenceDialogImpl = (PreferenceDialogImpl) parent;
-
-        String filename = (String) properties.remove("filename");
-        if (filename == null) { throw new MissingPropertyException("filename",
-                PreferencePage.class); }
-
-        String title = (String) properties.remove("title");
-        if (title == null) { throw new MissingPropertyException("title",
-                PreferencePage.class); }
-
-        // build new PreferenceNode with same title as the PreferencePage
-        PreferenceNode node = new PreferenceNode(title);
-
-        // build new PreferencePage
-        FieldEditorPreferencePage page = new PreferencePageFieldEditorImpl(
-                title);
-        PreferenceStore preferenceStore = new PreferenceStore(filename);
-        
-        try {
-            preferenceStore.load();
-        } catch (IOException e) {
-            log.error(e);
-        }
-        page.setPreferenceStore(preferenceStore);
-
-        // add node to PreferenceManager
-        node.setPage(page);
-        preferenceDialogImpl.getPreferenceManager().addToRoot(node);
-
-        return page;
-    }
-
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/SelectionChangedListenerFactory.java b/groovy/modules/groovy-swt/src/main/groovy/jface/factory/SelectionChangedListenerFactory.java
deleted file mode 100644
index 386746b..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/SelectionChangedListenerFactory.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Created on Feb 25, 2004
- *
- */
-package groovy.jface.factory;
-
-import groovy.lang.Closure;
-import groovy.swt.ClosureSupport;
-import groovy.swt.InvalidParentException;
-import groovy.swt.factory.AbstractSwtFactory;
-import groovy.swt.factory.SwtFactory;
-
-import java.util.Map;
-
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.Viewer;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class SelectionChangedListenerFactory extends AbstractSwtFactory
-        implements SwtFactory, ISelectionChangedListener, ClosureSupport {
-
-    private Closure closure;
-
-    /*
-     * @see groovy.swt.factory.AbstractSwtFactory#newInstance(java.util.Map,
-     *           java.lang.Object)
-     */
-    public Object newInstance(Map properties, Object parent)
-            throws GroovyException {
-
-        if (parent instanceof Viewer) {
-            Viewer viewer = (Viewer) parent;
-            viewer.addSelectionChangedListener(this);
-        } else {
-            throw new InvalidParentException("viewer");
-        }
-        
-        return parent; 
-    }
-
-    /*
-     * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
-     */
-    public void selectionChanged(SelectionChangedEvent event) {
-        closure.call(this);
-    }
-
-    /*
-     * @see groovy.swt.ClosureSupport#getClosure()
-     */
-    public Closure getClosure() {
-        return closure;
-    }
-
-    /*
-     * @see groovy.swt.ClosureSupport#setClosure(groovy.lang.Closure)
-     */
-    public void setClosure(Closure closure) {
-        this.closure = closure;
-    }
-
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/WindowFactory.java b/groovy/modules/groovy-swt/src/main/groovy/jface/factory/WindowFactory.java
deleted file mode 100644
index 1f2d45d..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/WindowFactory.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Created on Feb 28, 2004
- *
- */
-package groovy.jface.factory;
-
-import groovy.swt.InvalidParentException;
-import groovy.swt.convertor.PointConverter;
-import groovy.swt.factory.SwtFactory;
-import groovy.swt.factory.WidgetFactory;
-
-import java.util.List;
-import java.util.Map;
-
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * @author <a href:ckl at dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class WindowFactory extends WidgetFactory implements SwtFactory {
-
-    /**
-     * @param beanClass
-     */
-    public WindowFactory(Class beanClass) {
-        super(beanClass);
-    }
-
-    /*
-     * @see groovy.swt.factory.AbstractSwtFactory#newInstance(java.util.Map,
-     *      java.lang.Object)
-     */
-    public Object newInstance(Map properties, Object parent) throws GroovyException {
-        if (parent == null){
-            parent = new Shell();
-        }
-        if (!(parent instanceof Shell)){
-            throw new InvalidParentException("shell");
-        }
-        
-        Window window = (Window) createWidget(parent);
-        if (window != null){
-            Shell shell = (Shell) parent;
-
-            // set title of Window
-            String title = (String) properties.remove("title");
-            if (title != null){
-                window.getShell().setText((String) title);
-            }
-
-            // set size of Window
-            List size = (List) properties.remove("size");
-            if (size != null){
-                Point point = PointConverter.getInstance().parse(size);
-                window.getShell().setSize(point);
-            }
-
-            // set location of Window
-            List location = (List) properties.remove("location");
-            if (location != null){
-                Point point = PointConverter.getInstance().parse(location);
-                window.getShell().setLocation(point);
-            }
-        }
-        setBeanProperties(window, properties);
-        return window;
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/WizardDialogFactory.java b/groovy/modules/groovy-swt/src/main/groovy/jface/factory/WizardDialogFactory.java
deleted file mode 100644
index 443478e..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/WizardDialogFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Created on Feb 20, 2004
- *
- */
-package groovy.jface.factory;
-
-import groovy.jface.impl.WizardDialogImpl;
-import groovy.jface.impl.WizardImpl;
-import groovy.swt.factory.AbstractSwtFactory;
-import groovy.swt.factory.SwtFactory;
-
-import java.util.Map;
-
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class WizardDialogFactory extends AbstractSwtFactory implements SwtFactory {
-
-    /*
-     * @see groovy.swt.factory.SwtFactory#newInstance(java.util.Map,
-     *      java.lang.Object)
-     */
-    public Object newInstance(Map properties, Object parent)
-    throws GroovyException {
-        Shell parentShell = getParentShell(parent);
-        Wizard wizard = new WizardImpl();
-        WizardDialog wizardDialog = new WizardDialogImpl(parentShell, wizard);
-        return wizardDialog;
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/WizardPageFactory.java b/groovy/modules/groovy-swt/src/main/groovy/jface/factory/WizardPageFactory.java
deleted file mode 100644
index 89694cf..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/factory/WizardPageFactory.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Created on Feb 20, 2004
- *
- */
-package groovy.jface.factory;
-
-import groovy.jface.impl.WizardDialogImpl;
-import groovy.jface.impl.WizardPageImpl;
-import groovy.lang.MissingPropertyException;
-import groovy.swt.InvalidParentException;
-import groovy.swt.factory.AbstractSwtFactory;
-import groovy.swt.factory.SwtFactory;
-
-import java.util.Map;
-
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.jface.wizard.WizardPage;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class WizardPageFactory extends AbstractSwtFactory implements SwtFactory {
-
-    /*
-     * @see groovy.swt.factory.SwtFactory#newInstance(java.util.Map,
-     *      java.lang.Object)
-     */
-    public Object newInstance(Map properties, Object parent)
-    throws GroovyException {
-
-        // check location
-        if (!(parent instanceof WizardDialog)) {
-            throw new InvalidParentException("wizardDialog");
-        }
-        WizardDialogImpl wizardDialog = (WizardDialogImpl) parent;
-
-        // check for missing attributes
-        String title = (String) properties.get("title");
-        if (title == null) {
-            throw new MissingPropertyException("title", 
-            WizardPage.class);
-        }
-
-        // get WizardPageImpl
-        WizardPageImpl page = new WizardPageImpl(title);
-        setBeanProperties(page, properties);
-
-        // get Wizard
-        WizardDialogImpl dialog = (WizardDialogImpl) parent;
-        Wizard wizard = (Wizard) dialog.getWizard();
-
-        // add WizardPage to the Wizard
-        wizard.addPage(page);
-        return page;
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/impl/ApplicationWindowImpl.java b/groovy/modules/groovy-swt/src/main/groovy/jface/impl/ApplicationWindowImpl.java
deleted file mode 100644
index e103c63..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/impl/ApplicationWindowImpl.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package groovy.jface.impl;
-
-import org.eclipse.jface.window.ApplicationWindow;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * This is the default implementation for a ApplicationWindow
- * 
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class ApplicationWindowImpl extends ApplicationWindow {
-
-    /**
-     * @param shell
-     */
-    public ApplicationWindowImpl(Shell parentShell) {
-        super(parentShell);
-
-        // default at all
-        addMenuBar();
-        addStatusLine();
-        addToolBar(SWT.NULL);
-        setBlockOnOpen(true);
-
-        // create window
-        create();
-    }
-
-    /*
-     * override to make public
-     * 
-     * @see org.eclipse.jface.window.Window#getContents()
-     */
-    public Control getContents() {
-        return super.getContents();
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/impl/PreferenceDialogImpl.java b/groovy/modules/groovy-swt/src/main/groovy/jface/impl/PreferenceDialogImpl.java
deleted file mode 100644
index a9a3ba9..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/impl/PreferenceDialogImpl.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Created on Feb 20, 2004
- *
- */
-package groovy.jface.impl;
-
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.swt.widgets.Shell;
-
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class PreferenceDialogImpl extends PreferenceDialog {
-    public PreferenceDialogImpl(Shell shell, PreferenceManager pm) {
-        super(shell, pm);
-        // this.parentShell = shell;
-    }
-
-    protected void handleSave() {
-        super.handleSave();
-        /*
-         * try { if (handleSave != null) { handleSave.run(context, output); }
-         * else { invokeBody(output); } } catch (JellyTagException e) {
-         * log.error(e);
-         */
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/impl/PreferencePageFieldEditorImpl.java b/groovy/modules/groovy-swt/src/main/groovy/jface/impl/PreferencePageFieldEditorImpl.java
deleted file mode 100644
index 90d3588..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/impl/PreferencePageFieldEditorImpl.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Created on Feb 20, 2004
- *
- */
-package groovy.jface.impl;
-
-import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.preference.FieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class PreferencePageFieldEditorImpl extends FieldEditorPreferencePage {
-
-    public class FieldEditorCreator {
-
-        private Class beanClass;
-
-        private String propertyName;
-
-        private String title;
-
-        public FieldEditorCreator(Class beanClass, String propertyName,
-                String title) {
-            this.beanClass = beanClass;
-            this.propertyName = propertyName;
-            this.title = title;
-        }
-
-        public FieldEditor createField(Composite parent) {
-
-            FieldEditor fieldEditor = null;
-
-            try {
-                Class[] types = { String.class, String.class, Composite.class};
-                Constructor constructor = beanClass.getConstructor(types);
-                if (constructor != null) {
-                    Object[] arguments = { propertyName, title, parent};
-                    fieldEditor = (FieldEditor) constructor
-                            .newInstance(arguments);
-                }
-            } catch (Exception e) {
-            }
-
-            return fieldEditor;
-        }
-    }
-
-    private List creatorFieldsfields = new ArrayList();
-
-    public PreferencePageFieldEditorImpl(String title) {
-        super(title, FieldEditorPreferencePage.GRID);
-    }
-
-    public void addFieldCreator(Class beanClass, String propertyName,
-            String title) {
-        creatorFieldsfields.add(new FieldEditorCreator(beanClass, propertyName,
-                title));
-    }
-
-    protected void createFieldEditors() {
-        Iterator i = creatorFieldsfields.iterator();
-        while (i.hasNext()) {
-            FieldEditorCreator creator = (FieldEditorCreator) i.next();
-            FieldEditor fieldEditor = creator
-                    .createField(getFieldEditorParent());
-            addField(fieldEditor);
-        }
-    }
-
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/impl/WizardDialogImpl.java b/groovy/modules/groovy-swt/src/main/groovy/jface/impl/WizardDialogImpl.java
deleted file mode 100644
index ad78f92..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/impl/WizardDialogImpl.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Created on Feb 20, 2004
- *
- */
-package groovy.jface.impl;
-
-import groovy.lang.Closure;
-import groovy.swt.ClosureSupport;
-
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Provide a public method getWizard and provide access to parentShell
- * 
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class WizardDialogImpl extends WizardDialog implements ClosureSupport {
-    private Closure closure;
-    private Shell parentShell;
-
-    public WizardDialogImpl(Shell parentShell, IWizard newWizard) {
-        super(parentShell, newWizard);
-        this.parentShell = parentShell;
-    }
-
-    public IWizard getWizard() {
-        return super.getWizard();
-    }
-
-    public Shell getParentShell() {
-        return parentShell;
-    }
-
-    /*
-     * @see groovy.swt.ClosureSupport#getClosure()
-     */
-    public Closure getClosure() {
-        return closure;
-    }
-
-    /*
-     * @see groovy.swt.ClosureSupport#setClosure(groovy.lang.Closure)
-     */
-    public void setClosure(Closure closure) {
-        this.closure = closure;
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/impl/WizardImpl.java b/groovy/modules/groovy-swt/src/main/groovy/jface/impl/WizardImpl.java
deleted file mode 100644
index 7dac1f8..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/impl/WizardImpl.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Created on Feb 20, 2004
- *
- */
-package groovy.jface.impl;
-
-import groovy.lang.Closure;
-import groovy.swt.ClosureSupport;
-
-import org.eclipse.jface.wizard.Wizard;
-
-/**
- * Provides a Wizard implementation
- * 
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class WizardImpl extends Wizard implements ClosureSupport{
-    private Closure closure;
-    public WizardImpl() {
-        super();
-        setNeedsProgressMonitor(true);
-    }
-
-    /* 
-     * TODO implements this
-     * 
-     * @see org.eclipse.jface.wizard.IWizard#performCancel()
-     */
-    public boolean performCancel() {
-        System.out.println("performCancel ...");
-        return true;
-    }
-
-    /* 
-     * TODO implements this
-     * 
-     * @see org.eclipse.jface.wizard.IWizard#performFinish()
-     */
-    public boolean performFinish() {
-        System.out.println("performFinish ...");
-        return true;
-    }
-
-    /*
-     * @see groovy.swt.ClosureSupport#getClosure()
-     */
-    public Closure getClosure() {
-        return closure;
-    }
-
-    /*
-     * @see groovy.swt.ClosureSupport#setClosure(groovy.lang.Closure)
-     */
-    public void setClosure(Closure closure) {
-        this.closure = closure;
-    }
-    
-
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/jface/impl/WizardPageImpl.java b/groovy/modules/groovy-swt/src/main/groovy/jface/impl/WizardPageImpl.java
deleted file mode 100644
index 90be86e..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/jface/impl/WizardPageImpl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Created on Feb 21, 2004
- *
- */
-package groovy.jface.impl;
-
-import groovy.lang.Closure;
-import groovy.swt.ClosureSupport;
-
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * Implementation of a WizardPage method createControl is called on
- * Dialog.open()
- * 
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class WizardPageImpl extends WizardPage implements ClosureSupport {
-    private Closure closure;
-
-    public WizardPageImpl(String title) {
-        super(title);
-    }
-
-    public void createControl(Composite parent) {
-        if (closure == null) {
-            throw new NullPointerException(
-            "No closure has been configured for this WizardPage");
-        }
-        Composite composite = (Composite) closure.call(parent);
-        setControl(composite);
-    }
-
-    public Closure getClosure() {
-        return closure;
-    }
-
-    public void setClosure(Closure closure) {
-        this.closure = closure;
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/ClosureSupport.java b/groovy/modules/groovy-swt/src/main/groovy/swt/ClosureSupport.java
deleted file mode 100644
index 22d8856..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/ClosureSupport.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Created on Feb 16, 2004
- *
- */
-package groovy.swt;
-
-import groovy.lang.Closure;
-
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public interface ClosureSupport {
-    public Closure getClosure();
-
-    public void setClosure(Closure closure);
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/InvalidChildException.java b/groovy/modules/groovy-swt/src/main/groovy/swt/InvalidChildException.java
deleted file mode 100644
index df53b76..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/InvalidChildException.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Created on Feb 16, 2004
- *
- */
-package groovy.swt;
-
-import org.codehaus.groovy.GroovyException;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class InvalidChildException extends GroovyException {
-
-    public InvalidChildException(String parent, String child) {
-        super("first child of " + parent + " should be " + child);
-    }
-
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/InvalidParentException.java b/groovy/modules/groovy-swt/src/main/groovy/swt/InvalidParentException.java
deleted file mode 100644
index 9ec9691..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/InvalidParentException.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Created on Feb 16, 2004
- *
- */
-package groovy.swt;
-
-import org.codehaus.groovy.GroovyException;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class InvalidParentException extends GroovyException {
-
-    /**
-     * @param message
-     */
-    public InvalidParentException(String property) {
-        super("parent should be: " + property);
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/SwtBuilder.java b/groovy/modules/groovy-swt/src/main/groovy/swt/SwtBuilder.java
deleted file mode 100644
index 8cec93b..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/SwtBuilder.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * Created on Feb 15, 2004
- *
- */
-package groovy.swt;
-
-import groovy.lang.Closure;
-import groovy.swt.factory.FormFactory;
-import groovy.swt.factory.ImageFactory;
-import groovy.swt.factory.LayoutDataFactory;
-import groovy.swt.factory.LayoutFactory;
-import groovy.swt.factory.ListenerFactory;
-import groovy.swt.factory.SwtFactory;
-import groovy.swt.factory.WidgetFactory;
-import groovy.util.BuilderSupport;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.browser.Browser;
-import org.eclipse.swt.browser.LocationListener;
-import org.eclipse.swt.browser.ProgressListener;
-import org.eclipse.swt.browser.StatusTextListener;
-import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.custom.TableTree;
-import org.eclipse.swt.custom.TableTreeItem;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.layout.RowData;
-import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Caret;
-import org.eclipse.swt.widgets.ColorDialog;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.CoolBar;
-import org.eclipse.swt.widgets.CoolItem;
-import org.eclipse.swt.widgets.Decorations;
-import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.FontDialog;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.List;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.MessageBox;
-import org.eclipse.swt.widgets.ProgressBar;
-import org.eclipse.swt.widgets.Sash;
-import org.eclipse.swt.widgets.Scale;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Slider;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.swt.widgets.Tracker;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.forms.events.ExpansionListener;
-import org.eclipse.ui.forms.events.HyperlinkListener;
-import org.eclipse.ui.forms.widgets.TableWrapData;
-import org.eclipse.ui.forms.widgets.TableWrapLayout;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class SwtBuilder extends BuilderSupport {
-    private Map factories = new HashMap();
-    private Logger log = Logger.getLogger(getClass().getName());
-
-    public SwtBuilder() {
-        registerWidgets();
-    }
-
-    /*
-     * @see groovy.util.BuilderSupport#createNode(java.lang.Object)
-     */
-    protected Object createNode(Object name) {
-        return createNode(name, Collections.EMPTY_MAP);
-    }
-
-    /*
-     * @see groovy.util.BuilderSupport#createNode(java.lang.Object,
-     *      java.util.Map)
-     */
-    protected Object createNode(Object name, Map attributes) {
-        
-        Closure closure = (Closure) attributes.remove("closure");
-        
-        Object widget = createWidget(name, attributes, getCurrent());
-
-        if (widget != null){
-            if (widget instanceof ClosureSupport){
-                if (closure != null){
-                    ClosureSupport closureSupport = (ClosureSupport) widget;
-                    closureSupport.setClosure(closure);
-                }
-            }
-        }
-        return widget;
-    }
-
-    /**
-     * @param name
-     * @param attributes
-     * @return
-     */
-    protected Object createWidget(Object name, Map attributes, Object current) {
-        Object widget = null;
-        SwtFactory factory = (SwtFactory) factories.get(name);
-        if (factory != null){
-            try{
-                widget = factory.newInstance(attributes, current);
-            }
-            catch (Exception e){
-                log.log(Level.WARNING, e.getMessage());
-            }
-        }
-        else{
-            log.log(Level.WARNING, "Could not find match for name: " + name);
-        }
-        return widget;
-    }
-
-    /*
-     * @see groovy.util.BuilderSupport#createNode(java.lang.Object,
-     *      java.lang.Object)
-     */
-    protected Object createNode(Object name, Object parent) {
-        return createWidget(name, Collections.EMPTY_MAP, parent);
-    }
-
-    protected void registerBeanFactory(String name, final Class beanClass) {
-        registerFactory(name, new WidgetFactory(beanClass));
-    }
-
-    protected void registerBeanFactory(String name, final Class beanClass, 
-    final int style) {
-        registerFactory(name, new WidgetFactory(beanClass, style));
-    }
-
-    protected void registerFactory(String name, SwtFactory factory) {
-        factories.put(name, factory);
-    }
-
-    protected void registerWidgets() {
-
-        // widgets
-        registerBeanFactory("button", Button.class, SWT.BORDER | SWT.PUSH | SWT.CENTER);
-        registerBeanFactory("canvas", Canvas.class);
-        registerBeanFactory("caret", Caret.class);
-        registerBeanFactory("combo", Combo.class, SWT.DROP_DOWN);
-        registerBeanFactory("composite", Composite.class);
-        registerBeanFactory("scrolledComposite", ScrolledComposite.class, SWT.H_SCROLL
-        | SWT.V_SCROLL);
-        registerBeanFactory("coolBar", CoolBar.class, SWT.VERTICAL);
-        registerBeanFactory("coolItem", CoolItem.class);
-        registerBeanFactory("decorations", Decorations.class);
-        registerBeanFactory("group", Group.class);
-        registerBeanFactory("label", Label.class, SWT.HORIZONTAL | SWT.SHADOW_IN);
-        registerBeanFactory("list", List.class);
-        registerBeanFactory("menu", Menu.class, SWT.DEFAULT);
-        //        registerMenuTag("menuBar", SWT.BAR);
-
-        registerBeanFactory("menuSeparator", MenuItem.class, SWT.SEPARATOR);
-        registerBeanFactory("menuItem", MenuItem.class);
-        registerBeanFactory("messageBox", MessageBox.class);
-        registerBeanFactory("progressBar", ProgressBar.class, SWT.HORIZONTAL);
-        registerBeanFactory("sash", Sash.class);
-        registerBeanFactory("scale", Scale.class);
-        registerBeanFactory("shell", Shell.class, SWT.BORDER | SWT.CLOSE | SWT.MIN | SWT.MAX
-        | SWT.RESIZE | SWT.TITLE);
-        registerBeanFactory("slider", Slider.class);
-        registerBeanFactory("tabFolder", TabFolder.class);
-        registerBeanFactory("tabItem", TabItem.class);
-        registerBeanFactory("table", Table.class, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
-        registerBeanFactory("tableColumn", TableColumn.class);
-        registerBeanFactory("tableItem", TableItem.class);
-        registerBeanFactory("text", Text.class);
-        registerBeanFactory("toolBar", ToolBar.class, SWT.VERTICAL);
-        registerBeanFactory("toolItem", ToolItem.class);
-        registerBeanFactory("tracker", Tracker.class);
-        registerBeanFactory("tree", Tree.class, SWT.MULTI);
-        registerBeanFactory("treeItem", TreeItem.class);
-
-        // custom widgets
-        registerBeanFactory("cTabFolder", CTabFolder.class);
-        registerBeanFactory("cTabItem", CTabItem.class);
-        registerBeanFactory("tableTree", TableTree.class);
-        registerBeanFactory("tableTreeItem", TableTreeItem.class);
-
-        // layouts
-        registerFactory("fillLayout", new LayoutFactory(FillLayout.class));
-        registerFactory("gridLayout", new LayoutFactory(GridLayout.class));
-        registerFactory("rowLayout", new LayoutFactory(RowLayout.class));
-
-        // layout data objects
-        registerFactory("gridData", new LayoutDataFactory(GridData.class));
-        registerFactory("rowData", new LayoutDataFactory(RowData.class));
-
-        // dialogs
-        registerBeanFactory("colorDialog", ColorDialog.class);
-        registerBeanFactory("directoryDialog", DirectoryDialog.class);
-        registerBeanFactory("fileDialog", FileDialog.class);
-        registerBeanFactory("fontDialog", FontDialog.class);
-
-        // events
-        registerFactory("onEvent", new ListenerFactory(Listener.class));
-
-        // other tags
-        registerFactory("image", new ImageFactory());
-
-        // browser tags
-        registerBeanFactory("browser", Browser.class, SWT.NONE);
-        registerFactory("locationListener", new ListenerFactory(LocationListener.class));
-        registerFactory("progressListener", new ListenerFactory(ProgressListener.class));
-        registerFactory("statusTextListener", new ListenerFactory(StatusTextListener.class));
-
-        // forms api
-        registerFactory("form", new FormFactory("form"));
-        registerFactory("scrolledForm", new FormFactory("scrolledForm"));
-        registerFactory("formButton", new FormFactory("formButton"));
-        registerFactory("formComposite", new FormFactory("formComposite"));
-        registerFactory("formCompositeSeparator", new FormFactory("formCompositeSeparator"));
-        registerFactory("formExpandableComposite", new FormFactory("formButton"));
-        registerFactory("formText", new FormFactory("formText"));
-        registerFactory("formHyperlink", new FormFactory("formHyperlink"));
-        registerFactory("formImageHyperlink", new FormFactory("formImageHyperlink"));
-        registerFactory("formLabel", new FormFactory("formLabel"));
-        registerFactory("formPageBook", new FormFactory("formPageBook"));
-        registerFactory("formSection", new FormFactory("formSection"));
-        registerFactory("formSeparator", new FormFactory("formSeparator"));
-        registerFactory("formTable", new FormFactory("formTable"));
-        registerFactory("formFormattedText", new FormFactory("formFormattedText"));
-        registerFactory("formTree", new FormFactory("formTree"));
-        
-        // forms layout
-        registerFactory("tableWrapLayout", new LayoutFactory(TableWrapLayout.class));
-        registerFactory("tableWrapData", new LayoutDataFactory(TableWrapData.class));
-        
-        // forms listeners
-        registerFactory("hyperlinkListener", new ListenerFactory(HyperlinkListener.class));
-        registerFactory("expansionListener", new ListenerFactory(ExpansionListener.class));
-        
-
-        // none eclipse widgets
-        // registerBeanFactory("tDateText", TDateText.class);
-        // registerBeanFactory("tCalendar", TCalendar.class);
-        // registerBeanFactory("textEditor", TextEditor.class);        
-    }
-
-    /*
-     * @see groovy.util.BuilderSupport#setParent(java.lang.Object,
-     *      java.lang.Object)
-     */
-    protected void setParent(Object parent, Object child) {
-
-        //  TODO implement this
-        // 
-        //  if (parent instanceof ScrolledComposite && widget instanceof Control) {
-        //  	ScrolledComposite scrolledComposite = (ScrolledComposite) parent;
-        //      scrolledComposite.setContent((Control) widget);
-        //  }
-        
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/SwtHelper.java b/groovy/modules/groovy-swt/src/main/groovy/swt/SwtHelper.java
deleted file mode 100644
index 569e17f..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/SwtHelper.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package groovy.swt;
-
-import java.lang.reflect.Field;
-import java.util.StringTokenizer;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codehaus.groovy.GroovyException;
-
-/** 
- * A helper class for working with SWT.
- *
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version 1.1
- */
-public class SwtHelper  {
-
-    /** The Log to which logging calls will be made. */
-    private static final Log log = LogFactory.getLog(SwtHelper.class);
-    
-
-    /**
-     * Parses the comma delimited String of style codes which are or'd
-     * together. The given class describes the integer static constants
-     *
-     * @param constantClass is the type to look for static fields
-     * @param text is a comma delimited text value such as "border, resize"
-     * @return the int code
-     */
-    public static int parseStyle(Class constantClass, String text) throws GroovyException {
-        return parseStyle(constantClass, text, true);
-    }
-
-    /**
-     * Parses the comma delimited String of style codes which are or'd
-     * together. The given class describes the integer static constants
-     *
-     * @param constantClass is the type to look for static fields
-     * @param text is a comma delimited text value such as "border, resize"
-     * @param toUpperCase is whether the text should be converted to upper case
-     * before its compared against the reflection fields
-     * 
-     * @return the int code
-     */
-    public static int parseStyle(Class constantClass, String text, boolean toUpperCase) throws GroovyException{
-        int answer = 0;
-        if (text != null) {
-            if (toUpperCase) {
-                text = text.toUpperCase();
-            }
-            StringTokenizer enum = new StringTokenizer(text, ",");
-            while (enum.hasMoreTokens()) {
-                String token = enum.nextToken().trim();
-                answer |= getStyleCode(constantClass, token);
-            }
-        }
-        return answer;
-    }
-    
-    /**
-     * @return the code for the given word or zero if the word doesn't match a
-     * valid style
-     */
-    public static int getStyleCode(Class constantClass,String text) throws GroovyException {
-        try {
-            Field field = constantClass.getField(text);
-            if (field == null) {
-                log.warn( "Unknown style code: " + text +" will be ignored");
-                return 0;
-            }
-            return field.getInt(null);
-        } catch (NoSuchFieldException e) {
-            throw new GroovyException("The value: " + text + " is not understood ");
-        } catch (IllegalAccessException e) {
-            throw new GroovyException("The value: " + text + " is not understood");
-        }
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/convertor/ColorConverter.java b/groovy/modules/groovy-swt/src/main/groovy/swt/convertor/ColorConverter.java
deleted file mode 100644
index c7926c9..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/convertor/ColorConverter.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package groovy.swt.convertor;
-
-import java.util.List;
-import java.util.StringTokenizer;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.eclipse.swt.graphics.RGB;
-
-/**
- * A Converter that converts Strings in the form "#uuuuuu" or "x,y,z" into a
- * RGB object
- * 
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class ColorConverter {
-    private Logger log = Logger.getLogger(getClass().getName());
-    private static final ColorConverter instance = new ColorConverter();
-    private static String usageText = "Color value should be in the form of '#xxxxxx' or 'x,y,z'";
-
-    public static ColorConverter getInstance() {
-        return instance;
-    }
-
-    /**
-     * Parsers a String in the form "x, y, z" into an SWT RGB class
-     * 
-     * @param value
-     * @return RGB
-     */
-    protected RGB parseRGB(String value) {
-        StringTokenizer enum = new StringTokenizer(value, ",");
-        int red = 0;
-        int green = 0;
-        int blue = 0;
-        if (enum.hasMoreTokens()) {
-            red = parseNumber(enum.nextToken());
-        }
-        if (enum.hasMoreTokens()) {
-            green = parseNumber(enum.nextToken());
-        }
-        if (enum.hasMoreTokens()) {
-            blue = parseNumber(enum.nextToken());
-        }
-        return new RGB(red, green, blue);
-    }
-
-    /**
-     * Parsers a String in the form "#xxxxxx" into an SWT RGB class
-     * 
-     * @param value
-     * @return RGB
-     */
-    protected RGB parseHtml(String value) {
-        if (value.length() != 7) {
-            throw new IllegalArgumentException(usageText);
-        }
-        int colorValue = 0;
-        try {
-            colorValue = Integer.parseInt(value.substring(1), 16);
-            java.awt.Color swingColor = new java.awt.Color(colorValue);
-            return new RGB(swingColor.getRed(), swingColor.getGreen(), swingColor.getBlue());
-        }
-        catch (NumberFormatException ex) {
-            throw new IllegalArgumentException(value + "is not a valid Html color\n " + ex);
-        }
-    }
-
-    /**
-     * Parse a String
-     */
-    public RGB parse(String value) {
-        if (value.length() <= 1) {
-            throw new IllegalArgumentException(usageText);
-        }
-        if (value.startsWith("[") && value.endsWith("]")) {
-            value = value.substring(1, value.length() - 1);
-        }
-        if (value.charAt(0) == '#') {
-            return parseHtml(value);
-        }
-        else if (value.indexOf(',') != -1) {
-            return parseRGB(value);
-        }
-        else {
-            throw new IllegalArgumentException(usageText);
-        }
-    }
-
-    public RGB parse(List list) {
-        if (list.size() != 3) {
-            log.log(Level.WARNING, "color attribute must [x,y,z]");
-            return null;
-        }
-        int red = parseNumber("" + list.get(0));
-        int green = parseNumber("" + list.get(1));
-        int blue = parseNumber("" + list.get(2));
-        return new RGB(red, green, blue);
-    }
-
-    public Object convert(Class type, Object value) {
-        Object answer = null;
-        if (value != null) {
-            String text = value.toString();
-            answer = parse(text);
-        }
-        return answer;
-    }
-
-    protected int parseNumber(String text) {
-        text = text.trim();
-        return Integer.parseInt(text);
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/convertor/PointConverter.java b/groovy/modules/groovy-swt/src/main/groovy/swt/convertor/PointConverter.java
deleted file mode 100644
index fec26c6..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/convertor/PointConverter.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package groovy.swt.convertor;
-
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.eclipse.swt.graphics.Point;
-
-/**
- *  A Converter that turns a List in the form [x, y] into a Point object
- * 
- * @author <a href:ckl at dacelo.nl">Christiaan ten Klooster</a>
- * $Id$
- */
-public class PointConverter {
-    private Logger log = Logger.getLogger(getClass().getName());
-    
-    private static final PointConverter instance = new PointConverter();
-
-    public static PointConverter getInstance() {
-        return instance;
-    }
-
-    public Point parse(List list) {
-        if (list.size() != 2) {
-            log.log(Level.WARNING, "size attribute must [x,y]");
-            return null;	
-        }
-        int x = parseNumber("" + list.get(0));
-        int y = parseNumber("" + list.get(1));
-        return new Point(x, y);
-    }
-
-    protected int parseNumber(String text) {
-        return Integer.parseInt(text.trim());
-    }
-}
\ No newline at end of file
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/AbstractSwtFactory.java b/groovy/modules/groovy-swt/src/main/groovy/swt/factory/AbstractSwtFactory.java
deleted file mode 100644
index 991e2a1..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/AbstractSwtFactory.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Created on Feb 15, 2004
- *
- */
-package groovy.swt.factory;
-
-import groovy.jface.impl.ApplicationWindowImpl;
-import groovy.swt.SwtHelper;
-
-import java.lang.reflect.Field;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.codehaus.groovy.GroovyException;
-import org.codehaus.groovy.runtime.InvokerHelper;
-import org.eclipse.jface.window.ApplicationWindow;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.forms.widgets.Form;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.forms.widgets.Section;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public abstract class AbstractSwtFactory {
-    public abstract Object newInstance(Map properties, Object parent)
-    throws GroovyException;
-
-    /**
-     * set the properties
-     * 
-     * @param bean
-     * @param properties
-     */
-    protected void setBeanProperties(Object bean, Map properties) {
-        for (Iterator iter = properties.entrySet().iterator(); iter.hasNext();) {
-            Map.Entry entry = (Map.Entry) iter.next();
-            String property = entry.getKey().toString();
-            Object value = entry.getValue();
-            Field field = null;
-            try {
-                field = bean.getClass().getDeclaredField(property);
-                if (value instanceof String) {
-                    int style = SwtHelper.parseStyle(SWT.class, (String) value);
-                    field.setInt(bean, style);
-                }
-                else if (value instanceof Boolean) {
-                    field.setBoolean(bean, ((Boolean) value).booleanValue());
-                }
-                else if (value instanceof Integer) {
-                    field.setInt(bean, ((Integer) value).intValue());
-                }
-                else if (value instanceof Double) {
-                    field.setDouble(bean, ((Double) value).doubleValue());
-                }
-                else if (value instanceof Float) {
-                    field.setFloat(bean, ((Float) value).floatValue());
-                }
-                else {
-                    InvokerHelper.setProperty(bean, property, value);
-                }
-            }
-            catch (Exception e) {
-            }
-            if (field == null) {
-                InvokerHelper.setProperty(bean, property, value);
-            }
-        }
-    }
-
-    /**
-     * return the parent widget
-     * 
-     * @param parent
-     * @return
-     */
-    protected Widget getParentWidget(Object parent) {
-        if (parent instanceof ApplicationWindow) {
-            return (Composite) ((ApplicationWindowImpl) parent).getContents();
-        }
-        else if (parent instanceof Form) {
-            return ((Form) parent).getBody();
-        }
-        else if (parent instanceof ScrolledForm) {
-            return ((ScrolledForm) parent).getBody();
-        }
-        else if (parent instanceof Section) {
-            return ((Section) parent).getClient();
-        }
-        else if (parent instanceof Composite) {
-            return (Composite) parent;
-        }
-        else {
-            return null;
-        }
-    }
-
-    /**
-     * return the parent shell
-     * 
-     * @param parent
-     * @return
-     */
-    protected Shell getParentShell(Object parent) {
-        if (parent instanceof ApplicationWindow) {
-            return ((ApplicationWindowImpl) parent).getShell();
-        }
-        else if (parent instanceof Shell) {
-            return (Shell) parent;
-        }
-        else {
-            return null;
-        }
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/ActionFactory.java b/groovy/modules/groovy-swt/src/main/groovy/swt/factory/ActionFactory.java
deleted file mode 100644
index d9b1b13..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/ActionFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package groovy.swt.factory;
-
-import groovy.jface.factory.ActionImpl;
-
-import java.util.Map;
-
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IContributionManager;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class ActionFactory extends AbstractSwtFactory implements SwtFactory {
-
-
-    /*
-     * @see groovy.swt.impl.SwtFactory#newInstance(java.util.Map,
-     *      java.lang.Object)
-     */
-    public Object newInstance(Map properties, Object parent)
-    throws GroovyException {
-        Action action = new ActionImpl();
-        setBeanProperties(action, properties);
-        if (parent instanceof IContributionManager){
-            IContributionManager contributionManager = (IContributionManager) parent;
-            contributionManager.add(action);
-        }
-        return action;
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/FormFactory.java b/groovy/modules/groovy-swt/src/main/groovy/swt/factory/FormFactory.java
deleted file mode 100644
index 6866918..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/FormFactory.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Created on Feb 27, 2004
- *
- */
-package groovy.swt.factory;
-
-import groovy.swt.InvalidParentException;
-import groovy.swt.SwtHelper;
-
-import java.util.Map;
-
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.forms.widgets.FormText;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.Section;
-
-/**
- * @author <a href:ckl at dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class FormFactory extends AbstractSwtFactory implements SwtFactory {
-
-    /** static is evil, too many toolkits is evil */
-    protected static FormToolkit toolkit;
-
-    /** type of */
-    private String type;
-
-    /**
-     * @param string
-     */
-    public FormFactory(String type) {
-        this.type = type;
-    }
-
-    /*
-     * @see groovy.swt.factory.AbstractSwtFactory#newInstance(java.util.Map,
-     *      java.lang.Object)
-     */
-    public Object newInstance(Map properties, Object parent) throws GroovyException {
-        Composite parentComposite = (Composite) getParentWidget(parent);
-        if (toolkit == null) {
-            toolkit = new FormToolkit(parentComposite.getDisplay());
-        }
-        String styleProperty = (String) properties.remove("style");
-        String text = (String) properties.remove("text");
-        int style = SWT.NULL;
-        if (styleProperty != null) {
-            if (type.equals("formSection")) {
-                style = SwtHelper.parseStyle(Section.class, styleProperty);
-            }
-            else {
-                style = SwtHelper.parseStyle(SWT.class, styleProperty);
-            }
-        }
-        if (parentComposite != null) {
-            Object formWidget = getFormWidget(parentComposite, properties, style, text);
-            setBeanProperties(formWidget, properties);
-            return formWidget;
-        }
-        else {
-            throw new InvalidParentException("composite instance");
-        }
-    }
-
-    /**
-     * @param parentComposite
-     * @param style
-     * @param text
-     * @return
-     */
-    private Object getFormWidget(final Composite parentComposite, Map properties, int style, 
-    String text) throws GroovyException {
-        if ("form".equals(type)) {
-            return toolkit.createForm(parentComposite);
-        }
-        if ("scrolledForm".equals(type)) {
-            return toolkit.createScrolledForm(parentComposite);
-        }
-        if ("formButton".equals(type)) {
-            return toolkit.createButton(parentComposite, text, style);
-        }
-        if ("formComposite".equals(type)) {
-            return toolkit.createComposite(parentComposite, style);
-        }
-        if ("formCompositeSeparator".equals(type)) {
-            return toolkit
-            .createCompositeSeparator(parentComposite);
-        }
-        if ("formExpandableComposite".equals(type)) {
-            return toolkit.createExpandableComposite(
-            parentComposite, style);
-        }
-        if ("formText".equals(type)) {
-            return toolkit.createText(parentComposite, text);
-        }
-        if ("formHyperlink".equals(type)) {
-            return toolkit.createHyperlink(parentComposite, text, 
-            style);
-        }
-        if ("formImageHyperlink".equals(type)) {
-            return toolkit.createImageHyperlink(
-            parentComposite, style);
-        }
-        if ("formLabel".equals(type)) {
-            return toolkit.createLabel(parentComposite, text);
-        }
-        if ("formPageBook".equals(type)) {
-            return toolkit.createPageBook(parentComposite, style);
-        }
-        if ("formSection".equals(type)) {
-            Section section = toolkit.createSection(parentComposite, style);
-            if (text != null) {
-                section.setText(text);
-            }
-            section.setSeparatorControl(toolkit.createCompositeSeparator(section));
-            String description = (String) properties.remove("description");
-            if (description != null) {
-                section.setDescription(description);
-            }
-            Composite client = toolkit.createComposite(section);
-            client.setLayout(new GridLayout());
-            section.setClient(client);
-            return section;
-        }
-        if ("formSeparator".equals(type)) {
-            return toolkit.createSeparator(parentComposite, style);
-        }
-        if ("formTable".equals(type)) {
-            return toolkit.createTable(parentComposite, style);
-        }
-        if ("formFormattedText".equals(type)) {
-            boolean parseTags = false;
-            boolean expandURLs = false;
-            if (properties.get("parseTags") != null) {
-                parseTags = ((Boolean) properties.remove("parseTags")).booleanValue();
-            }
-            if (properties.get("expandURLs") != null) {
-                expandURLs = ((Boolean) properties.remove("expandURLs")).booleanValue();
-            }
-            FormText formText = toolkit.createFormText(parentComposite, true);
-            formText.setText(text, parseTags, expandURLs);
-            return formText;
-        }
-        if ("formTree".equals(type)) {
-            return toolkit.createTree(parentComposite, style);
-        }
-        return null;
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/ImageFactory.java b/groovy/modules/groovy-swt/src/main/groovy/swt/factory/ImageFactory.java
deleted file mode 100644
index 84016d9..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/ImageFactory.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Created on Feb 15, 2004
- *
- */
-package groovy.swt.factory;
-
-import groovy.lang.MissingPropertyException;
-import groovy.swt.InvalidParentException;
-
-import java.io.File;
-import java.util.Map;
-
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Decorations;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class ImageFactory extends AbstractSwtFactory implements SwtFactory {
-
-    /*
-     * @see groovy.swt.impl.Factory#newInstance(java.util.Map,
-     *      java.lang.Object)
-     */
-    public Object newInstance(Map properties, Object parent) throws GroovyException {
-        String src = (String) properties.remove("src");
-        if (src == null) { throw new MissingPropertyException("src", Image.class); }
-
-        if (parent == null) { throw new InvalidParentException("Widget or a Window"); }
-
-        Image image = null;
-        File imageFile = new File(src);
-        if (imageFile.exists()) {
-            image = new Image(Display.getCurrent(), src);
-        } else {
-            image = new Image(Display.getCurrent(), ImageFactory.class.getClassLoader()
-                    .getResourceAsStream(src));
-        }
-
-        if (parent instanceof Window) {
-            setWindowImage((Window) parent, image);
-        } else if (parent instanceof Widget) {
-            setWidgetImage((Widget) parent, image);
-        }
-
-        return image;
-    }
-
-    /**
-     * Set default image Window
-     * 
-     * @param window
-     * @param image
-     */
-    private void setWindowImage(Window window, Image image) {
-        window.getShell().setImage(image);
-    }
-
-    /**
-     * Add image to a widget
-     * 
-     * @param parent
-     * @param image
-     * @throws JellyTagException
-     */
-    protected void setWidgetImage(Widget parent, Image image) throws GroovyException {
-        if (parent instanceof Label) {
-            Label label = (Label) parent;
-            label.setImage(image);
-
-        } else if (parent instanceof Button) {
-            Button button = (Button) parent;
-            button.setImage(image);
-
-        } else if (parent instanceof Item) {
-            Item item = (Item) parent;
-            item.setImage(image);
-
-        } else if (parent instanceof Decorations) {
-            Decorations item = (Decorations) parent;
-            item.setImage(image);
-
-        } else {
-            throw new GroovyException(
-                    "This tag must be nested inside a <label>, <button> or <item> tag");
-        }
-    }
-
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/LayoutDataFactory.java b/groovy/modules/groovy-swt/src/main/groovy/swt/factory/LayoutDataFactory.java
deleted file mode 100644
index b9f8f37..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/LayoutDataFactory.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Created on Feb 16, 2004
- *
- */
-package groovy.swt.factory;
-
-import groovy.swt.SwtHelper;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Map;
-
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.swt.widgets.Control;
-
-
-/**
- * @author <a href:ckl at dacelo.nl">Christiaan ten Klooster</a>
- * $Id$
- */
-public class LayoutDataFactory extends AbstractSwtFactory implements SwtFactory{
-
-    private Class beanClass;
-
-    /**
-     * @param class1
-     */
-    public LayoutDataFactory(Class beanClass) {
-        this.beanClass = beanClass;
-    }
-
-    /*
-     * @see groovy.swt.impl.SwtFactory#newInstance(java.util.Map,
-     *           java.lang.Object)
-     */
-    public Object newInstance(Map properties, Object parent)
-            throws GroovyException {
-
-        Object bean = createWidget(properties, parent);
-
-        if (bean != null) {
-            setBeanProperties(bean, properties);
-        }
-
-        if (parent instanceof Control) {
-            Control control = (Control) parent;
-            control.setLayoutData(bean);
-        }
-
-        return bean;
-    }
-
-    private Object createWidget(Map properties, Object parent)
-            throws GroovyException {
-        Object bean = null;
-
-        String styleText = (String) properties.remove("style");
-        if (styleText != null) {
-            int style = SwtHelper.parseStyle(beanClass, styleText);
-
-            // now lets try invoke a constructor
-            Class[] types = { int.class};
-
-            try {
-                Constructor constructor = beanClass.getConstructor(types);
-                if (constructor != null) {
-                    Object[] values = { new Integer(style)};
-                    bean = constructor.newInstance(values);
-                }
-            } catch (NoSuchMethodException e) {
-                throw new GroovyException(e.getMessage());
-            } catch (InstantiationException e) {
-                throw new GroovyException(e.getMessage());
-            } catch (IllegalAccessException e) {
-                throw new GroovyException(e.getMessage());
-            } catch (InvocationTargetException e) {
-                throw new GroovyException(e.getMessage());
-            }
-        } else {
-            try {
-                bean = beanClass.newInstance();
-            } catch (InstantiationException e) {
-                throw new GroovyException(e.getMessage());
-            } catch (IllegalAccessException e) {
-                throw new GroovyException(e.getMessage());
-            }
-        }
-
-        if (bean != null) {
-            setBeanProperties(bean, properties);
-        }
-
-        return bean;
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/LayoutFactory.java b/groovy/modules/groovy-swt/src/main/groovy/swt/factory/LayoutFactory.java
deleted file mode 100644
index 94a63a7..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/LayoutFactory.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Created on Feb 15, 2004
- *
- */
-package groovy.swt.factory;
-
-import java.util.Map;
-
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class LayoutFactory extends AbstractSwtFactory implements SwtFactory {
-
-    private Class beanClass;
-
-    /**
-     * @param beanClass
-     */
-    public LayoutFactory(Class beanClass) {
-        this.beanClass = beanClass;
-    }
-
-    /*
-     * @see groovy.swt.impl.SwtFactory#newInstance(java.util.Map,
-     *      java.lang.Object)
-     */
-    public Object newInstance(Map properties, Object parent)
-            throws GroovyException {
-
-        Layout layout;
-        try {
-            layout = (Layout) beanClass.newInstance();
-        } catch (InstantiationException e) {
-            throw new GroovyException(e.getMessage());
-        } catch (IllegalAccessException e) {
-            throw new GroovyException(e.getMessage());
-        }
-
-        if (layout != null) {
-            setBeanProperties(layout, properties);
-        }
-
-        Widget parentComposite = getParentWidget(parent);
-        if (parentComposite != null) {
-            ((Composite) parentComposite).setLayout(layout);
-        }
-
-        return layout;
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/ListenerFactory.java b/groovy/modules/groovy-swt/src/main/groovy/swt/factory/ListenerFactory.java
deleted file mode 100644
index f6eb0db..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/ListenerFactory.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Created on Feb 15, 2004
- */
-package groovy.swt.factory;
-
-import groovy.swt.SwtHelper;
-import groovy.swt.impl.ExpansionListenerImpl;
-import groovy.swt.impl.HyperLinkListenerImpl;
-import groovy.swt.impl.ListenerImpl;
-import groovy.swt.impl.LocationListenerImpl;
-import groovy.swt.impl.ProgressListenerImpl;
-import groovy.swt.impl.StatusTextListenerImpl;
-
-import java.util.Map;
-
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.browser.Browser;
-import org.eclipse.swt.browser.LocationListener;
-import org.eclipse.swt.browser.ProgressListener;
-import org.eclipse.swt.browser.StatusTextListener;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.forms.events.ExpansionListener;
-import org.eclipse.ui.forms.events.HyperlinkListener;
-import org.eclipse.ui.forms.widgets.AbstractHyperlink;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class ListenerFactory extends AbstractSwtFactory implements SwtFactory {
-    private Class beanClass;
-
-    /**
-     * @param class1
-     */
-    public ListenerFactory(Class beanClass) {
-        this.beanClass = beanClass;
-    }
-
-    /*
-     * @see groovy.swt.impl.SwtFactory#newInstance(java.util.Map,
-     *      java.lang.Object)
-     */
-    public Object newInstance(Map properties, Object parent)
-    throws GroovyException {
-        String type = (String) properties.remove("type");
-        if (parent instanceof Browser){
-            Browser browser = (Browser) parent;
-            if (beanClass.equals(LocationListener.class)){
-                LocationListener locationListener = new LocationListenerImpl(type);
-                browser.addLocationListener(locationListener);
-                return locationListener;
-            }
-            else if (beanClass.equals(ProgressListener.class)){
-                ProgressListener progressListener = new ProgressListenerImpl(type);
-                browser.addProgressListener(progressListener);
-                return progressListener;
-            }
-            else if (beanClass.equals(StatusTextListener.class)){
-                StatusTextListener statusTextListener = new StatusTextListenerImpl();
-                browser.addStatusTextListener(statusTextListener);
-                return statusTextListener;
-            }
-        }
-        else if (parent instanceof AbstractHyperlink){
-            AbstractHyperlink hyperlink = (AbstractHyperlink) parent;
-            HyperlinkListener hyperLinkListenerImpl = new HyperLinkListenerImpl(type);
-            hyperlink.addHyperlinkListener(hyperLinkListenerImpl);
-            return hyperLinkListenerImpl;
-        }
-        else if (parent instanceof ExpandableComposite){
-            ExpandableComposite expandableComposite = (ExpandableComposite) parent;
-            ExpansionListener expansionListener = new ExpansionListenerImpl(type);
-            expandableComposite.addExpansionListener(expansionListener);
-            return expansionListener;
-        }
-        else if (parent instanceof Widget){
-            Widget widget = (Widget) parent;
-            int eventType = getEventType(type);
-            if (eventType == 0){
-                throw new GroovyException(
-                "No event type specified, could not understand: " + type);
-            }
-            ListenerImpl listenerImpl = new ListenerImpl();
-            widget.addListener(eventType, listenerImpl);
-            return listenerImpl;
-        }
-        throw new GroovyException("No factory found for class: " + beanClass);
-    }
-
-    /**
-     * Parses the given event type String and returns the SWT event type code
-     * 
-     * @param type
-     *            is the String event type
-     * @return the SWT integer event type
-     */
-    protected int getEventType(String type) throws GroovyException {
-        return SwtHelper.parseStyle(SWT.class, type, false);
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/SwtFactory.java b/groovy/modules/groovy-swt/src/main/groovy/swt/factory/SwtFactory.java
deleted file mode 100644
index 5143287..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/SwtFactory.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Created on Feb 15, 2004
- *
- */
-package groovy.swt.factory;
-
-import java.util.Map;
-
-import org.codehaus.groovy.GroovyException;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public interface SwtFactory {
-
-    /**
-     * Create a new instance
-     */
-    public Object newInstance(Map properties, Object parent)
-            throws GroovyException;
-
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/WidgetFactory.java b/groovy/modules/groovy-swt/src/main/groovy/swt/factory/WidgetFactory.java
deleted file mode 100644
index 4044fd5..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/factory/WidgetFactory.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Created on Feb 15, 2004
- *
- */
-package groovy.swt.factory;
-
-import groovy.jface.impl.ApplicationWindowImpl;
-import groovy.swt.SwtHelper;
-import groovy.swt.convertor.ColorConverter;
-import groovy.swt.convertor.PointConverter;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.List;
-import java.util.Map;
-
-import org.codehaus.groovy.GroovyException;
-import org.eclipse.jface.window.ApplicationWindow;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class WidgetFactory extends AbstractSwtFactory implements SwtFactory {
-    protected Class beanClass;
-    protected int style = SWT.NONE;
-
-    public WidgetFactory(Class beanClass) {
-        this.beanClass = beanClass;
-    }
-
-    /**
-     * @param beanClass2
-     * @param style
-     */
-    public WidgetFactory(Class beanClass, int style) {
-        this.beanClass = beanClass;
-        this.style = style;
-    }
-
-    /*
-     * @see groovy.swt.impl.Factory#newInstance(java.util.Map,
-     *      java.lang.Object)
-     */
-    public Object newInstance(Map properties, Object parent)
-    throws GroovyException {
-        if (parent instanceof ApplicationWindow) {
-            parent = ((ApplicationWindowImpl) parent).getContents();
-        }
-        String styleProperty = (String) properties.remove("style");
-        if (styleProperty != null) {
-            style = SwtHelper.parseStyle(SWT.class, styleProperty);
-        }
-        Object bean = createWidget(parent);
-        if (bean != null) {
-            setBeanProperties(bean, properties);
-        }
-        return bean;
-    }
-
-    /**
-     * @param parent
-     * @param bean
-     * @return @throws
-     *         GroovyException
-     */
-    protected Object createWidget(Object parent) throws GroovyException {
-        if (beanClass == null) {
-            throw new GroovyException(
-            "No Class available to create the new widget");
-        }
-        try {
-            if (parent == null) {
-                // lets try call a constructor with a single style
-                Class[] types = {
-                    int.class
-                };
-                Constructor constructor = beanClass.getConstructor(types);
-                if (constructor != null) {
-                    Object[] arguments = {
-                        new Integer(style)
-                    };
-                    return constructor.newInstance(arguments);
-                }
-            }
-            else {
-                // lets try to find the constructor with 2 arguments with the
-                // 2nd argument being an int
-                Constructor[] constructors = beanClass.getConstructors();
-                if (constructors != null) {
-                    for (int i = 0, size = constructors.length; i < size; i++) {
-                        Constructor constructor = constructors[i];
-                        Class[] types = constructor.getParameterTypes();
-                        if (types.length == 2
-                        && types[1].isAssignableFrom(int.class)) {
-                            if (types[0].isAssignableFrom(parent.getClass())) {
-                                Object[] arguments = {
-                                        parent, 
-                                        new Integer(style)
-                                };
-                                return constructor.newInstance(arguments);
-                            }
-                            // lets try to find the constructor with 1
-                            // arguments
-                        }
-                        else if (types.length == 1
-                        && types[0].isAssignableFrom(parent.getClass())) {
-                            Object[] arguments = {
-                                parent
-                            };
-                            return constructor.newInstance(arguments);
-                        }
-                    }
-                }
-            }
-            return beanClass.newInstance();
-        }
-        catch (NoSuchMethodException e) {
-            throw new GroovyException(e.getMessage());
-        }
-        catch (InstantiationException e) {
-            throw new GroovyException(e.getMessage());
-        }
-        catch (IllegalAccessException e) {
-            throw new GroovyException(e.getMessage());
-        }
-        catch (InvocationTargetException e) {
-            throw new GroovyException(e.getTargetException()
-            .getLocalizedMessage());
-        }
-    }
-
-    protected void setBeanProperties(Object bean, Map properties) {
-        if (bean instanceof Control) {
-            Control control = (Control) bean;
-
-            // set size of widget
-            Object size = properties.remove("size");
-            setSize(control, size);
-
-            // set background of widget
-            Object colorValue = properties.remove("background");
-            Color background = getColor(control, colorValue);
-            control.setBackground(background);
-
-            // set foreground of widget
-            colorValue = properties.remove("foreground");
-            Color foreground = getColor(control, colorValue);
-            control.setForeground(foreground);
-        }
-
-        // set the properties
-        super.setBeanProperties(bean, properties);
-    }
-
-    protected void setSize(Control control, Object size) {
-        Point point = null;
-        if (size != null) {
-            if (size instanceof Point) {
-                point = (Point) size;
-            }
-            else if (size instanceof List) {
-                point = PointConverter.getInstance().parse((List) size);
-            }
-            control.setSize(point);
-        }
-    }
-
-    protected Color getColor(Control control, Object colorValue) {
-        Color color = null;
-        if (colorValue != null) {
-            RGB rgb = null;
-            if (colorValue instanceof Color) {
-                color = (Color) colorValue;
-            }
-            else if (colorValue instanceof List) {
-                rgb = ColorConverter.getInstance().parse((List) colorValue);
-                color = new Color(control.getDisplay(), rgb);
-            }
-            else {
-                rgb = ColorConverter.getInstance().parse(colorValue.toString());
-                color = new Color(control.getDisplay(), rgb);
-            }
-        }
-        return color;
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/guibuilder/ApplicationGuiBuilder.java b/groovy/modules/groovy-swt/src/main/groovy/swt/guibuilder/ApplicationGuiBuilder.java
deleted file mode 100644
index 4ebdb26..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/guibuilder/ApplicationGuiBuilder.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Created on Mar 1, 2004
- *
- */
-package groovy.swt.guibuilder;
-
-import groovy.jface.JFaceBuilder;
-import groovy.lang.Binding;
-import groovy.lang.Closure;
-import groovy.util.GroovyScriptEngine;
-
-import java.io.IOException;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * WORK IN PROGRESS, don't use this one yet
- * 
- * This will be the main guibuilder
- * 
- * TODO provide entry point for pull tools (e.g. i18n, security) TODO check
- * rebuild command
- * 
- * @author <a href:ckl at dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class ApplicationGuiBuilder extends JFaceBuilder {
-    private Logger log = Logger.getLogger(getClass().getName());
-
-    /** the caching script engine */
-    private GroovyScriptEngine scriptEngine;
-
-    /**
-     * tha constructor
-     * 
-     * @param rootUrl
-     * @throws IOException
-     */
-    public ApplicationGuiBuilder(String rootUrl) throws IOException {
-        scriptEngine = new GroovyScriptEngine(rootUrl);
-    }
-
-    /*
-     * @see groovy.util.BuilderSupport#createNode(java.lang.Object,
-     *      java.util.Map)
-     */
-    protected Object createNode(Object name, Map attributes) {
-        Object widget = null;
-        Composite parent = (Composite) attributes.remove("parent");
-        String script = (String) attributes.remove("script");
-        if ("run".equals(name) && parent != null && script != null) {
-            if (parent instanceof Composite) {
-                widget = runScript(script, parent);
-            }
-            else {
-                log.log(Level.WARNING, "invalid parent: " + parent);
-            }
-        }
-        else if ("rebuild".equals(name) && parent != null && script == null) {
-            Closure closure = (Closure) attributes.remove("closure");
-            if (closure != null) {
-                disposeChildren(parent);
-                closure.call(parent);
-                parent.pack();
-                parent.redraw();
-            }
-        }
-        else {
-            widget = super.createNode(name, attributes);
-        }
-        return widget;
-    }
-
-    /**
-     * @param widget
-     * @param script
-     * @param parent
-     * @return
-     */
-    private Object runScript(String script, Composite parent) {
-        disposeChildren(parent);
-
-        // build new widget
-        Object widget = null;
-        Binding binding = new Binding();
-        binding.setVariable("parent", parent);
-        binding.setVariable("guiBuilder", this);
-        try {
-            widget = scriptEngine.run(script, binding);
-        }
-        catch (Exception e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    /**
-     * dispose all children
-     * 
-     * @param parent
-     */
-    private void disposeChildren(Composite parent) {
-        Control[] children = parent.getChildren();
-        for (int i = 0; i < children.length; i++) {
-            Control control = children[i];
-            control.dispose();
-        }
-    }
-
-    /*
-     * @see groovy.util.BuilderSupport#createNode(java.lang.Object,
-     *      java.lang.Object)
-     */
-    protected Object createNode(Object name, Object parent) {
-        System.out.println("createNode: " + name + " parent: " + parent);
-        return super.createNode(name, parent);
-    }
-
-    /*
-     * @see groovy.util.BuilderSupport#createNode(java.lang.Object)
-     */
-    protected Object createNode(Object name) {
-        System.out.println("createNode: " + name);
-        return super.createNode(name);
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/impl/ExpansionListenerImpl.java b/groovy/modules/groovy-swt/src/main/groovy/swt/impl/ExpansionListenerImpl.java
deleted file mode 100644
index 324e78e..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/impl/ExpansionListenerImpl.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Created on Feb 28, 2004
- *
- */
-package groovy.swt.impl;
-
-import groovy.lang.Closure;
-import groovy.swt.ClosureSupport;
-
-import org.eclipse.ui.forms.events.ExpansionEvent;
-import org.eclipse.ui.forms.events.ExpansionListener;
-
-/**
- * @author <a href:ckl at dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class ExpansionListenerImpl implements ExpansionListener, ClosureSupport{
-    private String type;
-    private Closure closure;
-
-    public ExpansionListenerImpl(String type) {
-        this.type = type;
-    }
-
-    public Closure getClosure()
-    {
-        return closure;
-    }
-
-    public void setClosure(Closure closure)
-    {
-        this.closure = closure;
-    }
-
-    /*
-     * @see org.eclipse.ui.forms.events.ExpansionListener#expansionStateChanging(org.eclipse.ui.forms.events.ExpansionEvent)
-     */
-    public void expansionStateChanging(ExpansionEvent event) {
-        if (closure == null){
-            throw new NullPointerException(
-            "No closure has been configured for this Listener");
-        }
-        if ("expansionStateChanging".equals(type))
-        {
-            closure.call(event);
-        }
-    }
-
-    /*
-     * @see org.eclipse.ui.forms.events.ExpansionListener#expansionStateChanged(org.eclipse.ui.forms.events.ExpansionEvent)
-     */
-    public void expansionStateChanged(ExpansionEvent event) {
-        if (closure == null){
-            throw new NullPointerException(
-            "No closure has been configured for this Listener");
-        }
-        if ("expansionStateChanged".equals(type))
-        {
-            closure.call(event);
-        }
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/impl/HyperLinkListenerImpl.java b/groovy/modules/groovy-swt/src/main/groovy/swt/impl/HyperLinkListenerImpl.java
deleted file mode 100644
index 6dcc762..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/impl/HyperLinkListenerImpl.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Created on Feb 28, 2004
- *
- */
-package groovy.swt.impl;
-
-import groovy.lang.Closure;
-import groovy.swt.ClosureSupport;
-
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.events.HyperlinkListener;
-
-
-/**
- * @author <a href:ckl at dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class HyperLinkListenerImpl implements HyperlinkListener, ClosureSupport {
-    private String type;
-    private Closure closure;
-
-    public HyperLinkListenerImpl(String type) {
-        this.type = type;
-    }
-
-    public Closure getClosure()
-    {
-        return closure;
-    }
-
-    public void setClosure(Closure closure)
-    {
-        this.closure = closure;
-    }
-
-    /*
-     * @see javax.swing.event.HyperlinkListener#hyperlinkUpdate(javax.swing.event.HyperlinkEvent)
-     */
-    public void hyperlinkUpdate(HyperlinkEvent event) {
-        if ("hyperlinkUpdate".equals(type))
-        {
-            closure.call(event);
-        }
-    }
-
-    /*
-     * @see org.eclipse.ui.forms.events.HyperlinkListener#linkEntered(org.eclipse.ui.forms.events.HyperlinkEvent)
-     */
-    public void linkEntered(HyperlinkEvent event) {
-        if ("linkEntered".equals(type))
-        {
-            closure.call(event);
-        }
-    }
-
-    /*
-     * @see org.eclipse.ui.forms.events.HyperlinkListener#linkExited(org.eclipse.ui.forms.events.HyperlinkEvent)
-     */
-    public void linkExited(HyperlinkEvent event) {
-        if ("linkExited".equals(type))
-        {
-            closure.call(event);
-        }
-    }
-
-    /*
-     * @see org.eclipse.ui.forms.events.HyperlinkListener#linkActivated(org.eclipse.ui.forms.events.HyperlinkEvent)
-     */
-    public void linkActivated(HyperlinkEvent event) {
-        if ("linkActivated".equals(type))
-        {
-            closure.call(event);
-        }
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/impl/ListenerImpl.java b/groovy/modules/groovy-swt/src/main/groovy/swt/impl/ListenerImpl.java
deleted file mode 100644
index 403b1e6..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/impl/ListenerImpl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Created on Feb 16, 2004
- *
- */
-package groovy.swt.impl;
-
-import groovy.lang.Closure;
-import groovy.swt.ClosureSupport;
-
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class ListenerImpl implements Listener, ClosureSupport {
-    private Closure closure;
-    public Event event;
-
-    public Closure getClosure() {
-        return closure;
-    }
-
-    public void setClosure(Closure closure) {
-        this.closure = closure;
-    }
-
-    public void handleEvent(Event event) {
-        if (closure == null){
-            throw new NullPointerException(
-            "No closure has been configured for this Listener");
-        }
-        this.event = event;
-        closure.setDelegate(this);
-        closure.call(this);
-    }
-
-    public Event getEvent() {
-        return event;
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/impl/LocationListenerImpl.java b/groovy/modules/groovy-swt/src/main/groovy/swt/impl/LocationListenerImpl.java
deleted file mode 100644
index acacbe9..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/impl/LocationListenerImpl.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package groovy.swt.impl;
-
-import groovy.lang.Closure;
-import groovy.swt.ClosureSupport;
-
-import org.eclipse.swt.browser.LocationEvent;
-import org.eclipse.swt.browser.LocationListener;
-
-/**
- * This implementation adds a LocationListener to a browser widget
- * 
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- */
-public class LocationListenerImpl implements LocationListener, ClosureSupport {
-
-    private String type;
-
-    private Closure closure;
-
-    /**
-     * @param type
-     */
-    public LocationListenerImpl(String type)
-    {
-        this.type = type;
-    }
-
-    public Closure getClosure()
-    {
-        return closure;
-    }
-
-    public void setClosure(Closure closure)
-    {
-        this.closure = closure;
-    }
-
-    /*
-     * @see org.eclipse.swt.browser.LocationListener#changing(org.eclipse.swt.browser.LocationEvent)
-     */
-    public void changing(LocationEvent event)
-    {
-        if (closure == null) { throw new NullPointerException(
-                "No closure has been configured for this Listener"); }
-
-        if ("changing".equals(type))
-        {
-            closure.setProperty("event", new CustomLocationEvent(event));
-            closure.call(event);
-        }
-
-    }
-
-    /*
-     * @see org.eclipse.swt.browser.LocationListener#changed(org.eclipse.swt.browser.LocationEvent)
-     */
-    public void changed(LocationEvent event)
-    {
-        if (closure == null) { throw new NullPointerException(
-                "No closure has been configured for this Action"); }
-
-        if ("changed".equals(type))
-        {
-            closure.setProperty("event", new CustomLocationEvent(event));
-            closure.call(event);
-        }
-    }
-
-    public class CustomLocationEvent {
-
-        private LocationEvent event;
-
-        public CustomLocationEvent(LocationEvent event)
-        {
-            this.event = event;
-        }
-
-        public String getLocation()
-        {
-            return event.location;
-        }
-    }
-
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/impl/ProgressListenerImpl.java b/groovy/modules/groovy-swt/src/main/groovy/swt/impl/ProgressListenerImpl.java
deleted file mode 100644
index ae14251..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/impl/ProgressListenerImpl.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package groovy.swt.impl;
-
-import groovy.lang.Closure;
-import groovy.swt.ClosureSupport;
-
-import org.eclipse.swt.browser.ProgressEvent;
-import org.eclipse.swt.browser.ProgressListener;
-
-/**
- * This implementation adds a ProgressListener to a browser widget
- * 
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- */
-public class ProgressListenerImpl implements ProgressListener, ClosureSupport {
-
-    private Closure closure;
-
-    private String type;
-
-    /**
-     * @param type
-     */
-    public ProgressListenerImpl(String type)
-    {
-        this.type = type;
-    }
-
-    public Closure getClosure()
-    {
-        return closure;
-    }
-
-    public void setClosure(Closure closure)
-    {
-        this.closure = closure;
-    }
-
-    /*
-     * @see org.eclipse.swt.browser.ProgressListener#changed(org.eclipse.swt.browser.ProgressEvent)
-     */
-    public void changed(ProgressEvent event)
-    {
-
-        if (closure == null) { throw new NullPointerException(
-                "No closure has been configured for this Listener"); }
-
-        if ("changed".equals(type))
-        {
-            closure.setProperty("event", new CustomProgressEvent(event));
-            closure.call(event);
-        }
-
-    }
-
-    /*
-     * @see org.eclipse.swt.browser.ProgressListener#completed(org.eclipse.swt.browser.ProgressEvent)
-     */
-    public void completed(ProgressEvent event)
-    {
-        if (closure == null) { throw new NullPointerException(
-                "No closure has been configured for this Listener"); }
-
-        if ("completed".equals(type))
-        {
-            closure.setProperty("event", new CustomProgressEvent(event));
-            closure.call(event);
-        }
-
-    }
-
-    public class CustomProgressEvent {
-
-        private ProgressEvent event;
-
-        public CustomProgressEvent(ProgressEvent event)
-        {
-            this.event = event;
-        }
-
-        public int getCurrent()
-        {
-            return event.current;
-        }
-
-        public int getTotal()
-        {
-            return event.total;
-        }
-    }
-
-}
diff --git a/groovy/modules/groovy-swt/src/main/groovy/swt/impl/StatusTextListenerImpl.java b/groovy/modules/groovy-swt/src/main/groovy/swt/impl/StatusTextListenerImpl.java
deleted file mode 100644
index 1e266e6..0000000
--- a/groovy/modules/groovy-swt/src/main/groovy/swt/impl/StatusTextListenerImpl.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package groovy.swt.impl;
-
-import groovy.lang.Closure;
-import groovy.swt.ClosureSupport;
-
-import org.eclipse.swt.browser.StatusTextEvent;
-import org.eclipse.swt.browser.StatusTextListener;
-
-/**
- * This implementation adds a StatusTextListener to a browser widget
- * 
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
- */
-public class StatusTextListenerImpl implements StatusTextListener, ClosureSupport {
-
-    private Closure closure;
-
-    public Closure getClosure()
-    {
-        return closure;
-    }
-
-    public void setClosure(Closure closure)
-    {
-        this.closure = closure;
-    }
-
-    /*
-     * @see org.eclipse.swt.browser.StatusTextListener#changed(org.eclipse.swt.browser.StatusTextEvent)
-     */
-    public void changed(StatusTextEvent event)
-    {
-        if (closure == null) { throw new NullPointerException(
-                "No closure has been configured for this Listener"); }
-        
-        closure.setProperty("event", new CustomStatusTextEvent(event));
-        closure.call(event);
-    }
-
-	public class CustomStatusTextEvent
-	{
-		private StatusTextEvent event;
-		
-		public CustomStatusTextEvent(StatusTextEvent event)
-		{
-			this.event = event;
-		}
-		
-		public String getText()
-		{
-			return event.text;
-		}
-	}
-
-	
-}
diff --git a/groovy/modules/groovy-swt/src/test/groovy/jface/JFaceBuilderTest.java b/groovy/modules/groovy-swt/src/test/groovy/jface/JFaceBuilderTest.java
deleted file mode 100644
index ced080d..0000000
--- a/groovy/modules/groovy-swt/src/test/groovy/jface/JFaceBuilderTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Created on Mar 6, 2004
- *
- */
-package groovy.jface;
-
-import groovy.lang.GroovyObject;
-import groovy.swt.SwtTest;
-import junit.framework.TestCase;
-
-/**
- * @author <a href:ckl at dacelo.nl">Christiaan ten Klooster </a> 
- * $Id$
- */
-public class JFaceBuilderTest extends TestCase {
-    public void testBasic() throws Exception {
-        SwtTest demo = new SwtTest();
-        GroovyObject object = demo.compile("src/test/groovy/jface/JFaceBuilderTest1.groovy");
-        object.invokeMethod("run", null);
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/test/groovy/jface/JFaceBuilderTest1.groovy b/groovy/modules/groovy-swt/src/test/groovy/jface/JFaceBuilderTest1.groovy
deleted file mode 100644
index f2843d7..0000000
--- a/groovy/modules/groovy-swt/src/test/groovy/jface/JFaceBuilderTest1.groovy
+++ /dev/null
@@ -1,53 +0,0 @@
-package groovy.jface

-

-import groovy.jface.JFaceBuilder

-

-class JFaceBuilderTest1 {

-    property jface    

-    void run() {

-        jface = new JFaceBuilder()

-               

-        jface.applicationWindow() {

-        	// Viewers

-        	tableViewer() {

-        		doubleClickListener()

-       			selectionChangedListener()

-        	}

-        	

-        	tableTreeViewer()

-        	treeViewer()

-        	checkboxTreeViewer()	

-

-        	// ContributionManager 

-        	menuManager( text:"menuManager" )

-        	

-        	// Action tags

-        	action()

-

-        	// ContributionItem 

-        	separator()

-

-        	// Wizard 

-        	wizardDialog(){

-        		wizardPage( title:"title" )

-        	}

-

-        	// Preferences

-        	preferenceDialog(  ) {

-        		preferencePage( filename:"src/test/groovy/jface/test.properties", title:"myprefs" ) {

-	        		booleanFieldEditor( propertyName:"prop", title:"none" )

-    	    		colorFieldEditor( propertyName:"prop", title:"none" )

-   					directoryFieldEditor( propertyName:"prop", title:"none" )

-	        		fileFieldEditor( propertyName:"prop", title:"none" )

-	        		fontFieldEditor( propertyName:"prop", title:"none" )

-    	    		integerFieldEditor( propertyName:"prop", title:"none" )

-    	    		stringFieldEditor( propertyName:"prop", title:"none" )

-    	    	}

-    	    }

-

-        	image( src:"src/test/groovy/swt/groovy-logo.png" )

-        }

-	}

-}

-

-

diff --git a/groovy/modules/groovy-swt/src/test/groovy/jface/test.properties b/groovy/modules/groovy-swt/src/test/groovy/jface/test.properties
deleted file mode 100644
index e69de29..0000000
--- a/groovy/modules/groovy-swt/src/test/groovy/jface/test.properties
+++ /dev/null
diff --git a/groovy/modules/groovy-swt/src/test/groovy/swt/SwtBuilderTest.java b/groovy/modules/groovy-swt/src/test/groovy/swt/SwtBuilderTest.java
deleted file mode 100644
index a09e52c..0000000
--- a/groovy/modules/groovy-swt/src/test/groovy/swt/SwtBuilderTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Created on Mar 6, 2004
- *
- */
-package groovy.swt;
-
-import groovy.lang.GroovyObject;
-import junit.framework.TestCase;
-
-/**
- * @author <a href:ckl at dacelo.nl">Christiaan ten Klooster </a> 
- * $Id$
- */
-public class SwtBuilderTest extends TestCase {
-    public void testBasic() throws Exception {
-        SwtTest demo = new SwtTest();
-        GroovyObject object = demo.compile("src/test/groovy/swt/SwtBuilderTest1.groovy");
-        object.invokeMethod("run", null);
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/test/groovy/swt/SwtBuilderTest1.groovy b/groovy/modules/groovy-swt/src/test/groovy/swt/SwtBuilderTest1.groovy
deleted file mode 100644
index 3dbe6db..0000000
--- a/groovy/modules/groovy-swt/src/test/groovy/swt/SwtBuilderTest1.groovy
+++ /dev/null
@@ -1,94 +0,0 @@
-package groovy.swt

-

-import groovy.swt.SwtBuilder

-

-class SwtBuilderTest1 {

-    property swt    

-    void run() {

-        swt = new SwtBuilder()

-        swt.shell(){        	

-       		button()

-        	canvas()

-        	caret()

-	        combo()

-        	composite()

-        	scrolledComposite()

-        	coolBar() {

-	        	coolItem()

-	        }

-        	decorations()

-        	group()

-        	label()

-        	list()

-        	menu() {

-				menuSeparator()

-				menuItem()

-			}

-			messageBox()

-			progressBar()

-			sash()

-			scale()

-			slider()

-			tabFolder() {

-				tabItem()

-			}

-			table() {

-				tableColumn()

-				tableItem()

-			}

-			text()

-			toolBar(){

-				toolItem()

-			}

-			tracker()

-			tree(){

-				treeItem()

-			}

-			cTabFolder() {

-				cTabItem()

-			}

-			tableTree() {

-				tableTreeItem()

-			}

-			fillLayout()

-			gridLayout()

-			rowLayout()

-			gridData()

-			rowData()

-			colorDialog()

-			directoryDialog()

-			fileDialog()

-			fontDialog()

-			onEvent( type:"Selection" )

-			image( src:"src/test/groovy/swt/groovy-logo.png" )

-			browser() {

-				locationListener()

-				progressListener()

-				statusTextListener()

-			}	

-			form(){

-				formButton()

-				formComposite()

-				formCompositeSeparator()

-				formExpandableComposite()

-				formText()

-				formHyperlink(){

-					hyperlinkListener()

-				}

-				formImageHyperlink()

-				formLabel()

-				formPageBook()

-				formSection(){

-					expansionListener()

-				}

-				formSeparator()

-				formTable()

-				formFormattedText()

-				formTree()

-				tableWrapLayout()

-				tableWrapData()

-			}

-			scrolledForm()

-        }

-	}

-}

diff --git a/groovy/modules/groovy-swt/src/test/groovy/swt/SwtTest.java b/groovy/modules/groovy-swt/src/test/groovy/swt/SwtTest.java
deleted file mode 100644
index 172556f..0000000
--- a/groovy/modules/groovy-swt/src/test/groovy/swt/SwtTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Created on Feb 25, 2004
- *
- */
-package groovy.swt;
-
-import groovy.lang.GroovyClassLoader;
-import groovy.lang.GroovyObject;
-
-import java.io.File;
-
-import junit.framework.TestCase;
-
-import org.eclipse.jface.window.ApplicationWindow;
-import org.eclipse.swt.widgets.Shell;
-
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class SwtTest extends TestCase {
-    public GroovyObject compile(String fileName) throws Exception {
-        GroovyClassLoader loader = new GroovyClassLoader();
-        Class groovyClass = loader.parseClass(new File(fileName));
-        GroovyObject object = (GroovyObject) groovyClass.newInstance();
-        assertTrue(object != null);
-        return object;
-    }
-    
-    public void testSwt() {
-        Shell shell = new Shell();
-        shell.dispose();
-    }
-    
-    public void testJFace() {
-        Shell shell = new Shell();
-        ApplicationWindow window = new ApplicationWindow(shell);
-        shell.dispose();
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/test/groovy/swt/groovy-logo.png b/groovy/modules/groovy-swt/src/test/groovy/swt/groovy-logo.png
deleted file mode 100644
index 54af4c1..0000000
--- a/groovy/modules/groovy-swt/src/test/groovy/swt/groovy-logo.png
+++ /dev/null
Binary files differ
diff --git a/groovy/modules/groovy-swt/src/test/groovy/swt/scrapbook/DynamicUIBuilder.java b/groovy/modules/groovy-swt/src/test/groovy/swt/scrapbook/DynamicUIBuilder.java
deleted file mode 100644
index 4ac6919..0000000
--- a/groovy/modules/groovy-swt/src/test/groovy/swt/scrapbook/DynamicUIBuilder.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Created on Mar 7, 2004
- *
- */
-package groovy.swt.scrapbook;
-
-import groovy.jface.JFaceBuilder;
-
-import java.util.Map;
-
-/**
- * @author <a href:ckl at dacelo.nl">Christiaan ten Klooster</a> 
- * $Id$
- */
-public class DynamicUIBuilder extends JFaceBuilder {
-    public DynamicUIBuilder() {
-        super();
-    }
-
-    /*
-     * @see groovy.util.BuilderSupport#createNode(java.lang.Object)
-     */
-    public Object createNode(Object name) {
-//        System.out.println("createNode: " + name);
-        return super.createNode(name);
-    }
-
-    /*
-     * @see groovy.util.BuilderSupport#getCurrent()
-     */
-    protected Object getCurrent() {
-        return super.getCurrent();
-    }
-    /* 
-     * @see groovy.util.BuilderSupport#createNode(java.lang.Object, java.util.Map)
-     */
-    protected Object createNode(Object name, Map attributes) {
-        System.out.println("createNode: " + name + " [attributes:]  " + attributes);
-        return super.createNode(name, attributes);
-    }
-
-    /* 
-     * @see groovy.util.BuilderSupport#createNode(java.lang.Object, java.lang.Object)
-     */
-    protected Object createNode(Object name, Object parent) {
-        System.out.println("createNode: " + name + " [parent:] " + parent);
-        return super.createNode(name, parent);
-    }
-
-}
diff --git a/groovy/modules/groovy-swt/src/test/groovy/swt/scrapbook/NamedObject.java b/groovy/modules/groovy-swt/src/test/groovy/swt/scrapbook/NamedObject.java
deleted file mode 100644
index fe02c53..0000000
--- a/groovy/modules/groovy-swt/src/test/groovy/swt/scrapbook/NamedObject.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Created on Mar 7, 2004
- *
- */
-package groovy.swt.scrapbook;
-
-/**
- * @author <a href:ckl at dacelo.nl">Christiaan ten Klooster </a> $Id$
- */
-public class NamedObject {
-    private String name = "empty name";
-    private String description = "empty desc";
-    private String value = "empty value";
-
-    /**
-     * @return Returns the description.
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    /**
-     * @param description
-     *            The description to set.
-     */
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    /**
-     * @return Returns the name.
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * @param name
-     *            The name to set.
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * @return Returns the value.
-     */
-    public String getValue() {
-        return value;
-    }
-
-    /**
-     * @param value
-     *            The value to set.
-     */
-    public void setValue(String value) {
-        this.value = value;
-    }
-}
diff --git a/groovy/modules/groovy-swt/src/test/groovy/swt/scrapbook/NamedObjectUI.groovy b/groovy/modules/groovy-swt/src/test/groovy/swt/scrapbook/NamedObjectUI.groovy
deleted file mode 100644
index fe83f1f..0000000
--- a/groovy/modules/groovy-swt/src/test/groovy/swt/scrapbook/NamedObjectUI.groovy
+++ /dev/null
@@ -1,14 +0,0 @@
-

-builder.composite( parent ) {

-

-	gridLayout( numColumns:2 )

-	

-	gridData( style:"fill_both" )

-	label( style:"none", text:obj.description ) {

-		gridData( style:"fill_both" )

-	}

-        	

-	text( style:"Border", text:obj.value ) 

-

-}

-

diff --git a/groovy/modules/groovy-swt/src/test/groovy/swt/scrapbook/RunDynamicUIDemo.java b/groovy/modules/groovy-swt/src/test/groovy/swt/scrapbook/RunDynamicUIDemo.java
deleted file mode 100644
index 6f19c67..0000000
--- a/groovy/modules/groovy-swt/src/test/groovy/swt/scrapbook/RunDynamicUIDemo.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package groovy.swt.scrapbook;
-
-import groovy.lang.Binding;
-import groovy.swt.SwtTest;
-import groovy.util.GroovyScriptEngine;
-
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
- * @version $Revision$
- */
-public class RunDynamicUIDemo extends SwtTest {
-    public void testBasic() throws Exception {
-        NamedObject namedObject = new NamedObject();
-        
-//        Shell parent = new Shell();
-        DynamicUIBuilder builder  = new DynamicUIBuilder();
-        Shell shell = (Shell) builder.createNode("shell");
-        
-        Binding binding = new Binding();
-        binding.setVariable("obj", namedObject);
-        binding.setVariable("builder", builder);
-        binding.setVariable("parent", shell);
-        
-        GroovyScriptEngine scriptEngine = new GroovyScriptEngine("src/test/groovy/swt/dynamvc/");
-        Object object = scriptEngine.run("NamedObjectUI.groovy", binding);
-
-        shell.open();
-        while (!shell.isDisposed()) {
-            if (!shell.getDisplay().readAndDispatch()) {
-                shell.getDisplay().sleep();
-            }
-        }
-    }
-}
diff --git a/groovy/modules/pages/src/main/groovy/modules/pages/GroovyPage.java b/groovy/modules/pages/src/main/groovy/modules/pages/GroovyPage.java
deleted file mode 100644
index 55753b8..0000000
--- a/groovy/modules/pages/src/main/groovy/modules/pages/GroovyPage.java
+++ /dev/null
@@ -1,170 +0,0 @@
-package groovy.modules.pages;
-
-import groovy.lang.Script;
-import groovy.lang.Binding;
-
-/**
- * Created by IntelliJ IDEA.
- * Author: Troy Heninger
- * Date: Jan 10, 2004
- * Default base class of pages.  Provides access to many useful functions for web page writers.
- * Note: Currently unused due to a bug in Groovy not allowing classes derived indirectly from Script
- * to receive their Binding data.  Also, many functions to be added soon.
- */
-public abstract class GroovyPage extends Script {
-
-/*	private final ThreadLocal bindings = new ThreadLocal();
-
-	public Binding getBinding() {
-	    return (Binding)bindings.get();
-	} // getBinding()
-
-	public void setBinding(Binding binding) {
-	    bindings.set(binding);
-	} // setBinding()
-
-	public Object getProperty(String property) {
-	    return getBinding().getVariable(property);
-	}
-
-	public void setProperty(String property, Object newValue) {
-	    getBinding().setVariable(property, newValue);
-	}
-*/
-	/**
-	 * Defaults to deflt if value is null.
-	 */
-	public Object ensure(Object value, Object deflt) {
-		return value == null ? deflt : value;
-	} // ensure()
-
-	/**
-	 * Convert from HTML to Unicode text.  This function converts many of the encoded HTML
-	 * characters to normal Unicode text.  Example: &amp;lt&semi; to &lt;.  This is the opposite
-	 * of showHtml().
-	 * @see showHtml(String)
-	 */
-	public static String fromHtml(String text)
-	{
-		int ixz;
-		if (text == null || (ixz = text.length()) == 0) return text;
-		StringBuffer buf = new StringBuffer(ixz);
-		String rep = null;
-		for (int ix = 0; ix < ixz; ix++)
-		{
-			char c = text.charAt(ix);
-			if (c == '&');
-			{
-				String sub = text.substring(ix + 1).toLowerCase();
-				if (sub.startsWith("lt;"))
-				{
-					c = '<';
-					ix += 3;
-				}
-				else
-				if (sub.startsWith("gt;"))
-				{
-					c = '>';
-					ix += 3;
-				}
-				else
-				if (sub.startsWith("amp;"))
-				{
-					c = '&';
-					ix += 4;
-				}
-				else
-				if (sub.startsWith("nbsp;"))
-				{
-					c = ' ';
-					ix += 5;
-				}
-				else
-				if (sub.startsWith("semi;"))
-				{
-					c = ';';
-					ix += 5;
-				}
-				else
-				if (sub.startsWith("#"))
-				{
-					char c2 = 0;
-					for (int iy = ix + 1; iy < ixz; iy++)
-					{
-						char c1 = text.charAt(iy);
-						if (c1 >= '0' && c1 <= '9')
-						{
-							c2 = (char)(c2 * 10 + c1);
-							continue;
-						}
-						if (c1 == ';')
-						{
-							c = c2;
-							ix = iy;
-						}
-						break;
-					}
-				}
-			}
-			if (rep != null)
-			{
-				buf.append(rep);
-				rep = null;
-			}
-			else buf.append(c);
-		}
-		return buf.toString();
-	} // fromHtml()
-
-	/**
-	 * Substring Replacer. For each instance of <b>sub</b> found in <b>str</b>, it is replaced
-	 * by <b>rep</b>.  The resulting String is returned.
-	 */
-	public static String replace(String str, String sub, String rep)
-	{
-		StringBuffer buf = null;
-		int lenS = sub.length();
-		for (int last = 0;;)
-		{
-			int ix = str.indexOf(sub, last);
-			if (ix < 0)
-			{
-				if (buf != null)
-				{
-					buf.append(str.substring(last));
-					str = buf.toString();	// return str as result
-				}
-				break;
-			}
-			if (buf == null) buf = new StringBuffer(str.length() * 3 / 2);
-			buf.append(str.substring(last, ix));
-			buf.append(rep);
-			last = ix + lenS;
-		}
-		return str;
-	} // replace()
-
-	/**
-	 * Substring Replacer. For each instance of <b>sub</b> found in <b>str</b>, it is replaced
-	 * by <b>rep</b>.  The buffer argument itself is modifed and returned.  This is faster than
-	 * replace(), especially useful when called multiple times for various replacements.
-	 */
-	public static StringBuffer replaceBuf(StringBuffer buf, String sub, String rep)
-	{
-		String str = buf.toString();
-		int lenS = sub.length();
-		int diff = rep.length() - lenS;
-		int offset = 0;
-		for (int last = 0;;)
-		{
-			int ix = str.indexOf(sub, last);
-			if (ix < 0) break;
-			buf.replace(ix + offset, ix + offset + lenS, rep);
-			last = ix + lenS;
-			offset += diff;
-		}
-		return buf;
-	} // replaceBuf()
-
-} // GroovyPage
-
diff --git a/groovy/modules/pages/src/main/groovy/modules/pages/GroovyPages.java b/groovy/modules/pages/src/main/groovy/modules/pages/GroovyPages.java
deleted file mode 100644
index 44d18d5..0000000
--- a/groovy/modules/pages/src/main/groovy/modules/pages/GroovyPages.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * Copyright 2003 (C) Troy Heninger. All Rights Reserved.
- *
- * Redistribution and use of this software and associated documentation
- * ("Software"), with or without modification, are permitted provided that the
- * following conditions are met: 1. Redistributions of source code must retain
- * copyright statements and notices. Redistributions must also contain a copy
- * of this document. 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the distribution. 3.
- * The name "groovy" must not be used to endorse or promote products derived
- * from this Software without prior written permission of The Codehaus. For
- * written permission, please contact info@codehaus.org. 4. Products derived
- * from this Software may not be called "groovy" nor may "groovy" appear in
- * their names without prior written permission of The Codehaus. "groovy" is a
- * registered trademark of The Codehaus. 5. Due credit should be given to The
- * Codehaus - http://groovy.codehaus.org/
- *
- * THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS ``AS IS'' AND ANY
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- */
-package groovy.modules.pages;
-
-import groovy.lang.Binding;
-import groovy.lang.GroovyClassLoader;
-import groovy.lang.Script;
-import org.codehaus.groovy.runtime.InvokerHelper;
-import org.codehaus.groovy.syntax.SyntaxException;
-import org.codehaus.groovy.modules.pages.Loader;
-import org.codehaus.groovy.modules.pages.Parse;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.*;
-
-/**
- * Created by IntelliJ IDEA.
- * Author: Troy Heninger
- * Date: Jan 10, 2004
- * Main servlet class.  Example usage in web.xml:
- * 	<servlet>
- *       <servlet-name>GroovyPages</servlet-name>
- *       <servlet-class>groovy.modules.pages.GroovyPages</servlet-class>
- *		<init-param>
- *			<param-name>allowSpilling</param-name>
- *			<param-value>1</param-value>
- *			<description>
- *             Allows developers to view the intermediade source code, when they pass
- *				a spillGroovy argument in the URL.
- *          </description>
- *		</init-param>
- *    </servlet>
- */
-
-public class GroovyPages extends HttpServlet /*implements GroovyObject*/ {
-	Object x;
-	private ServletContext context;
-	private boolean allowSpilling = false;
-
-	private static Map pageCache = Collections.synchronizedMap(new HashMap());
-	private static ClassLoader parent;
-
-	/**
-	 * @return the servlet context
-	 */
-	public ServletContext getServletContext() { return context; }
-
-	private static class PageMeta {
-		private Class servletScriptClass;
-		private long lastModified;
-		private Map dependencies = new HashMap();
-		private InputStream groovySource;
-	} // PageMeta
-
-	/**
-	 * Initialize the servlet, set it's parameters.
-	 * @param config servlet settings
-	 */
-	public void init(ServletConfig config) {
-		// Get the servlet context
-		context = config.getServletContext();
-		context.log("Groovy servlet initialized");
-
-		// Ensure that we use the correct classloader so that we can find
-		// classes in an application server.
-		parent = Thread.currentThread().getContextClassLoader();
-		if (parent == null) parent = getClass().getClassLoader();
-
-		allowSpilling = config.getInitParameter("allowSpilling") != null;
-	} // init()
-
-	/**
-	 * Handle HTTP GET requests.
-	 * @param request
-	 * @param response
-	 * @throws ServletException
-	 * @throws IOException
-	 */
-	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-		doPage(request, response);
-	} // doGet()
-
-	/**
-	 * Handle HTTP POST requests.
-	 * @param request
-	 * @param response
-	 * @throws ServletException
-	 * @throws IOException
-	 */
-	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-		doPage(request, response);
-	} // doPost()
-
-	/**
-	 * Execute page and produce output.
-	 * @param request
-	 * @param response
-	 * @throws ServletException
-	 * @throws IOException
-	 */
-	public void doPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-		String pageId = getPageId(request);
-		URL pageUrl = getPageUrl(pageId);
-		if (pageUrl == null) {
-			context.log("GroovyPages:  \"" + pageUrl + "\" not found");
-			response.sendError(404, "\"" + pageUrl + "\" not found.");
-			return;
-		}
-
-		boolean spillGroovy = allowSpilling && request.getParameter("spillGroovy") != null;
-		PageMeta pageMeta = getPage(pageId, pageUrl, request.getServletPath(), spillGroovy);
-		Writer out = GroovyWriter.getInstance(response, 8192);
-		try {
-			if (spillGroovy) {
-					// Set it to TEXT
-				response.setContentType("text/plain"); // must come before response.getOutputStream()
-				send(pageMeta.groovySource, out);
-				pageMeta.groovySource = null;
-			} else {
-		System.out.println("Start");
-					// Set it to HTML by default
-				response.setContentType("text/html"); // must come before response.getWriter()
-				Binding binding = getBinding(request, response, out);
-				Script page = InvokerHelper.createScript(pageMeta.servletScriptClass, binding);
-//				page.setBinding(binding);
-				page.run();
-			}
-		} finally {
-			if (out != null) out.close();
-	System.out.println("Done");
-		}
-	} // doPage()
-
-	/**
-	 * Prepare Bindings before instantiating page.
-	 * @param request
-	 * @param response
-	 * @param out
-	 * @return the Bindings
-	 * @throws IOException
-	 */
-	protected Binding getBinding(HttpServletRequest request, HttpServletResponse response, Writer out)
-	        throws IOException {
-		// Set up the script context
-		Binding binding = new Binding();
-		binding.setVariable("request", new GroovyRequest(request));
-		binding.setVariable("response", response);
-		binding.setVariable("application", context);
-		binding.setVariable("session", new GroovySession(request));
-		binding.setVariable("out", out);
-
-		// Form parameters. If there are multiple its passed as a list.
-		for (Enumeration paramEnum = request.getParameterNames(); paramEnum.hasMoreElements();) {
-			String key = (String) paramEnum.nextElement();
-			if (binding.getVariable(key) == null) {
-				String[] values = request.getParameterValues(key);
-				if (values.length == 1) {
-					binding.setVariable(key, values[0]);
-				} else {
-					binding.setVariable(key, values);
-				}
-			}
-		}
-		return binding;
-	} // getBinding()
-
-	/**
-	 * Lookup page class or load new one if needed.
-	 * @param pageId
-	 * @param pageUrl
-	 * @param servletPath
-	 * @param spillGroovy
-	 * @return
-	 * @throws IOException
-	 * @throws ServletException
-	 */
-	protected PageMeta getPage(String pageId, URL pageUrl, String servletPath, boolean spillGroovy)
-	        throws IOException, ServletException  {
-			// Lock on the pageId to ensure that only one compile occurs for any script
-		synchronized (pageId) {
-				// Get the URLConnection
-			URLConnection groovyScriptConn = pageUrl.openConnection();
-				// URL last modified
-			long lastModified = groovyScriptConn.getLastModified();
-				// Check the cache for the script
-			PageMeta pageMeta = (PageMeta)pageCache.get(pageId);
-				// If the pageMeta isn't null check all the dependencies
-			boolean dependencyOutOfDate = false;
-			if (pageMeta != null && !spillGroovy) {
-				isPageNew(pageMeta);
-			}
-			if (pageMeta == null || pageMeta.lastModified < lastModified || dependencyOutOfDate || spillGroovy) {
-				pageMeta = newPage(pageId, servletPath, groovyScriptConn, lastModified, spillGroovy);
-			}
-			return pageMeta;
-		}
-	} // getPage()
-
-	/**
-	 * Is page new or changed?
-	 * @param pageMeta page data
-	 * @return true if compile needed
-	 */
-	private boolean isPageNew(PageMeta pageMeta) {
-		for (Iterator i = pageMeta.dependencies.keySet().iterator(); i.hasNext(); ) {
-			URLConnection urlc = null;
-			URL url = (URL)i.next();
-			try {
-				urlc = url.openConnection();
-				urlc.setDoInput(false);
-				urlc.setDoOutput(false);
-				long dependentLastModified = urlc.getLastModified();
-				if (dependentLastModified > ((Long)pageMeta.dependencies.get(url)).longValue()) {
-					return true;
-				}
-			} catch (IOException ioe) {
-				return true;
-			}
-		}
-		return false;
-	} // isPageNew()
-
-	/**
-	 * Load and compile new page.
-	 * @param pageId
-	 * @param servletPath
-	 * @param groovyScriptConn
-	 * @param lastModified
-	 * @param spillGroovy
-	 * @return
-	 * @throws IOException
-	 * @throws ServletException
-	 */
-	private PageMeta newPage(String pageId, String servletPath, URLConnection groovyScriptConn, long lastModified,
-	                         boolean spillGroovy) throws IOException, ServletException {
-		Parse parse = new Parse(pageId, groovyScriptConn.getInputStream());
-		InputStream in = parse.parse();
-
-			// Make a new pageMeta
-		PageMeta pageMeta = new PageMeta();
-
-			// just return groovy and don't compile if asked
-		if (spillGroovy) {
-			pageMeta.groovySource = in;
-			return pageMeta;
-		}
-			// Compile the script into an object
-		GroovyClassLoader groovyLoader = new Loader(parent, context, servletPath, pageMeta.dependencies);
-		Class scriptClass;
-		try {
-			scriptClass =
-				groovyLoader.parseClass(in, pageId.substring(1));
-		} catch (SyntaxException e) {
-			throw new ServletException("Could not parse script: " + pageId, e);
-		}
-		pageMeta.servletScriptClass = scriptClass;
-		pageMeta.lastModified = lastModified;
-		pageCache.put(pageId, pageMeta);
-		return pageMeta;
-	} // newPage()
-
-	/**
-	 * Return the page identifier.
-	 * @param request
-	 * @return
-	 */
-	protected String getPageId(HttpServletRequest request) {
-		// Get the name of the Groovy script (intern the name so that we can
-		// lock on it)
-		int contextLength = request.getContextPath().length();
-		return request.getRequestURI().substring(contextLength).intern();
-	} // getPageId()
-
-	/**
-	 * Return the page URL from the request path.
-	 * @param pageId
-	 * @return
-	 * @throws MalformedURLException
-	 */
-	protected URL getPageUrl(String pageId) throws MalformedURLException {
-		// Check to make sure that the file exists in the web application
-		return context.getResource(pageId);
-	} // getPageUrl()
-
-	/**
-	 * Copy all of input to output.
-	 * @param in
-	 * @param out
-	 * @throws IOException
-	 */
-	public static void send(InputStream in, Writer out) throws IOException {
-		try {
-			Reader reader = new InputStreamReader(in);
-			char[] buf = new char[8192];
-			for (;;) {
-				int read = reader.read(buf);
-				if (read <= 0) break;
-				out.write(buf, 0, read);
-			}
-		} finally {
-			out.close();
-			in.close();
-		}
-	} // send()
-	
-} // GroovyPages
diff --git a/groovy/modules/pages/src/main/groovy/modules/pages/GroovyRequest.java b/groovy/modules/pages/src/main/groovy/modules/pages/GroovyRequest.java
deleted file mode 100644
index 1bd233e..0000000
--- a/groovy/modules/pages/src/main/groovy/modules/pages/GroovyRequest.java
+++ /dev/null
@@ -1,171 +0,0 @@
-package groovy.modules.pages;
-
-import groovy.util.Proxy;
-
-import java.util.*;
-import javax.servlet.ServletRequest;
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * Created by IntelliJ IDEA.
- * Author: Troy Heninger
- * Date: Jan 13, 2004
- * Proxy for ServletRequest.  All calls get forwarded to actual request, but also provides Map
- * functionality to request parameters.
- */
-public class GroovyRequest extends Proxy implements Map {
-	public static final String PREFIX = "groovy.var.";
-	public static final int PREFIX_LEN = PREFIX.length();
-	public static final Null NULL = new Null();
-
-	private Map map = new HashMap();
-
-	/**
-	 * Singleton to represent a nulled out/cleared parameter at runtime.
-	 */
-	static class Null {
-		Null() {}
-		public boolean equals(Object obj) {
-			return obj instanceof Null;
-		}
-	} // Null
-
-	/**
-	 * Constructor.  All request attributes, parameters, and headers become members.
-	 * @param request encapsulated request
-	 */
-	GroovyRequest(HttpServletRequest request) {
-		super(request);
-		String name;
-		Enumeration en = request.getHeaderNames();
-		while (en.hasMoreElements()) {
-			name = (String)en.nextElement();
-			String header = request.getHeader(name);
-			if (!header.equals(NULL)) {
-				map.put(name, header);
-			}
-		}
-		en = request.getParameterNames();
-		while (en.hasMoreElements()) {
-			name = (String)en.nextElement();
-			String[] values = request.getParameterValues(name);
-			if (values == null) continue;
-			if (values.length == 1) map.put(name, values[0]);
-			else map.put(name, Arrays.asList(values));
-		}
-		en = request.getAttributeNames();
-		while (en.hasMoreElements()) {
-			name = (String)en.nextElement();
-			if (name.startsWith(PREFIX)) {
-				Object value = request.getAttribute(name);
-				if (!value.equals(NULL)) {
-					map.put(name.substring(PREFIX_LEN), value);
-				}
-			}
-		}
-	} // GroovyRequest()
-
-	/**
-	 * Clear all parameters.
-	 */
-	public void clear() { map.clear(); }
-
-	/**
-	 * Returns true if parameter key has or had a value.
-	 */
-	public boolean containsKey(Object key) { return map.containsKey(key); }
-
-	/**
-	 * Returns true if value exists.
-	 * @param value
-	 * @return
-	 */
-	public boolean containsValue(Object value) { return map.containsValue(value); }
-
-	/**
-	 * Returns the complete set of parameters.
-	 * @return
-	 */
-	public Set entrySet() { return map.entrySet(); }
-
-	/**
-	 * Returns the parameter or null.
-	 * @param key
-	 * @return
-	 */
-	public Object get(Object key) { return map.get(key); }
-
-	/**
-	 * Lookup parameter or bean property.
-	 * @param property
-	 * @return
-	 */
-	public Object getProperty(String property) {
-		Object result = super.getProperty(property);
-		if (result.equals(NULL)) result = null;
-		return result;
-	} // getProperty()
-
-	/**
-	 * Returns the original request.
-	 * @return
-	 */
-	public ServletRequest getRequest() { return (ServletRequest)getRealObject(); }
-
-	/**
-	 * Probably never true, because there's always some headers.
-	 * @return
-	 */
-	public boolean isEmpty() { return map.isEmpty(); }
-
-	/**
-	 * Returns the complete set of keys.
-	 * @return
-	 */
-	public Set keySet() { return map.keySet(); }
-
-	/**
-	 * Change a parameter for later use in the page or for sending to a called page.
-	 * @param key
-	 * @param value
-	 * @return
-	 */
-	public Object put(Object key, Object value) {
-		if (value == null) value = NULL;
-		getRequest().setAttribute(PREFIX + key, value);
-		if (value.equals(NULL)) return map.remove(key);
-		else return map.put(key, value);
-	} // put()
-
-	/**
-	 * Change all included parameters.
-	 * @param t
-	 */
-	public void putAll(Map t) {
-		Iterator it = t.entrySet().iterator();
-		while (it.hasNext()) {
-			Map.Entry entry = (Map.Entry)it.next();
-			put(entry.getKey(), entry.getValue());
-		}
-	}
-
-	/**
-	 * Set's the parameter to null.
-	 * @param key
-	 * @return
-	 */
-	public Object remove(Object key) { return put(key, null); }
-
-	/**
-	 * Returns the number of parameters.
-	 * @return
-	 */
-	public int size() { return map.size(); }
-
-	/**
-	 * Returns the complete set of values.
-	 * @return
-	 */
-	public Collection values() { return map.values(); }
-
-} // GroovyRequest
diff --git a/groovy/modules/pages/src/main/groovy/modules/pages/GroovySession.java b/groovy/modules/pages/src/main/groovy/modules/pages/GroovySession.java
deleted file mode 100644
index 7493acd..0000000
--- a/groovy/modules/pages/src/main/groovy/modules/pages/GroovySession.java
+++ /dev/null
@@ -1,140 +0,0 @@
-package groovy.modules.pages;
-
-import groovy.util.Proxy;
-
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpServletRequest;
-import java.util.*;
-
-/**
- * Created by IntelliJ IDEA.
- * Author: Troy Heninger
- * Date: Jan 13, 2004
- * Proxy for HttpSession.  All calls get forwarded to actual session, but also provides Map
- * functionality to session variables.
- */
-public class GroovySession extends Proxy implements Map {
-	private Map map = Collections.synchronizedMap(new HashMap());
-
-	/**
-	 * Constructor, takes request, extracts and encapsulates the session.
-	 * @param request
-	 */
-	GroovySession(HttpServletRequest request) {
-		super(request.getSession(true));
-		HttpSession session = getSession();
-		Enumeration en = session.getAttributeNames();
-		while (en.hasMoreElements()) {
-			String name = (String)en.nextElement();
-			map.put(name, session.getAttribute(name));
-		}
-	} // GroovySession()
-
-	/**
-	 * Clear all variables.
-	 */
-	public void clear() {
-		map.clear();
-		Collection names = new HashSet();
-		HttpSession session = getSession();
-		Enumeration en = session.getAttributeNames();
-		while (en.hasMoreElements()) {
-			names.add(en.nextElement());
-		}
-		Iterator it = names.iterator();
-		while (it.hasNext()) {
-			remove(it.next());
-		}
-	} // clear()
-
-	/**
-	 * Return true if the variables is set.
-	 * @param key
-	 * @return
-	 */
-	public boolean containsKey(Object key) { return map.containsKey(key); }
-
-	/**
-	 * Return true if value is in one of the variables.
-	 * @param value
-	 * @return
-	 */
-	public boolean containsValue(Object value) { return map.containsValue(value); }
-
-	/**
-	 * Return the complete set of variables.
-	 * @return
-	 */
-	public Set entrySet() { return map.entrySet(); }
-
-	/**
-	 * Get the variable.
-	 * @param key
-	 * @return
-	 */
-	public Object get(Object key) { return map.get(key); }
-
-	/**
-	 * Return the real session object.
-	 * @return
-	 */
-	public HttpSession getSession() { return (HttpSession)getRealObject(); }
-
-	/**
-	 * Return true if no variables have been set.
-	 * @return
-	 */
-	public boolean isEmpty() { return map.isEmpty(); }
-
-	/**
-	 * Return the complete set of variable names.
-	 * @return
-	 */
-	public Set keySet() { return map.keySet(); }
-
-	/**
-	 * Set the variable, or clear it if value = null.
-	 * @param key
-	 * @param value
-	 * @return
-	 */
-	public Object put(Object key, Object value) {
-		getSession().setAttribute(String.valueOf(key), value);
-		if (value == null) return map.remove(key);
-		else return map.put(key, value);
-	} // put()
-
-	/**
-	 * Copy all members of t in.
-	 * @param t
-	 */
-	public void putAll(Map t) {
-		Iterator it = t.entrySet().iterator();
-		while (it.hasNext()) {
-			Map.Entry entry = (Map.Entry)it.next();
-			put(entry.getKey(), entry.getValue());
-		}
-	}
-
-	/**
-	 * Remove the variable.
-	 * @param key
-	 * @return
-	 */
-	public Object remove(Object key) {
-		return put(key, null);
-	}
-
-	/**
-	 * Return the number of variables.
-	 * @return
-	 */
-	public int size() { return map.size(); }
-
-	/**
-	 * Return the complete collection of values.
-	 * @return the values
-	 */
-	public Collection values() { return map.values(); }
-	
-} // GroovySession
diff --git a/groovy/modules/pages/src/main/groovy/modules/pages/GroovyWriter.java b/groovy/modules/pages/src/main/groovy/modules/pages/GroovyWriter.java
deleted file mode 100644
index 44b4031..0000000
--- a/groovy/modules/pages/src/main/groovy/modules/pages/GroovyWriter.java
+++ /dev/null
@@ -1,172 +0,0 @@
-package groovy.modules.pages;
-
-import javax.servlet.ServletResponse;
-import java.io.*;
-
-/**
- * Created by IntelliJ IDEA.
- * Author: Troy Heninger
- * Date: Jan 13, 2004
- * A buffered writer that won't commit the response until the buffer has reached the high
- * water mark, or until flush() or close() is called.
- */
-public class GroovyWriter extends PrintWriter {
-	private ServletResponse response;
-	private CharArrayWriter out0 = new CharArrayWriter();
-	private Writer out1;
-	private int max;
-	private boolean trouble = false;
-
-	/**
-	 * Private constructor.  Use getInstance() instead.
-	 * @param response
-	 * @param out
-	 * @param max
-	 */
-	private GroovyWriter(ServletResponse response, CharArrayWriter out, int max) {
-		super(out);
-		this.response = response;
-		this.out0 = out;
-		this.max = max;
-	} // GroovyWriter
-
-	/**
-	 * Make sure streams get closed eventually.
-	 * @throws Throwable
-	 */
-	protected void finalize() throws Throwable {
-		close();
-		super.finalize();
-	} // finalize()
-
-	/**
-	 * Flush the stream if it's not closed and check its error state.
-	 * Errors are cumulative; once the stream encounters an error, this
-	 * routine will return true on all successive calls.
-	 *
-	 * @return True if the print stream has encountered an error, either on the
-	 * underlying output stream or during a format conversion.
-	 */
-	public boolean checkError() {
-		if (super.checkError()) return true;
-		return trouble;
-	} // checkError()
-
-	/**
-	 * Close the stream.
-	 * @see #checkError()
-	 */
-	public void close() {
-//		System.out.println("GroovyWriter.close()");
-		if (!response.isCommitted()) {
-			response.setContentLength(out0.size());
-		System.out.println("Content Length = " + out0.size());
-		}
-		flush();
-		super.close();
-	} // close()
-
-	/**
-	 * Flush the stream.
-	 * @see #checkError()
-	 */
-	public synchronized void flush() {
-//		System.out.println("GroovyWriter.flush()");
-		if (trouble) return;
-		super.flush();
-		if (out1 == null) {
-			try {
-				out1 = response.getWriter();
-			} catch (IOException e) {
-				trouble = true;
-				return;
-			}
-		}
-		try {
-			out1.write(out0.toCharArray());
-			out0.reset();
-		} catch (IOException e) {
-			trouble = true;
-		}
-	} // flush()
-
-	/**
-	 * Static factory method to create the writer.
-	 * @param response
-	 * @param max
-	 * @return
-	 */
-	static GroovyWriter getInstance(ServletResponse response, int max) {
-		return new GroovyWriter(response, new CharArrayWriter(max), max);
-	} // getInstance()
-
-	/**
-	 * Print an object.  The string produced by the <code>{@link
-	 * java.lang.String#valueOf(Object)}</code> method is translated into bytes
-	 * according to the platform's default character encoding, and these bytes
-	 * are written in exactly the manner of the <code>{@link #write(int)}</code>
-	 * method.
-	 *
-	 * @param      obj   The <code>Object</code> to be printed
-	 * @see        java.lang.Object#toString()
-	 */
-	public void print(Object obj) {
-		if (obj == null) obj = "";
-		write(String.valueOf(obj));
-	}
-
-	/**
-	 * Print a string.  If the argument is <code>null</code> then the string
-	 * <code>""</code> is printed.  Otherwise, the string's characters are
-	 * converted into bytes according to the platform's default character
-	 * encoding, and these bytes are written in exactly the manner of the
-	 * <code>{@link #write(int)}</code> method.
-	 *
-	 * @param      s   The <code>String</code> to be printed
-	 */
-	public void print(String s) {
-		if (s == null) s = "";
-		write(s);
-	} // print()
-
-	/**
-	 * Write a single character.
-	 * @param c int specifying a character to be written.
-	 */
-	public void write(int c) {
-		if (trouble) return;
-		super.write(c);
-		if (out0.size() >= max) {
-			flush();
-		}
-	} // write()
-
-	/**
-	 * Write a portion of an array of characters.
-	 * @param buf Array of characters
-	 * @param off Offset from which to start writing characters
-	 * @param len Number of characters to write
-	 */
-	public void write(char buf[], int off, int len) {
-		if (trouble || buf == null || len == 0) return;
-		super.write(buf, off, len);
-		if (out0.size() >= max) {
-			flush();
-		}
-	} // write()
-
-	/**
-	 * Write a portion of a string.
-	 * @param s A String
-	 * @param off Offset from which to start writing characters
-	 * @param len Number of characters to write
-	 */
-	public void write(String s, int off, int len) {
-		if (trouble || s == null || s.length() == 0) return;
-		super.write(s, off, len);
-		if (out0.size() >= max) {
-			flush();
-		}
-	} // write()
-
-} // GroovyWriter
diff --git a/groovy/modules/pages/src/main/groovy/util/Proxy.java b/groovy/modules/pages/src/main/groovy/util/Proxy.java
deleted file mode 100644
index 09eb87a..0000000
--- a/groovy/modules/pages/src/main/groovy/util/Proxy.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package groovy.util;
-
-import groovy.lang.GroovyObjectSupport;
-import groovy.lang.MetaClass;
-import groovy.lang.MissingPropertyException;
-import groovy.lang.MissingMethodException;
-import org.codehaus.groovy.runtime.InvokerHelper;
-
-/**
- * Created by IntelliJ IDEA.
- * User: Troy Heninger
- * Date: Jan 21, 2004
- * Proxy for another object.  All property accesses and method invokations get forwarded to actual object.
- * This class is abstract because it is meant to be subclassed, with new properties and methods provided.
- */
-public class Proxy extends GroovyObjectSupport {
-
-	private Object real;
-	private MetaClass meta;
-
-	/**
-	 * Constructor.  Takes real object to be excapsulated.
-	 * @param real
-	 */
-	public Proxy(Object real) {
-		this.real = real;
-		this.meta = InvokerHelper.getMetaClass(real);
-	} // Proxy()
-
-	/**
-	 * Get the property of this proxy, or the real object if property doesn't exist.
-	 * @param property
-	 * @return
-	 */
-	public Object getProperty(String property) {
-		try {
-			return getMetaClass().getProperty(this, property);
-		} catch (MissingPropertyException e) {
-			return meta.getProperty(real, property);
-		}
-	} // getProperty()
-
-	/**
-	 * Set the property of this proxy, or the real object if property doesn't exist.
-	 * @param property
-	 * @param newValue
-	 */
-	public void setProperty(String property, Object newValue) {
-		try {
-			getMetaClass().setProperty(this, property, newValue);
-		} catch (MissingPropertyException e) {
-			meta.setProperty(real, property, newValue);
-		} catch (MissingMethodException e) {
-			meta.setProperty(real, property, newValue);
-		}
-	} // setProperty()
-
-	/**
-	 * Returns the encapsulated object.
-	 * @return
-	 */
-	public Object getRealObject() { return real; }
-
-	/**
-	 * Call a method of this proxy, or the real object if method doesn't exist.
-	 * @param name
-	 * @param args
-	 * @return
-	 */
-	public Object invokeMethod(String name, Object args) {
-		try {
-			return getMetaClass().invokeMethod(this, name, args);
-		} catch (MissingMethodException e) {
-			return meta.invokeMethod(this, name, args);
-		}
-	} // invokeMethod()
-
-} // Proxy
diff --git a/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Loader.java b/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Loader.java
deleted file mode 100644
index 474083c..0000000
--- a/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Loader.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.codehaus.groovy.modules.pages;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.net.MalformedURLException;
-import java.net.URLConnection;
-import java.util.Map;
-
-import javax.servlet.ServletContext;
-
-import groovy.lang.GroovyClassLoader;
-
-import org.codehaus.groovy.syntax.SyntaxException;
-
-/**
- * Created by IntelliJ IDEA.
- * Author: Troy Heninger
- * Date: Jan 10, 2004
- * Class loader that knows about loading from a servlet context and about class dependancies.
- */
-public class Loader extends GroovyClassLoader {
-
-	private String servletPath;
-	private ServletContext context;
-	private Map dependencies;
-
-	/**
-	 * Constructor.
-	 * @param parent
-	 * @param context
-	 * @param servletPath
-	 * @param dependencies
-	 */
-	public Loader(ClassLoader parent, ServletContext context, String servletPath, Map dependencies) {
-		super(parent);
-		this.context = context;
-		this.servletPath = servletPath;
-		this.dependencies = dependencies;
-	} // Loader()
-
-	/**
-	 * Load the class.
-	 * @todo Fix this to work with .gsp extensions
-	 * @param className
-	 * @return
-	 * @throws ClassNotFoundException
-	 */
-	protected Class findClass(String className) throws ClassNotFoundException {
-		String filename = className.replace('.', File.separatorChar) + ".groovy";
-		URL dependentScript;
-		try {
-			dependentScript = context.getResource("/WEB-INF/groovy/" + filename);
-			if (dependentScript == null) {
-				String current = servletPath.substring(0, servletPath.lastIndexOf("/") + 1);
-				dependentScript = context.getResource(current + filename);
-			}
-		} catch (MalformedURLException e) {
-			throw new ClassNotFoundException(className + ": " + e);
-		}
-		if (dependentScript == null) {
-			throw new ClassNotFoundException("Could not find " + className + " in webapp");
-		} else {
-			URLConnection dependentScriptConn;
-			try {
-				dependentScriptConn = dependentScript.openConnection();
-				dependencies.put(dependentScript, new Long(dependentScriptConn.getLastModified()));
-			} catch (IOException e1) {
-				throw new ClassNotFoundException("Could not read " + className + ": " + e1);
-			}
-			try {
-				return parseClass(dependentScriptConn.getInputStream(), filename);
-			} catch (SyntaxException e2) {
-				throw new ClassNotFoundException("Syntax error in " + className + ": " + e2);
-			} catch (IOException e2) {
-				throw new ClassNotFoundException("Problem reading " + className + ": " + e2);
-			}
-		}
-	}
-}
diff --git a/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Parse.java b/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Parse.java
deleted file mode 100644
index f1b3d0d..0000000
--- a/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Parse.java
+++ /dev/null
@@ -1,265 +0,0 @@
-package org.codehaus.groovy.modules.pages;
-
-import groovy.modules.pages.GroovyPage;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.io.IOException;
-import java.util.regex.Pattern;
-import java.util.regex.Matcher;
-
-/**
- * Created by IntelliJ IDEA.
- * Author: Troy Heninger
- * Date: Jan 10, 2004
- * Parser for GroovyPages.
- */
-public class Parse implements Tokens {
-	public static final boolean DEBUG = false;
-
-	private static final Pattern paraBreak = Pattern.compile("/p>\\s*<p[^>]*>", Pattern.CASE_INSENSITIVE);
-	private static final Pattern rowBreak = Pattern.compile("((/td>\\s*</tr>\\s*<)?tr[^>]*>\\s*<)?td[^>]*>", Pattern.CASE_INSENSITIVE);
-
-	private Scan scan;
-	private StringBuffer buf;
-	private String className;
-	private boolean finalPass = false;
-
-	public Parse(String name, InputStream in) throws IOException {
-		scan = new Scan(readStream(in));
-		makeName(name);
-	} // Parse()
-
-	public InputStream parse() {
-		buf = new StringBuffer();
-		page();
-		finalPass = true;
-		scan.reset();
-		page();
-//		if (DEBUG) System.out.println(buf);
-		InputStream out = new ByteArrayInputStream(buf.toString().getBytes());
-		buf = null;
-		scan = null;
-		return out;
-	} // parse()
-
-	private void declare(boolean gsp) {
-		if (finalPass) return;
-		if (DEBUG) System.out.println("parse: declare");
-		buf.append("\n");
-		write(scan.getToken().trim(), gsp);
-		buf.append("\n\n");
-	} // declare()
-
-	private void direct() {
-		if (finalPass) return;
-		if (DEBUG) System.out.println("parse: direct");
-		String text = scan.getToken();
-		text = text.trim();
-//		System.out.println("direct(" + text + ')');
-		if (text.startsWith("page ")) directPage(text);
-	} // direct()
-
-	private void directPage(String text) {
-		text = text.substring(5).trim();
-//		System.out.println("directPage(" + text + ')');
-		Pattern pat = Pattern.compile("(\\w+)\\s*=\\s*\"([^\"]*)\"");
-		Matcher mat = pat.matcher(text);
-		for (int ix = 0;;) {
-			if (!mat.find(ix)) return;
-			String name = mat.group(1);
-			String value = mat.group(2);
-			if (name.equals("import")) pageImport(value);
-			ix = mat.end();
-		}
-	} // directPage()
-
-	private void expr() {
-		if (!finalPass) return;
-		if (DEBUG) System.out.println("parse: expr");
-		buf.append("out.print(");
-		String text = scan.getToken().trim();
-		buf.append(GroovyPage.fromHtml(text));
-		buf.append(")\n");
-	} // expr()
-
-	private void html() {
-		if (!finalPass) return;
-		if (DEBUG) System.out.println("parse: html");
-		StringBuffer text = new StringBuffer(scan.getToken());
-		while (text.length() > 80) {
-			int end = 80;
-				// don't end a line with a '\'
-			while (text.charAt(end - 1) == '\\') end--;
-			print(text.subSequence(0, end));
-			text.delete(0, end);
-		}
-		if (text.length() > 0) {
-			print(text);
-		}
-	} // html()
-
-	private void makeName(String name) {
-		int slash = name.lastIndexOf('/');
-		if (slash >= 0) name = name.substring(slash + 1);
-		StringBuffer buf = new StringBuffer(name.length());
-		for (int ix = 0, ixz = name.length(); ix < ixz; ix++) {
-			char c = name.charAt(ix);
-			if (c < '0' || (c > '9' && c < '@') || (c > 'Z' && c < '_') || (c > '_' && c < 'a') || c > 'z') c = '_';
-			else if (ix == 0 && c >= '0' && c <= '9') c = '_';
-			buf.append(c);
-		}
-		className = buf.toString();
-	} // makeName()
-
-	private static boolean match(CharSequence pat, CharSequence text, int start) {
-		int ix = start, ixz = text.length(), ixy = start + pat.length();
-		if (ixz > ixy) ixz = ixy;
-		if (pat.length() > ixz - start) return false;
-		for (; ix < ixz; ix++) {
-			if (Character.toLowerCase(text.charAt(ix)) != Character.toLowerCase(pat.charAt(ix - start))) {
-				return false;
-			}
-		}
-		return true;
-	} // match()
-
-	private static int match(Pattern pat, CharSequence text, int start) {
-		Matcher mat = pat.matcher(text);
-		if (mat.find(start) && mat.start() == start) {
-			return mat.end();
-		}
-		return 0;
-	} // match()
-
-	private void page() {
-		if (DEBUG) System.out.println("parse: page");
-		if (finalPass) {
-			buf.append("\nclass ");
-			buf.append(className);
-//			buf.append(" extends GroovyPage {\n");
-			buf.append(" extends Script {\n");  //implements GroovyPage {\n");
-			buf.append("run() {\n");
-		} else {
-			buf.append("import groovy.modules.pages.GroovyPage\n");
-		}
-		loop: for (;;) {
-			int state = scan.nextToken();
-			switch (state) {
-				case EOF: break loop;
-				case HTML: html(); break;
-				case JEXPR: expr(); break;
-				case JSCRIPT: script(false); break;
-				case JDIRECT: direct(); break;
-				case JDECLAR: declare(false); break;
-				case GEXPR: expr(); break;
-				case GSCRIPT: script(true); break;
-				case GDIRECT: direct(); break;
-				case GDECLAR: declare(true); break;
-			}
-		}
-		if (finalPass) {
-			buf.append("}\n}\n");
-//			buf.append("} // run()\n");
-		}
-	} // page()
-
-	private void pageImport(String value) {
-//		System.out.println("pageImport(" + value + ')');
-		String[] imports = Pattern.compile(";").split(value.subSequence(0, value.length()));
-		for (int ix = 0; ix < imports.length; ix++) {
-			buf.append("import ");
-			buf.append(imports[ix]);
-			buf.append('\n');
-		}
-	} // pageImport()
-
-	private void print(CharSequence text) {
-		buf.append("out.print('");
-		for (int ix = 0, ixz = text.length(); ix < ixz; ix++) {
-			char c = text.charAt(ix);
-			String rep = null;
-			if (c == '\n') rep = "\\n";
-			else if (c == '\r') rep = "\\r";
-			else if (c == '\t') rep = "\\t";
-			else if (c == '\'') rep = "\\'";
-			else if (c == '\\') rep = "\\\\";
-			if (rep != null) buf.append(rep);
-			else buf.append(c);
-		}
-		buf.append("')\n");
-	} // print()
-
-	private String readStream(InputStream in) throws IOException {
-		ByteArrayOutputStream out = new ByteArrayOutputStream();
-		try {
-			byte[] buf = new byte[8192];
-			for (;;) {
-				int read = in.read(buf);
-				if (read <= 0) break;
-				out.write(buf, 0, read);
-			}
-			return out.toString();
-		} finally {
-			out.close();
-			in.close();
-		}
-	} // readStream()
-
-	private void script(boolean gsp) {
-		if (!finalPass) return;
-		if (DEBUG) System.out.println("parse: script");
-		buf.append("\n");
-		write(scan.getToken().trim(), gsp);
-		buf.append("\n\n");
-	} // script()
-
-	private void write(CharSequence text, boolean gsp) {
-		if (!gsp) {
-			buf.append(text);
-			return;
-		}
-		for (int ix = 0, ixz = text.length(); ix < ixz; ix++) {
-			char c = text.charAt(ix);
-			String rep = null;
-			if (Character.isWhitespace(c)) {
-				for (ix++; ix < ixz; ix++) {
-					if (Character.isWhitespace(text.charAt(ix))) continue;
-					ix--;
-					rep = " ";
-					break;
-				}
-			} else if (c == '&') {
-				if (match("&semi;", text, ix)) {
-					rep = ";";
-					ix += 5;
-				} else if (match("&amp;", text, ix)) {
-					rep = "&";
-					ix += 4;
-				} else if (match("&lt;", text, ix)) {
-					rep = "<";
-					ix += 3;
-				} else if (match("&gt;", text, ix)) {
-					rep = ">";
-					ix += 3;
-				}
-			} else if (c == '<') {
-				if (match("<br>", text, ix) || match("<hr>", text, ix)) {
-					rep = "\n";
-					ix += 3;
-				} else {
-					int end = match(paraBreak, text, ix);
-					if (end <= 0) end = match(rowBreak, text, ix);
-					if (end > 0) {
-						rep = "\n";
-						ix = end;
-					}
-				}
-			}
-			if (rep != null) buf.append(rep);
-			else buf.append(c);
-		}
-	} // write()
-
-} // Parse
diff --git a/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Reverse.java b/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Reverse.java
deleted file mode 100644
index 7d66d04..0000000
--- a/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Reverse.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.codehaus.groovy.modules.pages;
-
-/**
- * Created by IntelliJ IDEA.
- * Author: Troy Heninger
- * Date: Jan 16, 2004
- * Utility class to reverse a char sequence.
- */
-class Reverse implements CharSequence {
-	private CharSequence text;
-	private int start, end, anchor;
-
-	Reverse(CharSequence text) {
-		this(text, 0, text.length());
-	}
-
-	Reverse(CharSequence text, int start, int end) {
-		this.text = text;
-		this.start = start;
-		this.end = end;
-		anchor = end - 1;
-	}
-	public char charAt(int index) {
-		return text.charAt(anchor - index);
-	}
-
-	public int length() {
-		return end - start;
-	}
-
-	public CharSequence subSequence(int start, int end) {
-		return new Reverse(text, anchor - end, anchor - start);
-	}
-
-	public String toString() {
-		int len = length();
-		StringBuffer buf = new StringBuffer(len);
-		for (int ix = anchor; ix >= start; ix--) {
-			buf.append(text.charAt(ix));
-		}
-		return buf.toString();
-	}
-} // Reverse
diff --git a/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Scan.java b/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Scan.java
deleted file mode 100644
index 7029f98..0000000
--- a/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Scan.java
+++ /dev/null
@@ -1,140 +0,0 @@
-package org.codehaus.groovy.modules.pages;
-
-/**
- * Created by IntelliJ IDEA.
- * Author: Troy Heninger
- * Date: Jan 10, 2004
- * Lexer for GroovyPages.
- */
-class Scan implements Tokens {
-	private String text;
-	private int end1, begin1, end2, begin2, state = HTML, len, level;
-	private boolean str1, str2;
-
-	Scan(String text) {
-		Strip strip = new Strip(text);
-		strip.strip(0);
-		this.text = strip.toString();
-		len = this.text.length();
-	} // Scan()
-
-	private int found(int newState, int skip) {
-		begin2 = begin1;
-		end2 = --end1;
-		begin1 = end1 += skip;
-		int lastState = state;
-		state = newState;
-		return lastState;
-	} // found()
-
-	String getToken() {
-		return text.substring(begin2, end2);
-	} // getToken()
-
-	int nextToken() {
-		for (;;) {
-			int left = len - end1;
-			if (left == 0) {
-				end1++; // in order to include the last letter
-				return found(EOF, 0);
-			}
-			char c = text.charAt(end1++);
-			char c1 = left > 1 ? text.charAt(end1) : 0;
-			char c2 = left > 2 ? text.charAt(end1 + 1) : 0;
-
-			if (str1) {
-				if (c == '\\') end1++;
-				else if (c == '\'') str1 = false;
-				continue;
-			} else if (str2) {
-				if (c == '\\') end1++;
-				else if (c == '"') str2 = false;
-				continue;
-			} else if (level > 0 && (c == ')' || c == '}' || c == ']')) {
-				level--;
-				continue;
-			}
-
-			switch (state) {
-				case HTML:
-					if (c == '<' && left > 3) {
-						if (c1 == '%') {
-							if (c2 == '=') {
-								return found(JEXPR, 3);
-							} else if (c2 == '@') {
-								return found(JDIRECT, 3);
-							} else if (c2 == '!') {
-								return found(JDECLAR, 3);
-							} else if (c2 == '-' && left > 3 && text.charAt(end1 + 2) == '-') {
-								if (skipJComment()) continue;
-							}
-							return found(JSCRIPT, 2);
-						}
-					} else if (c == '$' && c1 == '{') {
-						return found(GEXPR, 2);
-					} else if (c == '%' && c1 == '{') {
-						if (c2 == '-' && left > 3 && text.charAt(end1 + 2) == '-') {
-							if (skipGComment()) continue;
-						}
-						return found(GSCRIPT, 2);
-					} else if (c == '!' && c1 == '{') {
-						return found(GDECLAR, 2);
-					} else if (c == '@' && c1 == '{') {
-						return found(GDIRECT, 2);
-					}
-					break;
-				case JEXPR:
-				case JSCRIPT:
-				case JDIRECT:
-				case JDECLAR:
-					if (c == '%' && c1 == '>') {
-						return found(HTML, 2);
-					}
-					break;
-				case GEXPR:
-				case GDIRECT:
-					if (c == '}' && !str1 && !str2 && level == 0) {
-						return found(HTML, 1);
-					}
-					break;
-				case GSCRIPT:
-					if (c == '}' && c1 == '%' && !str1 && !str2 && level == 0) {
-						return found(HTML, 2);
-					}
-					break;
-				case GDECLAR:
-					if (c == '}' && (c1 == '!' || c1 == '%') && !str1 && !str2 && level == 0) {
-						return found(HTML, 2);
-					}
-					break;
-			}
-		}
-	} // nextToken()
-
-	private boolean skipComment(char c3, char c4) {
-		int ix = end1 + 3;
-		for (int ixz = len - 4; ; ix++) {
-			if (ix >= ixz) return false;
-			if (text.charAt(ix) == '-' && text.charAt(ix + 1) == '-' && text.charAt(ix + 2) == c3
-			        && text.charAt(ix + 3) == c4) break;
-		}
-		text = text.substring(0, --end1) + text.substring(ix + 4);
-		len = text.length();
-		return true;
-	} // skipComment()
-
-	private boolean skipGComment() {
-		return skipComment('}', '%');
-	} // skipGComment()
-
-	private boolean skipJComment() {
-		return skipComment('%', '>');
-	} // skipJComment()
-
-	void reset() {
-		end1= begin1 = end2 = begin2 = level = 0;
-		state = HTML;
-	} // reset()
-
-} // Scan
-
diff --git a/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Strip.java b/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Strip.java
deleted file mode 100644
index 2fff35b..0000000
--- a/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Strip.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.codehaus.groovy.modules.pages;
-
-import java.util.regex.Pattern;
-import java.util.regex.Matcher;
-
-/**
- * Created by IntelliJ IDEA.
- * Author: Troy Heninger
- * Date: Jan 10, 2004
- * Utility class to strip HTML from around tags that specify it.
- */
-class Strip {
-	private static Pattern stripTag = Pattern.compile("\\^([a-zA-Z]+)%\\{([^}]|\\}[^%])*\\}%");
-	private static Pattern anyTag = Pattern.compile("((\\^[a-zA-Z])?%\\{([^}]|\\}[^%])*\\}%|[$@]\\{[^}]*\\})");
-
-	private StringBuffer text;
-
-	Strip(CharSequence text) {
-		this.text = new StringBuffer(text.toString());
-	} // Scan()
-
-	void strip(int index) {
-		Matcher match = stripTag.matcher(text);
-		if (match.find(index)) {
-			strip(match.end());
-			String tag = match.group(1);
-			int start = match.start() + 1 + tag.length(); // begin after '^tag'; at the '%{'
-			int end = match.end();
-			Pattern patAfter = Pattern.compile("</" + tag + "(>|[^>a-zA-Z][^>]*>)\\s*", Pattern.CASE_INSENSITIVE);
-			Matcher matchAfter = patAfter.matcher(text);
-			if (matchAfter.find(end)) {
-				int end2 = matchAfter.end();
-				Matcher matchAny = anyTag.matcher(text.subSequence(0, end2));
-				if (matchAny.find(end)) end2 = matchAny.start();
-				Pattern nextTagPat = Pattern.compile("<" + tag + "(\\s|>)", Pattern.CASE_INSENSITIVE);
-				Matcher matchNext = nextTagPat.matcher(text.subSequence(0, end2));
-				if (matchNext.find(end)) end2 = matchNext.start();
-					// System.out.println("Stripping " + text.subSequence(end, end2));
-				text.delete(end, end2);
-			}
-			Pattern patBefore = Pattern.compile(new Reverse("*s\\<" + tag).toString(),
-					Pattern.CASE_INSENSITIVE);
-			Matcher matchBefore = patBefore.matcher(new Reverse(text, 0, start));
-			if (matchBefore.find()) {
-				int start2 = start - matchBefore.end();
-				Matcher matchAny = anyTag.matcher(text.subSequence(0, start));
-				if (matchAny.find(start2)) start2 = matchAny.end();
-					// System.out.println("Stripping " + text.subSequence(start2, start));
-				text.delete(start2, start);
-			}
-		}
-	} // strip()
-
-	public String toString() {
-		return text.toString();
-	}
-
-} // Strip
diff --git a/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Tokens.java b/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Tokens.java
deleted file mode 100644
index d4bfc59..0000000
--- a/groovy/modules/pages/src/main/org/codehaus/groovy/modules/pages/Tokens.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.codehaus.groovy.modules.pages;
-
-/**
- * Created by IntelliJ IDEA.
- * Author: Troy Heninger
- * Date: Jan 10, 2004
- * Token constants for lexer and parser.
- */
-interface Tokens {
-	static final int EOF = -1;
-	static final int HTML = 0;
-	static final int JEXPR = 1;   // <%= ... %>
-	static final int JSCRIPT = 2; // <% .... %>
-	static final int JDIRECT = 3; // <%@ ... %>
-	static final int JDECLAR = 4; // <%! ... %>
-	static final int GEXPR = 11;   // ${ ... }
-	static final int GSCRIPT = 12; // %{ ... }%
-	static final int GDIRECT = 13; // @{ ... }
-	static final int GDECLAR = 14; // !{ ... }!
-}
diff --git a/groovy/modules/pages/src/web/WEB-INF/web.xml b/groovy/modules/pages/src/web/WEB-INF/web.xml
deleted file mode 100644
index 29845c2..0000000
--- a/groovy/modules/pages/src/web/WEB-INF/web.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<web-app>
-	<display-name>GroovyPages Test</display-name>
-	<description>GroovyPages Test</description>
-	<servlet>
-        <servlet-name>GroovyPages</servlet-name>
-        <servlet-class>groovy.modules.pages.GroovyPages</servlet-class>
-		<init-param>
-			<param-name>allowSpilling</param-name>
-			<param-value>1</param-value>
-			<description>
-             Allows developers to view the intermediade source code, when they pass
-				a spillGroovy argument in the URL.
-          </description>
-		</init-param>
-    </servlet>
-	<servlet>
-        <servlet-name>GroovyServlet</servlet-name>
-        <servlet-class>groovy.servlet.GroovyServlet</servlet-class>
-    </servlet>
-	<servlet-mapping>
-        <servlet-name>GroovyPages</servlet-name>
-        <url-pattern>*.gsp</url-pattern>
-    </servlet-mapping>
-	<servlet-mapping>
-        <servlet-name>GroovyServlet</servlet-name>
-        <url-pattern>*.groovy</url-pattern>
-    </servlet-mapping>
-	<welcome-file-list>
-		<welcome-file>default.htm</welcome-file>
-		<welcome-file>index.html</welcome-file>
-		<welcome-file>index.htm</welcome-file>
-	</welcome-file-list>
-</web-app>
diff --git a/groovy/modules/pages/src/web/default.htm b/groovy/modules/pages/src/web/default.htm
deleted file mode 100644
index 12c3474..0000000
--- a/groovy/modules/pages/src/web/default.htm
+++ /dev/null
@@ -1,45 +0,0 @@
-<html>
-
-<head>
-<meta http-equiv="Content-Language" content="en-us">
-<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
-<title>GroovyPages Examples</title>
-</head>
-
-<body>
-
-<h2 align="center">GroovyPages Examples Home</h2>
-
-<p>Here are some pages that demonstrate GroovyPages in action.&nbsp; These 
-examples are running live and include the source code as well.&nbsp; Note: if 
-you wish to view the intermediate groovy code, pass a spillGroovy parameter in 
-the URL then view the source to the page.&nbsp; <a href="simple.gsp?spillGroovy">Click here for an example.</a></p>
-<div align="center">
-  <center>
-  <table border="0" cellpadding="2" style="border-collapse: collapse" bordercolor="#111111" id="AutoNumber1">
-    <tr>
-      <td align="right">
-      <a href="http://www.investortech.com/emp/troy/groovypages.htm">GroovyPages</a></td>
-      <td>Back to the GroovyPages development site</td>
-    </tr>
-    <tr>
-      <td align="right"><a href="simple.gsp">Simple Example</a></td>
-      <td>A very basic example</td>
-    </tr>
-    <tr>
-      <td align="right"><a href="jsp.gsp">JSP Syntax</a></td>
-      <td>Shows how GroovyPages supports the JSP syntax</td>
-    </tr>
-    <tr>
-      <td align="right"><a href="visible.gsp">Visible Syntax</a></td>
-      <td>Shows how GroovyPages supports an alternate syntax</td>
-    </tr>
-  </table>
-  </center>
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/groovy/modules/pages/src/web/jsp.gsp b/groovy/modules/pages/src/web/jsp.gsp
deleted file mode 100644
index ef7e585..0000000
--- a/groovy/modules/pages/src/web/jsp.gsp
+++ /dev/null
@@ -1,85 +0,0 @@
-<html>

-<head>

-<title>GroovyPages Test</title>

-</head>

-<body>

-<h2 align="center">JSP Syntax</h2>

-<table border="0" cellpadding="2" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber4">

-  <tr>

-    <td>

-	<i>Links:</i></td>

-    <td>

-	<i>

-	<a href="default.htm">Examples Home</a></i></td>

-    <td>

-	<i> <a href="simple.gsp">Simple Example</a></i></td>

-    <td>

-	<i>

-    <a href="visible.gsp?arg=This+is+a+test+argument&lastCount=${session.count}">

-    Visible Syntax</a></i></td>

-    <td>

-	<i>

-    <a href="jsp.gsp?arg=This+is+a+test+argument&lastCount=<%=session.count%>">

-    JSP Syntax</a></i></td>

-  </tr>

-</table>

-<p>&nbsp;&nbsp;&nbsp; This is an example of GroovyPages showing the use of the 

-JSP syntax.&nbsp; This syntax is exactly like JSP except that the code portions 

-are Groovy, rather than Java.&nbsp; GroovyPages also support an alternate 

-editor-visible syntax which is sometimes preferable when the programmer is also the 

-page designer or when they want to see and edit their in the web editor's 

-formatted, normal view, rather than in raw, noisy HTML all of the time.</p>

-<% // Make sure count is set

-if (session.count == null) session.count = 1 

-%>

-<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">

-  <tr>

-    <td valign="top" width="50%">

-    <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2">

-      <tr>

-        <td colspan="2" align="center"><b>Page Arguments</b></td>

-      </tr>

-      <tr>

-        <td>Argument</td>

-        <td>Value</td>

-      </tr>

-		<% // For each parameter

-		for (it in request) { %>

-      <tr>

-        <td><%= it.key %>&nbsp;</td>

-        <td><%= it.value %>&nbsp;</td>

-      </tr>

-		<% } %>

-    </table>

-    </td>

-    <td valign="top" width="50%">

-    <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3">

-      <tr>

-        <td colspan="2" align="center"><b>Session Variables</b></td>

-      </tr>

-      <tr>

-        <td>Variable</td>

-        <td>Value</td>

-      </tr>

-		<% // For each session variable

-		session.each() { %>

-      <tr>

-        <td><%= it.key %>&nbsp;</td>

-        <td><%= it.value %>&nbsp;</td>

-      </tr>

-		<% } %>

-    </table>

-    </td>

-  </tr>

-</table>

-<% // Increment the count on each refresh

-session.count++ 

-%>

-<h3>The Source Code</h3>

-<pre><span style="background-color: #99FF99">&lt;% // Make sure count is set<br>if (session.count == null) session.count = 1<br>%&gt;</span><br>&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse: 

-collapse&quot; bordercolor=&quot;#111111&quot; width=&quot;100%&quot; id=&quot;AutoNumber1&quot;&gt;<br>  &lt;tr&gt;<br>    &lt;td valign=&quot;top&quot; width=&quot;50%&quot;&gt;<br>      &lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse: collapse&quot;

-        bordercolor=&quot;#111111&quot; width=&quot;100%&quot; id=&quot;AutoNumber2&quot;&gt;<br>        &lt;tr&gt;<br>          &lt;td colspan=&quot;2&quot; align=&quot;center&quot;&gt;&lt;b&gt;Page Arguments&lt;/b&gt;&lt;/td&gt;<br>        &lt;/tr&gt;<br>        &lt;tr&gt;<br>          &lt;td&gt;Argument&lt;/td&gt;<br>          &lt;td&gt;Value&lt;/td&gt;<br>        &lt;/tr&gt;<br>        <span style="background-color: #99FF99">&lt;% // For each parameter<br>        for (it in request) { %&gt;</span><br>        &lt;tr&gt;<br>          &lt;td&gt;<span style="background-color: #99FF99">&lt;%= it.key %&gt;</span>&amp;nbsp;&lt;/td&gt;<br>          &lt;td&gt;<span style="background-color: #99FF99">&lt;%= it.value %&gt;</span>&amp;nbsp;&lt;/td&gt;<br>        &lt;/tr&gt;<br>        <span style="background-color: #99FF99">&lt;% } %&gt;</span><br>      &lt;/table&gt;<br>    &lt;/td&gt;<br>    &lt;td valign=&quot;top&quot; width=&quot;50%&quot;&gt;<br>      &lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse: collapse&quot;

-        bordercolor=&quot;#111111&quot; width=&quot;100%&quot; id=&quot;AutoNumber3&quot;&gt;<br>        &lt;tr&gt;<br>          &lt;td colspan=&quot;2&quot; align="center"&gt;&lt;b&gt;Session Variables&lt;/b&gt;&lt;/td&gt;<br>        &lt;/tr&gt;<br>        &lt;tr&gt;<br>          &lt;td&gt;Variable&lt;/td&gt;<br>          &lt;td&gt;Value&lt;/td&gt;<br>        &lt;/tr&gt;<br>        <span style="background-color: #99FF99">&lt;% // For each session variable<br>        session.each() { %&gt;</span><br>        &lt;tr&gt;<br>          &lt;td&gt;<span style="background-color: #99FF99">&lt;%= it.key %&gt;</span>&amp;nbsp;&lt;/td&gt;<br>          &lt;td&gt;<span style="background-color: #99FF99">&lt;%= it.value %&gt;</span>&amp;nbsp;&lt;/td&gt;<br>        &lt;/tr&gt;<br>        <span style="background-color: #99FF99">&lt;% } %&gt;</span><br>      &lt;/table&gt;<br>    &lt;/td&gt;<br>  &lt;/tr&gt;<br>&lt;/table&gt;

-<span style="background-color: #99FF99">&lt;% // Increment the count on each refresh<br>session.count++<br>%&gt;</span></pre>

-</body>

-</html>
\ No newline at end of file
diff --git a/groovy/modules/pages/src/web/simple.groovy b/groovy/modules/pages/src/web/simple.groovy
deleted file mode 100644
index 76a967c..0000000
--- a/groovy/modules/pages/src/web/simple.groovy
+++ /dev/null
@@ -1,57 +0,0 @@
-import java.util.Date
-if (session.count == null) {
-	session.count = 1
-}
-out.println(<<<EOS
-<html>
-<head>
-<title>Groovlet Example</title>
-</head>
-<body>
-<h2 align="center">Groovelet Example</h2>
-<table border="0" cellpadding="2" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber4">
-  <tr>
-    <td>
-	<i>Links:</i></td>
-    <td>
-	<i>
-	<a href="default.htm">Examples Home</a></i></td>
-    <td>
-	<i> <a href="simple.gsp">Simple Example</a></i></td>
-    <td>
-	<i>
-    <a href="visible.gsp?arg=This+is+a+test+argument&lastCount=${session.count}">
-    Visible Syntax</a></i></td>
-    <td>
-	<i>
-    <a href="jsp.gsp?arg=This+is+a+test+argument&lastCount=${session.count}">
-    JSP Syntax</a></i></td>
-  </tr>
-</table>
-<p>&nbsp;&nbsp;&nbsp; This is a simple example of a Groovlet using GroovyServlet.&nbsp; This page
-does the same thing as the GroovyPages <a href="simple.gsp">Simple Example</a>.&nbsp;
-From the source code below, you can see that it doesn't take much to write a simple servlet with
-Groovy.  But for more complex servlets, GroovyPages can be a great benefit because it is embedded
-in your HTML, like JSP.</p>
-<p>Hello, ${request.remoteHost}: ${session.count}! ${new Date()}</p>
-<h3>The Source Code</h3>
-<pre><span style="background-color: #99FF99">import java.util.Date
-if (session.count == null) {
-	session.count = 1
-}
-out.println(<<<&#69;OS</span>
-&lt;html>
-&lt;head>
-&lt;title>Groovlet Example&lt;/title>
-&lt;/head>
-&lt;body>
-&lt;p>Hello, <span style="background-color: #99FF99">$&#123;request.remoteHost}</span>: <span style="background-color: #99FF99">$&#123;session.count}</span>! <span style="background-color: #99FF99">$&#123;new Date()}</span>&lt;/p>
-&lt;/body>
-&lt;/html>
-<span style="background-color: #99FF99">&#69;OS)
-session.count = session.count + 1</span>
-</pre>
-</body>
-</html>
-EOS)
-session.count = session.count + 1
diff --git a/groovy/modules/pages/src/web/simple.gsp b/groovy/modules/pages/src/web/simple.gsp
deleted file mode 100644
index 887af1e..0000000
--- a/groovy/modules/pages/src/web/simple.gsp
+++ /dev/null
@@ -1,50 +0,0 @@
-<html>

-<head>

-<title>Simple GroovyPages Example</title>

-</head>

-<body>

-<h2 align="center">Simple Example</h2>

-<table border="0" cellpadding="2" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber4">

-  <tr>

-    <td>

-	<i>Links:</i></td>

-    <td>

-	<i>

-	<a href="default.htm">Examples Home</a></i></td>

-    <td>

-	<i> <a href="simple.gsp">Simple Example</a></i></td>

-    <td>

-	<i>

-    <a href="visible.gsp?arg=This+is+a+test+argument&lastCount=${session.count}">

-    Visible Syntax</a></i></td>

-    <td>

-	<i>

-    <a href="jsp.gsp?arg=This+is+a+test+argument&lastCount=<%=session.count%>">

-    JSP Syntax</a></i></td>

-  </tr>

-</table>

-<p>&nbsp;&nbsp;&nbsp; This is a simple example of GroovyPages.&nbsp; This page 

-does the same thing as the <a href="simple.groovy">Groovlet Example</a>.&nbsp; 

-From the source code below, you can see that GroovyPages are very similar to JSP, 

-except much easier to use because Groovy is underneath.</p>

-<%@ page import="java.util.Date" %>

-

-<% if (session.count == null) session.count = 1 %>

-<p>Hello, ${request.remoteHost}: ${session.count}! ${new Date()}</p>

-<% session.count++ %>

-<h3>The Source Code</h3>

-<pre>&lt;html>

-&lt;head>

-&lt;title>Simple Example&lt;/title>

-&lt;/head>

-&lt;body>

-<span style="background-color: #99FF99">&lt;%@ page import="java.util.Date" %&gt;</span>

-

-<span style="background-color: #99FF99">&lt;% if session.count == null

-session.count = 1 %&gt;</span>

-&lt;p&gt;Hello, <span style="background-color: #99FF99">$&#123;request.remoteHost}</span>: <span style="background-color: #99FF99">$&#123;session.count}</span>! <span style="background-color: #99FF99">$&#123;new Date()}</span>&lt;/p&gt;

-<span style="background-color: #99FF99">&lt;% session.count++ %&gt;</span>

-&lt;/body>

-&lt;/html></pre>

-</body>

-</html>
\ No newline at end of file
diff --git a/groovy/modules/pages/src/web/sql.gsp b/groovy/modules/pages/src/web/sql.gsp
deleted file mode 100644
index a96b78b..0000000
--- a/groovy/modules/pages/src/web/sql.gsp
+++ /dev/null
@@ -1,14 +0,0 @@
-<html>

- <head>

- <title>Test Database Access</title>

- </head>

- <body>

- <p>^p@{page import=&quot;groovy.sql.Sql, test.groovy.sql.TestHelper&quot;}</p>

- <p>^p%{sql = TestHelper.makeSql()<br>

- type = 'cheese'<br>

- sql.queryEach(&quot;select * from FOOD where type = ${type}&quot;) 

- { }%</p>

- <p>Found cheese ${it.name}</p>

- <p>^p%{ } }%</p>

- </body>

-</html>
\ No newline at end of file
diff --git a/groovy/modules/pages/src/web/test1.groovy b/groovy/modules/pages/src/web/test1.groovy
deleted file mode 100644
index 936ce05..0000000
--- a/groovy/modules/pages/src/web/test1.groovy
+++ /dev/null
@@ -1,11 +0,0 @@
-html = <<<EOS
-<html>
-<head>
-<title>Groovlet Example</title>
-</head>
-<body>
-<p>Hello</p>
-</body>
-</html>
-EOS
-out.println(html)
diff --git a/groovy/modules/pages/src/web/test2.groovy b/groovy/modules/pages/src/web/test2.groovy
deleted file mode 100644
index c81acb7..0000000
--- a/groovy/modules/pages/src/web/test2.groovy
+++ /dev/null
@@ -1,10 +0,0 @@
-out.println(<<<EOS
-<html>
-<head>
-<title>Groovlet Example</title>
-</head>
-<body>
-<p>Hello</p>
-</body>
-</html>
-EOS)
diff --git a/groovy/modules/pages/src/web/visible.gsp b/groovy/modules/pages/src/web/visible.gsp
deleted file mode 100644
index eed96c3..0000000
--- a/groovy/modules/pages/src/web/visible.gsp
+++ /dev/null
@@ -1,155 +0,0 @@
-<html>

-<head>

-<title>GroovyPages Test</title>

-</head>

-<body>

-<h2 align="center">Visible Syntax</h2>

-<table border="0" cellpadding="2" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber4">

-  <tr>

-    <td>

-	<i>Links:</i></td>

-    <td>

-	<i>

-	<a href="default.htm">Examples Home</a></i></td>

-    <td>

-	<i> <a href="simple.gsp">Simple Example</a></i></td>

-    <td>

-	<i>

-    <a href="visible.gsp?arg=This+is+a+test+argument&lastCount=${session.count}">

-    Visible Syntax</a></i></td>

-    <td>

-	<i>

-    <a href="jsp.gsp?arg=This+is+a+test+argument&lastCount=<%=session.count%>">

-    JSP Syntax</a></i></td>

-  </tr>

-</table>

-<p>&nbsp;&nbsp;&nbsp; This is an example of GroovyPages showing the use of the editor 

-visible syntax.&nbsp; This syntax uses curly braces like %&#123; groovlet }% and $&#123; 

-expression }, instead of the less-than greater-than of JSP, like &lt;% groovlet %&gt; 

-and &lt;%= expression %&gt;.&nbsp; Though both syntaxes are supported in GroovyPages, 

-using visible syntax is sometimes preferable when the programmer is also the 

-page designer or when they want to see and edit their in the web editor's 

-formatted, normal view, rather than in raw, noisy HTML all of the time.&nbsp; 

-It's perfectly acceptable to mix both syntaxes on the same page.</p>

-<p><i><b>Make sure count is set and increment it on each refresh</b></i><br>

-^p%{<br>

-if (session.count == null) session.count = 1<br>

-}%</p>

-<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">

-  <tr>

-    <td valign="top" width="50%">

-    <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2">

-      <tr>

-        <td colspan="2" align="center"><b>Page Arguments</b></td>

-      </tr>

-      <tr>

-        <td>Argument</td>

-        <td>Value</td>

-      </tr>

-      <tr>

-        <td colspan="2"><i><b>For each parameter</b></i><br>

-^tr%{ for (it in request) { }%</td>

-      </tr>

-      <tr>

-        <td>${ it.key }</td>

-        <td>${ it.value }</td>

-      </tr>

-      <tr>

-        <td colspan="2">^tr%{ } }% <i><b>Comments are safe before and after 

-        stripping tags</b></i></td>

-      </tr>

-    </table>

-    </td>

-    <td valign="top" width="50%">

-    <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3">

-      <tr>

-        <td colspan="2" align="center"><b>Session Variables</b></td>

-      </tr>

-      <tr>

-        <td>Variable</td>

-        <td>Value</td>

-      </tr>

-      <tr>

-        <td colspan="2"><i><b>For each session variable</b></i><br>

-^tr%{ session.each() { }%</td>

-      </tr>

-      <tr>

-        <td>${ it.key }</td>

-        <td>${ it.value }</td>

-      </tr>

-      <tr>

-        <td colspan="2">^tr%{ } }% <i><b>because they will get 

-        stripped off</b></i></td>

-      </tr>

-    </table>

-    </td>

-  </tr>

-</table>

-<p><i><b>Increment the count on each refresh</b></i><br>

-^p%{

-session.count++

-}%</p>

-<h3>The Source Code</h3>

-<p>&nbsp;&nbsp; You will note that the source code below appears more noisy when 

-compared with JSP syntax.&nbsp; It is when you look at the raw HTML.&nbsp; But 

-web editors help you to stay out of HTML mode, and when you edit your page that 

-way most of the noise goes away.</p>

-<pre>&lt;p&gt;&lt;i&gt;&lt;b&gt;Make sure count is set&lt;/b&gt;&lt;/i&gt;&lt;br&gt;

-<span style="background-color: #99FF99">^p%&#123;&lt;br&gt;

-if (session.count == null) session.count = 1&lt;br&gt;

-}%</span>&lt;/p&gt;

-&lt;table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1"&gt;

-  &lt;tr&gt;

-    &lt;td valign="top" width="50%"&gt;

-    &lt;table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2"&gt;

-      &lt;tr&gt;

-        &lt;td colspan="2" align="center"&gt;&lt;b&gt;Page Arguments&lt;/b&gt;&lt;/td&gt;

-      &lt;/tr&gt;

-      &lt;tr&gt;

-        &lt;td&gt;Argument&lt;/td&gt;

-        &lt;td&gt;Value&lt;/td&gt;

-      &lt;/tr&gt;

-      &lt;tr&gt;

-        &lt;td colspan="2"&gt;<span style="background-color: #99FF99">&lt;i&gt;&lt;b&gt;For each parameter&lt;/b&gt;&lt;/i&gt;&lt;br&gt;

-          ^tr%&#123; for (it in request) &#123; }%</span>&lt;/td&gt;

-      &lt;/tr&gt;

-      &lt;tr&gt;

-        &lt;td&gt;<span style="background-color: #99FF99">$&#123; it.key }</span>&lt;/td&gt;

-        &lt;td&gt;<span style="background-color: #99FF99">$&#123; it.value }</span>&lt;/td&gt;

-      &lt;/tr&gt;

-      &lt;tr&gt;

-        &lt;td colspan="2"&gt;<span style="background-color: #99FF99">^tr%&#123; } }% &lt;i&gt;&lt;b&gt;Comments are safe before and after 

-        stripping tags&lt;/b&gt;&lt;/i&gt;</span>&lt;/td&gt;

-      &lt;/tr&gt;

-    &lt;/table&gt;

-    &lt;/td&gt;

-    &lt;td valign="top" width="50%"&gt;

-    &lt;table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3"&gt;

-      &lt;tr&gt;

-        &lt;td colspan="2" align="center"&gt;&lt;b&gt;Session Variables&lt;/b&gt;&lt;/td&gt;

-      &lt;/tr&gt;

-      &lt;tr&gt;

-        &lt;td&gt;Variable&lt;/td&gt;

-        &lt;td&gt;Value&lt;/td&gt;

-      &lt;/tr&gt;

-      &lt;tr&gt;

-        &lt;td colspan="2"&gt;<span style="background-color: #99FF99">&lt;i&gt;&lt;b&gt;For each session variable&lt;/b&gt;&lt;/i&gt;&lt;br&gt;

-          ^tr%&#123; session.each() &#123; }%</span>&lt;/td&gt;

-      &lt;/tr&gt;

-      &lt;tr&gt;

-        &lt;td&gt;<span style="background-color: #99FF99">$&#123; it.key }</span>&lt;/td&gt;

-        &lt;td&gt;<span style="background-color: #99FF99">$&#123; it.value }</span>&lt;/td&gt;

-      &lt;/tr&gt;

-      &lt;tr&gt;

-        &lt;td colspan="2"&gt;<span style="background-color: #99FF99">^tr%&#123; } }% &lt;i&gt;&lt;b&gt;because they will get 

-        stripped off&lt;/b&gt;&lt;/i&gt;</span>&lt;/td&gt;

-      &lt;/tr&gt;

-    &lt;/table&gt;

-    &lt;/td&gt;

-  &lt;/tr&gt;

-&lt;/table&gt;

-&lt;p&gt;&lt;i&gt;&lt;b&gt;Increment the count on each refresh&lt;/b&gt;&lt;/i&gt;&lt;br&gt;

-<span style="background-color: #99FF99">^p%&#123; session.count++ }%</span>&lt;/p&gt;

-</pre>

-</body>

-</html>
\ No newline at end of file
diff --git a/groovy/modules/process/.classpath b/groovy/modules/process/.classpath
deleted file mode 100644
index 543e599..0000000
--- a/groovy/modules/process/.classpath
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-    <classpathentry kind="src" path="src"/>
-    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-    <classpathentry kind="lib" path="lib/concurrent.jar"/>
-    <classpathentry kind="lib" path="/home/yuri/local/groovy/lib/asm-1.4.1.jar"/>
-    <classpathentry kind="lib" path="/home/yuri/local/groovy/lib/asm-attrs-1.4.1.jar"/>
-    <classpathentry kind="lib" path="/home/yuri/local/groovy/lib/asm-util-1.4.1.jar"/>
-    <classpathentry kind="lib" path="/home/yuri/local/groovy/lib/groovy-1.0-beta-3-snapshot.jar"/>
-    <classpathentry kind="lib" path="/home/yuri/local/groovy/lib/junit-3.8.1.jar"/>
-    <classpathentry kind="output" path="build/classes"/>
-</classpath>
diff --git a/groovy/modules/process/.project b/groovy/modules/process/.project
deleted file mode 100644
index 6c847c5..0000000
--- a/groovy/modules/process/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>groosh</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/groovy/modules/process/lib/concurrent.jar b/groovy/modules/process/lib/concurrent.jar
deleted file mode 100644
index 51872bf..0000000
--- a/groovy/modules/process/lib/concurrent.jar
+++ /dev/null
Binary files differ
diff --git a/groovy/modules/process/src/conf/groovy-classworlds.conf b/groovy/modules/process/src/conf/groovy-classworlds.conf
deleted file mode 100644
index f6c5934..0000000
--- a/groovy/modules/process/src/conf/groovy-classworlds.conf
+++ /dev/null
@@ -1,22 +0,0 @@
-##############################################################################
-##                                                                          ##
-##  Groovy Shell Classworlds Configuration                                  ##
-##                                                                          ##
-##############################################################################
-
-##
-## $Revision: 1.3 $ $Date: 2003/10/31 12:30:57 $
-##
-
-# The main entry-point
-main is groovy.lang.GroovyShell from groovy
-
-# The core Groovy class-realm
-[groovy]
-    # Allow access to resources
-    load ${groovy.home}/conf
-    
-    # Load required libraries
-    load ${groovy.home}/lib/*.jar
-    load /home/yuri/workspace/groosh/lib/*.jar
-    load /home/yuri/workspace/groosh/build/classes/
diff --git a/groovy/modules/process/src/conf/groovyc-classworlds.conf b/groovy/modules/process/src/conf/groovyc-classworlds.conf
deleted file mode 100644
index d90bc68..0000000
--- a/groovy/modules/process/src/conf/groovyc-classworlds.conf
+++ /dev/null
@@ -1,22 +0,0 @@
-##############################################################################
-##                                                                          ##
-##  Groovy Compiler Classworlds Configuration                               ##
-##                                                                          ##
-##############################################################################
-
-##
-## $Revision: 1.2 $ $Date: 2003/10/06 20:42:55 $
-##
-
-# The main entry-point
-main is org.codehaus.groovy.tools.FileSystemCompiler from groovy
-
-# The core Groovy class-realm
-[groovy]
-    # Allow access to resources
-    load ${groovy.home}/conf
-    
-    # Load required libraries
-    load ${groovy.home}/lib/*.jar
-    load /home/yuri/workspace/groosh/lib/*.jar
-    load /home/yuri/workspace/groosh/build/classes/
diff --git a/groovy/modules/process/src/include/nativeprocess.h b/groovy/modules/process/src/include/nativeprocess.h
deleted file mode 100644
index e23db30..0000000
--- a/groovy/modules/process/src/include/nativeprocess.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class com_baulsupp_process_NativeProcess */
-
-#ifndef _Included_com_baulsupp_process_NativeProcess
-#define _Included_com_baulsupp_process_NativeProcess
-#ifdef __cplusplus
-extern "C" {
-#endif
-/* Inaccessible static: initialised */
-/*
- * Class:     com_baulsupp_process_NativeProcess
- * Method:    startProcess
- * Signature: (Ljava/lang/String;[Ljava/lang/String;III)I
- */
-JNIEXPORT jint JNICALL Java_com_baulsupp_process_NativeProcess_startProcess
-  (JNIEnv *, jobject, jstring, jobjectArray, jint, jint, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/GridClosureProcess.java b/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/GridClosureProcess.java
deleted file mode 100644
index 4378a88..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/GridClosureProcess.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.baulsupp.groovy.groosh;
-
-import java.util.Arrays;
-import java.util.List;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-
-import groovy.lang.Closure;
-
-public class GridClosureProcess extends StreamClosureProcess {
-  public GridClosureProcess(Closure closure) {
-    super(closure);
-  }
-
-  protected void process(final InputStream is, final OutputStream os) throws IOException {
-    BufferedReader ris = new BufferedReader(new InputStreamReader(is));
-    Writer wos = new PrintWriter(new OutputStreamWriter(os, "ISO-8859-1"));
-    
-    String line;
-    
-    List l = new ArrayList();
-    
-    while ((line = ris.readLine()) != null) {
-      String[] content = line.split("\\s+");
-      List contentList = Arrays.asList(content);
-      
-      l.clear();
-      l.add(contentList);
-      l.add(wos);
-      closure.call(l);
-      wos.flush();
-    }
-  }
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/Groosh.java b/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/Groosh.java
deleted file mode 100644
index 2ef0c02..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/Groosh.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.baulsupp.groovy.groosh;
-
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.util.HashMap;
-import java.util.Map;
-
-
-import EDU.oswego.cs.dl.util.concurrent.Executor;
-import EDU.oswego.cs.dl.util.concurrent.ThreadedExecutor;
-import groovy.lang.Closure;
-import groovy.lang.GroovyObjectSupport;
-
-public class Groosh extends GroovyObjectSupport {
-  private Executor executor = new ThreadedExecutor();
-  private static Map registeredProcesses = new HashMap();
-  
-  static {
-    registerProcess("groovy", StreamClosureProcess.class);
-    registerProcess("each_line", LineClosureProcess.class);
-    registerProcess("grid", GridClosureProcess.class);
-  }
-
-  public static void registerProcess(String name, Class clazz) {
-    registeredProcesses.put(name, clazz);
-  }
-
-  public Object invokeMethod(String name, Object args) { 
-    GrooshProcess process;
-    try {
-      if (registeredProcesses.containsKey(name)) {
-        process = createProcess((Class) registeredProcesses.get(name), args);  
-      } else {
-        process = new ShellProcess(name, args);
-      }
-    } catch (IOException e) {
-      throw new RuntimeException(e);
-    }
-    
-    return process;
-  }
-
-  private GrooshProcess createProcess(Class class1, Object arg) {
-    GrooshProcess process = null;
-    
-    try {
-      Constructor c = class1.getConstructor(new Class[] {Closure.class});
-      process = (GrooshProcess) c.newInstance((Object[]) arg);
-    } catch (Exception e) {
-      throw new RuntimeException(e);
-    }
-    
-    return process;
-  }
-
-  public void execute(Runnable r) {
-    try {
-      executor.execute(r);
-    } catch (InterruptedException e) {
-      throw new RuntimeException(e);
-    }
-  }
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/GrooshProcess.java b/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/GrooshProcess.java
deleted file mode 100644
index 36a3228..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/GrooshProcess.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package com.baulsupp.groovy.groosh;
-
-import java.io.File;
-import java.io.IOException;
-
-import com.baulsupp.process.FileStreams;
-import com.baulsupp.process.Sink;
-import com.baulsupp.process.Source;
-import com.baulsupp.process.StandardStreams;
-import com.baulsupp.process.StringStreams;
-
-// TODO class should not be reentrant 
-// that is if output is already set, don't let it be done twice.
-public abstract class GrooshProcess {  
-  protected abstract Sink getSink();
-  
-  protected abstract Source getSource();
-  
-  public String toStringOut() throws IOException {
-    StringStreams.StringSink sink = StringStreams.stringSink();
-
-    getSource().connect(sink);
-    start();
-    
-    return sink.toString();
-  }
-
-  // TODO should this be asynchronous, would be less obvious though!
-  public void toFile(File f) throws IOException {
-    Sink sink = FileStreams.sink(f, false);
-  
-    getSource().connect(sink);
-    start();
-    
-    waitForExit();
-  }
-  
-  // needs to be asynchronous so they can continue the chain
-  public GrooshProcess pipeTo(GrooshProcess process) throws IOException {
-    getSource().connect(process.getSink());
-    
-    start();
-    
-    // return other process so chaining is possible
-    return process;
-  }
-
-  // TODO should this be asynchronous, would be less obvious though!
-  public void toStdOut() throws IOException {
-    Sink sink = StandardStreams.stdout();
-  
-    getSource().connect(sink);
-    start();
-    
-    waitForExit();
-  }
-  
-  public GrooshProcess fromStdIn() throws IOException {
-    Source source = StandardStreams.stdin();
-    
-    source.connect(getSink());  
-    
-    return this;
-  }
-  
-  public GrooshProcess fromString(String s) throws IOException {
-    Source source = StringStreams.stringSource(s);
-    
-    source.connect(getSink());  
-    
-    return this;
-  }
-  
-  public abstract void start() throws IOException;
-  
-  public abstract void waitForExit() throws IOException;
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/LineClosureProcess.java b/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/LineClosureProcess.java
deleted file mode 100644
index bbaeecd..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/LineClosureProcess.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.baulsupp.groovy.groosh;
-
-import java.util.List;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-
-import groovy.lang.Closure;
-
-public class LineClosureProcess extends StreamClosureProcess {
-  public LineClosureProcess(Closure closure) {
-    super(closure);
-  }
-
-  protected void process(final InputStream is, final OutputStream os) throws IOException {
-    BufferedReader ris = new BufferedReader(new InputStreamReader(is));
-    Writer wos = new PrintWriter(new OutputStreamWriter(os, "ISO-8859-1"));
-    
-    String line;
-    
-    List l = new ArrayList();
-    
-    while ((line = ris.readLine()) != null) {
-      l.clear();
-      l.add(line);
-      l.add(wos);
-      closure.call(l);
-      wos.flush();
-    }
-  }
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/ShellProcess.java b/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/ShellProcess.java
deleted file mode 100644
index 9b3a824..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/ShellProcess.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.baulsupp.groovy.groosh;
-
-import java.io.IOException;
-
-import com.baulsupp.process.AppProcess;
-import com.baulsupp.process.ProcessFactory;
-import com.baulsupp.process.Sink;
-import com.baulsupp.process.Source;
-
-public class ShellProcess extends GrooshProcess {
-  private AppProcess process = null;
-  private String name;
-  private String[] args;
-  
-  public ShellProcess(String name, Object arg1) throws IOException {    
-    this.name = name;
-    this.args = getArgs(arg1);
-    
-    process = ProcessFactory.buildProcess(name, args);
-  }
-
-  private String[] getArgs(Object arg1) {
-    if (arg1 == null)
-      return new String[0];
-    else if (arg1 instanceof String[])
-      return (String[]) arg1;
-    else if (arg1 instanceof Object[]) {
-      Object[] argsO = (Object[]) arg1;
-      String[] argsS = new String[argsO.length];
-      for (int i = 0; i < argsO.length; i++) {
-        argsS[i] = String.valueOf(argsO[i]);
-      }
-      return argsS;
-    } else if (arg1 instanceof String)
-      return new String[] {(String) arg1};
-    else 
-      throw new IllegalStateException("no support for args of type " + arg1.getClass());
-  }
-  
-  public void waitForExit() throws IOException { 
-    process.result();
-  }
-  
-  public void start() throws IOException {
-    process.start();
-  }
-
-  public Sink getSink() {
-    return process.getInput();
-  }
-
-  public Source getSource() {
-    return process.getOutput();
-  }
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/StreamClosureProcess.java b/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/StreamClosureProcess.java
deleted file mode 100644
index f3635d8..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/groovy/groosh/StreamClosureProcess.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package com.baulsupp.groovy.groosh;
-
-import groovy.lang.Closure;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.channels.Channels;
-import java.nio.channels.Pipe;
-import java.util.ArrayList;
-import java.util.List;
-
-import EDU.oswego.cs.dl.util.concurrent.FutureResult;
-
-import com.baulsupp.process.IOUtil;
-import com.baulsupp.process.Sink;
-import com.baulsupp.process.Source;
-import com.baulsupp.process.StandardStreams;
-
-public class StreamClosureProcess extends GrooshProcess implements Runnable {
-  protected Closure closure;
-  private InputStream is;
-  private OutputStream os;
-  private FutureResult result = new FutureResult();
-
-  public StreamClosureProcess(Closure closure) {
-    this.closure = closure;
-  }
-
-  public void start() {
-    if (is == null)
-      throw new RuntimeException("closure processes need a source");    
-      
-    if (os == null)
-      os = StandardStreams.stdout().getStream();
-      
-    try {
-      IOUtil.executor.execute(new Runnable() {
-        public void run() {
-          StreamClosureProcess.this.run();
-        }
-      });
-    } catch (InterruptedException e) {
-      throw new RuntimeException(e);
-    }
-  }
-
-  public void waitForExit() throws IOException { 
-    try {
-      result.get();
-    } catch (Exception e) {
-      // TODO handle the exceptions
-      throw new RuntimeException(e);
-    }
-  }
-
-  public void run() {    
-    try {
-      process(is, os);
-      result.set(Boolean.TRUE);
-    } catch (IOException e) {
-      // TODO remove debug once caller handle exception
-      System.out.println("ASYNC EXCEPTION (SCP.run): " + e);
-      result.setException(e);
-    } finally {
-      try {
-        os.flush();
-        os.close();
-        is.close();
-      } catch (IOException e) {
-        if (result.getException() == null) {
-          // TODO remove debug once caller handle exception
-          System.out.println("ASYNC EXCEPTION (SCP.run): " + e);
-          result.setException(e);
-        }
-      }
-    }
-  }
-
-  protected void process(final InputStream is, final OutputStream os) throws IOException {
-    List l = new ArrayList();
-    l.add(is);
-    l.add(os);
-    closure.call(l);
-    os.flush();
-  }
-  
-  public class ClosureSink extends Sink {
-
-    public void setStream(InputStream is) {
-      StreamClosureProcess.this.is = is;
-    }
-
-    public boolean receivesStream() {
-      return true;
-    }
-  }
-
-  protected Sink getSink() {
-    return new ClosureSink();
-  }
-  
-  public class ClosureSource extends Source {
-    public void connect(Sink sink) throws IOException {
-      if (sink.providesStream()) {
-        StreamClosureProcess.this.os = sink.getStream();
-      } else if (sink.receivesStream()) {
-        Pipe pipe = Pipe.open();
-        StreamClosureProcess.this.os = Channels.newOutputStream(pipe.sink());
-        sink.setStream(Channels.newInputStream(pipe.source()));  
-      } else {
-        throw new UnsupportedOperationException("sink type unknown");  
-      }
-    }
-  }
-
-  protected Source getSource() {
-    return new ClosureSource();
-  }
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/process/AppProcess.java b/groovy/modules/process/src/main/com/baulsupp/process/AppProcess.java
deleted file mode 100644
index 9087b3a..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/process/AppProcess.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.baulsupp.process;
-
-import java.io.IOException;
-
-// TODO how does the completion of the input/output i.e. to a file get monitored?
-public interface AppProcess {
-  Sink getInput();
-  Source getOutput();
-  Source getError();
-  
-  void start() throws IOException;
-  int result();
-  boolean hadError();
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/process/CharSequenceSource.java b/groovy/modules/process/src/main/com/baulsupp/process/CharSequenceSource.java
deleted file mode 100644
index 9c3d5fb..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/process/CharSequenceSource.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.baulsupp.process;
-
-public class CharSequenceSource extends Source {
-  public void connect(Sink sink) {
-    throw new RuntimeException();
-  }
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/process/DevNull.java b/groovy/modules/process/src/main/com/baulsupp/process/DevNull.java
deleted file mode 100644
index b42dbbb..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/process/DevNull.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.baulsupp.process;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-public class DevNull {
-  public static class NullSink extends Sink {
-    public OutputStream getStream() {
-      return new OutputStream() {
-        public void write(int b) throws IOException {
-          // do nothing
-        }
-      };
-    }
-    
-    public void setStream(final InputStream is) {
-      // TODO handle result/exception?
-      IOUtil.pumpAsync(is, getStream());
-    }
-
-    public boolean providesStream() {
-      return true;
-    }
-
-    public boolean receivesStream() {
-      return true;
-    }
-  }
-  
-  public static class NullSource extends Source {
-    public void connect(Sink sink) {
-      if (sink.providesStream()) {
-        try {
-          sink.getStream().close();
-        } catch (IOException e) {
-          throw new RuntimeException(e);
-        }  
-      } else if (sink.receivesStream()) {
-        sink.setStream(new ByteArrayInputStream(new byte[0]));  
-      } else {
-        throw new UnsupportedOperationException("sink type unknown");  
-      }
-    }
-  }
-  
-  public static Sink createSink() {
-    return new NullSink();
-  }
-  
-  public static Source createSource() {
-    return new NullSource();
-  }
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/process/FileStreams.java b/groovy/modules/process/src/main/com/baulsupp/process/FileStreams.java
deleted file mode 100644
index 49f8056..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/process/FileStreams.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.baulsupp.process;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-
-public class FileStreams {
-  public static class FileSource extends Source {
-    private File file;
-    private FileInputStream is;
-
-    public FileSource(File f) throws FileNotFoundException {
-      this.file = f;  
-      this.is = new FileInputStream(f);
-    }
-    
-    public void connect(Sink sink) {      
-      if (sink.providesStream()) {
-        // TODO handle result
-        IOUtil.pumpAsync(is, sink.getStream());
-      } else if (sink.receivesStream()) {
-        sink.setStream(is);  
-      } else {
-        throw new UnsupportedOperationException("sink type unknown");  
-      }
-    }
-  }
-  
-  public static Source source(File file) throws FileNotFoundException {
-    return new FileSource(file);
-  }
-  
-  public static class FileSink extends Sink {
-    private File file;
-    private FileOutputStream os;
-
-    public FileSink(File f, boolean append) throws FileNotFoundException {
-      this.file = f;  
-      this.os = new FileOutputStream(f, append);
-    }
-    
-    public OutputStream getStream() {
-      return os;
-    }
-
-    public boolean providesStream() {
-      return true;
-    }
-  }
-  
-  public static Sink sink(File file, boolean append) throws FileNotFoundException {
-    return new FileSink(file, append);
-  }
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/process/IOUtil.java b/groovy/modules/process/src/main/com/baulsupp/process/IOUtil.java
deleted file mode 100644
index c219ece..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/process/IOUtil.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.baulsupp.process;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import EDU.oswego.cs.dl.util.concurrent.Executor;
-import EDU.oswego.cs.dl.util.concurrent.FutureResult;
-import EDU.oswego.cs.dl.util.concurrent.ThreadedExecutor;
-
-public class IOUtil {
-  private static final int BUFFER_SIZE = 8192;
-  public static final Executor executor = new ThreadedExecutor();
-
-  public static int pump(InputStream is, OutputStream stream) throws IOException {
-    int pumped = 0;
-    byte[] buffy = new byte[BUFFER_SIZE];
-    
-    int read = 0;
-    while ((read = is.read(buffy)) != -1) {
-      stream.write(buffy, 0, read);
-      pumped += read;  
-    }
-    
-    return read;
-  }
-
-  public static FutureResult pumpAsync(final InputStream is, final OutputStream os) {
-    final FutureResult result = new FutureResult();
-    try {
-      executor.execute(new Runnable() {
-        public void run() {
-          try {
-            int read = IOUtil.pump(is, os);
-            result.set(new Integer(read));
-          } catch (IOException e) {
-            // TODO remove debug once caller handle exception
-            System.out.println("ASYNC EXCEPTION (IOU.pumpAsync): " + e);
-            result.setException(e);
-          } finally {
-            try {
-              os.close();
-              is.close();
-            } catch (IOException e) {
-              // TODO remove debug once caller handle exception
-              System.out.println("ASYNC EXCEPTION (IOU.pumpAsync): " + e);
-              result.setException(e);
-            }
-          }
-        }
-      });
-    } catch (InterruptedException e) {
-      throw new RuntimeException(e);
-    }
-    
-    return result;
-  }
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/process/JavaProcess.java b/groovy/modules/process/src/main/com/baulsupp/process/JavaProcess.java
deleted file mode 100644
index f9e3a67..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/process/JavaProcess.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package com.baulsupp.process;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-public class JavaProcess implements AppProcess {      
-  private String[] command;
-  private Process process;
-  
-  private boolean errHandled = false;
-  private boolean outHandled = false;
-  private boolean inHandled = false;
-
-  private JavaProcess(String[] command) throws IOException {
-    this.command = command;
-    process = Runtime.getRuntime().exec(command);
-  }
-
-  public static JavaProcess createProcess(String command, String[] args) throws IOException { 
-    String[] commandArgs = concat(command, args);
-       
-    return new JavaProcess(commandArgs);
-  }
-
-  private static String[] concat(String command, String[] args) {
-    String[] commandArgs = new String[args.length + 1];
-    commandArgs[0] = command;
-    System.arraycopy(args, 0, commandArgs, 1, args.length);
-    return commandArgs;
-  }
-
-  public void start() throws IOException {    
-    if (!inHandled) {
-      process.getOutputStream().close();
-    }
-
-    // Should we throw away, it would make it explicit to direct the output somewhere.
-    if (!outHandled)
-      IOUtil.pumpAsync(process.getInputStream(), StandardStreams.stderr().getStream());
-      
-    if (!errHandled)
-      IOUtil.pumpAsync(process.getErrorStream(), StandardStreams.stderr().getStream());
-  }
-
-  public Sink getInput() {
-    return new InSink();
-  }
-
-  public Source getOutput() {
-    return new OutSource();
-  }
-
-  public Source getError() {
-    return new ErrSource();
-  }
-
-  public int result() {
-    try {
-      return process.waitFor();
-    } catch (InterruptedException e) {
-      throw new RuntimeException(e);
-    }
-  }
-
-  public boolean hadError() {
-    return result() != 0;
-  }
-  
-  public class InSink extends Sink {
-    public OutputStream getStream() {
-      inHandled = true;
-      return process.getOutputStream();
-    }
-
-    public boolean providesStream() {
-      return true;
-    }
-  }
-  
-  public class OutSource extends Source {
-    public void connect(Sink sink) {
-      if (sink.providesStream()) {
-        outHandled = true;
-        // TODO handle result
-        IOUtil.pumpAsync(process.getInputStream(), sink.getStream());
-      } else if (sink.receivesStream()) {
-        outHandled = true;
-        sink.setStream(process.getInputStream());  
-      } else {
-        throw new UnsupportedOperationException("sink type unknown");  
-      }
-    }
-  }
-  
-  public class ErrSource extends Source {
-    public void connect(Sink sink) {
-      if (sink.providesStream()) {
-        errHandled = true;
-        // TODO handle result
-        IOUtil.pumpAsync(process.getInputStream(), sink.getStream());
-      } else if (sink.receivesStream()) {
-        errHandled = true;
-        sink.setStream(process.getInputStream());  
-      } else {
-        throw new UnsupportedOperationException("sink type unknown");  
-      }
-    }
-  }
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/process/ProcessFactory.java b/groovy/modules/process/src/main/com/baulsupp/process/ProcessFactory.java
deleted file mode 100644
index 00fff0d..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/process/ProcessFactory.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.baulsupp.process;
-
-import java.io.IOException;
-
-public class ProcessFactory {
-  public static AppProcess buildProcessPipeline(String commandLine) {
-    throw new UnsupportedOperationException();
-  }
-  
-  public static AppProcess buildProcess(String command, String[] args) throws IOException {
-    return JavaProcess.createProcess(command, args);
-  }
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/process/Sink.java b/groovy/modules/process/src/main/com/baulsupp/process/Sink.java
deleted file mode 100644
index 3459e0a..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/process/Sink.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.baulsupp.process;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-
-// TODO need an isFinished method
-// in general process.waitForExit() knows when input has finished
-// but not aware of output has reached destination neccesarily! 
-public class Sink {  
-  public boolean receivesStream() {
-    return false;  
-  }
-  
-  public boolean providesStream() {
-    return false;  
-  }
-  
-  public OutputStream getStream() {
-    throw new UnsupportedOperationException();  
-  }
-  
-  public void setStream(InputStream channel) {
-    throw new UnsupportedOperationException();  
-  }
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/process/Source.java b/groovy/modules/process/src/main/com/baulsupp/process/Source.java
deleted file mode 100644
index de38013..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/process/Source.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.baulsupp.process;
-
-import java.io.IOException;
-
-public abstract class Source {  
-  public abstract void connect(Sink sink) throws IOException;
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/process/StandardStreams.java b/groovy/modules/process/src/main/com/baulsupp/process/StandardStreams.java
deleted file mode 100644
index 2b49f48..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/process/StandardStreams.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.baulsupp.process;
-
-import java.io.FileDescriptor;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-// TODO don't let stdout, stderr be closed
-public class StandardStreams {
-  public static class InSource extends Source {
-    public void connect(Sink sink) {
-      InputStream is = new FileInputStream(FileDescriptor.in);
-      
-      if (sink.providesStream()) {
-        // TODO feels better if this is line based, rather than fixed buffer size based
-        // TODO handle result
-        IOUtil.pumpAsync(is, sink.getStream());
-      } else if (sink.receivesStream()) {
-        sink.setStream(is);  
-      } else {
-        throw new UnsupportedOperationException("sink type unknown");  
-      }
-    }
-  }
-  
-  public static Source stdin() {
-    return new InSource();
-  }
-  
-  public static class ErrSink extends Sink {
-    public OutputStream getStream() {
-      return new FileOutputStream(FileDescriptor.err) {
-        public void close() throws IOException {
-          // ignore close
-          flush();  
-        }  
-      };
-    }
-
-    public boolean providesStream() {
-      return true;
-    }
-  }
-  
-  public static Sink stderr() {
-    return new ErrSink();
-  }
-  
-  public static class OutSink extends Sink {
-    public OutputStream getStream() {
-      return new FileOutputStream(FileDescriptor.out) {
-        public void close() throws IOException {
-          // ignore close
-          flush();  
-        }  
-      };
-    }
-
-    public boolean providesStream() {
-      return true;
-    }
-  }
-  
-  public static Sink stdout() {
-    return new OutSink();
-  }
-
-}
diff --git a/groovy/modules/process/src/main/com/baulsupp/process/StringStreams.java b/groovy/modules/process/src/main/com/baulsupp/process/StringStreams.java
deleted file mode 100644
index af0656b..0000000
--- a/groovy/modules/process/src/main/com/baulsupp/process/StringStreams.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.baulsupp.process;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-
-import EDU.oswego.cs.dl.util.concurrent.FutureResult;
-
-public class StringStreams {
-  public static class StringSink extends Sink {
-    private ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    private FutureResult result = new FutureResult();
-  
-    public boolean receivesStream() {
-      return true;
-    }
-
-    public void setStream(InputStream is) {
-      result = IOUtil.pumpAsync(is, baos);
-    }
-  
-    public String toString() {
-      try {
-        result.get();
-      } catch (Exception e) {
-        // TODO handle better
-        throw new RuntimeException(e);
-      }
-    
-      try {
-        return baos.toString("ISO-8859-1");
-      } catch (UnsupportedEncodingException e) {
-        throw new RuntimeException(e);
-      } 
-    }
-  }
-  
-  public static StringSink stringSink() {
-    return new StringSink();  
-  }
-  
-  public static class StringSource extends Source {
-    private InputStream is;
-
-    public StringSource(String s) {
-      byte[] buffy;
-      
-      try {
-        buffy = s.getBytes("ISO-8859-1");
-      } catch (UnsupportedEncodingException e) {
-        throw new RuntimeException(e);
-      }
-      
-      this.is = new ByteArrayInputStream(buffy);
-    }
-    
-    public void connect(Sink sink) {      
-      if (sink.providesStream()) {
-        // TODO handle result
-        IOUtil.pumpAsync(is, sink.getStream());
-      } else if (sink.receivesStream()) {
-        sink.setStream(is);  
-      } else {
-        throw new UnsupportedOperationException("sink type unknown");  
-      }
-    }
-  }
-  
-  public static StringSource stringSource(String s) {
-    return new StringSource(s);  
-  }
-}
diff --git a/groovy/modules/process/src/test_scripts/basic_cat.groovy b/groovy/modules/process/src/test_scripts/basic_cat.groovy
deleted file mode 100644
index fef7b54..0000000
--- a/groovy/modules/process/src/test_scripts/basic_cat.groovy
+++ /dev/null
@@ -1,4 +0,0 @@
-gsh = new com.baulsupp.groovy.groosh.Groosh();
-
-c = gsh.cat('test_scripts/blah.txt').toStdOut();
-
diff --git a/groovy/modules/process/src/test_scripts/blah.txt b/groovy/modules/process/src/test_scripts/blah.txt
deleted file mode 100644
index 2a52b65..0000000
--- a/groovy/modules/process/src/test_scripts/blah.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-a
-b
-ba
-c
-d
-
diff --git a/groovy/modules/process/src/test_scripts/cat_to_file.groovy b/groovy/modules/process/src/test_scripts/cat_to_file.groovy
deleted file mode 100644
index d1d1cf8..0000000
--- a/groovy/modules/process/src/test_scripts/cat_to_file.groovy
+++ /dev/null
@@ -1,5 +0,0 @@
-gsh = new com.baulsupp.groovy.groosh.Groosh();
-
-gsh.cat('test_scripts/blah.txt').toFile(new java.io.File('blah.out'));
-
-
diff --git a/groovy/modules/process/src/test_scripts/dict.groovy b/groovy/modules/process/src/test_scripts/dict.groovy
deleted file mode 100644
index 17db64e..0000000
--- a/groovy/modules/process/src/test_scripts/dict.groovy
+++ /dev/null
@@ -1,5 +0,0 @@
-gsh = new com.baulsupp.groovy.groosh.Groosh();
-
-gsh.cat('/usr/share/dict/words').pipeTo(gsh.grep('lexia')).toStdOut();
-
-
diff --git a/groovy/modules/process/src/test_scripts/dict_args.groovy b/groovy/modules/process/src/test_scripts/dict_args.groovy
deleted file mode 100644
index 5c19708..0000000
--- a/groovy/modules/process/src/test_scripts/dict_args.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-gsh = new com.baulsupp.groovy.groosh.Groosh();
-
-if (args.length == 0) {
-  System.err.println("please provide a search pattern");
-  System.err.println("usage: dict_args querystring");
-} else {
-  gsh.cat('/usr/share/dict/words').pipeTo(gsh.grep(args[0])).toStdOut();
-}
-
diff --git a/groovy/modules/process/src/test_scripts/each_line.groovy b/groovy/modules/process/src/test_scripts/each_line.groovy
deleted file mode 100644
index f1105e6..0000000
--- a/groovy/modules/process/src/test_scripts/each_line.groovy
+++ /dev/null
@@ -1,13 +0,0 @@
-gsh = new com.baulsupp.groovy.groosh.Groosh();
-
-cat = gsh.cat('test_scripts/blah.txt');
-lines = gsh.each_line { line,w | 
-  w.write("*");
-  w.write(line);
-  w.write("\n");
-};
-
-cat.pipeTo(lines);
-lines.toStdOut();
-
-
diff --git a/groovy/modules/process/src/test_scripts/find_grid.groovy b/groovy/modules/process/src/test_scripts/find_grid.groovy
deleted file mode 100644
index 0fb5741..0000000
--- a/groovy/modules/process/src/test_scripts/find_grid.groovy
+++ /dev/null
@@ -1,19 +0,0 @@
-// BUG?? java.util.Arrays.asList fails with util on null!
-// changed java code to send List
-
-gsh = new com.baulsupp.groovy.groosh.Groosh();
-
-f = gsh.find('.', '-name', '*.java', '-ls');
-total = 0;
-lines = gsh.grid { values,w |
-  x = values[2,4,6,10]; 
-  s = x.join('	');
-  w.println(s);
-  total += Integer.parseInt(values[6]);
-};
-
-f.pipeTo(lines);
-lines.toStdOut();
-
-System.out.println("Total: " + total);
-
diff --git a/groovy/modules/process/src/test_scripts/stdin_cat.groovy b/groovy/modules/process/src/test_scripts/stdin_cat.groovy
deleted file mode 100644
index fdbecb0..0000000
--- a/groovy/modules/process/src/test_scripts/stdin_cat.groovy
+++ /dev/null
@@ -1,6 +0,0 @@
-gsh = new com.baulsupp.groovy.groosh.Groosh();
-
-// does this fail if you change c to cat?
-gsh.cat().fromStdIn().toStdOut();
-
-
diff --git a/groovy/modules/process/src/test_scripts/tostring.groovy b/groovy/modules/process/src/test_scripts/tostring.groovy
deleted file mode 100644
index c6f44f6..0000000
--- a/groovy/modules/process/src/test_scripts/tostring.groovy
+++ /dev/null
@@ -1,6 +0,0 @@
-gsh = new com.baulsupp.groovy.groosh.Groosh();
-
-s = gsh.cat('test_scripts/blah.txt').pipeTo(gsh.grep('a')).toStringOut();
-
-System.out.println('->' + s.toString() + '<-');
-
diff --git a/groovy/modules/process/todo.txt b/groovy/modules/process/todo.txt
deleted file mode 100644
index 49d8b75..0000000
--- a/groovy/modules/process/todo.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-H - Change encoding from ISO-8859-1.  ISO-8859-1 is a marker to search for, rather than using the implicit methods.
-
-M - Various TODOs in the code.
-M - Line based stdin, rather than buffer based.  More intuitive for users.
-M - Handle process completion including sink?  Source can be ignored?
-M - Groovy operator overloading.
-M - Throw error if source/sink retrieved twice etc.  Or after start() called.
-
-E - Pipeline parsing i.e |, `.
-E - Tee Process for duplicating output
-E - Concat for joining multiple inputs.  With ThreadLocal input name!
-E - Sink/Source dealing with Reader/Writer?
-
-General
-
-bin/groovy test_scripts/dict_args.groovy 2>&1 | grep -v NativeMethod | grep -v Delegating | grep -v Launcher | grep -v Method.invoke | grep -v Invoker | grep -v MetaClass
-
-Caught: java.lang.ArrayIndexOutOfBoundsException: 0
-java.lang.ArrayIndexOutOfBoundsException: 0
-        at org.codehaus.groovy.runtime.DefaultGroovyMethods.get(DefaultGroovyMethods.java:741)
-        at dict_args.run(test_scripts/dict_args.groovy:7)
-        at dict_args.invokeMethod(test_scripts/dict_args.groovy)
-        at dict_args.main(test_scripts/dict_args.groovy)
-        at groovy.lang.GroovyShell.run(GroovyShell.java:166)
-        at groovy.lang.GroovyShell.main(GroovyShell.java:85)
-
diff --git a/groovy/modules/xmlrpc/src/main/groovy/net/xmlrpc/XMLRPCServer.java b/groovy/modules/xmlrpc/src/main/groovy/net/xmlrpc/XMLRPCServer.java
deleted file mode 100644
index 53c5a30..0000000
--- a/groovy/modules/xmlrpc/src/main/groovy/net/xmlrpc/XMLRPCServer.java
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
-
- Copyright 2004 (C) John Wilson. All Rights Reserved.
-
- Redistribution and use of this software and associated documentation
- ("Software"), with or without modification, are permitted provided
- that the following conditions are met:
-
- 1. Redistributions of source code must retain copyright
-    statements and notices.  Redistributions must also contain a
-    copy of this document.
-
- 2. Redistributions in binary form must reproduce the
-    above copyright notice, this list of conditions and the
-    following disclaimer in the documentation and/or other
-    materials provided with the distribution.
-
- 3. The name "groovy" must not be used to endorse or promote
-    products derived from this Software without prior written
-    permission of The Codehaus.  For written permission,
-    please contact info@codehaus.org.
-
- 4. Products derived from this Software may not be called "groovy"
-    nor may "groovy" appear in their names without prior written
-    permission of The Codehaus. "groovy" is a registered
-    trademark of The Codehaus.
-
- 5. Due credit should be given to The Codehaus -
-    http://groovy.codehaus.org/
-
- THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
- NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
- THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
-
-package groovy.net.xmlrpc;
-
-import groovy.lang.Closure;
-import groovy.lang.GroovyClassLoader;
-import groovy.lang.GroovyObject;
-import groovy.lang.GroovyObjectSupport;
-import groovy.lang.GroovyRuntimeException;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.lang.reflect.Method;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.UnknownHostException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import uk.co.wilson.net.http.MinMLHTTPServer;
-import uk.co.wilson.net.xmlrpc.XMLRPCMessageProcessor;
-
-/**
- * @author John Wilson (tug@wilson.co.uk)
- *
- */
-public class XMLRPCServer extends GroovyObjectSupport {
-private byte[] base64 = new byte[600];
-{
-	for (int i = 0; i != this.base64.length; i++) {
-		this.base64[i] = (byte)i;
-	}
-}
-public byte[] getBase64() { return this.base64;} // bodge to allow testing
-
-	private static byte[] host;
-	static {
-		try {
-			host  = ("Host: " + InetAddress.getLocalHost().getHostName() +"\r\n").getBytes();
-		} catch (UnknownHostException e) {
-			host = "Host: unknown\r\n ".getBytes();
-		}
-	}
-	private static final byte[] userAgent = "User-Agent: Groovy XML-RPC\r\n".getBytes();
-	private static final byte[] contentTypeXML = "Content-Type: text/xml\r\n".getBytes();
-	private static final byte[] contentLength = "Content-Length: ".getBytes();
-	private static final byte[] startResponse = ("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n" + 
-												 "<methodResponse>\n" +
-												 "\t<params>\n" +
-												 "\t\t<param>\n").getBytes();
-	private static final byte[] endResponse = ("\n" +
-											   "\t\t</param>\n" +
-											   "\t</params>\n" +
-											   "</methodResponse>").getBytes();
-	private static final byte[] startError = ("<?xml version=\"1.0\"?>\n" + 
-											  "<methodResponse>\n" +
-											  "\t<fault>\n" +
-											  "\t\t<value>\n" +
-											  "\t\t\t<struct>\n" +
-											  "\t\t\t\t<member>\n" +
-											  "\t\t\t\t\t<name>faultCode</name>\n" +
-											  "\t\t\t\t\t<value><int>0</int></value>\n" +
-											  "\t\t\t\t</member>\n" +
-											  "\t\t\t\t<member>\n" +
-											  "\t\t\t\t\t<name>faultString</name>\n" +
-											  "\t\t\t\t\t<value><string>").getBytes();
-	
-	private static final byte[] endError = ("</string></value>\n" +
-											"\t\t\t\t</member>\n" +
-											"\t\t\t</struct>\n" +
-											"\t\t</value>\n" +
-											"\t</fault>\n" +
-											"</methodResponse>\n").getBytes();
-	
-	private MinMLHTTPServer server = null;
-	private final int minWorkers;
-	private final int maxWorkers;
-	private final int maxKeepAlives;
-	private final int workerIdleLife;
-	private final int socketReadTimeout;
-	private final StringBuffer propertyPrefix = new StringBuffer();
-	private final Map registeredMethods = new HashMap();
-
-	/**
-	 * @param minWorkers
-	 * @param maxWorkers
-	 * @param maxKeepAlives
-	 * @param workerIdleLife
-	 * @param socketReadTimeout
-	 */
-	public XMLRPCServer(final int minWorkers,
-						final int maxWorkers,
-						final int maxKeepAlives,
-						final int workerIdleLife,
-						final int socketReadTimeout)
-	{
-		this.minWorkers = minWorkers;
-		this.maxWorkers = maxWorkers;
-		this.maxKeepAlives = maxKeepAlives;
-		this.workerIdleLife = workerIdleLife;
-		this.socketReadTimeout = socketReadTimeout;
-	}
-	
-	/**
-	 * 
-	 */
-	public XMLRPCServer() {
-		this(2, 10, 8, 60000, 60000);
-	}
-	
-	/**
-	 * @param serverSocket
-	 */
-	public void startServer(final ServerSocket serverSocket) throws IOException {
-		if (this.server != null) stopServer();
-		
-		final MinMLHTTPServer server = new MinMLHTTPServer(serverSocket,
-								                           this.minWorkers, 
-														   this.maxWorkers, 
-														   this.maxKeepAlives, 
-														   this.workerIdleLife, 
-														   this.socketReadTimeout) {
-
-			/* (non-Javadoc)
-			 * @see uk.co.wilson.net.MinMLSocketServer#makeNewWorker()
-			 */
-			protected Worker makeNewWorker() {
-				return new HTTPWorker() {
-					protected void processPost(final InputStream in,
-											   final OutputStream out,
-											   final String uri,
-											   final String version)
-						throws Exception
-					{
-						
-						try {
-						final StringBuffer buffer = new StringBuffer();
-						final XMLRPCMessageProcessor requestParser = new XMLRPCMessageProcessor();
-							
-							out.write(version.getBytes());
-							out.write(okMessage);
-							out.write(userAgent);
-							out.write(host);
-							out.write(contentTypeXML);
-							writeKeepAlive(out);
-							out.write(contentLength);
-							
-							requestParser.parseMessage(in);
-							
-							final String methodName = requestParser.getMethodname();
-							final List params = requestParser.getParams();
-							final Object closure = XMLRPCServer.this.registeredMethods.get(methodName);
-							
-							if (closure == null) throw new GroovyRuntimeException("XML-RPC method " + methodName + " is not supported on this server");
-							
-							Object result = ((Closure)closure).call(params.toArray());
-							
-							if (result == null) result = new Integer(0);
-							
-							XMLRPCMessageProcessor.emit(buffer, result);
-							
-//							System.out.println(buffer.toString());
-							
-							final byte[] response = buffer.toString().getBytes("ISO-8859-1");
-							
-							out.write(String.valueOf(startResponse.length + response.length + endResponse.length).getBytes());
-							out.write(endOfLine);
-							out.write(endOfLine);
-							out.write(startResponse);
-							out.write(response);
-							out.write(endResponse);
-						}
-						catch (final Throwable e) {
-//						e.printStackTrace();
-						final String message = e.getMessage();
-						final byte[] error = ((message == null) ? endError.getClass().getName() : e.getMessage()).getBytes();
-							
-							out.write(String.valueOf(startError.length + error.length + endError.length).getBytes());
-							out.write(endOfLine);
-							out.write(endOfLine);
-							out.write(startError);
-							out.write(error);
-							out.write(endError);
-						}
-					}
-				};
-			}
-		};
-		
-		this.server = server;
-		
-		new Thread() {
-			public void run() {
-				server.start();
-			}
-		}.start();
-	}
-	
-	public void stopServer() throws IOException {
-		this.server.shutDown();
-	}
-	
-	/* (non-Javadoc)
-	 * @see groovy.lang.GroovyObject#getProperty(java.lang.String)
-	 */
-	public Object getProperty(final String property) {
-		/**
-		 * 
-		 * Allow server.a.b.c = {...}
-		 * This creates a method with the name "a.b.c"
-		 * This technique is shamelessly stolen from the Python XML-RPC implementation
-		 * Thanks and credit to Fredrik Lundh
-		 * 
-		 */
-
-		this.propertyPrefix.append(property).append('.');
-		
-		return this;
-	}
-	
-	/* (non-Javadoc)
-	 * @see groovy.lang.GroovyObject#setProperty(java.lang.String, java.lang.Object)
-	 */
-	public void setProperty(final String property, final Object method) {
-	final String methodName = this.propertyPrefix.append(property).toString();
-	final Closure closure;
-	
-		this.propertyPrefix.setLength(0);
-	
-		if (method instanceof Closure) {
-			try {
-				closure = (Closure)(((Closure)method).clone());
-				closure.setDelegate(this);
-			} catch (CloneNotSupportedException e) {
-				throw new GroovyRuntimeException("groovy.lang.Closure doesn't implement Clonable");
-			}
-		} else if (method instanceof Class) {
-			closure = null;
-		} else {
-		//
-		// calling a method on an instance of a class
-		//
-			
-		final Method methods[] = method.getClass().getMethods();
-		boolean foundMatch = false;
-		int numberofParameters = 0;
-		
-			for (int i = 0; i != methods.length; i++) {
-				if (methods[i].getName().equals(methodName)) {
-					if (foundMatch) {
-						if (numberofParameters != methods[i].getParameterTypes().length)
-							;// TODO: throw exception
-					} else {
-						foundMatch = true;
-						numberofParameters = methods[i].getParameterTypes().length;
-					}
-				}
-			}
-			
-			if (foundMatch) {
-				closure = makeObjectProxy(methodName, numberofParameters);
-				closure.setDelegate(method);
-			} else {
-				// TODO: throw execption
-				closure = null;
-			}
-		}
-		
-		this.registeredMethods.put(methodName, closure);
-	}
-	
-	private Closure makeObjectProxy(final String methodName, final int numberOfParameters) {
-	final String paramIn, paramOut;
-	
-		if (numberOfParameters == 0) {
-			paramIn = paramOut = "";
-		} else {
-		final StringBuffer params = new StringBuffer();
-		
-			for (int i = 0; i != numberOfParameters; i++) {
-				params.append(", p" + i);
-			}
-			
-			paramOut = params.delete(0, 2).toString();
-			paramIn = paramOut + " |";
-		}
-		
-	final String generatedCode = "class X { closure = {" + paramIn + " this." + methodName + "(" + paramOut + ") }}";
-	System.out.println(generatedCode);
-	
-		try {
-		final InputStream in = new ByteArrayInputStream(generatedCode.getBytes());
-		final GroovyObject groovyObject = (GroovyObject)new GroovyClassLoader().parseClass(in, methodName).newInstance();
-			
-			return (Closure)(groovyObject.getProperty("closure"));
-		} catch (Exception e) {
-			throw new GroovyRuntimeException("Can't generate proxy for XML-RPC method " + methodName, e);
-		}
-	}
-}
diff --git a/groovy/modules/xmlrpc/src/main/groovy/net/xmlrpc/XMLRPCServerProxy.java b/groovy/modules/xmlrpc/src/main/groovy/net/xmlrpc/XMLRPCServerProxy.java
deleted file mode 100644
index d3c1771..0000000
--- a/groovy/modules/xmlrpc/src/main/groovy/net/xmlrpc/XMLRPCServerProxy.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
-
- Copyright 2004 (C) John Wilson. All Rights Reserved.
-
- Redistribution and use of this software and associated documentation
- ("Software"), with or without modification, are permitted provided
- that the following conditions are met:
-
- 1. Redistributions of source code must retain copyright
-    statements and notices.  Redistributions must also contain a
-    copy of this document.
-
- 2. Redistributions in binary form must reproduce the
-    above copyright notice, this list of conditions and the
-    following disclaimer in the documentation and/or other
-    materials provided with the distribution.
-
- 3. The name "groovy" must not be used to endorse or promote
-    products derived from this Software without prior written
-    permission of The Codehaus.  For written permission,
-    please contact info@codehaus.org.
-
- 4. Products derived from this Software may not be called "groovy"
-    nor may "groovy" appear in their names without prior written
-    permission of The Codehaus. "groovy" is a registered
-    trademark of The Codehaus.
-
- 5. Due credit should be given to The Codehaus -
-    http://groovy.codehaus.org/
-
- THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
- NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
- THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- OF THE POSSIBILITY OF SUCH DAMAGE.
-
- */
-
-package groovy.net.xmlrpc;
-
-import groovy.lang.GroovyObjectSupport;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.List;
-
-import org.xml.sax.SAXException;
-
-import uk.co.wilson.net.xmlrpc.XMLRPCMessageProcessor;
-
-/**
- * @author John Wilson (tug@wilson.co.uk)
- */
-public class XMLRPCServerProxy extends GroovyObjectSupport {
-	private URL serverURL;
-	private StringBuffer propertyPrefix = new StringBuffer();
-	
-	public XMLRPCServerProxy(final String serverURL) throws MalformedURLException {
-		this.serverURL = new URL(serverURL);
-	}
-	
-	/* (non-Javadoc)
-	 * @see groovy.lang.GroovyObject#getProperty(java.lang.String)
-	 */
-	public Object getProperty(final String property) {
-		/**
-		 * 
-		 * Allow serverProxy.a.b.c(...)
-		 * This invokes a remote method with the name "a.b.c"
-		 * This technique is shamelessly stolen from the Python XML-RPC implementation
-		 * Thanks and credit to Fredrik Lundh
-		 * 
-		 */
-
-		this.propertyPrefix.append(property).append('.');
-		
-		return this;
-	}
-	
-	/* (non-Javadoc)
-	 * @see groovy.lang.GroovyObject#invokeMethod(java.lang.String, java.lang.Object)
-	 */
-	public Object invokeMethod(final String name, final Object args) {
-	final String methodName = this.propertyPrefix.append(name).toString();
-	
-		this.propertyPrefix.setLength(0);
-	
-		if ("invokeMethod".equals(methodName)) return super.invokeMethod(methodName, args);
-		
-		try {
-		final Object[] params = (args instanceof List) ? ((List)args).toArray() : (Object[])args;
-		final StringBuffer buffer = new StringBuffer("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<methodCall>\n\t<methodName>");
-		
-		XMLRPCMessageProcessor.encodeString(buffer, methodName).append("</methodName>\n\t<params>\n");
-			
-			for (int i = 0; i != params.length; i++) {
-			final Object param = params[i];
-				
-				XMLRPCMessageProcessor.emit(buffer.append("\t\t<param>"), param).append("</param>\n");
-			}
-			
-			buffer.append("\t</params>\n</methodCall>\n");
-			
-//			System.out.println(buffer.toString());
-			
-			byte [] request = buffer.toString().getBytes("ISO-8859-1");
-			final URLConnection connection = this.serverURL.openConnection();
-			
-			connection.setDoInput(true);
-			connection.setDoOutput(true);
-			connection.setUseCaches(false);
-			connection.setAllowUserInteraction(false);
-			connection.setRequestProperty("Content-Length", Integer.toString(request.length));
-			connection.setRequestProperty("Content-Type", "text/xml");
-			
-			final OutputStream requestStream = connection.getOutputStream();
-			requestStream.write(request);
-			requestStream.flush();
-			requestStream.close();
-			
-			final XMLRPCMessageProcessor responseParser = new XMLRPCMessageProcessor();
-			
-			responseParser.parseMessage(connection.getInputStream());
-			
-			return responseParser.getParams().get(0);
-			
-		} catch (final IOException e) {
-			e.printStackTrace();
-			
-			return null;
-			
-		} catch (final SAXException e) {
-			e.printStackTrace();
-			
-			return null;
-		}
-	}
-}
diff --git a/groovy/modules/xmlrpc/src/main/uk/co/wilson/net/MinMLSocketServer.java b/groovy/modules/xmlrpc/src/main/uk/co/wilson/net/MinMLSocketServer.java
deleted file mode 100644
index fca14e3..0000000
--- a/groovy/modules/xmlrpc/src/main/uk/co/wilson/net/MinMLSocketServer.java
+++ /dev/null
@@ -1,185 +0,0 @@
-// Copyright (c) 2001 The Wilson Partnership.
-// All Rights Reserved.
-// @(#)MinMLSocketServer.java, 0.1, 6th July 2001
-// Author: John Wilson - tug@wilson.co.uk
-
-package uk.co.wilson.net;
-
-/*
-Copyright (c) 2001 John Wilson (tug@wilson.co.uk).
-All rights reserved.
-Redistribution and use in source and binary forms,
-with or without modification, are permitted provided
-that the following conditions are met:
-
-Redistributions of source code must retain the above
-copyright notice, this list of conditions and the
-following disclaimer.
-
-Redistributions in binary form must reproduce the
-above copyright notice, this list of conditions and
-the following disclaimer in the documentation and/or
-other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY JOHN WILSON ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JOHN WILSON
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGE
-*/
-
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.SocketException;
-
-import java.io.InterruptedIOException;
-import java.io.IOException;
-
-public abstract class MinMLSocketServer{
-  public MinMLSocketServer(final ServerSocket serverSocket,
-                           final int minWorkers,
-                           final int maxWorkers,
-                           final int workerIdleLife)
-  {
-    this.serverSocket = serverSocket;
-    this.minWorkers = Math.max(minWorkers, 1);
-    this.maxWorkers = Math.max(this.minWorkers, maxWorkers);
-    this.workerIdleLife = workerIdleLife;
-  }
-
-  public void start() {
-    getNewWorker().run();
-  }
-
-  public synchronized void shutDown() throws IOException {
-    this.serverSocket.close();
-  }
-
-  public int getPortNumber() {
-    return this.serverSocket.getLocalPort();
-  }
-
-  protected abstract Worker makeNewWorker();
-
-  private void setsocketTimeout(final int timeout) {
-    try {
-      this.serverSocket.setSoTimeout(timeout);
-    }
-    catch (final SocketException e) {
-    }
-  }
-
-  private Worker getNewWorker() {
-if (debug) System.out.println("Starting new thread: liveWorkerCount = " + this.liveWorkerCount + " workingWorkerCount = " + this.workingWorkerCount);
-    if (this.liveWorkerCount++ == this.minWorkers)
-      setsocketTimeout(this.workerIdleLife);
-
-    return makeNewWorker();
-  }
-
-  private synchronized void startWork() {
-    if (++this.workingWorkerCount == this.liveWorkerCount && this.liveWorkerCount < this.maxWorkers)
-      new Thread(getNewWorker()).start();
-if (debug) System.out.println("Thread starting work: liveWorkerCount = " + this.liveWorkerCount + " workingWorkerCount = " + this.workingWorkerCount);
-  }
-
-  private synchronized void endWork() {
-    this.workingWorkerCount--;
-if (debug) System.out.println("Thread ending work: liveWorkerCount = " + this.liveWorkerCount + " workingWorkerCount = " + this.workingWorkerCount);
-  }
-
-  private synchronized boolean workerMustDie() {
-if (debug) System.out.println("Thread timing out socket read: liveWorkerCount = " + this.liveWorkerCount + " workingWorkerCount = " + this.workingWorkerCount);
-    if (this.liveWorkerCount > this.minWorkers && this.liveWorkerCount != this.workingWorkerCount + 1) {
-if (debug) System.out.println("Thread commits suicide");
-      workerDies();
-
-      return true;
-    }
-
-    return false;
-  }
-
-  private synchronized void workerDies() {
-    if (--this.liveWorkerCount == this.minWorkers)
-      setsocketTimeout(0);
-if (debug) System.out.println("Thread dying: liveWorkerCount = " + this.liveWorkerCount + " workingWorkerCount = " + this.workingWorkerCount);
-  }
-
-  protected abstract class Worker implements Runnable {
-    public final void run() {
-      try {
-        while (true) {
-        final Socket socket;
-
-          try {
-            socket = MinMLSocketServer.this.serverSocket.accept();
-
-            try {
-              try {
-                MinMLSocketServer.this.startWork();
-
-                Thread.yield(); // let a blocked worker thread do an accept()
-
-                process(socket);
-              }
-              catch (final Exception e) {
-                processingException(e);
-              }
-            }
-            finally {
-              try {
-                socket.close();
-              }
-              catch (final IOException e) {
-if (debug) {
-  System.out.println("Exception thrown when closing socket: " + e.toString());
-  e.printStackTrace();
-}
-              }
-              finally {
-                MinMLSocketServer.this.endWork();
-              }
-            }
-          }
-          catch (final InterruptedIOException e) {
-            if (MinMLSocketServer.this.workerMustDie()) return;
-          }
-        }
-      }
-      catch (final Exception e) {
-        operatingException(e);
-if (debug) {
-  System.out.println("Thread dying due to Exception: " + e.toString());
-  e.printStackTrace();
-}
-
-        MinMLSocketServer.this.workerDies();
-      }
-    }
-
-    protected abstract void process(Socket socket) throws Exception;
-
-    protected void processingException(final Exception e) {
-    }
-
-    protected void operatingException(final Exception e) {
-    }
-  }
-
-  private final ServerSocket serverSocket;
-  protected final int minWorkers;
-  protected final int maxWorkers;
-  protected final int workerIdleLife;
-  private int liveWorkerCount = 0;
-  private int workingWorkerCount = 0;
-
-  private static final boolean debug = false;
-}
diff --git a/groovy/modules/xmlrpc/src/main/uk/co/wilson/net/http/MinMLHTTPServer.java b/groovy/modules/xmlrpc/src/main/uk/co/wilson/net/http/MinMLHTTPServer.java
deleted file mode 100644
index 4bf90ea..0000000
--- a/groovy/modules/xmlrpc/src/main/uk/co/wilson/net/http/MinMLHTTPServer.java
+++ /dev/null
@@ -1,314 +0,0 @@
-// Copyright (c) 2001 The Wilson Partnership.
-// All Rights Reserved.
-// @(#)MinMLHTTPServer.java, 0.3, 14th October 2001
-// Author: John Wilson - tug@wilson.co.uk
-
-package uk.co.wilson.net.http;
-
-/*
-Copyright (c) 2001 John Wilson (tug@wilson.co.uk).
-All rights reserved.
-Redistribution and use in source and binary forms,
-with or without modification, are permitted provided
-that the following conditions are met:
-
-Redistributions of source code must retain the above
-copyright notice, this list of conditions and the
-following disclaimer.
-
-Redistributions in binary form must reproduce the
-above copyright notice, this list of conditions and
-the following disclaimer in the documentation and/or
-other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY JOHN WILSON ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JOHN WILSON
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGE
-*/
-
-import uk.co.wilson.net.MinMLSocketServer;
-
-import java.net.ServerSocket;
-import java.net.Socket;
-
-import java.io.InputStream;
-import java.io.BufferedInputStream;
-import java.io.OutputStream;
-import java.io.BufferedOutputStream;
-import java.io.IOException;
-
-import java.util.StringTokenizer;
-
-public abstract class MinMLHTTPServer extends MinMLSocketServer {
-  public MinMLHTTPServer(final ServerSocket serverSocket,
-                         final int minWorkers,
-                         final int maxWorkers,
-                         final int maxKeepAlives,
-                         final int workerIdleLife,
-                         final int socketReadTimeout)
-  {
-    super(serverSocket, minWorkers, maxWorkers, workerIdleLife);
-
-    this.maxKeepAlives = maxKeepAlives;
-    this.socketReadTimeout = socketReadTimeout;
-  }
-
-  private synchronized boolean startKeepAlive() {
-   if (this.keepAliveCount < this.maxKeepAlives) {
-      MinMLHTTPServer.this.keepAliveCount++;
-
-      return true;
-    }
-
-    return false;
-  }
-
-  private synchronized void endKeepAlive() {
-    this.keepAliveCount--;
-  }
-
-  private static class LimitedInputStream extends InputStream {
-    public LimitedInputStream(final InputStream in, final int contentLength) {
-      this.in = in;
-      this.contentLength = contentLength;
-    }
-
-    public int available() throws IOException {
-      return Math.min(this.in.available(), this.contentLength);
-    }
-
-    public void close() throws IOException {
-      //
-      // Don't close the input stream as there is more data
-      // but skip past any unread data in this section
-      //
-
-      skip(this.contentLength);
-    }
-
-    public int read() throws IOException {
-      if (this.contentLength == 0) return -1;
-
-      this.contentLength--;
-
-      return this.in.read();
-    }
-
-    public int read(final byte[] buffer) throws IOException {
-      return read(buffer, 0, buffer.length);
-     }
-
-    public int read(final byte[] buffer, final int offset, int length) throws IOException {
-      if (this.contentLength == 0) return -1;
-
-      length = this.in.read(buffer, offset, Math.min(length, this.contentLength));
-
-      if (length != -1) this.contentLength -= length;
-
-      return length;
-    }
-
-    public long skip(long count) throws IOException {
-      count = Math.min(count, this.contentLength);
-
-      this.contentLength -= count;
-
-      return this.in.skip(count);
-     }
-
-     private int contentLength;
-     private final InputStream in;
-  }
-
-  protected abstract class HTTPWorker extends Worker {
-    protected final void process(final Socket socket) throws Exception {
-      try {
-        socket.setSoTimeout(MinMLHTTPServer.this.socketReadTimeout);
-
-        final InputStream in = new BufferedInputStream(socket.getInputStream());
-        final OutputStream out = new BufferedOutputStream(socket.getOutputStream());
-        int contentLength;
-
-        do {
-          contentLength = -1;
-
-          while (readLine(in) != -1 && this.count == 0);  // skip any leading blank lines
-          final StringTokenizer toks = new StringTokenizer(new String(this.buf, 0, this.count));
-          final String method = toks.nextToken();
-          final String uri = toks.nextToken();
-          final String version = toks.hasMoreTokens() ? toks.nextToken() : "";
-
-          while (readLine(in) != -1 && this.count != 0) {
-          final String option = new String(this.buf, 0, this.count).trim().toLowerCase();
-
-            if (option.startsWith("connection:")) {
-              if (option.endsWith("keep-alive")) {
-                if (!this.keepAlive)
-                  this.keepAlive = MinMLHTTPServer.this.startKeepAlive();
-              } else if (this.keepAlive) {
-                  MinMLHTTPServer.this.endKeepAlive();
-                  this.keepAlive = false;
-              }
-            } else if (option.startsWith("content-length:")) {
-              contentLength = Integer.parseInt(option.substring(15).trim());
-              //
-              // This can throw NumberFormatException
-              // In which case we will abort the transaction
-              //
-            }
-          }
-
-          if (contentLength == -1) {
-            processMethod(in, out, method, uri, version);
-          } else {
-          final InputStream limitedIn = new LimitedInputStream(in, contentLength);
-
-            processMethod(limitedIn, out, method, uri, version);
-
-            limitedIn.close();  // skips unread bytes
-          }
-
-          out.flush();
-
-        } while(contentLength != -1 && this.keepAlive);
-      }
-      finally {
-        if (this.keepAlive == true) {
-          MinMLHTTPServer.this.endKeepAlive();
-          this.keepAlive = false;
-        }
-      }
-    }
-
-    protected void processMethod(final InputStream in,
-                                 final OutputStream out,
-                                 final String method,
-                                 final String uri,
-                                 final String version)
-    throws Exception
-    {
-      if (method.equalsIgnoreCase("GET"))
-        processGet(in, out, uri, version);
-      else if (method.equalsIgnoreCase("HEAD"))
-        processHead(in, out, uri, version);
-      else if (method.equalsIgnoreCase("POST"))
-        processPost(in, out, uri, version);
-      else if (method.equalsIgnoreCase("PUT"))
-        processPut(in, out, uri, version);
-      else
-        processOther(in, out, method, uri, version);
-    }
-
-    protected void processGet(final InputStream in,
-                              final OutputStream out,
-                              final String uri,
-                              final String version)
-      throws Exception
-    {
-      out.write(version.getBytes());
-      out.write(errorMessage1);
-      out.write(get);
-      out.write(errorMessage2);
-    }
-
-    protected void processHead(final InputStream in,
-                               final OutputStream out,
-                               final String uri,
-                               final String version)
-      throws Exception
-    {
-      out.write(version.getBytes());
-      out.write(errorMessage1);
-      out.write(head);
-      out.write(errorMessage2);
-    }
-
-    protected void processPost(final InputStream in,
-                               final OutputStream out,
-                               final String uri,
-                               final String version)
-      throws Exception
-    {
-      out.write(version.getBytes());
-      out.write(errorMessage1);
-      out.write(post);
-      out.write(errorMessage2);
-    }
-
-    protected void processPut(final InputStream in,
-                              final OutputStream out,
-                              final String uri,
-                              final String version)
-      throws Exception
-    {
-      out.write(version.getBytes());
-      out.write(errorMessage1);
-      out.write(put);
-      out.write(errorMessage2);
-    }
-
-    protected void processOther(final InputStream in,
-                                final OutputStream out,
-                                final String method,
-                                final String uri,
-                                final String version)
-      throws Exception
-    {
-      out.write(version.getBytes());
-      out.write(errorMessage1);
-      out.write(method.getBytes());
-      out.write(errorMessage2);
-    }
-
-    protected void writeKeepAlive(final OutputStream res) throws IOException {
-      res.write(this.keepAlive ? keepConnection : closeConnection);
-    }
-
-    private int readLine(final InputStream in) throws IOException {
-    int nextByte;
-
-      this.count = 0;
-
-      while (!((nextByte = in.read()) == '\r' && (nextByte = in.read()) =='\n') && nextByte != -1) {
-      	this.buf[this.count] = (byte)nextByte;
-
-        if (this.count != this.buf.length - 1) this.count++;   // sort of crude should probably handle long lines better
-      }
-
-      return nextByte;
-    }
-
-    private final byte[] buf = new byte[256];
-    private int count = 0;
-    private boolean keepAlive = false;
-  }
-
-  private int keepAliveCount = 0;
-  protected final int maxKeepAlives;
-  protected final int socketReadTimeout;
-
-  protected static final byte[] okMessage = (" 200 OK \r\n"
-                                             + "Server: uk.co.wilson.net.http.HTTPServer\r\n").getBytes();
-
-  protected static final byte[] endOfLine = "\r\n".getBytes();
-  protected static final byte[] get = "GET".getBytes();
-  protected static final byte[] head = "HEAD".getBytes();
-  protected static final byte[] post = "POST".getBytes();
-  protected static final byte[] put = "PUT".getBytes();
-  protected static final byte[] errorMessage1 = (" 400 Bad Request\r\n"
-                                                 + "Server: uk.co.wilson.net.http.HTTPServer\r\n\r\n"
-                                                 + "Method ").getBytes();
-
-  protected static final byte[] errorMessage2 = " not implemented\r\n".getBytes();
-  protected static final byte[] keepConnection = "Connection: Keep-Alive\r\n".getBytes();
-  protected static final byte[] closeConnection = "Connection: Close\r\n".getBytes();
-}
diff --git a/groovy/modules/xmlrpc/src/main/uk/co/wilson/net/xmlrpc/XMLRPCMessageProcessor.java b/groovy/modules/xmlrpc/src/main/uk/co/wilson/net/xmlrpc/XMLRPCMessageProcessor.java
deleted file mode 100644
index 5b0a5a9..0000000
--- a/groovy/modules/xmlrpc/src/main/uk/co/wilson/net/xmlrpc/XMLRPCMessageProcessor.java
+++ /dev/null
@@ -1,415 +0,0 @@
-/*
- * Created on Jan 4, 2004
- */
-package uk.co.wilson.net.xmlrpc;
-
-/*
- Copyright (c) 2004 John Wilson (tug@wilson.co.uk).
- All rights reserved.
- Redistribution and use in source and binary forms,
- with or without modification, are permitted provided
- that the following conditions are met:
-
- Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
- Redistributions in binary form must reproduce the
- above copyright notice, this list of conditions and
- the following disclaimer in the documentation and/or
- other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY JOHN WILSON ``AS IS'' AND ANY
- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JOHN WILSON
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- OF THE POSSIBILITY OF SUCH DAMAGE
- */
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.UnsupportedEncodingException;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Stack;
-
-import org.xml.sax.AttributeList;
-import org.xml.sax.SAXException;
-
-import uk.co.wilson.xml.MinML;
-
-
-
-public class XMLRPCMessageProcessor extends MinML {
-	private static final byte[] translateTable = (
-			//
-			"\u0042\u0042\u0042\u0042\u0042\u0042\u0042\u0042"
-			//                    \t    \n                \r
-			+ "\u0042\u0042\u0041\u0041\u0042\u0042\u0041\u0042"
-			//
-			+ "\u0042\u0042\u0042\u0042\u0042\u0042\u0042\u0042"
-			//
-			+ "\u0042\u0042\u0042\u0042\u0042\u0042\u0042\u0042"
-			//        sp    !     "     #     $     %     &     '
-			+ "\u0041\u0042\u0042\u0042\u0042\u0042\u0042\u0042"
-			//         (    )     *     +     ,     -     .     /
-			+ "\u0042\u0042\u0042\u003E\u0042\u0042\u0042\u003F"
-			//         0    1     2     3     4     5     6     7
-			+ "\u0034\u0035\u0036\u0037\u0038\u0039\u003A\u003B"
-			//         8    9     :     ;     <     =     >     ?
-			+ "\u003C\u003D\u0042\u0042\u0042\u0040\u0042\u0042"
-			//         @    A     B     C     D     E     F     G
-			+ "\u0042\u0000\u0001\u0002\u0003\u0004\u0005\u0006"
-			//         H    I   J K   L     M   N   O
-			+ "\u0007\u0008\t\n\u000B\u000C\r\u000E"
-			//         P    Q     R     S     T     U     V    W
-			+ "\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016"
-			//         X    Y     Z     [     \     ]     ^    _
-			+ "\u0017\u0018\u0019\u0042\u0042\u0042\u0042\u0042"
-			//         '    a     b     c     d     e     f     g
-			+ "\u0042\u001A\u001B\u001C\u001D\u001E\u001F\u0020"
-			//        h   i   j     k     l     m     n     o    p
-			+ "\u0021\"\u0023\u0024\u0025\u0026\u0027\u0028"
-			//        p     q     r     s     t     u     v     w
-			+ "\u0029\u002A\u002B\u002C\u002D\u002E\u002F\u0030"
-			//        x     y     z
-			+ "\u0031\u0032\u0033").getBytes();
-	
-	private interface Emitter {
-		void emit(StringBuffer buffer, Object value) throws SAXException;
-	}
-	
-	private final static Map elements = new HashMap();
-	static {
-		final char[] tTable = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".toCharArray();
-		
-		elements.put(Integer.class,
-				new Emitter() {
-					public void emit(final StringBuffer buffer, final Object integer) {
-						buffer.append("<value><i4>").append(integer).append("</i4></value>");
-					}
-				});
-		elements.put(Character.class, elements.get(Integer.class));
-		elements.put(Byte.class, elements.get(Integer.class));
-		elements.put(Short.class, elements.get(Integer.class));
-		
-		elements.put(Double.class,
-				new Emitter() {
-					public void emit(final StringBuffer buffer, final Object number) {
-						buffer.append("<value><double>").append(number).append("</double></value>");
-					}
-				});
-		elements.put(Float.class, elements.get(Double.class));
-		
-		elements.put(String.class,
-				new Emitter() {
-					public void emit(final StringBuffer buffer, final Object string) throws SAXException {
-						encodeString(buffer.append("<value><string>"), (String)string).append("</string></value>");
-					}
-				});
-		
-		elements.put(Boolean.class,
-				new Emitter() {
-					public void emit(final StringBuffer buffer, final Object bool) {
-						buffer.append("<value><boolean>").append((((Boolean)bool).booleanValue()) ? "1" : "0").append("</boolean></value>");
-					}
-				});
-		
-		elements.put(byte [].class,
-				new Emitter() {
-					public void emit(final StringBuffer buffer, final Object bytes) {
-						int charCount = 0;
-						final byte[] data = (byte[])bytes;
-						final int numChars = ((data.length + 2) / 3) * 4;
-						final int dLimit = (data.length / 3) * 3;
-						
-						buffer.ensureCapacity(numChars + 128 + (data.length / 54));
-						buffer.append("<value><base64>\n");
-
-						for (int dIndex = 0; dIndex != dLimit; dIndex += 3) {
-							int d = ((data[dIndex] & 0XFF) << 16) |  ((data[dIndex + 1] & 0XFF) << 8) | (data[dIndex + 2] & 0XFF);
-
-							buffer.append(tTable[d >> 18]);
-							buffer.append(tTable[(d >> 12) & 0X3F]);
-							buffer.append(tTable[(d >> 6) & 0X3F]);
-							buffer.append(tTable[d & 0X3F]);
-
-							if (++charCount == 18) {
-								buffer.append('\n');
-								charCount = 0;
-							}
-						}
-
-						if (dLimit != data.length) {
-							int d = (data[dLimit] & 0XFF) << 16;
-
-							if (dLimit + 1 != data.length) {
-								d |= (data[dLimit + 1] & 0XFF) << 8;
-							}
-
-							buffer.append(tTable[d >> 18]);
-							buffer.append(tTable[(d >> 12) & 0X3F]);
-							buffer.append((dLimit + 1 < data.length) ? tTable[(d >> 6) & 0X3F] : '=');
-							buffer.append('=');
-						}
-						
-						buffer.append("\n</base64></value>");
-					}
-				});
-		
-		elements.put(Date.class,
-				new Emitter() {
-					private final DateFormat dateTime = new SimpleDateFormat ("yyyyMMdd'T'HH:mm:ss");
-					
-					public synchronized void emit(final StringBuffer buffer, final Object date) {
-						buffer.append("<value><dateTime.iso8601>").append(this.dateTime.format((Date)date)).append("</dateTime.iso8601></value>");
-					}
-				});
-	}
-	
-	public static StringBuffer emit(final StringBuffer buffer, final Object param) throws SAXException {
-		final Emitter emitter = (Emitter)elements.get(param.getClass());
-		
-		if (emitter == null) {
-			if (param instanceof List) {
-				final Iterator iterator = ((List)param).iterator();
-				
-				buffer.append("<value><array><data>");
-				
-				while (iterator.hasNext()) {
-					emit(buffer, iterator.next());
-				}
-				
-				buffer.append("</data></array></value>");
-				
-			} else if (param instanceof Map) {
-				final Iterator iterator =((Map)param).entrySet().iterator();
-				
-				buffer.append("<value><struct>");
-				
-				while (iterator.hasNext()) {
-				final Map.Entry entry = (Map.Entry)iterator.next();
-					
-					emit(encodeString(buffer.append("<member><name>"), (String)entry.getKey()).append("</name>"), entry.getValue()).append("</member>");
-				}
-				
-				buffer.append("</struct></value>");
-			}
-		} else {
-			emitter.emit(buffer, param);
-		}
-		
-		return buffer;
-	}
-	
-	public static StringBuffer encodeString(final StringBuffer buffer, final String string) throws SAXException {
-		for (int i = 0; i != string.length(); i++) {
-			final char c = string.charAt(i);
-			
-			if (c >= 0X20 || c == 0X09 || c == 0X0A || c == 0X0D) {
-				if (c == '>') {
-					buffer.append("&gt;");
-				} else if (c == '<') {
-					buffer.append("&lt;");
-				} else if (c == '&') {
-					buffer.append("&amp;");
-				} else if (c > 0xff) {
-					if (c > 0XD800 && !(c >= 0XE000 && c < 0XFFFE)) 
-						throw new SAXException("Can't include character with value 0x"
-											   + Integer.toHexString(c)
-											   + " in a well formed XML document");
-					
-
-					buffer.append("&#x").append(Integer.toHexString(c)).append(';');
-				} else {
-					buffer.append(c);
-				}
-			} else {
-				throw new SAXException("Can't include character with value 0x"
-						               + Integer.toHexString(c)
-						               + " in a well formed XML document");
-			}
-		}
-		
-		return buffer;
-	}
-	
-	/*
-	 * A really cheap and cheerful XML-RPC reponse parser 
-	 * It only really cares if the reponse contains a <param> or <fault>
-	 * element. When the server is implemented this will be redone to be lots pickier.
-	 */
-	
-	
-	private Object params = null;
-	private Object name = null;
-	private String methodName = null;
-	private Map struct = null;
-	private List array = null;
-	private Boolean inArray = Boolean.FALSE;
-	private Stack aggregateStack = new Stack();
-	private boolean gotValue = false;
-	private final StringBuffer buffer = new StringBuffer();
-	private final DateFormat dateTime = new SimpleDateFormat("yyyyMMdd'T'HH:mm:ss");
-	private final Boolean bools[] = {new Boolean(false), new Boolean(true)};
-	
-	public void parseMessage(final InputStream in) throws SAXException, IOException {
-		parse(new InputStreamReader(in, "ISO-8859-1"));
-	}
-	
-	public List getParams() {
-		return (List)this.params;
-	}
-	
-	public String getMethodname() {
-		return this.methodName;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.xml.sax.DocumentHandler#startElement(java.lang.String, org.xml.sax.AttributeList)
-	 */
-	public void startElement(final String name, final AttributeList attributes) {
-		if ("value".equals(name) || "name".equals(name) || "methodName".equals(name)) {
-			this.buffer.setLength(0);
-			this.gotValue = false;
-			this.aggregateStack.push(this.inArray);
-			this.inArray = Boolean.FALSE;
-		} else if ("struct".equals(name)) {
-			this.aggregateStack.push(this.struct);
-			this.aggregateStack.push(this.name);
-			this.struct = new HashMap();
-		} else if ("array".equals(name) || "params".equals(name)) {
-			this.aggregateStack.push(this.inArray);
-			this.inArray = Boolean.TRUE;
-			this.aggregateStack.push(this.array);
-			this.array = new ArrayList();
-		}
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.xml.sax.DocumentHandler#characters(char[], int, int)
-	 */
-	public void characters(final char[] ch, final int start, final int length) {
-		this.buffer.append(ch, start, length);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.xml.sax.DocumentHandler#endElement(java.lang.String)
-	 */
-	public void endElement(final String name) throws SAXException {
-		if ("value".equals(name)) {
-			if (!this.gotValue) {
-				this.params = this.buffer.toString();
-				this.gotValue = true;
-			}
-			
-			this.inArray = (Boolean)this.aggregateStack.pop();
-			
-			if (this.inArray.booleanValue())
-				this.array.add(this.params);
-		} else if ("string".equals(name)) {
-			this.params = this.buffer.toString();
-			this.gotValue = true;
-		} else if ("i4".equals(name) || "int".equals(name)) {
-			this.params = new Integer(this.buffer.toString());
-			this.gotValue = true;
-		} else if ("boolean".equals(name)) {
-			try {
-				this.params = this.bools[Integer.parseInt(this.buffer.toString())];
-			}
-			catch (final RuntimeException e) {
-				throw new SAXException("bad Boolean value: " + this.buffer.toString());
-			}
-			
-			this.gotValue = true;
-		} else if ("dateTime.iso8601".equals(name)) {
-			try {
-				synchronized (this) {
-					this.params = this.dateTime.parse(this.buffer.toString());
-				}
-			} catch (ParseException e) {
-				throw new SAXException(e);
-			}
-			this.gotValue = true;
-		} else if ("base64".equals(name)) {
-			int bytesIndex = 0;
-			int byteShift = 4;
-			int tmp = 0;
-			boolean done = false;
-			
-			for (int i = 0; i != this.buffer.length(); i++) {
-			final char c = this.buffer.charAt(i);
-			final int sixBit = (c < 123) ? translateTable[c] : 66;
-
-				if (sixBit < 64) {
-					if (done) throw new SAXException("= character not at end of base64 value");
-	
-					tmp = (tmp << 6) | sixBit;
-	
-					if (byteShift-- != 4) {
-						this.buffer.setCharAt(bytesIndex++, (char)((tmp >> (byteShift * 2)) & 0XFF));
-					}
-	
-				} else if (sixBit == 64) {
-	
-					byteShift--;
-					done = true;
-	
-				} else if (sixBit == 66) {
-					// RFC 2045 says that I'm allowed to take the presence of 
-					// these characters as evedence of data corruption
-					// So I will
-					throw new SAXException("bad character in base64 value");
-				}
-
-				if (byteShift == 0) byteShift = 4;
-			}
-			this.buffer.setLength(bytesIndex);
-			try {
-				this.params = this.buffer.toString().getBytes("ISO-8859-1");
-			} catch (UnsupportedEncodingException e) {
-				throw new SAXException("Base 64 decode produced byte values > 255");
-			}
-			this.gotValue = true;
-		} else if ("double".equals(name)) {
-			this.params = new Double(this.buffer.toString());
-			this.gotValue = true;
-		} else if ("name".equals(name)) {
-			this.name = this.buffer.toString();
-			this.inArray = (Boolean)this.aggregateStack.pop();
-		} else if ("member".equals(name)) {
-			this.struct.put(this.name, this.params);
-		} else if ("struct".equals(name)) {
-			this.params = this.struct;
-			this.name = (String)this.aggregateStack.pop();
-			this.struct = (Map)this.aggregateStack.pop();
-		} else if ("array".equals(name) || "params".equals(name)) {
-			this.params = this.array;
-			this.array = (List)this.aggregateStack.pop();
-			this.inArray = (Boolean)this.aggregateStack.pop();
-		} else if ("methodName".equals(name)) {
-			this.methodName = this.buffer.toString();
-			this.inArray = (Boolean)this.aggregateStack.pop();
-		} else if ("fault".equals(name)) {
-			throw new RuntimeException("XML-RPC call Failure: " +
-					                   (String)((Map)this.params).get("faultString") +
-					                   ", fault code = " +
-					                   ((Integer)((Map)this.params).get("faultCode")).toString());
-		}
-	}
-}
\ No newline at end of file
diff --git a/groovy/modules/xmlrpc/src/main/uk/co/wilson/xml/MinML.java b/groovy/modules/xmlrpc/src/main/uk/co/wilson/xml/MinML.java
deleted file mode 100644
index 81d1021..0000000
--- a/groovy/modules/xmlrpc/src/main/uk/co/wilson/xml/MinML.java
+++ /dev/null
@@ -1,735 +0,0 @@
-// Copyright (c) 2000, 2001 The Wilson Partnership.
-// All Rights Reserved.
-// @(#)MinML.java, 1.4, 26th October 2001
-// Author: John Wilson - tug@wilson.co.uk
-
-package uk.co.wilson.xml;
-
-/*
-Copyright (c) 2000, 2001 John Wilson (tug@wilson.co.uk).
-All rights reserved.
-Redistribution and use in source and binary forms,
-with or without modification, are permitted provided
-that the following conditions are met:
-
-Redistributions of source code must retain the above
-copyright notice, this list of conditions and the
-following disclaimer.
-
-Redistributions in binary form must reproduce the
-above copyright notice, this list of conditions and
-the following disclaimer in the documentation and/or
-other materials provided with the distribution.
-
-All advertising materials mentioning features or use
-of this software must display the following acknowledgement:
-
-This product includes software developed by John Wilson.
-The name of John Wilson may not be used to endorse or promote
-products derived from this software without specific prior
-written permission.
-
-THIS SOFTWARE IS PROVIDED BY JOHN WILSON ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JOHN WILSON
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGE
-*/
-
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.Writer;
-import java.net.URL;
-import java.util.Locale;
-import java.util.Stack;
-import java.util.Vector;
-
-import org.xml.sax.AttributeList;
-import org.xml.sax.DTDHandler;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-import uk.org.xml.sax.DocumentHandler;
-import uk.org.xml.sax.Parser;
-
-public class MinML implements Parser, Locator, DocumentHandler, ErrorHandler {
-  public static final int endStartName = 0;
-  public static final int emitStartElement = 1;
-  public static final int emitEndElement = 2;
-  public static final int emitCharacters = 3;
-  public static final int saveAttributeName = 4;
-  public static final int saveAttributeValue = 5;
-  public static final int startComment = 6;
-  public static final int endComment = 7;
-  public static final int incLevel = 8;
-  public static final int decLevel = 9;
-  public static final int startCDATA = 10;
-  public static final int endCDATA = 11;
-  public static final int processCharRef = 12;
-  public static final int writeCdata = 13;
-  public static final int exitParser = 14;
-  public static final int parseError = 15;
-  public static final int discardAndChange = 16;
-  public static final int discardSaveAndChange = 17;
-  public static final int saveAndChange = 18;
-  public static final int change = 19;
-
-  public static final int inSkipping = 0;
-  public static final int inSTag = 1;
-  public static final int inPossiblyAttribute = 2;
-  public static final int inNextAttribute = 3;
-  public static final int inAttribute = 4;
-  public static final int inAttribute1 = 5;
-  public static final int inAttributeValue = 6;
-  public static final int inAttributeQuoteValue = 7;
-  public static final int inAttributeQuotesValue = 8;
-  public static final int inETag = 9;
-  public static final int inETag1 = 10;
-  public static final int inMTTag = 11;
-  public static final int inTag = 12;
-  public static final int inPI = 13;
-  public static final int inPI1 = 14;
-  public static final int inPossiblySkipping = 15;
-  public static final int inCharData = 16;
-  public static final int inCDATA = 17;
-  public static final int inCDATA1 = 18;
-  public static final int inComment =19;
-  public static final int inDTD = 20;
-
-  public MinML(final int initialBufferSize, final int bufferIncrement) {
-    this.initialBufferSize = initialBufferSize;
-    this.bufferIncrement = bufferIncrement;
-  }
-
-  public MinML() {
-    this(256, 128);
-  }
-
-  public void parse(final Reader in) throws SAXException, IOException {
-  final Vector attributeNames = new Vector();
-  final Vector attributeValues = new Vector();
-
-  final AttributeList attrs = new AttributeList() {
-    public int getLength() {
-      return attributeNames.size();
-    }
-
-    public String getName(final int i) {
-      return (String)attributeNames.elementAt(i);
-    }
-
-    public String getType(final int i) {
-      return "CDATA";
-    }
-
-    public String getValue(final int i) {
-      return (String)attributeValues.elementAt(i);
-    }
-
-    public String getType(final String name) {
-      return "CDATA";
-    }
-
-    public String getValue(final String name) {
-    final int index = attributeNames.indexOf(name);
-
-      return (index == -1) ? null : (String)attributeValues.elementAt(index);
-    }
-  };
-
-  final MinMLBuffer buffer = new MinMLBuffer(in);
-  int currentChar = 0, charCount = 0;
-  int level = 0;
-  String elementName = null;
-  String state = operands[inSkipping];
-
-    this.lineNumber = 1;
-    this.columnNumber = 0;
-
-    try {
-main: while(true) {
-        charCount++;
-
-        //
-        // this is to try and make the loop a bit faster
-        // currentChar = buffer.read(); is simpler but is a bit slower.
-        //
-        currentChar = (buffer.nextIn == buffer.lastIn) ? buffer.read() : buffer.chars[buffer.nextIn++];
-
-        final int transition;
-
-        if (currentChar > ']') {
-          transition = state.charAt(14);
-        } else {
-        final int charClass = charClasses[currentChar + 1];
-
-          if (charClass == -1) fatalError("Document contains illegal control character with value " + currentChar, this.lineNumber, this.columnNumber);
-
-          if (charClass == 12) {
-            if (currentChar == '\r') {
-              currentChar = '\n';
-              charCount = -1;
-            }
-
-            if (currentChar == '\n') {
-              if (charCount == 0) continue;  // preceeded by '\r' so ignore
-
-              if (charCount != -1) charCount = 0;
-
-              this.lineNumber++;
-              this.columnNumber = 0;
-            }
-          }
-
-          transition = state.charAt(charClass);
-       }
-
-        this.columnNumber++;
-
-        final String operand = operands[transition >>> 8];
-
-        switch (transition & 0XFF) {
-          case endStartName:
-          // end of start element name
-            elementName = buffer.getString();
-            if (currentChar != '>' && currentChar != '/') break;  // change state to operand
-            // drop through to emit start element (we have no attributes)
-
-          case emitStartElement:
-          // emit start element
-
-          final Writer newWriter = this.extDocumentHandler.startElement(elementName, attrs,
-                                                                   (this.tags.empty()) ?
-                                                                     this.extDocumentHandler.startDocument(buffer)
-                                                                   :
-                                                                     buffer.getWriter());
-
-            buffer.pushWriter(newWriter);
-            this.tags.push(elementName);
-
-            attributeValues.removeAllElements();
-            attributeNames.removeAllElements();
-
-            if (currentChar != '/') break;  // change state to operand
-
-            // <element/> drop through
-
-          case emitEndElement:
-          // emit end element
-
-            if (this.tags.empty())
-              fatalError("end tag at begining of document", this.lineNumber, this.columnNumber);
-              
-            final String begin = (String)this.tags.pop();
-            buffer.popWriter();
-            elementName = buffer.getString();
-
-            if (currentChar != '/' && !elementName.equals(begin)) {
-              fatalError("end tag </" + elementName + "> does not match begin tag <" + begin + ">",
-                         this.lineNumber, this.columnNumber);
-            } else {
-            	this.documentHandler.endElement(begin);
-
-              if (this.tags.empty()) {
-              	this.documentHandler.endDocument();
-                return;
-              }
-            }
-            break;  // change state to operand
-
-
-          case emitCharacters:
-          // emit characters
-
-            buffer.flush();
-            break;  // change state to operand
-
-          case saveAttributeName:
-          // save attribute name
-
-            attributeNames.addElement(buffer.getString());
-            break;  // change state to operand
-
-          case saveAttributeValue:
-          // save attribute value
-
-            attributeValues.addElement(buffer.getString());
-            break;  // change state to operand
-
-          case startComment:
-          // change state if we have found "<!--"
-
-            if (buffer.read() != '-') continue; // not "<!--"
-
-            break;  // change state to operand
-
-          case endComment:
-          // change state if we find "-->"
-
-            if ((currentChar = buffer.read()) == '-') {
-              // deal with the case where we might have "------->"
-              while ((currentChar = buffer.read()) == '-');
-
-              if (currentChar == '>') break;  // end of comment, change state to operand
-            }
-
-            continue;   // not end of comment, don't change state
-
-          case incLevel:
-
-            level++;
-
-            break;
-
-          case decLevel:
-
-            if (level == 0) break; // outer level <> change state
-
-            level--;
-
-            continue; // in nested <>, don't change state
-
-          case startCDATA:
-          // change state if we have found "<![CDATA["
-
-            if (buffer.read() != 'C') continue;   // don't change state
-            if (buffer.read() != 'D') continue;   // don't change state
-            if (buffer.read() != 'A') continue;   // don't change state
-            if (buffer.read() != 'T') continue;   // don't change state
-            if (buffer.read() != 'A') continue;   // don't change state
-            if (buffer.read() != '[') continue;   // don't change state
-            break;  // change state to operand
-
-          case endCDATA:
-          // change state if we find "]]>"
-
-            if ((currentChar = buffer.read()) == ']') {
-              // deal with the case where we might have "]]]]]]]>"
-              while ((currentChar = buffer.read()) == ']') buffer.write(']');
-
-              if (currentChar == '>') break;  // end of CDATA section, change state to operand
-
-              buffer.write(']');
-            }
-
-            buffer.write(']');
-            buffer.write(currentChar);
-            continue;   // not end of CDATA section, don't change state
-
-          case processCharRef:
-          // process character entity
-
-            int crefState = 0;
-
-            currentChar = buffer.read();
-
-            while (true) {
-              if ("#amp;&pos;'quot;\"gt;>lt;<".charAt(crefState) == currentChar) {
-                crefState++;
-
-                if (currentChar == ';') {
-                  buffer.write("#amp;&pos;'quot;\"gt;>lt;<".charAt(crefState));
-                  continue main;
-
-                } else if (currentChar == '#') {
-                final int radix;
-
-                  currentChar = buffer.read();
-
-                  if (currentChar == 'x') {
-                    radix = 16;
-                    currentChar = buffer.read();
-                  } else {
-                    radix = 10;
-                  }
-
-                  int charRef = Character.digit((char)currentChar, radix);
-
-                  while (true) {
-                    currentChar = buffer.read();
-
-                    final int digit = Character.digit((char)currentChar, radix);
-
-                    if (digit == -1) break;
-
-                    charRef = (char)((charRef * radix) + digit);
-                  }
-
-                  if (currentChar == ';' && charRef != -1) {
-                    buffer.write(charRef);
-                    continue main;
-                  }
-
-                  break;  // bad char reference
-                } else {
-                  currentChar = buffer.read();
-                }
-              } else {
-                crefState = ("\u0001\u000b\u0006\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff" +
-//                               #     a     m     p     ;     &     p     o     s     ;     '
-//                               0     1     2     3     4     5     6     7     8     9     a
-                             "\u0011\u00ff\u00ff\u00ff\u00ff\u00ff\u0015\u00ff\u00ff\u00ff" +
-//                               q     u     o     t     ;     "     g     t     ;     >
-//                               b     b     d     e     f     10    11    12    13    14
-                             "\u00ff\u00ff\u00ff").charAt(crefState);
-//                               l     t     ;
-//                               15    16    17
-
-                if (crefState == 255) break;  // bad char reference
-              }
-            }
-           // drop through to report error and exit
-
-          case parseError:
-          // report fatal error
-
-            fatalError(operand, this.lineNumber, this.columnNumber);
-            // drop through to exit parser
-
-          case exitParser:
-          // exit parser
-
-            return;
-
-          case writeCdata:
-          // write character data
-          // this will also write any skipped whitespace
-
-            buffer.write(currentChar);
-            break;  // change state to operand
-
-          case discardAndChange:
-          // throw saved characters away and change state
-
-            buffer.reset();
-            break;  // change state to operand
-
-          case discardSaveAndChange:
-          // throw saved characters away, save character and change state
-
-            buffer.reset();
-            // drop through to save character and change state
-
-          case saveAndChange:
-          // save character and change state
-
-            buffer.saveChar((char)currentChar);
-            break;  // change state to operand
-
-          case change:
-          // change state to operand
-
-            break;  // change state to operand
-        }
-
-        state = operand;
-      }
-    }
-    catch (final IOException e) {
-      this.errorHandler.fatalError(new SAXParseException(e.toString(), null, null, this.lineNumber, this.columnNumber, e));
-    }
-    finally {
-      this.errorHandler = this;
-      this.documentHandler = this.extDocumentHandler = this;
-      this.tags.removeAllElements();
-    }
-  }
-
-  public void parse(final InputSource source) throws SAXException, IOException {
-    if (source.getCharacterStream() != null)
-      parse(source.getCharacterStream());
-    else if (source.getByteStream() != null)
-      parse(new InputStreamReader(source.getByteStream()));
-    else
-     parse(new InputStreamReader(new URL(source.getSystemId()).openStream()));
-  }
-
-  public void parse(final String systemId) throws SAXException, IOException {
-    parse(new InputSource(systemId));
-  }
-
-  public void setLocale(final Locale locale) throws SAXException {
-    throw new SAXException("Not supported");
-  }
-
-  public void setEntityResolver(final EntityResolver resolver) {
-    // not supported
-  }
-
-  public void setDTDHandler(final DTDHandler handler) {
-    // not supported
-  }
-
-  public void setDocumentHandler(final org.xml.sax.DocumentHandler handler) {
-   this.documentHandler = (handler == null) ? this : handler;
-   this.extDocumentHandler = this;
-  }
-
-  public void setDocumentHandler(final DocumentHandler handler) {
-   this.documentHandler = this.extDocumentHandler = (handler == null) ? this : handler;
-   this.documentHandler.setDocumentLocator(this);
-  }
-
-  public void setErrorHandler(final ErrorHandler handler) {
-   this.errorHandler = (handler == null) ? this : handler;
-  }
-
-  public void setDocumentLocator(final Locator locator) {
-  }
-
-  public void startDocument() throws SAXException {
-  }
-
-  public Writer startDocument(final Writer writer) throws SAXException {
-    this.documentHandler.startDocument();
-    return writer;
-  }
-
-  public void endDocument() throws SAXException {
-  }
-
-  public void startElement(final String name, final AttributeList attributes) throws SAXException {
-  }
-
-  public Writer startElement(final String name, final AttributeList attributes, final Writer writer)
-        throws SAXException
-  {
-    this.documentHandler.startElement(name, attributes);
-    return writer;
-  }
-
-  public void endElement(final String name) throws SAXException {
-  }
-
-  public void characters(final char ch[], final int start, final int length) throws SAXException {
-  }
-
-  public void ignorableWhitespace(final char ch[], final int start, final int length) throws SAXException {
-  }
-
-  public void processingInstruction(final String target, final String data) throws SAXException {
-  }
-
-  public void warning(final SAXParseException e) throws SAXException {
-  }
-
-  public void error(final SAXParseException e) throws SAXException {
-  }
-
-  public void fatalError(final SAXParseException e) throws SAXException {
-    throw e;
-  }
-
-  public String getPublicId() {
-    return "";
-  }
-
-
-  public String getSystemId() {
-    return "";
-  }
-
-  public int getLineNumber () {
-    return this.lineNumber;
-  }
-
-  public int getColumnNumber () {
-    return this.columnNumber;
-  }
-
-  private void fatalError(final String msg, final int lineNumber, final int columnNumber) throws SAXException {
-    this.errorHandler.fatalError(new SAXParseException(msg, null, null, lineNumber, columnNumber));
-  }
-
-  private class MinMLBuffer extends Writer {
-    public MinMLBuffer(final Reader in) {
-      this.in = in;
-    }
-
-    public void close() throws IOException {
-      flush();
-    }
-
-    public void flush() throws IOException {
-      try {
-        _flush();
-        if (this.writer != this) this.writer.flush();
-      }
-      finally {
-        this.flushed = true;
-      }
-    }
-
-    public void write(final int c) throws IOException {
-      this.written = true;
-      this.chars[this.count++] = (char)c;
-    }
-
-    public void write(final char[] cbuf, final int off, final int len) throws IOException {
-      this.written = true;
-      System.arraycopy(cbuf, off, this.chars, this.count, len);
-      this.count += len;
-    }
-
-    public void saveChar(final char c) {
-      this.written = false;
-      this.chars[this.count++] = c;
-    }
-
-    public void pushWriter(final Writer writer) {
-      MinML.this.tags.push(this.writer);
-
-      this.writer = (writer == null) ? this : writer;
-
-      this.flushed = this.written = false;
-    }
-
-    public Writer getWriter() {
-      return this.writer;
-    }
-
-    public void popWriter() throws IOException {
-      try {
-        if (!this.flushed && this.writer != this) this.writer.flush();
-      }
-      finally {
-        this.writer = (Writer)MinML.this.tags.pop();
-        this.flushed = this.written = false;
-      }
-    }
-
-    public String getString() {
-    final String result = new String(this.chars, 0, this.count);
-
-      this.count = 0;
-      return result;
-    }
-
-    public void reset() {
-      this.count = 0;
-    }
-
-    public int read() throws IOException {
-      if (this.nextIn == this.lastIn) {
-        if (this.count != 0) {
-          if (this.written) {
-            _flush();
-          } else if (this.count >= (this.chars.length - MinML.this.bufferIncrement)) {
-          final char[] newChars = new char[this.chars.length + MinML.this.bufferIncrement];
-
-            System.arraycopy(this.chars, 0, newChars, 0, this.count);
-            this.chars = newChars;
-          }
-        }
-
-        final int numRead = this.in.read(this.chars, this.count, this.chars.length - this.count);
-
-        if (numRead == -1) return -1;
-
-        this.nextIn = this.count;
-        this.lastIn = this.count + numRead;
-      }
-
-      return this.chars[this.nextIn++];
-    }
-
-    private void _flush() throws IOException {
-      if (this.count != 0) {
-        try {
-          if (this.writer == this) {
-            try {
-              MinML.this.documentHandler.characters(this.chars, 0, this.count);
-            }
-            catch (final SAXException e) {
-              throw new IOException(e.toString());
-            }
-          } else {
-            this.writer.write(this.chars, 0, this.count);
-          }
-        }
-        finally {
-          this.count = 0;
-        }
-      }
-    }
-
-    private int nextIn = 0, lastIn = 0;
-    private char[] chars = new char[MinML.this.initialBufferSize];
-    private final Reader in;
-    private int count = 0;
-    private Writer writer = this;
-    private boolean flushed = false;
-    private boolean written = false;
-  }
-
-  private DocumentHandler extDocumentHandler = this;
-  private org.xml.sax.DocumentHandler documentHandler = this;
-  private ErrorHandler errorHandler = this;
-  private final Stack tags = new Stack();
-  private int lineNumber = 1;
-  private int columnNumber = 0;
-  private final int initialBufferSize;
-  private final int bufferIncrement;
-
-  private static final byte[] charClasses = {
-  //  EOF
-      13,
-  //                                      \t  \n          \r
-      -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, 12, -1, -1, 12, -1, -1,
-  //
-      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-  //  SP   !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /
-      12,  8,  7, 14, 14, 14,  3,  6, 14, 14, 14, 14, 14, 11, 14,  2,
-  //   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?
-      14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  0,  5,  1,  4,
-  //
-      14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-  //                                               [   \   ]
-      14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,  9, 14, 10
-  };
-
-  private static final String[] operands = {
-    "\u0c13\u150f\u150f\u150f\u150f\u150f\u150f\u150f\u150f\u150f\u150f\u150f\u0013\u000e\u150f",
-    "\u160f\u0f00\u0b00\u160f\u160f\u160f\u160f\u160f\u160f\u160f\u160f\u0112\u0200\u170f\u0112",
-    "\u160f\u0f01\u0b01\u160f\u160f\u160f\u160f\u160f\u160f\u160f\u160f\u160f\u0213\u170f\u0412",
-    "\u160f\u0f01\u0b01\u160f\u180f\u180f\u180f\u180f\u180f\u180f\u180f\u180f\u0313\u170f\u0412",
-    "\u180f\u180f\u180f\u180f\u180f\u0604\u180f\u180f\u180f\u180f\u180f\u0412\u0513\u170f\u0412",
-    "\u180f\u180f\u180f\u180f\u180f\u0604\u180f\u180f\u180f\u180f\u180f\u180f\u0513\u170f\u180f",
-    "\u190f\u190f\u190f\u190f\u190f\u190f\u0713\u0813\u190f\u190f\u190f\u190f\u0613\u170f\u190f",
-    "\u0712\u0712\u0712\u1a0c\u0712\u0712\u0305\u0712\u0712\u0712\u0712\u0712\u0712\u170f\u0712",
-    "\u0812\u0812\u0812\u1a0c\u0812\u0812\u0812\u0305\u0812\u0812\u0812\u0812\u0812\u170f\u0812",
-    "\u160f\u0002\u160f\u160f\u160f\u160f\u160f\u160f\u160f\u160f\u160f\u0912\u0913\u170f\u0912",
-    "\u1b0f\u1b0f\u0903\u1b0f\u1b0f\u1b0f\u1b0f\u1b0f\u1113\u1b0f\u1b0f\u1b0f\u1b0f\u170f\u1b0f",
-    "\u160f\u0013\u160f\u160f\u160f\u160f\u160f\u160f\u160f\u160f\u160f\u160f\u160f\u170f\u160f",
-    "\u160f\u1c0f\u0913\u160f\u0d13\u160f\u160f\u160f\u1113\u160f\u160f\u160f\u160f\u170f\u0111",
-    "\u0d13\u0d13\u0d13\u0d13\u0e13\u0d13\u0d13\u0d13\u0d13\u0d13\u0d13\u0d13\u0d13\u170f\u0d13",
-    "\u0d13\u0013\u0d13\u0d13\u0e13\u0d13\u0d13\u0d13\u0d13\u0d13\u0d13\u0d13\u0d13\u170f\u0d13",
-    "\u0c10\u100d\u100d\u1a0c\u100d\u100d\u100d\u100d\u100d\u100d\u100d\u100d\u0f12\u170f\u100d",
-    "\u0a13\u100d\u100d\u1a0c\u100d\u100d\u100d\u100d\u100d\u100d\u100d\u100d\u100d\u170f\u100d",
-    "\u1d0f\u1d0f\u1d0f\u1d0f\u1d0f\u1d0f\u1d0f\u1d0f\u1d0f\u120a\u1d0f\u1306\u1d0f\u170f\u1413",
-    "\u120d\u120d\u120d\u120d\u120d\u120d\u120d\u120d\u120d\u120d\u100b\u120d\u120d\u170f\u120d",
-    "\u1313\u1313\u1313\u1313\u1313\u1313\u1313\u1313\u1313\u1313\u1313\u0007\u1313\u170f\u1313",
-    "\u1408\u0009\u1413\u1413\u1413\u1413\u1413\u1413\u1413\u1413\u1413\u1413\u1413\u170f\u1413",
-    "expected Element",
-    "unexpected character in tag",
-    "unexpected end of file found",
-    "attribute name not followed by '='",
-    "invalid attribute value",
-    "invalid Character Entity",
-    "expecting end tag",
-    "empty tag",
-    "unexpected character after <!"
-  };
-}
diff --git a/groovy/modules/xmlrpc/src/main/uk/org/xml/sax/DocumentHandler.java b/groovy/modules/xmlrpc/src/main/uk/org/xml/sax/DocumentHandler.java
deleted file mode 100644
index 1775d86..0000000
--- a/groovy/modules/xmlrpc/src/main/uk/org/xml/sax/DocumentHandler.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package uk.org.xml.sax;
-
-import java.io.Writer;
-import org.xml.sax.SAXException;
-import org.xml.sax.AttributeList;
-
-public interface DocumentHandler extends org.xml.sax.DocumentHandler {
-  Writer startDocument(final Writer writer) throws SAXException;
-  Writer startElement(final String name, final AttributeList attributes, final Writer writer)
-        throws SAXException;
-}
diff --git a/groovy/modules/xmlrpc/src/main/uk/org/xml/sax/Parser.java b/groovy/modules/xmlrpc/src/main/uk/org/xml/sax/Parser.java
deleted file mode 100644
index bdd744d..0000000
--- a/groovy/modules/xmlrpc/src/main/uk/org/xml/sax/Parser.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package uk.org.xml.sax;
-
-public interface Parser extends org.xml.sax.Parser {
-  void setDocumentHandler(DocumentHandler handler);
-}
\ No newline at end of file
diff --git a/groovy/modules/xmlrpc/src/test/groovy/net/xmlrpc/GroovyXmlrpcTest.groovy b/groovy/modules/xmlrpc/src/test/groovy/net/xmlrpc/GroovyXmlrpcTest.groovy
deleted file mode 100644
index fc8ddb7..0000000
--- a/groovy/modules/xmlrpc/src/test/groovy/net/xmlrpc/GroovyXmlrpcTest.groovy
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Copyright 2004 (C) John Wilson. All Rights Reserved.
- * 
- * Redistribution and use of this software and associated documentation
- * ("Software"), with or without modification, are permitted provided that the
- * following conditions are met: 1. Redistributions of source code must retain
- * copyright statements and notices. Redistributions must also contain a copy
- * of this document. 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the distribution. 3.
- * The name "groovy" must not be used to endorse or promote products derived
- * from this Software without prior written permission of The Codehaus. For
- * written permission, please contact info@codehaus.org. 4. Products derived
- * from this Software may not be called "groovy" nor may "groovy" appear in
- * their names without prior written permission of The Codehaus. "groovy" is a
- * registered trademark of The Codehaus. 5. Due credit should be given to The
- * Codehaus - http://groovy.codehaus.org/
- * 
- * THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS ``AS IS'' AND ANY
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *  
- */
-
-package groovy.net.xmlrpc
-
-import java.net.ServerSocket
-
-import groovy.util.GroovyTestCase
-
-/**
- * Tests the use of the structured Attribute type
- * 
- * @author <a href="mailto:tug@wilson.co.uk">John Wilson/a>
-
- */
-public class GroovyXmlrpcTest extends GroovyTestCase {
-
-    public void testXmlrpcCalls() {
-		//
-		// create a new XML-RPC server
-		//
-		server = new XMLRPCServer(2, 10, 8, 1000, 1000)
-		
-		//
-		// add methods that can be called remotely
-		//
-		server.validator1.arrayOfStructsTest = {structs |      
-							                   		count = 0
-						                   		
-							                   		for (struct in structs) {
-							                   			count += struct['curly']
-							                   		}
-							                   		
-							                   		return count
-							                   }
-		
-		server.validator1.countTheEntities = {string |      
-						                   		ctLeftAngleBrackets = 0
-						                   		ctRightAngleBrackets = 0
-						                   		ctAmpersands = 0
-						                   		ctApostrophes = 0
-						                   		ctQuotes = 0
-						                   		 
-						                   		for (c in string) {
-						                   			switch (c) {
-						                   				case '<' :
-						                   					ctLeftAngleBrackets++
-						                   					break;
-						                   					
-						                   				case '>' :
-						                   					ctRightAngleBrackets++
-						                   					break;
-						                   					
-						                   				case '&' :
-						                   					ctAmpersands++
-						                   					break;
-						                   					
-						                   				case '\'' :
-						                   					ctApostrophes++
-						                   					break;
-						                   					
-						                   				case '"' :
-						                   					ctQuotes++
-						                   					break;
-						                   					
-						                   				default:
-						                   			}
-						                   		}
-						                   		
-						                   		return ['ctLeftAngleBrackets' : ctLeftAngleBrackets,
-								                   		'ctRightAngleBrackets' : ctRightAngleBrackets,
-								                   		'ctAmpersands' : ctAmpersands,
-								                   		'ctApostrophes' : ctApostrophes,
-								                   		'ctQuotes' : ctQuotes]
-						                   }
-		
-		server.validator1.easyStructTest = {struct | return struct['larry'] + struct['moe'] + struct['curly'] }
-		
-		server.validator1.echoStructTest = {struct | return struct }  
-		
-		server.validator1.manyTypesTest = {p1, p2, p3, p4, p5, p6 |  
-						                   		return [p1, p2, p3, p4, p5, p6]
-						                   }  
-		
-		server.validator1.moderateSizeArrayCheck = {array | return array[0] + array[array.size() - 1] } 
-		
-		server.validator1.nestedStructTest = {struct |  
-							                   	day = struct['2000']['04']['01']
-							                   		return day['larry'] + day['moe'] + day['curly']
-							                   }
-		
-		server.validator1.simpleStructReturnTest = {number |  
-								                   		return ['times10' : number * 10, 'times100' : number * 100, 'times1000' : number * 1000]
-								                   }
-								                   
-		server.echo = {return it}
-		
-		//
-		// switch the server on
-		//
-		serverSocket = new ServerSocket(0)
-		server.startServer(serverSocket)
-
-		try {
-		
-			//
-			// create a proxy of the server to handle calls
-			//
-			serverProxy = new XMLRPCServerProxy("http://127.0.0.1:${serverSocket.getLocalPort()}")
-			
-			result = serverProxy.validator1.arrayOfStructsTest([['curly': 9], ['curly' : 3]])
-			
-			assertEquals("validator1.arrayOfStructsTest", result, 12)
-			
-			result = serverProxy.validator1.countTheEntities('<.\'"  l&oi ><><><>"""')
-			
-			assertEquals("serverProxy.validator1.countTheEntities", result['ctLeftAngleBrackets'], 4)
-			assertEquals("serverProxy.validator1.countTheEntities", result['ctRightAngleBrackets'], 4)
-			assertEquals("serverProxy.validator1.countTheEntities", result['ctApostrophes'], 1)
-			assertEquals("serverProxy.validator1.countTheEntities", result['ctAmpersands'], 1)
-			assertEquals("serverProxy.validator1.countTheEntities", result['ctQuotes'], 4)
-			
-			result = serverProxy.validator1.manyTypesTest('a', 1.125, 'c', 1, 2, 3)
-			
-			assertEquals("serverProxy.validator1.manyTypesTest", result[0], 'a')
-			assertEquals("serverProxy.validator1.manyTypesTest", result[1], 1.125)
-			assertEquals("serverProxy.validator1.manyTypesTest", result[2], 'c')
-			assertEquals("serverProxy.validator1.manyTypesTest", result[3], 1)
-			assertEquals("serverProxy.validator1.manyTypesTest", result[4], 2)
-			assertEquals("serverProxy.validator1.manyTypesTest", result[5], 3)
-			
-			result = serverProxy.validator1.moderateSizeArrayCheck(['a', 'b', 'c'])
-			
-			assertEquals("serverProxy.validator1.moderateSizeArrayCheck", result, 'ac')
-		}
-		finally {
-			//
-			// switch the server off
-			//
-			server.stopServer()
-		}
-    }
-}