diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e8df2d5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.classpath
+.project
+.settings/
+target/
+.svn
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..dff5f3a
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1 @@
+language: java
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..8ff33d3
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,40 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.taverna</groupId>
+		<artifactId>taverna-parent</artifactId>
+		<version>1-incubating-SNAPSHOT</version>
+	</parent>
+	<groupId>org.apache.taverna.commonactivities</groupId>
+	<artifactId>taverna-common-activities</artifactId>
+	<version>2.1.0-incubating-SNAPSHOT</version>
+	<packaging>pom</packaging>
+	<name>Apache Taverna Common Activities</name>
+  <properties>
+    <taverna.language.version>0.15.0-incubating-SNAPSHOT</taverna.language.version>
+    <taverna.osgi.version>0.2.0-incubating-SNAPSHOT</taverna.osgi.version>
+    <taverna.engine.version>3.1.0-incubating-SNAPSHOT</taverna.engine.version>
+  </properties>
+	<modules>
+    <module>taverna-beanshell-activity</module>
+    <module>taverna-external-tool-activity</module>
+    <module>taverna-interaction-activity</module>
+    <module>taverna-rest-activity</module>
+    <module>taverna-spreadsheet-import-activity</module>
+    <module>taverna-wsdl-activity</module>
+    <module>taverna-wsdl-generic</module>
+    <module>taverna-xpath-activity</module>
+  </modules>
+  <repositories>
+    <repository>
+      <id>taverna-incubating</id>
+      <name>Apache Taverna incubating Repository</name>
+        <url>http://repository.mygrid.org.uk/artifactory/incubator-snapshot-local/</url>
+      <releases>
+        <enabled>false</enabled>
+      </releases>
+      <snapshots />
+    </repository>
+  </repositories>
+</project>
diff --git a/taverna-beanshell-activity/pom.xml b/taverna-beanshell-activity/pom.xml
new file mode 100644
index 0000000..1654296
--- /dev/null
+++ b/taverna-beanshell-activity/pom.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+    <groupId>org.apache.taverna.commonactivities</groupId>
+    <artifactId>taverna-common-activities</artifactId>
+    <version>2.1.0-incubating-SNAPSHOT</version>
+	</parent>
+	<artifactId>taverna-beanshell-activity</artifactId>
+	<packaging>bundle</packaging>
+	<name>Apache Taverna Beanshell Activity</name>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <extensions>true</extensions>
+        <configuration>
+          <instructions>
+            <Embed-Dependency>artifactId=bsh</Embed-Dependency>
+          </instructions>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-reference-api</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-workflowmodel-api</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.osgi</groupId>
+			<artifactId>taverna-app-configuration-api</artifactId>
+			<version>${taverna.osgi.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-databind</artifactId>
+      <version>${jackson.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>${junit.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-activity-test-utils</artifactId>
+			<version>${taverna.engine.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-workflowmodel-impl</artifactId>
+			<version>${taverna.engine.version}</version>
+			<scope>test</scope>
+		</dependency>
+    <dependency>
+      <groupId>org.apache-extras.beanshell</groupId>
+      <artifactId>bsh</artifactId>
+      <version>${bsh.version}</version>
+    </dependency>
+  </dependencies>
+
+<!-- See https://code.google.com/a/apache-extras.org/p/beanshell/issues/detail?id=6 
+     TODO: Remove below <repository> once in Maven Central -->
+
+    <repositories>
+      <repository>
+        <id>bintray.beanshell</id>
+        <name>bintray</name>
+        <url>http://dl.bintray.com/beanshell/Beanshell</url>
+        <snapshots>
+          <enabled>false</enabled>
+        </snapshots>
+      </repository>
+    </repositories>
+
+</project>
diff --git a/taverna-beanshell-activity/src/main/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivity.java b/taverna-beanshell-activity/src/main/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivity.java
new file mode 100644
index 0000000..134d3fe
--- /dev/null
+++ b/taverna-beanshell-activity/src/main/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivity.java
@@ -0,0 +1,251 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.beanshell;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import net.sf.taverna.t2.activities.dependencyactivity.AbstractAsynchronousDependencyActivity;
+import net.sf.taverna.t2.reference.ErrorDocumentService;
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.ReferenceServiceException;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.workflowmodel.OutputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
+
+import org.apache.log4j.Logger;
+
+import uk.org.taverna.configuration.app.ApplicationConfiguration;
+import bsh.EvalError;
+import bsh.Interpreter;
+import bsh.TargetError;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+/**
+ * An Activity providing Beanshell functionality.
+ * 
+ * @author David Withers
+ * @author Stuart Owen
+ * @author Alex Nenadic
+ */
+public class BeanshellActivity extends AbstractAsynchronousDependencyActivity {
+
+	public static final String URI = "http://ns.taverna.org.uk/2010/activity/beanshell";
+
+	protected BeanshellActivityConfigurationBean configurationBean;
+
+	private static Logger logger = Logger.getLogger(BeanshellActivity.class);
+
+	private Interpreter interpreter;
+
+	private static String CLEAR_COMMAND = "clear();";
+
+	private JsonNode json;
+
+	public BeanshellActivity(ApplicationConfiguration applicationConfiguration) {
+		super(applicationConfiguration);
+		createInterpreter();
+	}
+
+	@Override
+	public JsonNode getConfiguration() {
+		return json;
+	}
+
+	@Override
+	public void configure(JsonNode json) {
+		this.json = json;
+		checkGranularDepths();
+	}
+
+	/**
+	 * Creates the interpreter required to run the beanshell script, and assigns
+	 * the correct classloader setting according to the
+	 */
+	private void createInterpreter() {
+		interpreter = new Interpreter();
+	}
+
+	/**
+	 * As the Beanshell activity currently only can output values at the
+	 * specified depth, the granular depths should always be equal to the actual
+	 * depth.
+	 * <p>
+	 * Workflow definitions created with Taverna 2.0b1 would not honour this and
+	 * always set the granular depth to 0.
+	 * <p>
+	 * This method modifies the granular depths to be equal to the depths.
+	 */
+	protected void checkGranularDepths() {
+		for (OutputPort outputPort : getOutputPorts()) {
+			if (outputPort.getGranularDepth() != outputPort.getDepth()) {
+				logger.warn("Replacing granular depth of port "
+						+ outputPort.getName());
+				// outputPort.setGranularDepth(outputPort.getDepth());
+			}
+		}
+	}
+
+	public ActivityInputPort getInputPort(String name) {
+		for (ActivityInputPort port : getInputPorts()) {
+			if (port.getName().equals(name)) {
+				return port;
+			}
+		}
+		return null;
+	}
+
+	private void clearInterpreter() {
+		try {
+			interpreter.eval(CLEAR_COMMAND);
+		} catch (EvalError e) {
+			logger.error("Could not clear the interpreter", e);
+		}
+	}
+
+	@Override
+	public void executeAsynch(final Map<String, T2Reference> data,
+			final AsynchronousActivityCallback callback) {
+		callback.requestRun(new Runnable() {
+
+			public void run() {
+
+				// Workflow run identifier (needed when classloader sharing is
+				// set to 'workflow').
+				String procID = callback.getParentProcessIdentifier();
+				String workflowRunID;
+				if (procID.contains(":")) {
+					workflowRunID = procID.substring(0, procID.indexOf(':'));
+				} else {
+					workflowRunID = procID; // for tests, will be an empty
+											// string
+				}
+
+				synchronized (interpreter) {
+
+					// Configure the classloader for executing the Beanshell
+					if (classLoader == null) {
+						try {
+							classLoader = findClassLoader(json, workflowRunID);
+							interpreter.setClassLoader(classLoader);
+						} catch (RuntimeException rex) {
+							String message = "Unable to obtain the classloader for Beanshell service";
+							callback.fail(message, rex);
+							return;
+						}
+					}
+
+					ReferenceService referenceService = callback.getContext()
+							.getReferenceService();
+
+					Map<String, T2Reference> outputData = new HashMap<String, T2Reference>();
+
+					clearInterpreter();
+					try {
+						// set inputs
+						for (String inputName : data.keySet()) {
+							ActivityInputPort inputPort = getInputPort(inputName);
+							Object input = referenceService.renderIdentifier(
+									data.get(inputName),
+									inputPort.getTranslatedElementClass(),
+									callback.getContext());
+							inputName = sanatisePortName(inputName);
+							interpreter.set(inputName, input);
+						}
+						// run
+						interpreter.eval(json.get("script").asText());
+						// get outputs
+						for (OutputPort outputPort : getOutputPorts()) {
+							String name = outputPort.getName();
+							Object value = interpreter.get(name);
+							if (value == null) {
+								ErrorDocumentService errorDocService = referenceService
+										.getErrorDocumentService();
+								value = errorDocService.registerError(
+										"No value produced for output variable "
+												+ name, outputPort.getDepth(),
+										callback.getContext());
+							}
+							outputData.put(name, referenceService.register(
+									value, outputPort.getDepth(), true,
+									callback.getContext()));
+						}
+						callback.receiveResult(outputData, new int[0]);
+					} catch (EvalError e) {
+						logger.error(e);
+						try {
+							int lineNumber = e.getErrorLineNumber();
+
+							callback.fail("Line " + lineNumber + ": "
+									+ determineMessage(e));
+						} catch (NullPointerException e2) {
+							callback.fail(determineMessage(e));
+						}
+					} catch (ReferenceServiceException e) {
+						callback.fail(
+								"Error accessing beanshell input/output data for "
+										+ this, e);
+					}
+					clearInterpreter();
+				}
+			}
+
+			/**
+			 * Removes any invalid characters from the port name. For example,
+			 * xml-text would become xmltext.
+			 * 
+			 * @param name
+			 * @return
+			 */
+			private String sanatisePortName(String name) {
+				String result = name;
+				if (Pattern.matches("\\w++", name) == false) {
+					result = "";
+					for (char c : name.toCharArray()) {
+						if (Character.isLetterOrDigit(c) || c == '_') {
+							result += c;
+						}
+					}
+				}
+				return result;
+			}
+		});
+
+	}
+
+	private static String determineMessage(Throwable e) {
+		if (e instanceof TargetError) {
+			Throwable t = ((TargetError) e).getTarget();
+			if (t != null) {
+				return t.getClass().getCanonicalName() + ": "
+						+ determineMessage(t);
+			}
+		}
+		Throwable cause = e.getCause();
+		if (cause != null) {
+			return determineMessage(cause);
+		}
+		return e.getMessage();
+	}
+}
diff --git a/taverna-beanshell-activity/src/main/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityConfigurationBean.java b/taverna-beanshell-activity/src/main/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityConfigurationBean.java
new file mode 100644
index 0000000..8a5f06f
--- /dev/null
+++ b/taverna-beanshell-activity/src/main/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityConfigurationBean.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.beanshell;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.taverna.t2.activities.dependencyactivity.DependencyActivityConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+
+/**
+ * A configuration bean specific to a Beanshell activity; provides details
+ * about the Beanshell script and its local and artifact dependencies.
+ * 
+ * @author Stuart Owen
+ * @author David Withers
+ * @author Alex Nenadic
+ */
+@ConfigurationBean(uri = BeanshellActivity.URI + "#Config")
+public class BeanshellActivityConfigurationBean extends DependencyActivityConfigurationBean {
+
+	private String script;
+	
+	public BeanshellActivityConfigurationBean() {
+		super();
+		this.script = "";
+	}
+
+	/**
+	 * @return the Beanshell script
+	 */
+	public String getScript() {
+		return script;
+	}
+
+	/**
+	 * @param script the Beanshell script
+	 */
+	@ConfigurationProperty(name = "script", label = "Beanshell Script", description = "The beanshell script to be executed")
+	public void setScript(String script) {
+		this.script = script;
+	}
+	
+	///////////// From old code //////////
+	@Deprecated
+	private List<String> dependencies = new ArrayList<String>();
+
+	/**
+	 * Returns the dependencies.
+	 *
+	 * @return the dependencies
+	 */
+	public List<String> getDependencies() {
+		return dependencies;
+	}
+
+	/**
+	 * Sets the dependencies.
+	 *
+	 * @param dependencies the new dependencies
+	 */
+	public void setDependencies(List<String> dependencies) {
+		this.dependencies = dependencies;
+	}
+	///////////// From old code //////////
+	
+}
diff --git a/taverna-beanshell-activity/src/main/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityFactory.java b/taverna-beanshell-activity/src/main/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityFactory.java
new file mode 100644
index 0000000..c1b0e5d
--- /dev/null
+++ b/taverna-beanshell-activity/src/main/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityFactory.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (C) 2010 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.beanshell;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.HashSet;
+import java.util.Set;
+
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
+import uk.org.taverna.configuration.app.ApplicationConfiguration;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+/**
+ * An {@link ActivityFactory} for creating <code>BeanshellActivity</code>.
+ *
+ * @author David Withers
+ */
+public class BeanshellActivityFactory implements ActivityFactory {
+
+	private ApplicationConfiguration applicationConfiguration;
+
+	@Override
+	public BeanshellActivity createActivity() {
+		return new BeanshellActivity(applicationConfiguration);
+	}
+
+	@Override
+	public URI getActivityType() {
+		return URI.create(BeanshellActivity.URI);
+	}
+
+	@Override
+	public JsonNode getActivityConfigurationSchema() {
+		ObjectMapper objectMapper = new ObjectMapper();
+		try {
+ 			return objectMapper.readTree(getClass().getResource("/schema.json"));
+		} catch (IOException e) {
+			return objectMapper.createObjectNode();
+		}
+	}
+
+	public void setApplicationConfiguration(ApplicationConfiguration applicationConfiguration) {
+		this.applicationConfiguration = applicationConfiguration;
+	}
+
+	@Override
+	public Set<ActivityInputPort> getInputPorts(JsonNode configuration) {
+		return new HashSet<>();
+	}
+
+	@Override
+	public Set<ActivityOutputPort> getOutputPorts(JsonNode configuration) {
+		return new HashSet<>();
+	}
+
+}
diff --git a/taverna-beanshell-activity/src/main/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityHealthChecker.java b/taverna-beanshell-activity/src/main/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityHealthChecker.java
new file mode 100644
index 0000000..9913d77
--- /dev/null
+++ b/taverna-beanshell-activity/src/main/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityHealthChecker.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.beanshell;
+
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedHashSet;
+import java.util.List;
+
+import net.sf.taverna.t2.activities.dependencyactivity.AbstractAsynchronousDependencyActivity.FileExtFilter;
+import net.sf.taverna.t2.visit.VisitReport;
+import net.sf.taverna.t2.visit.VisitReport.Status;
+import net.sf.taverna.t2.workflowmodel.Processor;
+import net.sf.taverna.t2.workflowmodel.health.HealthCheck;
+import net.sf.taverna.t2.workflowmodel.health.HealthChecker;
+import bsh.ParseException;
+import bsh.Parser;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+public class BeanshellActivityHealthChecker implements HealthChecker<BeanshellActivity> {
+
+	public boolean canVisit(Object subject) {
+		return (subject!=null && subject instanceof BeanshellActivity);
+	}
+
+	public VisitReport visit(BeanshellActivity activity, List<Object> ancestors) {
+		Object subject = (Processor) VisitReport.findAncestor(ancestors, Processor.class);
+		if (subject == null) {
+			// Fall back to using the activity itself as the subject of the reports
+			subject = activity;
+		}
+		List<VisitReport> reports = new ArrayList<VisitReport>();
+
+		String script = activity.getConfiguration().get("script").textValue();
+		if (! script.trim().endsWith(";")) {
+			/** Missing ; on last line is not allowed by Parser,
+			 * but is allowed by Interpreter.eval() used at runtime
+			 */
+			script = script + ";";
+		}
+		Parser parser = new Parser(new StringReader(script));
+		try {
+			while (!parser.Line());
+			reports.add(new VisitReport(HealthCheck.getInstance(), subject, "Script OK", HealthCheck.NO_PROBLEM, Status.OK));
+		} catch (ParseException e) {
+		    VisitReport report = new VisitReport(HealthCheck.getInstance(), subject ,e.getMessage(), HealthCheck.INVALID_SCRIPT, Status.SEVERE);
+		    report.setProperty("exception", e);
+		    reports.add(report);
+		}
+
+		// Check if we can find all the Beanshell's dependencies
+		if (activity.getConfiguration().has("localDependency")) {
+		LinkedHashSet<String> localDependencies = new LinkedHashSet<>();
+		for (JsonNode localDependency : activity.getConfiguration().get("localDependency")) {
+			localDependencies.add(localDependency.textValue());
+		}
+
+		String[] jarArray = activity.libDir.list(new FileExtFilter(".jar"));
+		if (jarArray != null) {
+		    List<String> jarFiles = Arrays.asList(jarArray); // URLs of all jars found in the lib directory
+		    for (String jar : localDependencies) {
+			if (jarFiles.contains(jar)){
+			    localDependencies.remove(jar);
+			}
+		    }
+		}
+		if (localDependencies.isEmpty()){ // all dependencies found
+			reports.add(new VisitReport(HealthCheck.getInstance(), subject, "Beanshell dependencies found", HealthCheck.NO_PROBLEM, Status.OK));
+		}
+		else{
+			VisitReport vr = new VisitReport(HealthCheck.getInstance(), subject, "Beanshell dependencies missing", HealthCheck.MISSING_DEPENDENCY, Status.SEVERE);
+			vr.setProperty("dependencies", localDependencies);
+			vr.setProperty("directory", activity.libDir);
+			reports.add(vr);
+		}
+
+		}
+		Status status = VisitReport.getWorstStatus(reports);
+		VisitReport report = new VisitReport(HealthCheck.getInstance(), subject, "Beanshell report", HealthCheck.NO_PROBLEM,
+				status, reports);
+
+		return report;
+
+	}
+
+	public boolean isTimeConsuming() {
+		return false;
+	}
+
+
+}
diff --git a/taverna-beanshell-activity/src/main/java/net/sf/taverna/t2/activities/beanshell/package.html b/taverna-beanshell-activity/src/main/java/net/sf/taverna/t2/activities/beanshell/package.html
new file mode 100644
index 0000000..8b6e7a5
--- /dev/null
+++ b/taverna-beanshell-activity/src/main/java/net/sf/taverna/t2/activities/beanshell/package.html
@@ -0,0 +1,3 @@
+<body>
+Contains the activity classes required to include String constants within a DataFlow.
+</body>
\ No newline at end of file
diff --git a/taverna-beanshell-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker b/taverna-beanshell-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
new file mode 100644
index 0000000..3fbf5a8
--- /dev/null
+++ b/taverna-beanshell-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
@@ -0,0 +1 @@
+net.sf.taverna.t2.activities.beanshell.BeanshellActivityHealthChecker
\ No newline at end of file
diff --git a/taverna-beanshell-activity/src/main/resources/META-INF/spring/beanshell-activity-context-osgi.xml b/taverna-beanshell-activity/src/main/resources/META-INF/spring/beanshell-activity-context-osgi.xml
new file mode 100644
index 0000000..b98c9e4
--- /dev/null
+++ b/taverna-beanshell-activity/src/main/resources/META-INF/spring/beanshell-activity-context-osgi.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans:beans xmlns="http://www.springframework.org/schema/osgi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:beans="http://www.springframework.org/schema/beans"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans
+                                 http://www.springframework.org/schema/beans/spring-beans.xsd
+                                 http://www.springframework.org/schema/osgi
+                                 http://www.springframework.org/schema/osgi/spring-osgi.xsd">
+
+	<service ref="beanshellActivityHealthChecker" interface="net.sf.taverna.t2.workflowmodel.health.HealthChecker" />
+
+	<service ref="beanshellActivityFactory" interface="net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory" />
+
+	<reference id="applicationConfiguration" interface="uk.org.taverna.configuration.app.ApplicationConfiguration" />
+
+</beans:beans>
diff --git a/taverna-beanshell-activity/src/main/resources/META-INF/spring/beanshell-activity-context.xml b/taverna-beanshell-activity/src/main/resources/META-INF/spring/beanshell-activity-context.xml
new file mode 100644
index 0000000..c6cc552
--- /dev/null
+++ b/taverna-beanshell-activity/src/main/resources/META-INF/spring/beanshell-activity-context.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+	<bean id="beanshellActivityHealthChecker" class="net.sf.taverna.t2.activities.beanshell.BeanshellActivityHealthChecker" />
+
+	<bean id="beanshellActivityFactory" class="net.sf.taverna.t2.activities.beanshell.BeanshellActivityFactory">
+		<property name="applicationConfiguration" ref="applicationConfiguration" />
+	</bean>
+
+</beans>
diff --git a/taverna-beanshell-activity/src/main/resources/schema.json b/taverna-beanshell-activity/src/main/resources/schema.json
new file mode 100644
index 0000000..fcf07b2
--- /dev/null
+++ b/taverna-beanshell-activity/src/main/resources/schema.json
@@ -0,0 +1,21 @@
+{
+    "$schema": "http://json-schema.org/draft-03/schema#",
+    "id": "http://ns.taverna.org.uk/2010/activity/beanshell.schema.json",
+    "title": "Beanshell activity configuration",
+    "type": "object",
+    "extends" : "http://ns.taverna.org.uk/2010/activity/dependency.schema.json",
+    "properties": {
+        "@context": {
+            "description": "JSON-LD context for interpreting the configuration as RDF",
+            "required": true,
+            "enum": ["http://ns.taverna.org.uk/2010/activity/beanshell.context.json"]
+        },
+        "script": {
+            "title": "Beanshell Script",
+            "description": "The beanshell script to be executed",
+            "type": "string",
+            "required": true,
+            "default": ""
+        }
+    }
+}
diff --git a/taverna-beanshell-activity/src/test/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityFactoryTest.java b/taverna-beanshell-activity/src/test/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityFactoryTest.java
new file mode 100644
index 0000000..32290ac
--- /dev/null
+++ b/taverna-beanshell-activity/src/test/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityFactoryTest.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (C) 2010 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.beanshell;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.net.URI;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ * @author David Withers
+ */
+public class BeanshellActivityFactoryTest {
+
+	private BeanshellActivityFactory factory;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		factory = new BeanshellActivityFactory();
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.beanshell.BeanshellActivityFactory#createActivity()}.
+	 */
+	@Test
+	public void testCreateActivity() {
+		BeanshellActivity createActivity = factory.createActivity();
+		assertNotNull(createActivity);
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.beanshell.BeanshellActivityFactory#getActivityType()}.
+	 */
+	@Test
+	public void testGetActivityURI() {
+		assertEquals(URI.create(BeanshellActivity.URI), factory.getActivityType());
+	}
+
+}
diff --git a/taverna-beanshell-activity/src/test/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityHealthCheckerTest.java b/taverna-beanshell-activity/src/test/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityHealthCheckerTest.java
new file mode 100644
index 0000000..0b4b5ff
--- /dev/null
+++ b/taverna-beanshell-activity/src/test/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityHealthCheckerTest.java
@@ -0,0 +1,173 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.beanshell;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import net.sf.taverna.t2.activities.testutils.ActivityInvoker;
+import net.sf.taverna.t2.visit.VisitReport;
+import net.sf.taverna.t2.visit.VisitReport.Status;
+import net.sf.taverna.t2.workflowmodel.Edits;
+import net.sf.taverna.t2.workflowmodel.impl.EditsImpl;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+/**
+ * BeanshellActivityHealthChecker tests
+ *
+ * @author Stian Soiland-Reyes
+ *
+ */
+public class BeanshellActivityHealthCheckerTest {
+
+	private Edits edits = new EditsImpl();
+
+	private ObjectNode configuration;
+
+	@Before
+	public void setup() throws Exception {
+		configuration = JsonNodeFactory.instance.objectNode();
+		configuration.put("classLoaderSharing", "workflow");
+	}
+
+	@Test
+	public void oneLinerNoSemicolon() throws Exception {
+		BeanshellActivity activity = new BeanshellActivity(null);
+		configuration.put("script", "a = 5+3");
+		// Notice lack of ;
+		activity.configure(configuration);
+
+		Map<String,Object> inputs = new HashMap<String, Object>();
+		Map<String, Class<?>> expectedOutputs = new HashMap<String, Class<?>>();
+		ActivityInvoker.invokeAsyncActivity(activity, inputs, expectedOutputs);
+
+		BeanshellActivityHealthChecker healthChecker = new BeanshellActivityHealthChecker();
+		assertTrue(healthChecker.canVisit(activity));
+		ArrayList<Object> ancestors = new ArrayList<Object>();
+
+		ancestors.add(edits.createProcessor("beanie"));
+		VisitReport visit = healthChecker.visit(activity, ancestors);
+		assertEquals(Status.OK, visit.getStatus());
+	}
+
+	@Test
+	public void oneLiner() throws Exception {
+		BeanshellActivity activity = new BeanshellActivity(null);
+		configuration.put("script", "System.out.println(\"Hello\");");
+		activity.configure(configuration);
+
+		Map<String,Object> inputs = new HashMap<String, Object>();
+		Map<String, Class<?>> expectedOutputs = new HashMap<String, Class<?>>();
+		ActivityInvoker.invokeAsyncActivity(activity, inputs, expectedOutputs);
+
+		BeanshellActivityHealthChecker healthChecker = new BeanshellActivityHealthChecker();
+		assertTrue(healthChecker.canVisit(activity));
+		ArrayList<Object> ancestors = new ArrayList<Object>();
+
+		ancestors.add(edits.createProcessor("beanie"));
+		VisitReport visit = healthChecker.visit(activity, ancestors);
+		assertEquals(Status.OK, visit.getStatus());
+	}
+
+	@Test
+	public void threeLines() throws Exception {
+		BeanshellActivity activity = new BeanshellActivity(null);
+		configuration.put("script", "if (2>1) {\n" +
+				"  new Integer(4);\n" +
+				"}");
+		activity.configure(configuration);
+
+		Map<String,Object> inputs = new HashMap<String, Object>();
+		Map<String, Class<?>> expectedOutputs = new HashMap<String, Class<?>>();
+		ActivityInvoker.invokeAsyncActivity(activity, inputs, expectedOutputs);
+
+		BeanshellActivityHealthChecker healthChecker = new BeanshellActivityHealthChecker();
+		assertTrue(healthChecker.canVisit(activity));
+		ArrayList<Object> ancestors = new ArrayList<Object>();
+
+		ancestors.add(edits.createProcessor("beanie"));
+		VisitReport visit = healthChecker.visit(activity, ancestors);
+		assertEquals(Status.OK, visit.getStatus());
+
+
+
+	}
+
+	@Test
+	public void invalidScript() throws Exception {
+		BeanshellActivity activity = new BeanshellActivity(null);
+		configuration.put("script", "invalid script 5 +");
+		activity.configure(configuration);
+
+		Map<String,Object> inputs = new HashMap<String, Object>();
+		Map<String, Class<?>> expectedOutputs = new HashMap<String, Class<?>>();
+		try {
+			ActivityInvoker.invokeAsyncActivity(activity, inputs, expectedOutputs);
+			fail("Script should not be valid");
+		} catch (RuntimeException ex) {
+			// expected to fail
+		}
+
+
+		BeanshellActivityHealthChecker healthChecker = new BeanshellActivityHealthChecker();
+		assertTrue(healthChecker.canVisit(activity));
+		ArrayList<Object> ancestors = new ArrayList<Object>();
+
+		ancestors.add(edits.createProcessor("beanie"));
+		VisitReport visit = healthChecker.visit(activity, ancestors);
+		assertEquals(Status.SEVERE, visit.getStatus());
+	}
+
+	@Test
+	public void strangeWhitespace() throws Exception {
+		BeanshellActivity activity = new BeanshellActivity(null);
+		configuration.put("script", "b = \"fish\";\n" +
+				"a = 2+3\n" +
+				"\n" +
+				"\n" +
+				"  +5   ");
+		// Notice lots of whitespace, but still valid
+		activity.configure(configuration);
+
+		Map<String,Object> inputs = new HashMap<String, Object>();
+		Map<String, Class<?>> expectedOutputs = new HashMap<String, Class<?>>();
+		ActivityInvoker.invokeAsyncActivity(activity, inputs, expectedOutputs);
+
+		BeanshellActivityHealthChecker healthChecker = new BeanshellActivityHealthChecker();
+		assertTrue(healthChecker.canVisit(activity));
+		ArrayList<Object> ancestors = new ArrayList<Object>();
+
+		ancestors.add(edits.createProcessor("beanie"));
+		VisitReport visit = healthChecker.visit(activity, ancestors);
+		System.out.println(visit);
+		assertEquals(Status.OK, visit.getStatus());
+	}
+}
diff --git a/taverna-beanshell-activity/src/test/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityTest.java b/taverna-beanshell-activity/src/test/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityTest.java
new file mode 100644
index 0000000..8d724a5
--- /dev/null
+++ b/taverna-beanshell-activity/src/test/java/net/sf/taverna/t2/activities/beanshell/BeanshellActivityTest.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.beanshell;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import net.sf.taverna.t2.activities.testutils.ActivityInvoker;
+import net.sf.taverna.t2.workflowmodel.AbstractPort;
+import net.sf.taverna.t2.workflowmodel.Edits;
+import net.sf.taverna.t2.workflowmodel.impl.EditsImpl;
+import net.sf.taverna.t2.workflowmodel.processor.activity.impl.ActivityInputPortImpl;
+import net.sf.taverna.t2.workflowmodel.processor.activity.impl.ActivityOutputPortImpl;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+/**
+ * Beanshell Activity Tests
+ * @author Stuart Owen
+ *
+ */
+public class BeanshellActivityTest {
+
+	private ObjectNode configuration;
+
+	@Before
+	public void setup() throws Exception {
+		configuration = JsonNodeFactory.instance.objectNode();
+		configuration.put("classLoaderSharing", "workflow");
+	}
+
+	/**
+	 * Tests a simple script (String output = input + "_returned") to ensure the script is invoked correctly.
+	 * @throws Exception
+	 */
+	@Test
+	public void simpleScript() throws Exception {
+		BeanshellActivity activity = new BeanshellActivity(null);
+		Edits edits = new EditsImpl();
+		edits.getAddActivityInputPortEdit(activity, new ActivityInputPortImpl("input", 0, false, null, String.class)).doEdit();
+		edits.getAddActivityOutputPortEdit(activity, new ActivityOutputPortImpl("output", 0, 0)).doEdit();
+
+		configuration.put("script", "String output = input + \"_returned\";");
+
+		activity.configure(configuration);
+		assertEquals("There should be 1 input port",1,activity.getInputPorts().size());
+		assertEquals("There should be 1 output port",1,activity.getOutputPorts().size());
+
+		assertEquals("The input should be called input", "input",((AbstractPort)activity.getInputPorts().toArray()[0]).getName());
+		assertEquals("The output should be called output", "output",((AbstractPort)activity.getOutputPorts().toArray()[0]).getName());
+
+		Map<String,Object> inputs = new HashMap<String, Object>();
+		inputs.put("input", "aString");
+		Map<String, Class<?>> expectedOutputs = new HashMap<String, Class<?>>();
+		expectedOutputs.put("output", String.class);
+
+		Map<String,Object> outputs = ActivityInvoker.invokeAsyncActivity(activity, inputs, expectedOutputs);
+		assertTrue("there should be an output named output",outputs.containsKey("output"));
+		assertEquals("output should have the value aString_returned","aString_returned",outputs.get("output"));
+	}
+}
diff --git a/taverna-external-tool-activity/pom.xml b/taverna-external-tool-activity/pom.xml
new file mode 100644
index 0000000..49ddfbd
--- /dev/null
+++ b/taverna-external-tool-activity/pom.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.taverna.commonactivities</groupId>
+		<artifactId>taverna-common-activities</artifactId>
+		<version>2.1.0-incubating-SNAPSHOT</version>
+	</parent>
+	<artifactId>taverna-external-tool-activity</artifactId>
+	<packaging>bundle</packaging>
+	<name>Apache Taverna External Tool Activity</name>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-reference-api</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-workflowmodel-api</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-credential-manager</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-reference-types</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.osgi</groupId>
+			<artifactId>taverna-app-configuration-api</artifactId>
+			<version>${taverna.osgi.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.jdom</groupId>
+			<artifactId>com.springsource.org.jdom</artifactId>
+			<version>${jdom.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-io</groupId>
+			<artifactId>commons-io</artifactId>
+			<version>${commons.io.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>com.springsource.org.apache.commons.lang</artifactId>
+			<version>${commons.lang.version}</version>
+		</dependency>
+                <dependency>
+                        <groupId>org.openengsb.wrapped</groupId>
+                        <artifactId>com.jcraft.jsch-all</artifactId>
+                        <version>${jsch.version}</version>
+                        <exclusions>
+                          <exclusion>
+                            <groupId>com.jcraft</groupId>
+                            <artifactId>jsch</artifactId>
+                          </exclusion>
+                          <exclusion>
+                            <groupId>com.jcraft</groupId>
+                            <artifactId>jzlib</artifactId>
+                          </exclusion>
+                        </exclusions>
+                </dependency>
+		<!--dependency>
+			<groupId>com.jcraft.jsch</groupId>
+			<artifactId>com.springsource.com.jcraft.jsch</artifactId>
+			<version>${jsch.version}</version>
+		</dependency-->
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>${junit.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-activity-test-utils</artifactId>
+			<version>${taverna.engine.version}</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+
+
+</project>
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/gui/AskUserForPwPopup.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/gui/AskUserForPwPopup.java
new file mode 100644
index 0000000..e2ae7e1
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/gui/AskUserForPwPopup.java
@@ -0,0 +1,77 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.gui;
+
+import javax.swing.JOptionPane;
+
+import de.uni_luebeck.inb.knowarc.usecases.invocation.AskUserForPw;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshNode;
+
+public final class AskUserForPwPopup implements AskUserForPw {
+	private SshNode ret;
+	private String pw, pp, kf, us;
+
+	public static String ask(String message, String title) {
+		return (String) JOptionPane.showInputDialog(null, message, title, JOptionPane.QUESTION_MESSAGE, null, null, "");
+	}
+
+	public static boolean askYN(String message, String title) {
+		return JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION;
+	}
+
+	public String getPassword() {
+		getUsername();
+		if (pw != null)
+			return pw;
+		pw = ask("Please enter your password for " + us + " @ " + ret.getHost(), us + " @ " + ret.getHost());
+		return pw;
+	}
+
+	public String getPassphrase() {
+		getUsername();
+		if (pp != null)
+			return pp;
+		pp = ask("Please enter your passphrase for " + kf + " used for " + us + " @ " + ret.getHost(), us + " @ " + ret.getHost());
+		return pp;
+	}
+
+	public String getKeyfile() {
+		getUsername();
+		if (kf != null)
+			return kf;
+		kf = ask("Please enter the keyfile for " + us + " @ " + ret.getHost(), us + " @ " + ret.getHost());
+		return kf;
+	}
+
+	public String getUsername() {
+		if (us != null)
+			return us;
+		us = ask("Please enter the username for " + ret.getHost(), "Username for " + ret.getHost());
+		return us;
+	}
+
+	public void setSshNode(SshNode sshNode) {
+		this.ret = sshNode;
+	}
+
+	public void authenticationSucceeded() {
+	}
+}
\ No newline at end of file
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/gui/PleaseWaitDialog.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/gui/PleaseWaitDialog.java
new file mode 100755
index 0000000..a6bf707
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/gui/PleaseWaitDialog.java
@@ -0,0 +1,75 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.gui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+
+public class PleaseWaitDialog extends JDialog {
+	private static final long serialVersionUID = 1L;
+
+	static PleaseWaitDialog instance = new PleaseWaitDialog();
+
+	public class WaitMessage{
+		public WaitMessage() {
+		}
+		
+		String str;
+		public void set(String newstr) {
+			synchronized (PleaseWaitDialog.instance) {
+				if(this.str != null && this.str.equals(newstr)) return;
+				if(this.str != null) messages.remove(this.str);
+				this.str = newstr;
+				if(this.str != null) messages.add(this.str);
+			}
+			updateDialog();
+		}
+		public void done() {
+			set(null);
+		}
+	}
+
+	private void updateDialog() {
+		synchronized (PleaseWaitDialog.instance) {
+			if(messages.size() > 0) this.setVisible(true);
+			else this.setVisible(false);
+			String t = "";
+			for (String  cur : messages) {
+				t += cur + "<br>";
+			}
+			l.setText("<html>"+t+"</html>");
+		}
+	}
+	
+	List<String> messages = new ArrayList<String>();
+	
+	JLabel l;
+	private PleaseWaitDialog() {
+		this.setAlwaysOnTop(true);
+		this.setTitle("Please wait");
+		l = new JLabel("");
+		this.add(l);
+		this.setSize(400, 100);
+	}
+}
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/RuntimeEnvironment.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/RuntimeEnvironment.java
new file mode 100644
index 0000000..ea49079
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/RuntimeEnvironment.java
@@ -0,0 +1,253 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.usecases;
+
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+/**
+ * Representation of information about a single runtime environment. It is used
+ * to decide if one runtime environment is possibly compatible with another one
+ * for the selection of queues to commit to.
+ * 
+ * To experiment/test these functions, run the following java -cp
+ * target/taverna-knowarc-processor-0.1.7.jar
+ * de.uni_luebeck.janitor.ldap.RuntimeEnvironment compare bla-1 foo-1 java -cp
+ * target/taverna-knowarc-processor-0.1.7.jar
+ * de.uni_luebeck.janitor.ldap.RuntimeEnvironment compare bla-1 bla-2 java -cp
+ * target/taverna-knowarc-processor-0.1.7.jar
+ * de.uni_luebeck.janitor.ldap.RuntimeEnvironment compare bla-1.2 bla-1
+ * 
+ * @author Steffen Moeller
+ */
+@SuppressWarnings("unchecked")
+public class RuntimeEnvironment implements Comparable {
+	
+	private static Logger logger = Logger.getLogger(RuntimeEnvironment.class);
+
+
+	/**
+	 * Unique identification of the runtime environment - the full name
+	 */
+	protected String id;
+
+	/**
+	 * Accessor function for the complete identifier of the runtime environment
+	 */
+	public String getID() {
+		return id;
+	}
+
+	protected String name;
+
+	/**
+	 * Accessor function for the RE's name
+	 */
+	public String getName() {
+		return name;
+	}
+
+	protected String version;
+
+	/**
+	 * Accessfor function for the version
+	 */
+	public String getVersion() {
+		return version;
+	}
+
+	/**
+	 * for those busy fellows who don't have the time to convert the String into
+	 * a RuntimeEnvironment object.
+	 * 
+	 * @author Steffen Moeller
+	 */
+	public boolean atLeastAsCapableAs(String s) {
+		RuntimeEnvironment tmpRE = new RuntimeEnvironment(s);
+		return this.atLeastAsCapableAs(tmpRE);
+	}
+
+	/**
+	 * Indicates if a runtime environment has the same name, and if so, if the
+	 * given RE has the same or a later version.
+	 * 
+	 * @author Steffen Moeller
+	 */
+	public boolean atLeastAsCapableAs(RuntimeEnvironment re) {
+		if (!name.equals(re.name))
+			return false;
+		int c = compareVersions(getVersion(), re.getVersion());
+		if (c >= 0) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+
+	/**
+	 * Indicates if this runtimeEnvironment is the same version or later as any
+	 * in that list.
+	 * 
+	 * @author Steffen Moeller
+	 */
+	public boolean atLeastAsCapableAsAnyOf(Iterable<RuntimeEnvironment> res) {
+		boolean compatibleOneFound = false;
+		Iterator<RuntimeEnvironment> i = res.iterator();
+		while (i.hasNext() && !compatibleOneFound) {
+			RuntimeEnvironment r = i.next();
+			compatibleOneFound = atLeastAsCapableAs(r);
+		}
+		return compatibleOneFound;
+	}
+
+	/**
+	 * Indicates if any of the runtime environments listed is the same version
+	 * as this or later.
+	 * 
+	 * @author Steffen Moeller
+	 */
+	public boolean isInferiorToAtLeastOneIn(Iterable<RuntimeEnvironment> res) {
+		boolean compatibleOneFound = false;
+		Iterator<RuntimeEnvironment> i = res.iterator();
+		while (i.hasNext() && !compatibleOneFound) {
+			RuntimeEnvironment r = i.next();
+			compatibleOneFound = r.atLeastAsCapableAs(this);
+		}
+		return compatibleOneFound;
+	}
+
+	/**
+	 * Parses a string as commonly presented by the infosystem
+	 * 
+	 * @author Steffen Moeller
+	 */
+	public RuntimeEnvironment(String raw) {
+		id = raw;
+		int dashpos = raw.indexOf("-");
+		if (-1 == dashpos) {
+			version = "";
+			name = raw;
+		} else {
+			name = raw.substring(0, dashpos);
+			if (dashpos + 1 <= raw.length()) {
+				version = raw.substring(dashpos + 1, raw.length());
+			} else {
+				version = "";
+			}
+		}
+	}
+
+	/**
+	 * to make it behave like a string at time, as it was originally implemented
+	 */
+	@Override
+	public String toString() {
+		return id;
+	}
+
+	/**
+	 * Implementation of Comparable interface. It comes handy albeit this
+	 * function says nothing about the compatibility of two runtime environments
+	 * unless their names are identical and the relation of the constraint was
+	 * taken into account. It just sorts them in lists.
+	 */
+	public int compareTo(Object o) throws ClassCastException {
+		RuntimeEnvironment r = (RuntimeEnvironment) o;
+		if (getName().equals(r.getName())) {
+			return RuntimeEnvironment.compareVersions(getVersion(), r.getVersion());
+		} else {
+			return id.compareTo(r.getID());
+		}
+	}
+
+	/**
+	 * FIXME: For the sake of simplicity, this implementation makes an error in
+	 * treating . and - in the versions equally. Versions, if numerical, are
+	 * treated numerically. Otherwise it is lexicographical, which is error
+	 * prone, though. Should the 'Scanner' class should be tapped into?
+	 * 
+	 * @author Steffen Moeller
+	 */
+	public static int compareVersions(String a, String b) {
+
+		// null pointer exceptions are not risked .. we are nice
+		if (null == a)
+			a = "";
+		if (null == b)
+			b = "";
+
+		// catching the dumb case first
+		if (a.equals(b))
+			return 0;
+
+		List as = Arrays.asList(a.split("[.-]"));
+		List bs = Arrays.asList(b.split("[.-]"));
+
+		// both lists have the empty element as members at least
+		Iterator aIterator = as.iterator();
+		Iterator bIterator = bs.iterator();
+
+		while (aIterator.hasNext()) {
+			String aa = (String) aIterator.next();
+			if (!bIterator.hasNext()) {
+				// a is longer while equal so far
+				return 1; // a > b
+			}
+			String bb = (String) bIterator.next();
+			if (!aa.equals(bb)) {
+				// a and b differ
+				try {
+					Integer aInt = Integer.parseInt(aa);
+					Integer bInt = Integer.parseInt(bb);
+					return aInt.compareTo(bInt);
+				} catch (Exception e) {
+					return aa.compareTo(bb);
+				}
+			}
+		}
+		if (bIterator.hasNext()) {
+			// b is longer while equal so far
+			return -1; // a < b
+		}
+		return 0; // a == b
+	}
+
+	/**
+	 * For testing purposes
+	 */
+	public static void main(String argv[]) {
+		if ("compare".equals(argv[0])) {
+			RuntimeEnvironment r1 = new RuntimeEnvironment(argv[1]);
+			RuntimeEnvironment r2 = new RuntimeEnvironment(argv[2]);
+			logger.info("r1.getName(): " + r1.getName());
+			logger.info("r1.getVersion(): " + r1.getVersion());
+			logger.info("r2.getName(): " + r2.getName());
+			logger.info("r2.getVersion(): " + r2.getVersion());
+			logger.info("r1.atLeastAsCapableAs(r2): " + String.valueOf(r1.atLeastAsCapableAs(r2)));
+		} else {
+			logger.info("Don't know how to '" + argv[0] + "'");
+		}
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/RuntimeEnvironmentConstraint.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/RuntimeEnvironmentConstraint.java
new file mode 100644
index 0000000..baa68d2
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/RuntimeEnvironmentConstraint.java
@@ -0,0 +1,162 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.usecases;
+ 
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.log4j.Logger;
+
+
+/**
+ * When use cases present a runtime environment, then they don't want to express
+ * that these would provide such, but that these request such, i.e. they constrain
+ * lists of potentially eligible queues. 
+ * @author Steffen Moeller
+ * @since 2008
+ */
+public class RuntimeEnvironmentConstraint extends RuntimeEnvironment {
+	
+	private static Logger logger = Logger.getLogger(RuntimeEnvironmentConstraint.class);
+
+	private static String[] ACCEPTED_RELATIONS = new String[] {"=", ">=", "<=", ">", "<"};
+	/**
+	 * If there is no relation specified, presume >=
+	 */
+	private static String DEFAULT_RELATION = ">=";
+	
+	public static String[] getAcceptedRelations() {
+		return ACCEPTED_RELATIONS;
+	}
+
+	public static String getDefaultRelation() {
+		return DEFAULT_RELATION;
+	}
+
+	/**
+	 *  Identifies the relation between runtime environments to be tested
+	 */
+	protected String relation;
+	
+	/**
+	 * Accessor function for relation
+	 */
+	public String getRelation() {
+		return this.relation;
+	}
+	
+	/**
+	 * Tests of a relation is supported
+	 * @param relation
+	 * @return true iff in <, > , <=, >=, =
+	 */
+	public static boolean acceptedRelation(String relation) {
+		if ((null == relation) || relation.equals("")) {
+			return false;
+		}
+		return relation.equals("=")||relation.equals(">=")||relation.equals("<=")||relation.equals(">")||relation.equals("<");
+	}
+	
+	/**
+	 * Constructor
+	 * @param id - expects the name of the runtime environment together with the version to which the
+	 * @param relation - relates to (">","<","=",">=","<=")
+	 */
+	public RuntimeEnvironmentConstraint(String id, String relation) {
+		super(id);
+		if (null == relation || relation.equals("")) {
+			relation=RuntimeEnvironmentConstraint.getDefaultRelation();
+		}
+		if (relation.equals("==")) {
+			relation="=";
+		}
+		else if (relation.equals("=<")) {
+			relation="<=";
+		}
+		else if (!RuntimeEnvironmentConstraint.acceptedRelation(relation)) {
+			logger.warn("Unknown relation '"+relation+"', presuming '"+RuntimeEnvironmentConstraint.getDefaultRelation()+"'");
+			relation=RuntimeEnvironmentConstraint.getDefaultRelation();
+		}
+		this.relation=relation;
+	}
+	
+	/**
+	 * Perfoms test if the RuntimeEnvironment (RE) passed as argument fulfills the requirements set by the constraint.
+	 * @param re - RE to test
+	 * @return true iff the RE fulfills this REconstraint.
+	 */
+	public boolean isFulfilledBy(RuntimeEnvironment re) {
+		logger.info(re.getID()+" " + this.getRelation() + " "+this.getID() + " ?");
+		if (this.getRelation().equals("=")) {
+			logger.info("=");
+			return re.getID().equals(this.getID());
+		}
+		if (!re.getName().equals(this.getName())) {
+			logger.warn("Name match failed");
+			return false;
+		}
+		int c = RuntimeEnvironment.compareVersions(re.getVersion(),this.getVersion());
+		logger.info("c="+c);
+		if (this.getRelation().equals(">")) return c>0;
+		if (this.getRelation().equals(">=")) return c>=0;
+		if (this.getRelation().equals("<=")) return c<=0;
+		if (this.getRelation().equals("<")) return c<0;
+		throw new RuntimeException("Unknown/untreated releation '"+this.getRelation()+"'");
+	}
+	
+	/**
+	 * Iterates over all the RuntimeEnvironments passed as argument.
+	 * @param REs - list of RuntimeEnvironments, mostly those offered at a particular queue
+	 * @return true iff any RE among the REs passed as argument are fulfilling the constraint
+	 */
+	public boolean isFulfilledByAtLeastOneIn(Collection<RuntimeEnvironment> REs) {
+		boolean fulfilled = false;
+		Iterator<RuntimeEnvironment> i = REs.iterator();
+		while(i.hasNext() && !fulfilled) {
+			RuntimeEnvironment r = i.next();
+			fulfilled = this.isFulfilledBy(r);
+		}
+		return fulfilled;
+	}
+	/**
+	 * For testing purposes
+	 */
+	public static void main(String argv[]) {
+		try {
+			if (argv[0].equals("--help") || argv.length != 3) {
+				logger.error("Expecting arguments (<|>|=|<=|>=) runtime1-version runtime2-version");
+			}
+			else {
+				RuntimeEnvironmentConstraint r1 = new RuntimeEnvironmentConstraint(argv[1], argv[0]);
+				RuntimeEnvironment r2 = new RuntimeEnvironment(argv[2]);
+				logger.info("r1.getName(): "+r1.getName());
+				logger.info("r1.getVersion(): "+r1.getVersion());
+				logger.info("r1.getRelation(): "+r1.getRelation());
+				logger.info("r2.getName(): "+r2.getName());
+				logger.info("r2.getVersion(): "+r2.getVersion());
+				logger.info("r1.isFulfilledBy(r2): "+String.valueOf(r1.isFulfilledBy(r2)));
+			}
+		}
+		catch (Exception e) {
+			logger.error(e);
+		}
+	}
+}
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInput.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInput.java
new file mode 100644
index 0000000..a9f97b0
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInput.java
@@ -0,0 +1,136 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.usecases;
+
+import java.nio.charset.Charset;
+
+import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+
+/**
+ * Integrates inputs to the grid that come from the use case descriptions
+ * with those that are fed through the workflow.
+ *
+ * this class controls name and data storage of one input,
+ * no matter where the data comes from
+ */
+@ConfigurationBean(uri = ExternalToolActivity.URI + "#AbstractScriptInput")
+public abstract class ScriptInput {
+	/**
+	 * This input can be referenced under the name 'tag'.
+	 */
+	private String tag = null;
+	/**
+	 * In most cases, the data will be stored under a specific
+	 * filename.
+	 */
+	private boolean file = false;
+	/**
+	 * Set, if the name of the file to be executed is not
+	 * explicitly set but prepared by some automatism and referenced
+	 * via the tagging principle.
+	 */
+	private boolean tempFile = false;
+	/**
+	 * True if (!) the data is binary. (Text otherwise)
+	 */
+	private boolean binary = false;
+
+	private String charsetName = Charset.defaultCharset().name();
+	private boolean forceCopy = false;
+
+	/**
+	 * @return the tag
+	 */
+	public final String getTag() {
+		return tag;
+	}
+	/**
+	 * @param tag the tag to set
+	 */
+	@ConfigurationProperty(name = "tag", label = "Tag")
+	public final void setTag(String tag) {
+		this.tag = tag;
+	}
+	/**
+	 * @return the file
+	 */
+	public final boolean isFile() {
+		return file;
+	}
+	/**
+	 * @param file the file to set
+	 */
+	@ConfigurationProperty(name = "file", label = "File")
+	public final void setFile(boolean file) {
+		this.file = file;
+	}
+	/**
+	 * @return the tempFile
+	 */
+	public final boolean isTempFile() {
+		return tempFile;
+	}
+	/**
+	 * @param tempFile the tempFile to set
+	 */
+	@ConfigurationProperty(name = "tempFile", label = "Temporary File")
+	public final void setTempFile(boolean tempFile) {
+		this.tempFile = tempFile;
+	}
+	/**
+	 * @return the binary
+	 */
+	public final boolean isBinary() {
+		return binary;
+	}
+	/**
+	 * @param binary the binary to set
+	 */
+	@ConfigurationProperty(name = "binary", label = "Binary")
+	public final void setBinary(boolean binary) {
+		this.binary = binary;
+	}
+
+	public String getCharsetName() {
+		return this.charsetName;
+	}
+	/**
+	 * @param charsetName the charsetName to set
+	 */
+	@ConfigurationProperty(name = "charsetName", label = "Chararter Set")
+	public void setCharsetName(String charsetName) {
+		this.charsetName = charsetName;
+	}
+
+	@ConfigurationProperty(name = "forceCopy", label = "Force Copy")
+	public final void setForceCopy(boolean forceCopy) {
+		this.forceCopy = forceCopy;
+
+	}
+	/**
+	 * @return the forceCopy
+	 */
+	public boolean isForceCopy() {
+		return forceCopy;
+	}
+}
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInputStatic.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInputStatic.java
new file mode 100644
index 0000000..4e108b9
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInputStatic.java
@@ -0,0 +1,75 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.usecases;
+
+import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+
+/**
+ * This subclass of script input is used to manage static content
+ * which is embedded into the use case description.
+ */
+@ConfigurationBean(uri = ExternalToolActivity.URI + "#ScriptInputStatic")
+public class ScriptInputStatic extends ScriptInput {
+
+	public ScriptInputStatic() {
+	}
+
+	private String url = null;  //if this is set, load content from remote URL
+	private String content = null;
+
+	@Override
+	public String toString() {
+		return "InputStatic[tag: " +
+			getTag() + (isFile() ? ", file" : "") + (isTempFile() ? ", tempfile" : "") + (isBinary() ? ", binary" : "") + ", content: " + content + "]";
+	}
+
+	/**
+	 * @return the url
+	 */
+	public final String getUrl() {
+		return url;
+	}
+
+	/**
+	 * @param url the url to set
+	 */
+	@ConfigurationProperty(name = "url", label = "URL", required=false)
+	public final void setUrl(String url) {
+		this.url = url;
+	}
+
+	/**
+	 * @return the content
+	 */
+	public final String getContent() {
+		return content;
+	}
+
+	/**
+	 * @param content the content to set
+	 */
+	@ConfigurationProperty(name = "content", label = "Content", required=false)
+	public final void setContent(String content) {
+		this.content = content;
+	}
+}
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInputUser.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInputUser.java
new file mode 100644
index 0000000..858b7fa
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInputUser.java
@@ -0,0 +1,101 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.usecases;
+import java.util.ArrayList;
+
+import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+
+/**
+ * Internal description of output
+ */
+@ConfigurationBean(uri = ExternalToolActivity.URI + "#ScriptInput")
+public class ScriptInputUser extends ScriptInput {
+
+	/**
+	 * This input may be fed from multiple ouputs.
+	 */
+	private boolean list = false;
+	/**
+	 * True if the data from a list input in taverna is concatenated into one single input file.
+	 */
+	private boolean concatenate = false;
+
+	private ArrayList<String> mime = new ArrayList<String>();
+
+	@Override
+	public String toString() {
+		return "Input[tag: " + getTag() + (isFile() ? ", file" : "")
+				+ (isTempFile() ? ", tempfile" : "")
+				+ (isBinary() ? ", binary" : "") + (list ? ", list" : "")
+				+ (concatenate ? ", concatenate" : "")
+				+ " mime: " + mime.toString() + "]";
+	}
+
+	/**
+	 * @return the list
+	 */
+	public final boolean isList() {
+		return list;
+	}
+
+	/**
+	 * @param list the list to set
+	 */
+	@ConfigurationProperty(name = "list", label = "List")
+	public final void setList(boolean list) {
+		this.list = list;
+	}
+
+	/**
+	 * @return the concatenate
+	 */
+	public final boolean isConcatenate() {
+		return concatenate;
+	}
+
+	/**
+	 * @param concatenate the concatenate to set
+	 */
+	@ConfigurationProperty(name = "concatenate", label = "Concatenate")
+	public final void setConcatenate(boolean concatenate) {
+		this.concatenate = concatenate;
+	}
+
+	/**
+	 * @return the mime
+	 */
+	public final ArrayList<String> getMime() {
+		if (mime == null) {
+			mime = new ArrayList<String>();
+		}
+		return mime;
+	}
+
+	/**
+	 * @param mime the mime to set
+	 */
+	@ConfigurationProperty(name = "mime", label = "Mime Types", required=false)
+	public final void setMime(ArrayList<String> mime) {
+		this.mime = mime;
+	}
+};
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptOutput.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptOutput.java
new file mode 100644
index 0000000..fe63cc9
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptOutput.java
@@ -0,0 +1,90 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.usecases;
+import java.util.ArrayList;
+
+import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+
+/**
+ * Internal description of input
+ */
+@ConfigurationBean(uri = ExternalToolActivity.URI + "#ScriptOutput")
+public class ScriptOutput {
+	private String path;
+	private boolean binary;
+	private ArrayList<String> mime = new ArrayList<String>();
+
+	@Override
+	public String toString() {
+		return "Output[path: " + path + (binary ? ", binary" : "")
+				+ " mime: " + mime.toString() + "]";
+	}
+
+	/**
+	 * @return the path
+	 */
+	public final String getPath() {
+		return path;
+	}
+
+	/**
+	 * @param path the path to set
+	 */
+	@ConfigurationProperty(name = "path", label = "Path")
+	public final void setPath(String path) {
+		this.path = path;
+	}
+
+	/**
+	 * @return the binary
+	 */
+	public final boolean isBinary() {
+		return binary;
+	}
+
+	/**
+	 * @param binary the binary to set
+	 */
+	@ConfigurationProperty(name = "binary", label = "Binary")
+	public final void setBinary(boolean binary) {
+		this.binary = binary;
+	}
+
+	/**
+	 * @return the mime
+	 */
+	public final ArrayList<String> getMime() {
+		if (mime == null) {
+			mime = new ArrayList<String>();
+		}
+		return mime;
+	}
+
+	/**
+	 * @param mime the mime to set
+	 */
+	@ConfigurationProperty(name = "mime", label = "Mime Types", required=false)
+	public final void setMime(ArrayList<String> mime) {
+		this.mime = mime;
+	}
+};
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/UseCaseDescription.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/UseCaseDescription.java
new file mode 100644
index 0000000..217eae5
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/UseCaseDescription.java
@@ -0,0 +1,899 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.usecases;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import javax.swing.ImageIcon;
+
+import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty.OrderPolicy;
+import net.sf.taverna.t2.workflowmodel.serialization.DeserializationException;
+import net.sf.taverna.t2.workflowmodel.utils.Tools;
+
+import org.apache.log4j.Logger;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+
+import org.apache.commons.lang.StringUtils;
+
+/**
+ * Class representation of XML-description of UseCases
+ */
+@ConfigurationBean(uri = ExternalToolActivity.URI + "#ToolDescription")
+public class UseCaseDescription {
+
+	private static Logger logger = Logger.getLogger(UseCaseDescription.class);
+
+	/**
+	 * Identifier for the retrieval of this UseCase in the sharedRepository
+	 * database, respectively its XML export.
+	 */
+	private String usecaseid = "";
+	/**
+	 * Workflow Elements now can get a group identifier. There may be subgroups
+	 * divided by :
+	 */
+	private String group = "";
+	/**
+	 * Textual description of the use case itself. This description is very
+	 * short to fit on the single line that is prepared for such descriptions in
+	 * the Taverna workflow element list.
+	 */
+	private String description = "";
+	/**
+	 * What is actually executed on the shell.
+	 */
+	private String command = "";
+
+	/**
+	 * Accessor function of command
+	 *
+	 * @return shell-executable series of commands
+	 */
+	public String getCommand() {
+		if (null == command) {
+			// FIXME: Is this possible?
+			return "";
+		} else {
+			return command;
+		}
+	}
+
+	/**
+	 * Routine that may be executed as a first check if the program is indeed
+	 * installed.
+	 */
+	private String test_local = null;
+
+	/**
+	 * URL of an icon that would help users to recognise the use case
+	 */
+	private String icon_url = null;
+
+	private int preparingTimeoutInSeconds = 20 * 60; // 20 minutes
+	private int executionTimeoutInSeconds = 30 * 60; // 30 minutes
+
+	private List<String> tags = new ArrayList<String>();
+	private List<RuntimeEnvironmentConstraint> REs = new ArrayList<RuntimeEnvironmentConstraint>();
+	private ArrayList<String> queue_preferred = new ArrayList<String>();
+	private ArrayList<String> queue_deny = new ArrayList<String>();
+
+	private List<ScriptInputStatic> static_inputs = new ArrayList<ScriptInputStatic>();
+	private Map<String, ScriptInput> inputs = new HashMap<String, ScriptInput>();
+	private Map<String, ScriptOutput> outputs = new HashMap<String, ScriptOutput>();
+
+	private boolean includeStdIn = false;
+	private boolean includeStdOut = true;
+	private boolean includeStdErr = true;
+
+	private List<Integer> validReturnCodes = new ArrayList<Integer>();
+	
+	/**
+	 * Default constructor to make xstream happy
+	 */
+	public UseCaseDescription() {
+		
+	}
+
+	/**
+	 * Constructor, for special purpose usecases.
+	 *
+	 * @param usecaseid
+	 */
+	public UseCaseDescription(String usecaseid) {
+		this.setUsecaseid(usecaseid);
+	}
+
+	/**
+	 * Constructor, expects an input stream containing the xml. for example, use
+	 * getClass().getClassLoader().getResourceAsStream("..") to load a usecase
+	 * from your program jar
+	 */
+	public UseCaseDescription(InputStream programAsStream) throws DeserializationException {
+		SAXBuilder builder = new SAXBuilder();
+		Document doc;
+		try {
+			doc = builder.build(programAsStream);
+			programAsStream.close();
+		} catch (JDOMException e) {
+			throw new DeserializationException("Error deserializing usecase", e);
+		} catch (IOException e) {
+			throw new DeserializationException("Error deserializing usecase", e);
+		}
+		readFromXmlElement(doc.getRootElement());
+	}
+
+	/**
+	 * Constructor, expects an XML-root to dissect.
+	 */
+	public UseCaseDescription(Element programNode) throws DeserializationException {
+		readFromXmlElement(programNode);
+	}
+
+/**
+ * Produce an XML description of the UseCaseDescription
+ */
+	public Element writeToXMLElement() {
+		Element programNode = new Element("program");
+		programNode.setAttribute("name", getUsecaseid());
+		programNode.setAttribute("description", getDescription());
+		// Always use element version of command
+//		programNode.setAttribute("command", getCommand());
+		Element commandNode = new Element("command");
+		commandNode.addContent(getCommand());
+		programNode.addContent(commandNode);
+		programNode.setAttribute("timeout", Integer.toString(getExecutionTimeoutInSeconds()));
+		programNode.setAttribute("preparing_timeout", Integer.toString(getPreparingTimeoutInSeconds()));
+		programNode.setAttribute("includeStdIn", Boolean.toString(isIncludeStdIn()));
+		programNode.setAttribute("includeStdOut", Boolean.toString(isIncludeStdOut()));
+		programNode.setAttribute("includeStdErr", Boolean.toString(isIncludeStdErr()));
+		for (ScriptInputStatic si : getStatic_inputs()) {
+			Element staticNode = new Element("static");
+			if (si.isBinary()) {
+				staticNode.setAttribute("binary", "true");
+			}
+			if (si.isForceCopy()) {
+				staticNode.setAttribute("forceCopy", "true");
+			}
+			if (si.isFile()) {
+				Element fileNode = new Element("file");
+				fileNode.setAttribute("path", si.getTag());
+				staticNode.addContent(fileNode);
+			} else if (si.isTempFile()) {
+				Element tempfileNode = new Element("tempfile");
+				tempfileNode.setAttribute("tag", si.getTag());
+				staticNode.addContent(tempfileNode);
+			} else {
+				Element replaceNode = new Element("replace");
+				replaceNode.setAttribute("tag", si.getTag());
+				staticNode.addContent(replaceNode);
+			}
+			if (si.getUrl() != null) {
+				Element contentNode = new Element("content");
+				contentNode.setAttribute("url", si.getUrl());
+				staticNode.addContent(contentNode);
+			} else {
+				Element contentNode = new Element("content");
+				contentNode.addContent((String) si.getContent());
+				staticNode.addContent(contentNode);
+			}
+			programNode.addContent(staticNode);
+		}
+		for (Entry<String, ScriptInput> entry : getInputs().entrySet()) {
+			String name = entry.getKey();
+			ScriptInputUser si = (ScriptInputUser) entry.getValue();
+			Element inputNode = new Element("input");
+			inputNode.setAttribute("name", name);
+			if (si.isBinary()) {
+				inputNode.setAttribute("binary", "true");
+			}
+			if (si.isForceCopy()) {
+				inputNode.setAttribute("forceCopy", "true");
+			}
+			if (si.isConcatenate()) {
+				inputNode.setAttribute("concatenate", "true");
+			}
+			if (si.isList()) {
+				inputNode.setAttribute("list", "true");
+			}
+			if (si.isFile()) {
+				Element fileNode = new Element("file");
+				fileNode.setAttribute("path", si.getTag());
+				inputNode.addContent(fileNode);
+			} else if (si.isTempFile()) {
+				Element tempfileNode = new Element("tempfile");
+				tempfileNode.setAttribute("tag", si.getTag());
+				inputNode.addContent(tempfileNode);
+			} else {
+				Element replaceNode = new Element("replace");
+				replaceNode.setAttribute("tag", si.getTag());
+				inputNode.addContent(replaceNode);
+			}
+			for (String mime : si.getMime()) {
+				Element mimeNode = new Element("mime");
+				mimeNode.setAttribute("type", mime);
+				inputNode.addContent(mimeNode);
+			}
+			programNode.addContent(inputNode);
+		}
+		for (Entry<String, ScriptOutput> entry : getOutputs().entrySet()) {
+			String name = entry.getKey();
+			ScriptOutput so = entry.getValue();
+			Element outputNode = new Element("output");
+			outputNode.setAttribute("name", name);
+			if (so.isBinary()) {
+				outputNode.setAttribute("binary", "true");
+			}
+			Element fromfileNode = new Element("fromfile");
+			fromfileNode.setAttribute("path", so.getPath());
+			outputNode.addContent(fromfileNode);
+			for (String mime : so.getMime()) {
+				Element mimeNode = new Element("mime");
+				mimeNode.setAttribute("type", mime);
+				outputNode.addContent(mimeNode);
+			}
+			programNode.addContent(outputNode);
+		}
+		for (RuntimeEnvironmentConstraint rec : getREs()) {
+			Element rteNode = new Element("rte");
+			rteNode.setAttribute("name", rec.getID());
+			rteNode.setAttribute("relation", rec.getRelation());
+			programNode.addContent(rteNode);
+		}
+		if ((group != null) && !group.isEmpty()) {
+			Element groupNode = new Element("group");
+			groupNode.setAttribute("name", group);
+			programNode.addContent(groupNode);
+		}
+		if ((test_local != null) && !test_local.isEmpty()) {
+			Element testNode = new Element("test");
+			testNode.setAttribute("local", test_local);
+			programNode.addContent(testNode);
+		}
+		if ((icon_url != null) && !icon_url.isEmpty()) {
+			Element iconNode = new Element("icon");
+			iconNode.setAttribute("url", icon_url);
+			programNode.addContent(iconNode);
+		}
+		if (!getQueue_preferred().isEmpty() || !getQueue_deny().isEmpty()) {
+			Element queueNode = new Element("queue");
+			for (String url : getQueue_preferred()) {
+				Element preferredNode = new Element("prefer");
+				preferredNode.setAttribute("url", url);
+				queueNode.addContent(preferredNode);
+			}
+			for (String url : getQueue_deny()) {
+				Element denyNode = new Element("deny");
+				denyNode.setAttribute("url", url);
+				queueNode.addContent(denyNode);
+			}
+			programNode.addContent(queueNode);
+		}
+			Element validReturnCodesNode = new Element("validReturnCodes");
+			validReturnCodesNode.setAttribute("codes", getReturnCodesAsText());
+			programNode.addContent(validReturnCodesNode);
+
+		return programNode;
+	}
+	/**
+	 * Specifies the UseCaseDescription from the root of an XML description
+	 * which is accessible online.
+	 *
+	 * @param programNode
+	 * @throws DeserializationException
+	 */
+	private void readFromXmlElement(Element programNode) throws DeserializationException {
+		if (programNode.getName().compareToIgnoreCase("program") != 0)
+			throw new DeserializationException("Expected <program>, read '" + programNode.getName() + "'");
+
+		setUsecaseid(programNode.getAttributeValue("name"));
+		setDescription(programNode.getAttributeValue("description"));
+		setCommand(programNode.getAttributeValue("command"));
+		String timeoutStr = programNode.getAttributeValue("timeout");
+		if (timeoutStr != null)
+			setExecutionTimeoutInSeconds(Integer.parseInt(timeoutStr));
+		timeoutStr = programNode.getAttributeValue("preparing_timeout");
+		if (timeoutStr != null)
+			setPreparingTimeoutInSeconds(Integer.parseInt(timeoutStr));
+
+		String includeStdInStr = programNode.getAttributeValue("includeStdIn");
+		if (includeStdInStr != null && !includeStdInStr.isEmpty()) {
+			setIncludeStdIn(includeStdInStr.equals("true"));
+		}
+
+		String includeStdOutStr = programNode.getAttributeValue("includeStdOut");
+		if (includeStdOutStr != null && !includeStdOutStr.isEmpty()) {
+			setIncludeStdOut(includeStdOutStr.equals("true"));
+		}
+
+		String includeStdErrStr = programNode.getAttributeValue("includeStdErr");
+		if (includeStdErrStr != null && !includeStdErrStr.isEmpty()) {
+			setIncludeStdErr(includeStdErrStr.equals("true"));
+		}
+
+		for (Object cur_ob : programNode.getChildren()) {
+			Element cur = (Element) cur_ob;
+
+			String name = cur.getAttributeValue("name");
+
+			String type = cur.getName();
+			boolean binary = false;
+			if (null != cur.getAttributeValue("binary") && cur.getAttributeValue("binary").equalsIgnoreCase("true")) {
+				binary = true;
+			}
+			boolean list = false;
+			if (null != cur.getAttributeValue("list") && cur.getAttributeValue("list").equalsIgnoreCase("true")) {
+				list = true;
+			}
+			boolean concatenate = false;
+			if (null != cur.getAttributeValue("concatenate") && cur.getAttributeValue("concatenate").equalsIgnoreCase("true")) {
+				concatenate = true;
+			}
+			boolean forceCopy = false;
+			if (null != cur.getAttributeValue("forceCopy") && cur.getAttributeValue("forceCopy").equalsIgnoreCase("true")) {
+				forceCopy = true;
+			}
+
+			Element inner = null;
+			String innerType = null, tag = null, path = null;
+			if (cur.getChildren().size() > 0) {
+				inner = (Element) cur.getChildren().get(0);
+				innerType = inner.getName();
+				tag = inner.getAttributeValue("tag");
+				path = inner.getAttributeValue("path");
+			}
+			// build mime type declaration list
+			ArrayList<String> mime = new ArrayList<String>();
+			for (Object child : cur.getChildren()) {
+				Element curChild = (Element) child;
+				if (curChild.getName().equalsIgnoreCase("mime")) {
+					mime.add(curChild.getAttributeValue("type"));
+				}
+			}
+			if (type.equalsIgnoreCase("static")) {
+				ScriptInputStatic si = new ScriptInputStatic();
+				Element content = cur.getChild("content");
+				if (content == null)
+					throw new DeserializationException("FIXME: script tag without embedded content tag");
+				si.setUrl(content.getAttributeValue("url"));
+				if (si.getUrl() == null)
+					si.setContent(content.getText());
+				fillInputDescription(si, binary, forceCopy, innerType, tag, path);
+				getStatic_inputs().add(si);
+			} else if (type.equalsIgnoreCase("input")) {
+				ScriptInputUser indesc = new ScriptInputUser();
+				indesc.setList(list);
+				indesc.setMime(mime);
+				indesc.setConcatenate(concatenate);
+				fillInputDescription(indesc, binary, forceCopy, innerType, tag, path);
+				getInputs().put(Tools.sanitiseName(name), indesc);
+			} else if (type.equalsIgnoreCase("output")) {
+				ScriptOutput outdesc = new ScriptOutput();
+				outdesc.setMime(mime);
+
+				boolean ok = true;
+				if (null == innerType) {
+					// don't know what to do
+					throw new DeserializationException("FIXME: Found null == innerType for output, is this the bug?");
+				} else if (innerType.equalsIgnoreCase("fromfile")) {
+					outdesc.setPath(path);
+					outdesc.setBinary(binary);
+				} else {
+					throw new DeserializationException("Problem reading output port: unknown innerType '" + innerType + "'");
+				}
+				if (ok) {
+					getOutputs().put(Tools.sanitiseName(name), outdesc);
+				}
+			} else if (type.equalsIgnoreCase("rte") || type.equalsIgnoreCase("re")) {
+				getREs().add(new RuntimeEnvironmentConstraint(name, cur.getAttributeValue("relation")));
+			} else if (type.equalsIgnoreCase("group")) {
+				group = name;
+			} else if (type.equalsIgnoreCase("test")) {
+				test_local = cur.getAttributeValue("local");
+			} else if (type.equalsIgnoreCase("icon")) {
+				icon_url = cur.getAttributeValue("url");
+			} else if (type.equalsIgnoreCase("queue")) {
+				for (Object child_ob : cur.getChildren()) {
+					Element child = (Element) child_ob;
+					if (child.getName().equalsIgnoreCase("prefer"))
+						getQueue_preferred().add(child.getAttributeValue("url"));
+					else if (child.getName().equalsIgnoreCase("deny"))
+						getQueue_deny().add(child.getAttributeValue("url"));
+					else
+						throw new DeserializationException("Error while reading usecase " + this.getUsecaseid() + ": invalid queue entry");
+				}
+			} else if (type.equalsIgnoreCase("command")) {
+				// i like to have the ability to inject complete shell script
+				// fragments into the use case,
+				// so this should be replace and should allow multiple lines
+				if ((getCommand() != null) && !getCommand().isEmpty()) {
+					throw new DeserializationException("You have specified both command attribute and command tag.");
+				}
+				setCommand(cur.getText());
+			} else if (type.equalsIgnoreCase("validReturnCodes")) {
+					String codeString = cur.getAttributeValue("codes");
+					if (codeString != null) {
+						setReturnCodesAsText(codeString);
+					}
+			}
+			else {
+				throw new DeserializationException("Unexpected and uninterpreted attribute " + type);
+			}
+		}
+	}
+
+	private void fillInputDescription(ScriptInput fillMe, boolean binary, boolean forceCopy, String innerType, String tag, String path) throws DeserializationException {
+		fillMe.setBinary(binary);
+		fillMe.setForceCopy(forceCopy);
+		if (null == innerType) {
+			// don't know what to do
+			throw new DeserializationException("FIXME: Found null == innerType for input, is this the bug?");
+		} else if (innerType.equalsIgnoreCase("replace")) {
+			fillMe.setTag(tag);
+			fillMe.setTempFile(false);
+			fillMe.setFile(false);
+			getTags().add(tag);
+		} else if (innerType.equalsIgnoreCase("tempfile")) {
+			fillMe.setTag(tag);
+			fillMe.setTempFile(true);
+			fillMe.setFile(false);
+			getTags().add(tag);
+		} else if (innerType.equalsIgnoreCase("file")) {
+			fillMe.setTag(path);
+			fillMe.setTempFile(false);
+			fillMe.setFile(true);
+		} else {
+			throw new DeserializationException("Problem reading input port: unknown innerType '" + innerType + "'");
+		}
+	}
+
+	/**
+	 * returns icon that is referenced in use case description
+	 */
+	public ImageIcon getImageIcon() {
+		if (null == icon_url) return null;
+		try {
+			URL u = new URL(icon_url);
+			return new ImageIcon(u, getUsecaseid());
+		} catch (Exception e) {
+			logger.error(e);
+			return null;
+		}
+	}
+
+	/**
+	 * String representation of the use case. It also contains interesting
+	 * information on the availability of resources in the grid to actually
+	 * execute that workflow element.
+	 *
+	 * @return String
+	 */
+	@Override
+	public String toString() {
+		List<String> hlp = new ArrayList<String>();
+		hlp.add("usecaseid: " + getUsecaseid());
+		hlp.add("description: " + getDescription());
+		hlp.add("group: " + group);
+		hlp.add("test: " + test_local);
+		hlp.add("tags: " + getTags());
+		for (Map.Entry<String, ScriptInput> cur : getInputs().entrySet()) {
+			hlp.add(">" + cur.getKey() + ">: " + cur.getValue().toString());
+		}
+		for (Map.Entry<String, ScriptOutput> cur : getOutputs().entrySet()) {
+			hlp.add("<" + cur.getKey() + "<: " + cur.getValue().toString());
+		}
+		hlp.add("RE: " + getREs().toString());
+		hlp.add("preferred queues: " + getQueue_preferred());
+		hlp.add("denied queues: " + getQueue_deny());
+		String tos = super.toString() + "[";
+		for (int i = 0; i < hlp.size(); i++) {
+			if (i != 0)
+				tos += ", ";
+			tos += hlp.get(i);
+		}
+		return tos + " ]";
+	}
+
+	/**
+	 * hajo's test just pass an url or file url to an xml file
+	 *
+	 * @throws IOException
+	 * @throws MalformedURLException
+	 * @throws DeserializationException
+	 */
+	public static void main(String[] argv) throws MalformedURLException, IOException, DeserializationException {
+		UseCaseDescription d = new UseCaseDescription(new URL(argv[0]).openStream());
+		logger.info(d.getCommand());
+	}
+
+	/**
+	 * @param command the command to set
+	 */
+	@ConfigurationProperty(name = "command", label = "Command", description="What is actually executed on the shell")
+	public void setCommand(String command) {
+		this.command = command;
+	}
+
+	/**
+	 * @param description the description to set
+	 */
+	@ConfigurationProperty(name = "description", label = "Description", description="Textual description of the tool", required=false, uri="http://purl.org/dc/elements/1.1/description")
+	public void setDescription(String description) {
+		this.description = description;
+	}
+
+	/**
+	 * @return the description
+	 */
+	public String getDescription() {
+		return description;
+	}
+
+	/**
+	 * @param executionTimeoutInSeconds the executionTimeoutInSeconds to set
+	 */
+	@ConfigurationProperty(name = "executionTimeoutInSeconds", label = "Execution Timeout In Seconds")
+	public void setExecutionTimeoutInSeconds(int executionTimeoutInSeconds) {
+		this.executionTimeoutInSeconds = executionTimeoutInSeconds;
+	}
+
+	/**
+	 * @return the executionTimeoutInSeconds
+	 */
+	public int getExecutionTimeoutInSeconds() {
+		return executionTimeoutInSeconds;
+	}
+
+	/**
+	 * @param inputs the inputs to set
+	 */
+	public void setInputs(Map<String, ScriptInput> inputs) {
+		this.inputs = inputs;
+	}
+
+	@ConfigurationProperty(name = "inputs", label = "Inputs", required=false)
+	public void setInputs(Set<InputMap> inputs) {
+		if (inputs != null) {
+			this.inputs = new HashMap<String, ScriptInput>();
+			for (InputMap inputMap : inputs) {
+				this.inputs.put(inputMap.getPort(), inputMap.getInput());
+			}
+		} else {
+			this.inputs = null;
+		}
+	}
+
+	/**
+	 * @return the inputs
+	 */
+	public Map<String, ScriptInput> getInputs() {
+		if (inputs == null) {
+			inputs = new HashMap<String, ScriptInput>();
+		}
+		return inputs;
+	}
+
+	/**
+	 * @param outputs the outputs to set
+	 */
+	public void setOutputs(Map<String, ScriptOutput> outputs) {
+		this.outputs = outputs;
+	}
+
+	@ConfigurationProperty(name = "outputs", label = "Outputs", required=false)
+	public void setOutputs(Set<OutputMap> outputs) {
+		if (outputs != null) {
+			this.outputs = new HashMap<String, ScriptOutput>();
+			for (OutputMap outputMap : outputs) {
+				this.outputs.put(outputMap.getPort(), outputMap.getOutput());
+			}
+		} else {
+			this.outputs = null;
+		}
+	}
+
+	/**
+	 * @return the outputs
+	 */
+	public Map<String, ScriptOutput> getOutputs() {
+		if (outputs == null) {
+			outputs = new HashMap<String, ScriptOutput>();
+		}
+		return outputs;
+	}
+
+	/**
+	 * @param preparingTimeoutInSeconds the preparingTimeoutInSeconds to set
+	 */
+	@ConfigurationProperty(name = "preparingTimeoutInSeconds", label = "Preparing Timeout In Seconds")
+	public void setPreparingTimeoutInSeconds(int preparingTimeoutInSeconds) {
+		this.preparingTimeoutInSeconds = preparingTimeoutInSeconds;
+	}
+
+	/**
+	 * @return the preparingTimeoutInSeconds
+	 */
+	public int getPreparingTimeoutInSeconds() {
+		return preparingTimeoutInSeconds;
+	}
+
+	/**
+	 * @param queue_deny the queue_deny to set
+	 */
+	public void setQueue_deny(ArrayList<String> queue_deny) {
+		this.queue_deny = queue_deny;
+	}
+
+	/**
+	 * @return the queue_deny
+	 */
+	public ArrayList<String> getQueue_deny() {
+		if (queue_deny == null) {
+			queue_deny = new ArrayList<String>();
+		}
+		return queue_deny;
+	}
+
+	/**
+	 * @param queue_preferred the queue_preferred to set
+	 */
+	public void setQueue_preferred(ArrayList<String> queue_preferred) {
+		this.queue_preferred = queue_preferred;
+	}
+
+	/**
+	 * @return the queue_preferred
+	 */
+	public ArrayList<String> getQueue_preferred() {
+		if (queue_preferred == null) {
+			queue_preferred = new ArrayList<String>();
+		}
+		return queue_preferred;
+	}
+
+	/**
+	 * @param rEs the rEs to set
+	 */
+	public void setREs(List<RuntimeEnvironmentConstraint> rEs) {
+		REs = rEs;
+	}
+
+	/**
+	 * @return the rEs
+	 */
+	public List<RuntimeEnvironmentConstraint> getREs() {
+		if (REs == null) {
+			REs = new ArrayList<RuntimeEnvironmentConstraint>();
+		}
+		return REs;
+	}
+
+	/**
+	 * @param static_inputs the static_inputs to set
+	 */
+	@ConfigurationProperty(name = "staticInputs", label = "Static Inputs", ordering=OrderPolicy.NON_ORDERED, required=false)
+	public void setStatic_inputs(List<ScriptInputStatic> static_inputs) {
+		this.static_inputs = static_inputs;
+	}
+
+	/**
+	 * @return the static_inputs
+	 */
+	public List<ScriptInputStatic> getStatic_inputs() {
+		if (static_inputs == null) {
+			static_inputs = new ArrayList<ScriptInputStatic>();
+		}
+		return static_inputs;
+	}
+
+	/**
+	 * @param tags the tags to set
+	 */
+	public void setTags(List<String> tags) {
+		this.tags = tags;
+	}
+
+	/**
+	 * @return the tags
+	 */
+	public List<String> getTags() {
+		if (tags == null) {
+			tags = new ArrayList<String>();
+		}
+		return tags;
+	}
+
+	/**
+	 * @param usecaseid the usecaseid to set
+	 */
+	@ConfigurationProperty(name = "usecaseid", label = "Title", uri="http://purl.org/dc/elements/1.1/title", required=false)
+	public void setUsecaseid(String usecaseid) {
+		this.usecaseid = usecaseid;
+	}
+
+	/**
+	 * @return the usecaseid
+	 */
+	public String getUsecaseid() {
+		return usecaseid;
+	}
+
+	public boolean isIncludeStdIn() {
+		return includeStdIn;
+	}
+
+	@ConfigurationProperty(name = "includeStdIn", label = "Include STDIN")
+	public void setIncludeStdIn(boolean includeStdIn) {
+		this.includeStdIn = includeStdIn;
+	}
+
+	public boolean isIncludeStdOut() {
+		return includeStdOut;
+	}
+
+	@ConfigurationProperty(name = "includeStdOut", label = "Include STDOUT")
+	public void setIncludeStdOut(boolean includeStdOut) {
+		this.includeStdOut = includeStdOut;
+	}
+
+	public boolean isIncludeStdErr() {
+		return includeStdErr;
+	}
+
+	@ConfigurationProperty(name = "includeStdErr", label = "Include STDERR")
+	public void setIncludeStdErr(boolean includeStdErr) {
+		this.includeStdErr = includeStdErr;
+	}
+
+	/**
+	 * @return the validReturnCodes
+	 */
+	public List<Integer> getValidReturnCodes() {
+		if (validReturnCodes == null) {
+			validReturnCodes = new ArrayList<Integer>();
+		}
+		if (validReturnCodes.isEmpty()) {
+			validReturnCodes.add(0);
+		}
+		return validReturnCodes;
+	}
+
+	/**
+	 * @param validReturnCodes the validReturnCodes to set
+	 */
+	public void setValidReturnCodes(List<Integer> validReturnCodes) {
+		this.validReturnCodes = validReturnCodes;
+	}
+
+	public String getReturnCodesAsText() {
+		return StringUtils.join(getValidReturnCodes(), ",");
+	}
+
+	public void setReturnCodesAsText(String text) {
+		if (getValidReturnCodes() == null) {
+			validReturnCodes = new ArrayList<Integer>();
+		}
+		validReturnCodes.clear();
+		String[] codes = text.split(",");
+		for (String code : codes) {
+			try {
+				Integer codeInt = new Integer(code);
+				if (!validReturnCodes.contains(codeInt)) {
+					validReturnCodes.add(codeInt);
+				}
+			}
+			catch (NumberFormatException e) {
+				logger.error(e);
+			}
+		}
+		if (validReturnCodes.isEmpty()) {
+			validReturnCodes.add(0);
+		}
+		Collections.sort(validReturnCodes);
+	}
+
+	/**
+	 * @return the group
+	 */
+	public String getGroup() {
+		return group;
+	}
+
+	/**
+	 * @param group the group to set
+	 */
+	public void setGroup(String group) {
+		this.group = group;
+	}
+
+	/**
+	 * @return the icon_url
+	 */
+	public String getIcon_url() {
+		return icon_url;
+	}
+
+	@ConfigurationBean(uri = ExternalToolActivity.URI + "#OutputMap")
+	public static class OutputMap {
+		private String port;
+
+		private ScriptOutput output;
+
+		public String getPort() {
+			return port;
+		}
+
+		@ConfigurationProperty(name = "port", label = "Port")
+		public void setPort(String port) {
+			this.port = port;
+		}
+
+		public ScriptOutput getOutput() {
+			return output;
+		}
+
+		@ConfigurationProperty(name = "output", label = "Output")
+		public void setOutput(ScriptOutput output) {
+			this.output = output;
+		}
+	}
+
+	@ConfigurationBean(uri = ExternalToolActivity.URI + "#InputMap")
+	public static class InputMap {
+		private String port;
+
+		private ScriptInputUser input;
+
+		public String getPort() {
+			return port;
+		}
+
+		@ConfigurationProperty(name = "port", label = "Port")
+		public void setPort(String port) {
+			this.port = port;
+		}
+
+		public ScriptInputUser getInput() {
+			return input;
+		}
+
+		@ConfigurationProperty(name = "input", label = "Input")
+		public void setInput(ScriptInputUser input) {
+			this.input = input;
+		}
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/UseCaseEnumeration.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/UseCaseEnumeration.java
new file mode 100644
index 0000000..ea51c7b
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/UseCaseEnumeration.java
@@ -0,0 +1,114 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.usecases;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.taverna.t2.workflowmodel.serialization.DeserializationException;
+
+import org.apache.log4j.Logger;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+
+public class UseCaseEnumeration {
+
+	private static Logger logger = Logger.getLogger(UseCaseEnumeration.class);
+
+	public static List<UseCaseDescription> readDescriptionsFromUrl(String xmlFileUrl) throws IOException {
+
+		List<UseCaseDescription> ret = new ArrayList<UseCaseDescription>();
+		URLConnection con = null;
+		try {
+			URL url = new URL(xmlFileUrl);
+
+			con = url.openConnection();
+			con.setConnectTimeout(4000);
+			ret = readDescriptionsFromStream(con.getInputStream());
+			
+		} catch (IOException ioe) {
+			logger.error("Problem retrieving from " + xmlFileUrl);
+			logger.error(ioe);
+			throw ioe;
+		}
+		finally {
+
+		}
+
+		return ret;
+
+	}
+	
+	public static List<UseCaseDescription> readDescriptionsFromStream(InputStream is) {
+		
+		List<UseCaseDescription> ret = new ArrayList<UseCaseDescription>();
+
+		SAXBuilder builder = new SAXBuilder();
+		Document doc = null;
+		try {
+			doc = builder.build(is);
+			is.close();
+		} catch (JDOMException e1) {
+			logger.error(e1);
+			return ret;
+		} catch (IOException e1) {
+			logger.error(e1);
+			return ret;
+		} finally {
+			try {
+				is.close();
+			} catch (IOException e) {
+				logger.error(e);
+			}
+		}
+
+		Element usecases = doc.getRootElement();
+		for (Object ochild : usecases.getChildren()) {
+			Element child = (Element) ochild;
+			if (child.getName().equalsIgnoreCase("program")) {
+					try {
+						ret.add(new UseCaseDescription(child));
+					} catch (DeserializationException e) {
+						logger.error(e);
+					}
+			}
+		}
+		return ret;
+	}
+
+	public static UseCaseDescription readDescriptionFromUrl(
+			String repositoryUrl, String id) throws IOException {
+		List<UseCaseDescription> descriptions = readDescriptionsFromUrl(repositoryUrl);
+		for (UseCaseDescription usecase : descriptions) {
+			if (usecase.getUsecaseid().equals(id)) {
+				return usecase;
+			}
+		}
+		return null;
+	}
+}
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/AskUserForPw.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/AskUserForPw.java
new file mode 100644
index 0000000..9c54b1d
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/AskUserForPw.java
@@ -0,0 +1,34 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.usecases.invocation;
+
+public interface AskUserForPw {
+
+	// we will try keyfile first
+	public String getKeyfile();
+	public String getPassphrase();
+
+	// then username+password
+	public String getUsername();
+	public String getPassword();
+
+	public void authenticationSucceeded();
+}
\ No newline at end of file
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/InvocationException.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/InvocationException.java
new file mode 100644
index 0000000..d714ab1
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/InvocationException.java
@@ -0,0 +1,25 @@
+/**
+ * 
+ */
+package de.uni_luebeck.inb.knowarc.usecases.invocation;
+
+/**
+ * @author alanrw
+ *
+ */
+public class InvocationException extends Exception {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 437316164959631591L;
+
+	public InvocationException(String string) {
+		super(string);
+	}
+	
+	public InvocationException(Exception e) {
+		super(e);
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/UseCaseInvocation.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/UseCaseInvocation.java
new file mode 100644
index 0000000..6154d05
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/UseCaseInvocation.java
@@ -0,0 +1,324 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.usecases.invocation;
+
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.io.IOUtils;
+
+import net.sf.taverna.t2.invocation.InvocationContext;
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.Identified;
+import net.sf.taverna.t2.reference.IdentifiedList;
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.ReferenceServiceException;
+import net.sf.taverna.t2.reference.ReferenceSet;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.reference.impl.external.object.InlineByteArrayReferenceBuilder;
+import net.sf.taverna.t2.reference.impl.external.object.InlineStringReferenceBuilder;
+import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
+import de.uni_luebeck.inb.knowarc.usecases.ScriptInputStatic;
+import de.uni_luebeck.inb.knowarc.usecases.ScriptInputUser;
+import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
+
+/**
+ * An abstraction of various forms to bring job using the software that is
+ * referenced as a use case towards their execution.
+ * 
+ * @author Hajo Nils Krabbenhoeft with some contribution by
+ * @author Steffen Moeller
+ */
+public abstract class UseCaseInvocation {
+	
+	private String runId;
+	
+	
+	protected static String getActualOsCommand(String osCommand, String pathToOriginal,
+			String targetName, String pathTarget) {
+				String actualOsCommand = osCommand;
+				actualOsCommand = actualOsCommand.replace("%%PATH_TO_ORIGINAL%%", pathToOriginal);
+				actualOsCommand = actualOsCommand.replace("%%TARGET_NAME%%", targetName);
+				actualOsCommand = actualOsCommand.replace("%%PATH_TO_TARGET%%", pathTarget);
+				return actualOsCommand;
+			}
+
+	protected UseCaseDescription usecase;
+	protected final HashMap<String, String> tags = new HashMap<String, String>();
+	protected int nTempFiles = 0;
+	private static int submissionID = 0;
+	protected static InlineByteArrayReferenceBuilder inlineByteArrayReferenceBuilder = new InlineByteArrayReferenceBuilder();
+	protected static InlineStringReferenceBuilder inlineStringReferenceBuilder = new InlineStringReferenceBuilder();
+	private InvocationContext invocationContext;
+	private boolean retrieveData;
+	
+	/*
+	 * get the class of the data we expect for a given input
+	 */
+	@SuppressWarnings("unchecked")
+	public Class getType(String inputName) {
+		if (!usecase.getInputs().containsKey(inputName))
+			return null;
+		ScriptInputUser input = (ScriptInputUser) usecase.getInputs().get(inputName);
+		if (input.isList()) {
+			if (input.isBinary())
+				return List.class;
+			else
+				return List.class;
+		} else {
+			if (input.isBinary())
+				return byte[].class;
+			else
+				return String.class;
+		}
+	}
+
+	/*
+	 * get a list of all the input port names
+	 */
+	public Set<String> getInputs() {
+		return usecase.getInputs().keySet();
+	}
+
+
+	/*
+	 * get a id, incremented with each job. thus, this should be thread-wide
+	 * unique
+	 */
+	public synchronized int getSubmissionID() {
+		return submissionID++;
+	}
+
+	/*
+	 * set the data for the input port with given name
+	 */
+	@SuppressWarnings("unchecked")
+	public void setInput(String inputName, ReferenceService referenceService, T2Reference t2Reference) throws InvocationException {
+		if (t2Reference == null) {
+			throw new InvocationException("No input specified for " + inputName);
+		}
+		ScriptInputUser input = (ScriptInputUser) usecase.getInputs().get(inputName);
+		if (input.isList()) {
+			IdentifiedList<T2Reference> listOfReferences = (IdentifiedList<T2Reference>) referenceService
+					.getListService().getList(t2Reference);
+
+			if (!input.isConcatenate()) {
+				// this is a list input (not concatenated)
+				// so write every element to its own temporary file
+				// and create a filelist file
+
+				// we need to write the list elements to temporary files
+				ScriptInputUser listElementTemp = new ScriptInputUser();
+				listElementTemp.setBinary(input.isBinary());
+				listElementTemp.setTempFile(true);
+
+				String lineEndChar = "\n";
+				if (!input.isFile() && !input.isTempFile()) {
+					lineEndChar = " ";
+				}
+
+				String listFileContent = "";
+				String filenamesFileContent = "";
+				// create a list of all temp file names
+				for (T2Reference cur : listOfReferences) {
+					String tmp = setOneInput(referenceService, cur,
+							listElementTemp);
+					listFileContent += tmp + lineEndChar;
+					int ind = tmp.lastIndexOf('/');
+					if (ind == -1) {
+						ind = tmp.lastIndexOf('\\');
+					}
+					if (ind != -1) {
+						tmp = tmp.substring(ind + 1);
+					}
+					filenamesFileContent += tmp + lineEndChar;
+				}
+
+				// how do we want the listfile to be stored?
+				ScriptInputUser listFile = new ScriptInputUser();
+				listFile.setBinary(false); // since its a list file
+				listFile.setFile(input.isFile());
+				listFile.setTempFile(input.isTempFile());
+				listFile.setTag(input.getTag());
+				T2Reference listFileContentReference = referenceService
+						.register(listFileContent, 0, true, invocationContext);
+
+				tags.put(listFile.getTag(), setOneInput(referenceService,
+						listFileContentReference, listFile));
+
+				listFile.setTag(input.getTag() + "_NAMES");
+				T2Reference filenamesFileContentReference = referenceService
+						.register(filenamesFileContent, 0, true, null);
+				tags.put(listFile.getTag(), setOneInput(referenceService,
+						filenamesFileContentReference, listFile));
+			} else {
+				try {
+					// first, concatenate all data
+					if (input.isBinary()) {
+						ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+						BufferedWriter outputWriter = new BufferedWriter(
+								new OutputStreamWriter(outputStream));
+						for (T2Reference cur : listOfReferences) {
+							InputStreamReader inputReader = new InputStreamReader(
+									getAsStream(referenceService, cur));
+							IOUtils.copyLarge(inputReader, outputWriter);
+							inputReader.close();
+						}
+						outputWriter.close();
+						T2Reference binaryReference = referenceService
+								.register(outputStream.toByteArray(), 0, true,
+										invocationContext);
+						tags.put(input.getTag(), setOneInput(referenceService,
+								binaryReference, input));
+					} else {
+						ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+						BufferedWriter outputWriter = new BufferedWriter(
+								new OutputStreamWriter(outputStream));
+						for (T2Reference cur : listOfReferences) {
+							InputStreamReader inputReader = new InputStreamReader(
+									getAsStream(referenceService, cur));
+							IOUtils.copyLarge(inputReader, outputWriter);
+							outputWriter.write(" ");
+							inputReader.close();
+						}
+						outputWriter.close();
+						T2Reference binaryReference = referenceService
+								.register(outputStream.toByteArray(), 0, true,
+										invocationContext);
+						tags.put(input.getTag(), setOneInput(referenceService,
+								binaryReference, input));
+					}
+				} catch (IOException e) {
+					throw new InvocationException(e);
+				}
+			}
+		} else {
+			tags.put(input.getTag(), setOneInput(referenceService, t2Reference,
+					input));
+		}
+	}
+
+	/*
+	 * submit a grid job and wait for it to finish, then get the result as
+	 * on-demand downloads or directly as data (in case of local execution)
+	 */
+	public HashMap<String, Object> Submit(ReferenceService referenceService) throws InvocationException {
+		submit_generate_job(referenceService);
+		return submit_wait_fetch_results(referenceService);
+	}
+
+	/*
+	 * just submit the job. useful if you want to wait for it to finish later on
+	 * 
+	 * Can the statics be made more static?
+	 */
+	public void submit_generate_job(ReferenceService referenceService) throws InvocationException {
+		for (ScriptInputStatic input : usecase.getStatic_inputs()) {
+			T2Reference ref;
+			if (input.getUrl() != null) {
+				// Does this work OK with binary
+				try {
+					ref = referenceService.register(new URL(input.getUrl()), 0, true, null);
+				} catch (ReferenceServiceException e) {
+					throw new InvocationException(e);
+				} catch (MalformedURLException e) {
+					throw new InvocationException(e);
+				}
+			} else {
+				ref = referenceService.register((String) input.getContent(), 0, true, null);
+			}
+				tags.put(input.getTag(), setOneInput(referenceService, ref, input));
+			
+		}
+		submit_generate_job_inner();
+	}
+
+	protected abstract void submit_generate_job_inner() throws InvocationException;
+
+	/*
+	 * wait for a submitted job to finish and fetch the results
+	 */
+	public abstract HashMap<String, Object> submit_wait_fetch_results(ReferenceService referenceService) throws InvocationException;
+
+	public abstract String setOneInput(ReferenceService referenceService, T2Reference t2Reference, ScriptInput input) throws InvocationException;
+
+	protected InputStream getAsStream(ReferenceService referenceService, T2Reference t2Reference) {
+		Identified identified = referenceService.resolveIdentifier(t2Reference, null, null);
+		if (identified instanceof ReferenceSet) {
+			ExternalReferenceSPI ref = ((ReferenceSet) identified).getExternalReferences().iterator().next();
+			return ref.openStream(invocationContext);
+		}
+		return null;
+	}
+
+	public void setContext(InvocationContext context) {
+		this.invocationContext = context;
+		
+	}
+	
+	public InvocationContext getContext() {
+		return this.invocationContext;
+	}
+
+	public abstract void setStdIn(ReferenceService referenceService,
+			T2Reference t2Reference);
+
+	public abstract void rememberRun(String runId);
+
+	/**
+	 * @return the runId
+	 */
+	protected String getRunId() {
+		return runId;
+	}
+
+	/**
+	 * @param runId the runId to set
+	 */
+	protected void setRunId(String runId) {
+		this.runId = runId;
+	}
+
+	/**
+	 * @return the retrieveData
+	 */
+	protected boolean isRetrieveData() {
+		return retrieveData;
+	}
+
+	/**
+	 * @param retrieveData the retrieveData to set
+	 */
+	protected void setRetrieveData(boolean retrieveData) {
+		this.retrieveData = retrieveData;
+	}
+	
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/local/LocalUseCaseInvocation.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/local/LocalUseCaseInvocation.java
new file mode 100755
index 0000000..3541b8f
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/local/LocalUseCaseInvocation.java
@@ -0,0 +1,563 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.usecases.invocation.local;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+
+import net.sf.taverna.t2.reference.AbstractExternalReference;
+import net.sf.taverna.t2.reference.ErrorDocument;
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.Identified;
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.ReferenceSet;
+import net.sf.taverna.t2.reference.ReferencedDataNature;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.reference.impl.external.file.FileReference;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.log4j.Logger;
+
+import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
+import de.uni_luebeck.inb.knowarc.usecases.ScriptOutput;
+import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.InvocationException;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.UseCaseInvocation;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshNode;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshNodeFactory;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshUrl;
+
+/**
+ * The job is executed locally, i.e. not via the grid.
+ * @author Hajo Krabbenhoeft
+ */
+public class LocalUseCaseInvocation extends UseCaseInvocation {
+
+	private static Logger logger = Logger.getLogger(LocalUseCaseInvocation.class);
+
+	private final File tempDir;
+	
+	public static String LOCAL_USE_CASE_INVOCATION_TYPE = "789663B8-DA91-428A-9F7D-B3F3DA185FD4";
+	
+	private Process running;
+
+	private final String shellPrefix;
+
+	private final String linkCommand;
+
+	private Reader stdInReader = null;
+	
+	private static Map<String, Set<String>> runIdToTempDir = Collections.synchronizedMap(new HashMap<String, Set<String>> ());
+	
+	private static String LOCAL_INVOCATION_FILE = "localInvocations";
+
+	public LocalUseCaseInvocation(UseCaseDescription desc, boolean retrieveData, String mainTempDirectory, String shellPrefix, String linkCommand) throws IOException {
+
+		usecase = desc;
+		setRetrieveData(retrieveData);
+		this.shellPrefix = shellPrefix;
+		this.linkCommand = linkCommand;
+		
+		if (mainTempDirectory != null) {
+		
+			File mainTempDir = new File(mainTempDirectory);
+
+			tempDir = File.createTempFile("usecase", "dir", mainTempDir);
+		} else {
+			tempDir = File.createTempFile("usecase", "dir");
+		}
+		tempDir.delete();
+		tempDir.mkdir();
+		logger.info("mainTempDirectory is " + mainTempDirectory);
+		logger.info("Using tempDir " + tempDir.getAbsolutePath());
+
+	}
+
+	void recDel(File c) {
+		File[] files = c.listFiles();
+		if (files != null) {
+			for (File cc : files)
+				recDel(cc);
+		}
+		c.delete();
+	}
+	
+	private String setOneBinaryInput(ReferenceService referenceService,
+			T2Reference t2Reference, ScriptInput input, String targetSuffix)
+			throws InvocationException {
+
+		if (input.isFile() || input.isTempFile()) {
+			// Try to get it as a file
+			String target = tempDir.getAbsolutePath() + "/" + targetSuffix;
+			FileReference fileRef = getAsFileReference(referenceService,
+					t2Reference);
+			if (fileRef != null) {
+
+				if (!input.isForceCopy()) {
+					if (linkCommand != null) {
+						String source = fileRef.getFile().getAbsolutePath();
+						String actualLinkCommand = getActualOsCommand(
+								linkCommand, source, targetSuffix, target);
+						logger.info("Link command is " + actualLinkCommand);
+						String[] splitCmds = actualLinkCommand.split(" ");
+						ProcessBuilder builder = new ProcessBuilder(splitCmds);
+						builder.directory(tempDir);
+						try {
+							int code = builder.start().waitFor();
+							if (code == 0) {
+								return target;
+							} else {
+								logger.error("Link command gave errorcode: "
+										+ code);
+							}
+
+						} catch (InterruptedException e) {
+							// go through
+						} catch (IOException e) {
+							// go through
+						}
+
+					}
+				}
+			}
+
+			InputStream is = null;
+			OutputStream os = null;
+			is = getAsStream(referenceService, t2Reference);
+
+			try {
+				os = new FileOutputStream(target);
+			} catch (FileNotFoundException e) {
+				throw new InvocationException(e);
+			}
+
+			try {
+				IOUtils.copyLarge(is, os);
+			} catch (IOException e) {
+				throw new InvocationException(e);
+			}
+			try {
+				is.close();
+				os.close();
+			} catch (IOException e) {
+				throw new InvocationException(e);
+			}
+			return target;
+		} else {
+			String value = (String) referenceService.renderIdentifier(
+					t2Reference, String.class, this.getContext());
+			return value;
+		}
+	}
+	
+	@Override
+	public String setOneInput(ReferenceService referenceService,
+			T2Reference t2Reference, ScriptInput input)
+			throws InvocationException {
+
+		if (input.getCharsetName() == null) {
+			input.setCharsetName(Charset.defaultCharset().name());
+		}
+		String target = null;
+		String targetSuffix = null;
+		if (input.isFile()) {
+			targetSuffix = input.getTag();
+		} else if (input.isTempFile()) {
+			targetSuffix = "tempfile." + (nTempFiles++) + ".tmp";
+		}
+
+		if (input.isBinary()) {
+			return setOneBinaryInput(referenceService, t2Reference, input,
+					targetSuffix);
+		}
+
+		logger.info("Target is " + target);
+		if (input.isFile() || input.isTempFile()) {
+			target = tempDir.getAbsolutePath() + "/" + targetSuffix;
+			// Try to get it as a file
+			Reader r;
+			Writer w;
+			FileReference fileRef = getAsFileReference(referenceService,
+					t2Reference);
+			if (fileRef != null) {
+
+				if (!input.isForceCopy()) {
+					if (linkCommand != null) {
+						String source = fileRef.getFile().getAbsolutePath();
+						String actualLinkCommand = getActualOsCommand(
+								linkCommand, source, targetSuffix, target);
+						logger.info("Link command is " + actualLinkCommand);
+						String[] splitCmds = actualLinkCommand.split(" ");
+						ProcessBuilder builder = new ProcessBuilder(splitCmds);
+						builder.directory(tempDir);
+						try {
+							int code = builder.start().waitFor();
+							if (code == 0) {
+								return target;
+							} else {
+								logger.error("Link command gave errorcode: "
+										+ code);
+							}
+
+						} catch (InterruptedException e) {
+							// go through
+						} catch (IOException e) {
+							// go through
+						}
+
+					}
+				}
+
+				if (fileRef.getDataNature().equals(ReferencedDataNature.TEXT)) {
+					r = new InputStreamReader(fileRef.openStream(this
+							.getContext()), Charset.forName(fileRef
+							.getCharset()));
+				} else {
+					try {
+						r = new FileReader(fileRef.getFile());
+					} catch (FileNotFoundException e) {
+						throw new InvocationException(e);
+					}
+				}
+			} else {
+				r = new InputStreamReader(getAsStream(referenceService,
+						t2Reference));
+			}
+			try {
+				w = new OutputStreamWriter(new FileOutputStream(target), input
+						.getCharsetName());
+			} catch (UnsupportedEncodingException e) {
+				throw new InvocationException(e);
+			} catch (FileNotFoundException e) {
+				throw new InvocationException(e);
+			}
+			try {
+				IOUtils.copyLarge(r, w);
+			} catch (IOException e) {
+				throw new InvocationException(e);
+			}
+			try {
+				r.close();
+				w.close();
+			} catch (IOException e) {
+				throw new InvocationException(e);
+			}
+			return target;
+		} else {
+			String value = (String) referenceService.renderIdentifier(
+					t2Reference, String.class, this.getContext());
+			return value;
+		}
+	}
+	
+	private void forgetRun() {
+		Set<String> directories = runIdToTempDir.get(getRunId());
+		try {
+			directories.remove(tempDir.getCanonicalPath());
+		} catch (IOException e) {
+			logger.error(e);
+		}
+	}
+
+	private static void deleteDirectory(String location) {
+		try {
+			FileUtils.deleteDirectory(new File(location));
+		} catch (IOException e) {
+			logger.error("Problem deleting " + location, e);
+		}
+	}
+	
+	public static void cleanup(String runId) {
+		Set<String> tempDirectories = runIdToTempDir.get(runId);
+		if (tempDirectories != null) {
+			for (String tempDir : tempDirectories) {
+				deleteDirectory(tempDir);
+			}
+			runIdToTempDir.remove(runId);
+		}
+	}
+	
+	@Override
+	protected void submit_generate_job_inner() throws InvocationException {
+		tags.put("uniqueID", "" + getSubmissionID());
+		String command = usecase.getCommand();
+		for (String cur : tags.keySet()) {
+		    command = command.replaceAll("\\Q%%" + cur + "%%\\E", Matcher.quoteReplacement(tags.get(cur)));
+		}
+
+		List<String> cmds = new ArrayList<String>();
+		if ((shellPrefix != null) && !shellPrefix.isEmpty()) {
+			String[] prefixCmds = shellPrefix.split(" ");
+			for (int i = 0; i < prefixCmds.length; i++) {
+				cmds.add(prefixCmds[i]);
+			}
+			cmds.add(command);
+		} else {
+			String[] splitCmds = command.split(" ");
+			for (int i = 0; i < splitCmds.length; i++) {
+				cmds.add(splitCmds[i]);
+			}
+		}
+	
+		ProcessBuilder builder = new ProcessBuilder(cmds);
+		builder.directory(tempDir);
+
+		for (int i = 0; i < cmds.size(); i++) {
+			logger.info("cmds[" + i + "] = " + cmds.get(i));
+		}
+		logger.info("Command is " + command + " in directory " + tempDir);
+		try {
+			running = builder.start();
+			if (stdInReader != null) {
+				BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(running.getOutputStream()));
+				IOUtils.copyLarge(stdInReader, writer);
+				writer.close();
+			}
+		} catch (IOException e) {
+			throw new InvocationException(e);
+		}
+	}
+
+	private void copy_stream(InputStream read, OutputStream write) throws IOException {
+		int a = read.available();
+		if (a > 0) {
+			byte[] buf = new byte[a];
+			read.read(buf);
+			write.write(buf);
+		}
+	}
+
+	@Override
+	public HashMap<String, Object> submit_wait_fetch_results(ReferenceService referenceService) throws InvocationException {
+		ByteArrayOutputStream stdout_buf = new ByteArrayOutputStream();
+		ByteArrayOutputStream stderr_buf = new ByteArrayOutputStream();
+		while (true) {
+			try {
+				copy_stream(running.getInputStream(), stdout_buf);
+				copy_stream(running.getErrorStream(), stderr_buf);
+			} catch (IOException e1) {
+				throw new InvocationException(e1);
+			}
+			try {
+				int exitcode = running.exitValue();
+				if (!usecase.getValidReturnCodes().contains(exitcode)) {
+					try {
+						throw new InvocationException("Invalid exit code " + exitcode + ":" + stderr_buf.toString("US-ASCII"));
+					} catch (UnsupportedEncodingException e) {
+						throw new InvocationException("Invalid exit code " + exitcode + ":" + stderr_buf.toString());
+					}
+				}
+				else
+					break;
+			} catch (IllegalThreadStateException e) {
+
+				try {
+					Thread.sleep(100);
+				} catch (InterruptedException e1) {
+					throw new InvocationException(e);
+				}
+
+			}
+		}
+
+		HashMap<String, Object> results = new HashMap<String, Object>();
+			results.put("STDOUT", stdout_buf.toByteArray());
+			results.put("STDERR", stderr_buf.toByteArray());
+
+		for (Map.Entry<String, ScriptOutput> cur : usecase.getOutputs().entrySet()) {
+			ScriptOutput scriptOutput = cur.getValue();
+			File result = new File(tempDir.getAbsoluteFile() + "/" + cur.getValue().getPath());
+			if (result.exists()) {
+				AbstractExternalReference ref;
+				if (isRetrieveData()) {
+					FileInputStream is;
+					try {
+						is = new FileInputStream(result);
+					} catch (FileNotFoundException e) {
+						throw new InvocationException(e);
+					}
+					if (scriptOutput.isBinary()) {
+						ref = inlineByteArrayReferenceBuilder.createReference(is, null);
+					} else {
+						ref = inlineStringReferenceBuilder.createReference(is, null);
+					}
+					try {
+						is.close();
+					} catch (IOException e) {
+						throw new InvocationException(e);
+					}
+				}
+				else {
+					ref = new FileReference(result);
+					if (scriptOutput.isBinary()) {
+						((FileReference) ref)
+								.setDataNature(ReferencedDataNature.BINARY);
+					} else {
+						((FileReference) ref)
+								.setDataNature(ReferencedDataNature.TEXT);
+						((FileReference) ref).setCharset("UTF-8");
+					}
+				}
+				results.put(cur.getKey(), ref);
+			} else {
+				ErrorDocument ed = referenceService.getErrorDocumentService().registerError("No result for " + cur.getKey(), 0, getContext());
+				results.put(cur.getKey(), ed);
+			}
+		}
+		
+		if (isRetrieveData()) {
+			forgetRun();
+			try {
+				deleteDirectory(tempDir.getCanonicalPath());
+			} catch (IOException e) {
+				throw new InvocationException(e);
+			}
+		}
+
+		return results;
+	}
+
+	private FileReference getAsFileReference(ReferenceService referenceService, T2Reference t2Reference) {
+		Identified identified = referenceService.resolveIdentifier(t2Reference, null, null);
+		if (identified instanceof ReferenceSet) {
+			for (ExternalReferenceSPI ref : ((ReferenceSet) identified).getExternalReferences()) {
+				if (ref instanceof FileReference) {
+					return (FileReference) ref;
+				}
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public void setStdIn(ReferenceService referenceService,
+			T2Reference t2Reference) {
+		stdInReader = new BufferedReader(new InputStreamReader(getAsStream(referenceService, t2Reference)));
+	}
+
+	@Override
+	public void rememberRun(String runId) {
+		this.setRunId(runId);
+		Set<String> directories = runIdToTempDir.get(runId);
+		if (directories == null) {
+			directories = Collections.synchronizedSet(new HashSet<String> ());
+			runIdToTempDir.put(runId, directories);
+		}
+		try {
+			directories.add(tempDir.getCanonicalPath());
+		} catch (IOException e) {
+			logger.error("Unable to record temporary directory: " + tempDir, e);
+		}
+	}
+
+	public static void load(File directory) {
+		File invocationsFile = new File(directory, LOCAL_INVOCATION_FILE);
+		if (!invocationsFile.exists()) {
+			return;
+		}
+		BufferedReader reader = null;
+		try {
+			reader = new BufferedReader(new FileReader(invocationsFile));
+			String line = reader.readLine();
+			while (line != null) {
+				String[] parts = line.split(" ");
+				if (parts.length != 2) {
+					break;
+				}
+				String runId = parts[0];
+				String tempDirString = parts[1];
+				Set<String> tempDirs = runIdToTempDir.get(runId);
+				if (tempDirs == null) {
+					tempDirs = new HashSet<String>();
+					runIdToTempDir.put(runId, tempDirs);
+				}
+				tempDirs.add(tempDirString);
+				line = reader.readLine();
+			}
+		} catch (FileNotFoundException e) {
+			logger.error(e);
+		} catch (IOException e) {
+			logger.error(e);
+		} finally {
+			if (reader != null) {
+				try {
+					reader.close();
+				} catch (IOException e) {
+					logger.error(e);
+				}
+			}
+		}
+	}
+
+	public static void persist(File directory) {
+		File invocationsFile = new File(directory, LOCAL_INVOCATION_FILE);
+		BufferedWriter writer = null;
+		try {
+			writer = new BufferedWriter(new FileWriter(invocationsFile));
+			for (String runId : runIdToTempDir.keySet()) {
+				for (String tempDir : runIdToTempDir.get(runId)) {
+					writer.write(runId);
+					writer.write(" ");
+					writer.write(tempDir);
+					writer.newLine();
+				}
+			}
+		} catch (IOException e) {
+			logger.error(e);
+		} finally {
+			if (writer != null) {
+				try {
+					writer.close();
+				} catch (IOException e) {
+					logger.error(e);
+				}
+			}
+		}
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshAutoLoginTrustEveryone.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshAutoLoginTrustEveryone.java
new file mode 100644
index 0000000..60d3bec
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshAutoLoginTrustEveryone.java
@@ -0,0 +1,72 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
+
+import org.apache.log4j.Logger;
+
+import com.jcraft.jsch.UIKeyboardInteractive;
+import com.jcraft.jsch.UserInfo;
+
+import de.uni_luebeck.inb.knowarc.usecases.invocation.AskUserForPw;
+
+final class SshAutoLoginTrustEveryone implements UserInfo, UIKeyboardInteractive {
+	
+	private static Logger logger = Logger.getLogger(SshAutoLoginTrustEveryone.class);
+
+	private final AskUserForPw askUserForPw;
+
+	public SshAutoLoginTrustEveryone(AskUserForPw askUserForPw) {
+		super();
+		this.askUserForPw = askUserForPw;
+	}
+
+	public void showMessage(String arg0) {
+		logger.info(arg0);
+	}
+
+	public boolean promptYesNo(String arg0) {
+		if (arg0.startsWith("The authenticity of host"))
+			return true;
+		return false;
+	}
+
+	public boolean promptPassword(String arg0) {
+		return true;
+	}
+
+	public boolean promptPassphrase(String arg0) {
+		return true;
+	}
+
+	public String getPassword() {
+		return askUserForPw.getPassword();
+	}
+
+	public String getPassphrase() {
+		return askUserForPw.getPassphrase();
+	}
+
+	public String[] promptKeyboardInteractive(String destination, String name, String instruction, String[] prompt, boolean[] echo) {
+		if (prompt.length >= 1 && prompt[0].toLowerCase().startsWith("password"))
+			return new String[] { askUserForPw.getPassword() };
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshNode.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshNode.java
new file mode 100644
index 0000000..92b065e
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshNode.java
@@ -0,0 +1,159 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
+
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
+
+public class SshNode {
+	
+    public static String DEFAULT_HOST = "127.0.0.1";
+    public static int DEFAULT_PORT = 22;
+    public static String DEFAULT_DIRECTORY = "/tmp/";
+
+    private String host = DEFAULT_HOST;
+    private int port = DEFAULT_PORT;
+    private String directory = DEFAULT_DIRECTORY;
+	
+	private SshUrl url;
+	
+	private String linkCommand = null;
+	private String copyCommand = null;
+	private boolean retrieveData = false;
+
+	/**
+	 * 
+	 */
+	SshNode() {
+		super();
+		linkCommand = InvocationMechanism.UNIX_LINK;
+		copyCommand = InvocationMechanism.UNIX_COPY;
+		
+	}
+	/**
+	 * @param directory the directory to set
+	 */
+	public void setDirectory(String directory) {
+		if ((directory != null) && !directory.isEmpty()) {
+			if (!directory.endsWith("/")) {
+				directory = directory + "/";
+			}
+			this.directory = directory;
+		}
+	}
+
+	/**
+	 * @return the directory
+	 */
+	public String getDirectory() {
+		return directory;
+	}
+
+	/**
+	 * @param host the host to set
+	 */
+	public void setHost(String host) {
+		this.host = host;
+	}
+
+	/**
+	 * @return the host
+	 */
+	public String getHost() {
+		return host;
+	}
+
+	/**
+	 * @param port the port to set
+	 */
+	public void setPort(int port) {
+		this.port = port;
+	}
+
+	/**
+	 * @return the port
+	 */
+	public int getPort() {
+		return port;
+	}
+	
+	SshUrl getUrl() {
+		if (url == null) {
+			url = new SshUrl(this);
+		}
+		return url;
+	}
+	
+	public int hashCode() {
+		return getUrl().hashCode();	
+	}
+
+	public boolean equals(Object obj) {
+		if ((obj == null) || !(obj instanceof SshNode)) {
+			return false;
+		}
+		return (this.hashCode() == obj.hashCode());
+	}
+	/**
+	 * @return the linkCommand
+	 */
+	public String getLinkCommand() {
+		return linkCommand;
+	}
+	/**
+	 * @param linkCommand the linkCommand to set
+	 */
+	public void setLinkCommand(String linkCommand) {
+		if ((linkCommand != null) && linkCommand.isEmpty()) {
+			this.linkCommand = null;
+		} else {
+			this.linkCommand = linkCommand;
+		}	}
+	/**
+	 * @return the copyCommand
+	 */
+	public String getCopyCommand() {
+		return copyCommand;
+	}
+	/**
+	 * @param copyCommand the copyCommand to set
+	 */
+	public void setCopyCommand(String copyCommand) {
+		if ((copyCommand != null) && copyCommand.isEmpty()) {
+			this.copyCommand = null;
+		} else {
+			this.copyCommand = copyCommand;
+		}
+	}
+	
+	/**
+	 * @return the retrieveData
+	 */
+	public boolean isRetrieveData() {
+		return retrieveData;
+	}
+	/**
+	 * @param retrieveData the retrieveData to set
+	 */
+	public void setRetrieveData(boolean retrieveData) {
+		this.retrieveData = retrieveData;
+	}
+	
+}
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshNodeFactory.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshNodeFactory.java
new file mode 100644
index 0000000..2d8f4bb
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshNodeFactory.java
@@ -0,0 +1,56 @@
+/**
+ * 
+ */
+package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author alanrw
+ *
+ */
+public class SshNodeFactory {
+	
+	private Map<String, SshNode> nodeMap = Collections.synchronizedMap(new HashMap<String, SshNode> ());
+	
+	private static SshNodeFactory INSTANCE = new SshNodeFactory();
+	
+	private SshNode defaultNode;
+	
+	private SshNodeFactory() {
+		defaultNode = getSshNode(SshNode.DEFAULT_HOST, SshNode.DEFAULT_PORT, SshNode.DEFAULT_DIRECTORY);
+	}
+
+	public SshNode getDefaultNode() {
+		return defaultNode;
+	}
+
+	public static SshNodeFactory getInstance() {
+		return INSTANCE;
+	}
+	
+	public SshNode getSshNode(String host, int port, String directory) {
+		String url = makeUrl(host, port, directory);
+		if (nodeMap.containsKey(url)) {
+			return nodeMap.get(url);
+		}
+		else {
+			SshNode newNode = new SshNode();
+			newNode.setHost(host);
+			newNode.setPort(port);
+			newNode.setDirectory(directory);
+			nodeMap.put(url, newNode);
+			return newNode;
+		}
+	}
+	
+	public boolean containsSshNode(String host, int port, String directory) {
+		return nodeMap.containsKey(makeUrl(host, port, directory));
+	}
+	
+	public static String makeUrl(String host, int port, String directory) {
+		return ("ssh://" + host + ":" + port + directory);
+	}
+}
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshPool.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshPool.java
new file mode 100755
index 0000000..c6a5851
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshPool.java
@@ -0,0 +1,148 @@
+/**
+ * 
+ */
+package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+import com.jcraft.jsch.ChannelExec;
+import com.jcraft.jsch.ChannelSftp;
+import com.jcraft.jsch.JSch;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.Session;
+
+import de.uni_luebeck.inb.knowarc.usecases.RuntimeEnvironmentConstraint;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.AskUserForPw;
+
+/**
+ * @author alanrw
+ *
+ */
+public class SshPool {
+	
+	private static Logger logger = Logger.getLogger(SshPool.class);
+
+	
+	private static JSch jsch = new JSch();
+	
+    private static int CONNECT_TIMEOUT = 10000; // milliseconds
+
+	private static Map<SshNode, Session> sessionMap = Collections.synchronizedMap(new HashMap<SshNode, Session> ());
+	private static Map<Session, ChannelSftp> sftpGetMap = Collections.synchronizedMap(new HashMap<Session, ChannelSftp> ());
+	private static Map<Session, ChannelSftp> sftpPutMap = Collections.synchronizedMap(new HashMap<Session, ChannelSftp> ());
+	
+	public static Session getSshSession(final SshUrl sshUrl, final AskUserForPw askUserForPw) throws JSchException {
+		return getSshSession(sshUrl.getSshNode(), askUserForPw);
+	}
+	
+	public static synchronized Session getSshSession(final SshNode sshNode, final AskUserForPw askUserForPw) throws JSchException {
+
+		Session s = sessionMap.get(sshNode);
+		if ((s != null) && s.isConnected()) {
+			logger.info("Reusing session");
+			return s;
+		}
+		if (s != null) {
+			logger.info("Session was not connected");
+		}
+		if (s == null) {
+			logger.info("No session found for " + sshNode.toString());
+		}
+
+		if (askUserForPw.getKeyfile().length() > 0) {
+			jsch.addIdentity(askUserForPw.getKeyfile());
+		}
+		logger.info("Using host is " + sshNode.getHost() + " and port " + sshNode.getPort());
+		Session sshSession = jsch.getSession(askUserForPw.getUsername(), sshNode.getHost(), sshNode.getPort());
+		sshSession.setUserInfo(new SshAutoLoginTrustEveryone(askUserForPw));
+		sshSession.connect(CONNECT_TIMEOUT);
+		
+		askUserForPw.authenticationSucceeded();
+		sessionMap.put(sshNode, sshSession);
+		if (sshSession == null) {
+			logger.error("Returning a null session");
+		}
+		return sshSession;
+	}
+	
+	public static ChannelSftp getSftpGetChannel(SshNode sshNode, final AskUserForPw askUserForPw) throws JSchException {
+		return getSftpGetChannel(getSshSession(sshNode, askUserForPw));
+	}
+
+	private static synchronized ChannelSftp getSftpGetChannel(Session session) throws JSchException {
+		ChannelSftp result = sftpGetMap.get(session);
+		if (!session.isConnected()) {
+			logger.warn("Session is not connected");
+		}
+		if (result == null) {
+			logger.info("Creating new sftp channel");
+			result = (ChannelSftp) session.openChannel("sftp");
+			sftpGetMap.put(session, result);
+		}
+		else {
+			logger.info("Reusing sftp channel");			
+		}
+		if (!result.isConnected()) {
+			logger.info("Connecting");
+			result.connect();
+		} else {
+			logger.info("Already connected");
+		}
+		return result;
+	}
+	
+	public static ChannelSftp getSftpPutChannel(SshNode sshNode, final AskUserForPw askUserForPw) throws JSchException {
+		return getSftpPutChannel(getSshSession(sshNode, askUserForPw));
+	}
+
+	private static synchronized ChannelSftp getSftpPutChannel(Session session) throws JSchException {
+	    ChannelSftp result = null;
+	    synchronized(sftpPutMap) {
+		result = sftpPutMap.get(session);
+		if (!session.isConnected()) {
+			logger.info("Session is not connected");
+		}
+		if (result == null) {
+			logger.info("Creating new sftp channel");
+			result = (ChannelSftp) session.openChannel("sftp");
+			sftpPutMap.put(session, result);
+		}
+		else {
+			logger.info("Reusing sftp channel");			
+		}
+	    }
+	    if (!result.isConnected()) {
+		logger.info("Connecting");
+		result.connect(CONNECT_TIMEOUT);
+	    } else {
+		logger.info("Already connected");
+	    }
+	    return result;
+	}
+	
+	public static synchronized ChannelExec openExecChannel(SshNode sshNode, final AskUserForPw askUserForPw) throws JSchException {
+		return (ChannelExec) getSshSession(sshNode, askUserForPw).openChannel("exec");
+	}
+
+	private static synchronized ChannelExec openExecChannel(Session session) throws JSchException {
+		return (ChannelExec) session.openChannel("exec");
+	}
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshReference.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshReference.java
new file mode 100644
index 0000000..0431153
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshReference.java
@@ -0,0 +1,208 @@
+/**
+ *
+ */
+package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
+
+import java.io.InputStream;
+
+import net.sf.taverna.t2.activities.externaltool.RetrieveLoginFromTaverna;
+import net.sf.taverna.t2.reference.AbstractExternalReference;
+import net.sf.taverna.t2.reference.DereferenceException;
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.ReferenceContext;
+import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
+import net.sf.taverna.t2.reference.ReferencedDataNature;
+
+import org.apache.log4j.Logger;
+
+import com.jcraft.jsch.ChannelSftp;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.SftpException;
+
+/**
+ * @author alanrw
+ *
+ */
+public class SshReference extends AbstractExternalReference implements
+	ExternalReferenceSPI {
+
+	private static Logger logger = Logger.getLogger(SshReference.class);
+
+
+	private String host = "127.0.0.1";
+	private int port = 22;
+	private String directory = "/tmp/";
+	private String subDirectory;
+	private String fileName;
+
+	private CredentialManager credentialManager;
+
+	private int dataNatureInteger = ReferencedDataNature.UNKNOWN.ordinal();
+	private String charset = "UTF-8";
+	
+	public SshReference() {
+		super();
+	}
+
+	public SshReference(SshUrl url) {
+		super();
+		this.host = url.getSshNode().getHost();
+		this.port = url.getSshNode().getPort();
+		this.directory = url.getSshNode().getDirectory();
+		this.subDirectory = url.getSubDirectory();
+		this.fileName = url.getFileName();
+		this.setDataNature(url.getDataNature());
+		this.setCharset(url.getCharset());
+	}
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.reference.ExternalReferenceSPI#getApproximateSizeInBytes()
+	 */
+	@Override
+	public Long getApproximateSizeInBytes() {
+		return 10000L;
+	}
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.reference.ExternalReferenceSPI#openStream(net.sf.taverna.t2.reference.ReferenceContext)
+	 */
+	@Override
+	public InputStream openStream(ReferenceContext context)
+			throws DereferenceException {
+		try {
+			SshNode node = SshNodeFactory.getInstance().getSshNode(this.getHost(), this.getPort(), this.getDirectory());
+			String fullPath = getDirectory() +  getSubDirectory() + "/" + getFileName();
+			ChannelSftp channel = SshPool.getSftpGetChannel(node, new RetrieveLoginFromTaverna(new SshUrl(node).toString(), credentialManager));
+			logger.info("Opening stream on " + fullPath);
+			return (channel.get(fullPath));
+		} catch (JSchException e) {
+			//TODO
+			logger.error(e);
+		} catch (SftpException e) {
+			// TODO Auto-generated catch block
+			logger.error(e);
+		}
+		return null;
+	}
+
+	/**
+	 * @return the host
+	 */
+	public String getHost() {
+		return host;
+	}
+
+	/**
+	 * @param host the host to set
+	 */
+	public void setHost(String host) {
+		this.host = host;
+	}
+
+	/**
+	 * @return the port
+	 */
+	public int getPort() {
+		return port;
+	}
+
+	/**
+	 * @param port the port to set
+	 */
+	public void setPort(int port) {
+		this.port = port;
+	}
+
+	/**
+	 * @return the directory
+	 */
+	public String getDirectory() {
+		return directory;
+	}
+
+	/**
+	 * @param directory the directory to set
+	 */
+	public void setDirectory(String directory) {
+		this.directory = directory;
+	}
+
+	/**
+	 * @return the subDirectory
+	 */
+	public String getSubDirectory() {
+		return subDirectory;
+	}
+
+	/**
+	 * @param subDirectory the subDirectory to set
+	 */
+	public void setSubDirectory(String subDirectory) {
+		this.subDirectory = subDirectory;
+	}
+
+	/**
+	 * @return the fileName
+	 */
+	public String getFileName() {
+		return fileName;
+	}
+
+	/**
+	 * @param fileName the fileName to set
+	 */
+	public void setFileName(String fileName) {
+		this.fileName = fileName;
+	}
+
+	public String getFullPath() {
+		return getDirectory() + "/" + getSubDirectory() + "/" + getFileName();
+	}
+	
+	public ReferencedDataNature getDataNature() {
+		return ReferencedDataNature.values()[dataNatureInteger];
+	}
+
+	public void setDataNature(ReferencedDataNature dataNature) {
+		this.dataNatureInteger = dataNature.ordinal();
+	}
+
+	public String getCharset() {
+		return charset;
+	}
+
+	public void setCredentialManager(CredentialManager credentialManager) {
+		this.credentialManager = credentialManager;
+	}
+
+	public void setCharset(String charset) {
+		this.charset = charset;
+	}
+
+	/**
+	 * @return the dataNatureInteger
+	 */
+	public int getDataNatureInteger() {
+		return dataNatureInteger;
+	}
+
+	/**
+	 * @param dataNatureInteger the dataNatureInteger to set
+	 */
+	public void setDataNatureInteger(int dataNatureInteger) {
+		this.dataNatureInteger = dataNatureInteger;
+	}
+	
+	public SshReference clone() {
+		SshReference result = new SshReference();
+		result.setHost(this.getHost());
+		result.setPort(this.getPort());
+		result.setDirectory(this.getDirectory());
+		result.setSubDirectory(this.getSubDirectory());
+		result.setFileName(this.getFileName());
+		result.setDataNature(this.getDataNature());
+		result.setCharset(this.getCharset());
+		return result;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUrl.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUrl.java
new file mode 100644
index 0000000..eb5f269
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUrl.java
@@ -0,0 +1,153 @@
+/**
+ * 
+ */
+package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
+
+import net.sf.taverna.t2.reference.ReferencedDataNature;
+
+/**
+ * @author alanrw
+ *
+ */
+public class SshUrl {
+	
+	private SshNode sshNode;
+	private String subDirectory;
+	private String fileName;
+
+	private ReferencedDataNature dataNature = ReferencedDataNature.UNKNOWN;
+	private String charset = "UTF-8";
+	
+
+	public SshUrl(SshNode sshNode) {
+		this.setSshNode(sshNode);
+	}
+	
+
+	/**
+	 * @return the host
+	 */
+	public String getHost() {
+		return getSshNode().getHost();
+	}
+	/**
+	 * @param host the host to set
+	 */
+	public void setHost(String host) {
+		getSshNode().setHost(host);
+	}
+	/**
+	 * @return the port
+	 */
+	public int getPort() {
+		return getSshNode().getPort();
+	}
+	/**
+	 * @param port the port to set
+	 */
+	public void setPort(int port) {
+		getSshNode().setPort(port);
+	}
+	/**
+	 * @return the directory
+	 */
+	public String getDirectory() {
+		return getSshNode().getDirectory();
+	}
+	/**
+	 * @param directory the directory to set
+	 */
+	public void setDirectory(String directory) {
+		getSshNode().setDirectory(directory);
+	}
+	/**
+	 * @return the subDirectory
+	 */
+	public String getSubDirectory() {
+		return subDirectory;
+	}
+	/**
+	 * @param subDirectory the subDirectory to set
+	 */
+	public void setSubDirectory(String subDirectory) {
+		this.subDirectory = subDirectory;
+	}
+	/**
+	 * @return the fileName
+	 */
+	public String getFileName() {
+		return fileName;
+	}
+	/**
+	 * @param fileName the fileName to set
+	 */
+	public void setFileName(String fileName) {
+		this.fileName = fileName;
+	}
+	
+	public String toString() {
+		String result = SshNodeFactory.makeUrl(getHost(), getPort(), getDirectory());
+		if (getSubDirectory() != null) {
+			result += getSubDirectory();
+		}
+		if (getFileName() != null) {
+			result += "/" + getFileName();
+		}
+		return result;
+	}
+	
+	public int hashCode() {
+		return toString().hashCode();
+		
+	}
+	
+	public boolean equals(Object obj) {
+		if ((obj == null) || !(obj instanceof SshUrl)) {
+			return false;
+		}
+		return (this.hashCode() == obj.hashCode());
+	}
+	
+	public SshUrl getBaseUrl() {
+		SshUrl result = new SshUrl(this.getSshNode());
+		return result;
+	}
+
+
+	/**
+	 * @return the sshNode
+	 */
+	public SshNode getSshNode() {
+		return sshNode;
+	}
+
+
+	/**
+	 * @param sshNode the sshNode to set
+	 */
+	public void setSshNode(SshNode sshNode) {
+		this.sshNode = sshNode;
+	}
+	
+	public ReferencedDataNature getDataNature() {
+		return dataNature;
+	}
+
+
+	public void setDataNature(ReferencedDataNature dataNature) {
+		this.dataNature = dataNature;
+	}
+
+
+	public String getCharset() {
+		return charset;
+	}
+
+
+	public void setCharset(String charset) {
+		this.charset = charset;
+	}
+
+
+	
+}
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUrlToSshReference.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUrlToSshReference.java
new file mode 100644
index 0000000..6a9b2dc
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUrlToSshReference.java
@@ -0,0 +1,43 @@
+/**
+ *
+ */
+package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
+
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.ReferenceContext;
+import net.sf.taverna.t2.reference.ValueToReferenceConversionException;
+import net.sf.taverna.t2.reference.ValueToReferenceConverterSPI;
+import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
+
+/**
+ * @author alanrw
+ *
+ */
+public class SshUrlToSshReference implements ValueToReferenceConverterSPI {
+
+	private CredentialManager credentialManager;
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.reference.ValueToReferenceConverterSPI#canConvert(java.lang.Object, net.sf.taverna.t2.reference.ReferenceContext)
+	 */
+	@Override
+	public boolean canConvert(Object o, ReferenceContext context) {
+		return (o instanceof SshUrl);
+	}
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.reference.ValueToReferenceConverterSPI#convert(java.lang.Object, net.sf.taverna.t2.reference.ReferenceContext)
+	 */
+	@Override
+	public ExternalReferenceSPI convert(Object o, ReferenceContext context)
+			throws ValueToReferenceConversionException {
+		SshReference result = new SshReference((SshUrl) o);
+		result.setCredentialManager(credentialManager);
+		return result;
+	}
+
+	public void setCredentialManager(CredentialManager credentialManager) {
+		this.credentialManager = credentialManager;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUseCaseInvocation.java b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUseCaseInvocation.java
new file mode 100755
index 0000000..29e475d
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshUseCaseInvocation.java
@@ -0,0 +1,563 @@
+/* Part of the KnowARC Janitor Use-case processor for taverna
+ *  written 2007-2010 by Hajo Nils Krabbenhoeft and Steffen Moeller
+ *  University of Luebeck, Institute for Neuro- and Bioinformatics
+ *  University of Luebeck, Institute for Dermatolgy
+ *
+ *  This package is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Lesser General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This package is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public License
+ *  along with this package; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+package de.uni_luebeck.inb.knowarc.usecases.invocation.ssh;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+import java.util.Vector;
+import java.util.regex.Matcher;
+
+import net.sf.taverna.t2.activities.externaltool.RetrieveLoginFromTaverna;
+import net.sf.taverna.t2.reference.AbstractExternalReference;
+import net.sf.taverna.t2.reference.ErrorDocument;
+import net.sf.taverna.t2.reference.ErrorDocumentServiceException;
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.Identified;
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.ReferenceSet;
+import net.sf.taverna.t2.reference.ReferencedDataNature;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
+
+import org.apache.log4j.Logger;
+
+import com.jcraft.jsch.ChannelExec;
+import com.jcraft.jsch.ChannelSftp;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.Session;
+import com.jcraft.jsch.SftpException;
+import com.jcraft.jsch.ChannelSftp.LsEntry;
+
+import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
+import de.uni_luebeck.inb.knowarc.usecases.ScriptOutput;
+import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.AskUserForPw;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.InvocationException;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.UseCaseInvocation;
+
+/**
+ * The job is executed by connecting to a worker pc using ssh, i.e. not via the
+ * grid.
+ * 
+ * @author Hajo Krabbenhoeft
+ */
+public class SshUseCaseInvocation extends UseCaseInvocation {
+
+	private static Logger logger = Logger.getLogger(SshUseCaseInvocation.class);
+
+	private SshUrl location = null;
+
+	private InputStream stdInputStream = null;
+
+	public static final String SSH_USE_CASE_INVOCATION_TYPE = "D0A4CDEB-DD10-4A8E-A49C-8871003083D8";
+	private String tmpname;
+	private final SshNode workerNode;
+	private final AskUserForPw askUserForPw;
+
+	private ChannelExec running;
+
+	private List<String> precedingCommands = new ArrayList<String>();
+
+	private final ByteArrayOutputStream stdout_buf = new ByteArrayOutputStream();
+	private final ByteArrayOutputStream stderr_buf = new ByteArrayOutputStream();
+
+	private static Map<String, Object> nodeLock = Collections
+			.synchronizedMap(new HashMap<String, Object>());
+
+	private static Map<String, Set<SshUrl>> runIdToTempDir = Collections
+			.synchronizedMap(new HashMap<String, Set<SshUrl>>());
+
+	private static String SSH_INVOCATION_FILE = "sshInvocations";
+
+	private final CredentialManager credentialManager;
+
+	public static String test(final SshNode workerNode,
+			final AskUserForPw askUserForPw) {
+		try {
+			Session sshSession = SshPool
+					.getSshSession(workerNode, askUserForPw);
+
+			ChannelSftp sftpTest = (ChannelSftp) sshSession.openChannel("sftp");
+			sftpTest.connect();
+			sftpTest.cd(workerNode.getDirectory());
+			sftpTest.disconnect();
+			sshSession.disconnect();
+		} catch (JSchException e) {
+			return e.toString();
+		} catch (SftpException e) {
+			return e.toString();
+		}
+		return null;
+	}
+
+	public SshUseCaseInvocation(UseCaseDescription desc, SshNode workerNodeA,
+			AskUserForPw askUserForPwA, CredentialManager credentialManager)
+			throws JSchException, SftpException {
+		this.workerNode = workerNodeA;
+		this.credentialManager = credentialManager;
+
+		setRetrieveData(workerNodeA.isRetrieveData());
+		this.askUserForPw = askUserForPwA;
+		usecase = desc;
+
+		ChannelSftp sftp = SshPool.getSftpPutChannel(workerNode, askUserForPw);
+		synchronized (getNodeLock(workerNode)) {
+
+			logger.info("Changing remote directory to "
+					+ workerNode.getDirectory());
+			sftp.cd(workerNode.getDirectory());
+			Random rnd = new Random();
+			while (true) {
+				tmpname = "usecase" + rnd.nextLong();
+				try {
+					sftp.lstat(workerNode.getDirectory() + tmpname);
+					continue;
+				} catch (Exception e) {
+					// file seems to not exist :)
+				}
+				sftp.mkdir(workerNode.getDirectory() + tmpname);
+				sftp.cd(workerNode.getDirectory() + tmpname);
+				break;
+			}
+		}
+	}
+
+	private static void recursiveDelete(ChannelSftp sftp, String path)
+			throws SftpException, JSchException {
+		Vector<?> entries = sftp.ls(path);
+		for (Object object : entries) {
+			LsEntry entry = (LsEntry) object;
+			if (entry.getFilename().equals(".")
+					|| entry.getFilename().equals("..")) {
+				continue;
+			}
+			if (entry.getAttrs().isDir()) {
+				recursiveDelete(sftp, path + entry.getFilename() + "/");
+			} else {
+				sftp.rm(path + entry.getFilename());
+			}
+		}
+		sftp.rmdir(path);
+	}
+
+	private static void deleteDirectory(SshUrl directory,
+			CredentialManager credentialManager) throws InvocationException {
+		URI uri;
+		try {
+			uri = new URI(directory.toString());
+
+			ChannelSftp sftp;
+			SshNode workerNode;
+			String fullPath = uri.getPath();
+			String path = fullPath.substring(0, fullPath.lastIndexOf("/"));
+			String tempDir = fullPath.substring(fullPath.lastIndexOf("/"));
+			try {
+				workerNode = SshNodeFactory.getInstance().getSshNode(
+						uri.getHost(), uri.getPort(), path);
+
+				sftp = SshPool.getSftpPutChannel(workerNode,
+						new RetrieveLoginFromTaverna(workerNode.getUrl()
+								.toString(), credentialManager));
+			} catch (JSchException e) {
+				throw new InvocationException(e);
+			}
+			synchronized (getNodeLock(workerNode)) {
+				try {
+					sftp.cd(path);
+					recursiveDelete(sftp, path + "/" + tempDir + "/");
+				} catch (SftpException e) {
+					throw new InvocationException(e);
+				} catch (JSchException e) {
+					throw new InvocationException(e);
+				}
+			}
+		} catch (URISyntaxException e1) {
+			throw new InvocationException(e1);
+		}
+	}
+
+	public static void cleanup(String runId, CredentialManager credentialManager)
+			throws InvocationException {
+		Set<SshUrl> tempDirectories = runIdToTempDir.get(runId);
+		if (tempDirectories != null) {
+			for (SshUrl tempUrl : tempDirectories) {
+				deleteDirectory(tempUrl, credentialManager);
+			}
+			runIdToTempDir.remove(runId);
+		}
+	}
+
+	@Override
+	protected void submit_generate_job_inner() throws InvocationException {
+		tags.put("uniqueID", "" + getSubmissionID());
+		String command = usecase.getCommand();
+		for (String cur : tags.keySet()) {
+			command = command.replaceAll("\\Q%%" + cur + "%%\\E",
+					Matcher.quoteReplacement(tags.get(cur)));
+		}
+		String fullCommand = "cd " + workerNode.getDirectory() + tmpname;
+		for (String preceding : precedingCommands) {
+			fullCommand += " && " + preceding;
+		}
+		fullCommand += " && " + command;
+
+		logger.info("Full command is " + fullCommand);
+
+		try {
+			running = SshPool.openExecChannel(workerNode, askUserForPw);
+			running.setCommand(fullCommand);
+			running.setOutputStream(stdout_buf);
+			running.setErrStream(stderr_buf);
+			if (stdInputStream != null) {
+				running.setInputStream(stdInputStream);
+			}
+			running.connect();
+		} catch (JSchException e) {
+			throw new InvocationException(e);
+		}
+
+	}
+
+	@Override
+	public HashMap<String, Object> submit_wait_fetch_results(
+			ReferenceService referenceService) throws InvocationException {
+		while (!running.isClosed()) {
+			try {
+				Thread.sleep(1000);
+			} catch (InterruptedException e) {
+				throw new InvocationException("Invocation interrupted:"
+						+ e.getMessage());
+			}
+		}
+
+		int exitcode = running.getExitStatus();
+		if (!usecase.getValidReturnCodes().contains(exitcode)) {
+			try {
+				throw new InvocationException("Invalid exit code " + exitcode
+						+ ":" + stderr_buf.toString("US-ASCII"));
+			} catch (UnsupportedEncodingException e) {
+				throw new InvocationException("Invalid exit code " + exitcode
+						+ ":" + stderr_buf.toString());
+			}
+		}
+
+		HashMap<String, Object> results = new HashMap<String, Object>();
+
+		results.put("STDOUT", stdout_buf.toByteArray());
+		results.put("STDERR", stderr_buf.toByteArray());
+		try {
+			stdout_buf.close();
+			stderr_buf.close();
+		} catch (IOException e2) {
+			throw new InvocationException(e2);
+		}
+
+		try {
+			ChannelSftp sftp = SshPool.getSftpPutChannel(workerNode,
+					askUserForPw);
+			synchronized (getNodeLock(workerNode)) {
+				for (Map.Entry<String, ScriptOutput> cur : usecase.getOutputs()
+						.entrySet()) {
+					ScriptOutput scriptOutput = cur.getValue();
+					String fullPath = workerNode.getDirectory() + tmpname + "/"
+							+ scriptOutput.getPath();
+					try {
+						if (sftp.stat(fullPath) != null) {
+							SshUrl url = new SshUrl(workerNode);
+							url.setSubDirectory(tmpname);
+							url.setFileName(scriptOutput.getPath());
+							if (scriptOutput.isBinary()) {
+								url.setDataNature(ReferencedDataNature.BINARY);
+							} else {
+								url.setDataNature(ReferencedDataNature.TEXT);
+								url.setCharset("UTF-8");
+							}
+							if (isRetrieveData()) {
+								SshReference urlRef = new SshReference(url);
+								InputStream is = urlRef.openStream(null);
+								AbstractExternalReference ref;
+								if (scriptOutput.isBinary()) {
+									ref = inlineByteArrayReferenceBuilder
+											.createReference(is, null);
+								} else {
+									ref = inlineStringReferenceBuilder
+											.createReference(is, null);
+								}
+								try {
+									is.close();
+								} catch (IOException e) {
+									throw new InvocationException(e);
+								}
+								results.put(cur.getKey(), ref);
+							} else {
+								results.put(cur.getKey(), url);
+							}
+						} else {
+							ErrorDocument ed = referenceService
+									.getErrorDocumentService().registerError(
+											"No result for " + cur.getKey(), 0,
+											getContext());
+							results.put(cur.getKey(), ed);
+						}
+					} catch (SftpException e) {
+						ErrorDocument ed = referenceService
+								.getErrorDocumentService().registerError(
+										"No result for " + cur.getKey(), 0,
+										getContext());
+						results.put(cur.getKey(), ed);
+
+					}
+				}
+			}
+		} catch (JSchException e1) {
+			throw new InvocationException(e1);
+		} catch (ErrorDocumentServiceException e) {
+			throw new InvocationException(e);
+		}
+
+		if (running != null) {
+			running.disconnect();
+		}
+		if (stdInputStream != null) {
+			try {
+				stdInputStream.close();
+			} catch (IOException e) {
+				throw new InvocationException(e);
+			}
+		}
+
+		if (isRetrieveData()) {
+			forgetRun();
+			deleteDirectory(location, credentialManager);
+
+		}
+		return results;
+	}
+
+	@Override
+	public String setOneInput(ReferenceService referenceService,
+			T2Reference t2Reference, ScriptInput input)
+			throws InvocationException {
+		String target = null;
+		String remoteName = null;
+		if (input.isFile()) {
+			remoteName = input.getTag();
+		} else if (input.isTempFile()) {
+			remoteName = "tempfile." + (nTempFiles++) + ".tmp";
+
+		}
+		if (input.isFile() || input.isTempFile()) {
+			SshReference sshRef = getAsSshReference(referenceService,
+					t2Reference, workerNode);
+			target = workerNode.getDirectory() + tmpname + "/" + remoteName;
+			logger.info("Target is " + target);
+			if (sshRef != null) {
+				if (!input.isForceCopy()) {
+					String linkCommand = workerNode.getLinkCommand();
+					if (linkCommand != null) {
+						String actualLinkCommand = getActualOsCommand(
+								linkCommand, sshRef.getFullPath(), remoteName,
+								target);
+						precedingCommands.add(actualLinkCommand);
+						return target;
+
+					}
+				}
+				String copyCommand = workerNode.getCopyCommand();
+				if (copyCommand != null) {
+					String actualCopyCommand = getActualOsCommand(copyCommand,
+							sshRef.getFullPath(), remoteName, target);
+					precedingCommands.add(actualCopyCommand);
+					return target;
+				}
+			}
+			try {
+				ChannelSftp sftp = SshPool.getSftpPutChannel(workerNode,
+						askUserForPw);
+				synchronized (getNodeLock(workerNode)) {
+					InputStream r = getAsStream(referenceService, t2Reference);
+					sftp.put(r, target);
+					r.close();
+				}
+			} catch (SftpException e) {
+				throw new InvocationException(e);
+			} catch (JSchException e) {
+				throw new InvocationException(e);
+			} catch (IOException e) {
+				throw new InvocationException(e);
+			}
+			return target;
+		} else {
+			String value = (String) referenceService.renderIdentifier(
+					t2Reference, String.class, this.getContext());
+			return value;
+
+		}
+	}
+
+	public SshReference getAsSshReference(ReferenceService referenceService,
+			T2Reference t2Reference, SshNode workerNode) {
+		Identified identified = referenceService.resolveIdentifier(t2Reference,
+				null, null);
+		if (identified instanceof ReferenceSet) {
+			for (ExternalReferenceSPI ref : ((ReferenceSet) identified)
+					.getExternalReferences()) {
+				if (ref instanceof SshReference) {
+					SshReference sshRef = (SshReference) ref;
+					if (sshRef.getHost().equals(workerNode.getHost())) {
+						return sshRef;
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	private static Object getNodeLock(final SshNode node) {
+		return getNodeLock(node.getHost());
+	}
+
+	private static synchronized Object getNodeLock(String hostName) {
+		if (!nodeLock.containsKey(hostName)) {
+			nodeLock.put(hostName, new Object());
+		}
+		return nodeLock.get(hostName);
+	}
+
+	@Override
+	public void setStdIn(ReferenceService referenceService,
+			T2Reference t2Reference) {
+		stdInputStream = new BufferedInputStream(getAsStream(referenceService,
+				t2Reference));
+	}
+
+	@Override
+	public void rememberRun(String runId) {
+		this.setRunId(runId);
+		Set<SshUrl> directories = runIdToTempDir.get(runId);
+		if (directories == null) {
+			directories = Collections.synchronizedSet(new HashSet<SshUrl>());
+			runIdToTempDir.put(runId, directories);
+		}
+		location = new SshUrl(workerNode);
+		location.setSubDirectory(tmpname);
+		directories.add(location);
+	}
+
+	private void forgetRun() {
+		Set<SshUrl> directories = runIdToTempDir.get(getRunId());
+		directories.remove(location);
+	}
+
+	public static void load(File directory) {
+		File invocationsFile = new File(directory, SSH_INVOCATION_FILE);
+		if (!invocationsFile.exists()) {
+			return;
+		}
+		BufferedReader reader = null;
+		try {
+			reader = new BufferedReader(new FileReader(invocationsFile));
+			String line = reader.readLine();
+			while (line != null) {
+				String[] parts = line.split(" ");
+				if (parts.length != 2) {
+					break;
+				}
+				String runId = parts[0];
+				String urlString = parts[1];
+				Set<SshUrl> urls = runIdToTempDir.get(runId);
+				if (urls == null) {
+					urls = new HashSet<SshUrl>();
+					runIdToTempDir.put(runId, urls);
+				}
+				URI uri = new URI(urlString);
+				String fullPath = uri.getPath();
+				String path = fullPath.substring(0, fullPath.lastIndexOf("/"));
+				String tempDir = fullPath.substring(fullPath.lastIndexOf("/"));
+				SshNode node = SshNodeFactory.getInstance().getSshNode(
+						uri.getHost(), uri.getPort(), path);
+				SshUrl newUrl = new SshUrl(node);
+				newUrl.setSubDirectory(tempDir);
+				urls.add(newUrl);
+				line = reader.readLine();
+			}
+		} catch (FileNotFoundException e) {
+			logger.error(e);
+		} catch (URISyntaxException e) {
+			logger.error(e);
+		} catch (IOException e) {
+			logger.error(e);
+		} finally {
+			if (reader != null) {
+				try {
+					reader.close();
+				} catch (IOException e) {
+					logger.error(e);
+				}
+			}
+		}
+	}
+
+	public static void persist(File directory) {
+		File invocationsFile = new File(directory, SSH_INVOCATION_FILE);
+		BufferedWriter writer = null;
+		try {
+			writer = new BufferedWriter(new FileWriter(invocationsFile));
+			for (String runId : runIdToTempDir.keySet()) {
+				for (SshUrl url : runIdToTempDir.get(runId)) {
+					writer.write(runId);
+					writer.write(" ");
+					writer.write(url.toString());
+					writer.newLine();
+				}
+			}
+		} catch (IOException e) {
+			logger.error(e);
+		} finally {
+			if (writer != null) {
+				try {
+					writer.close();
+				} catch (IOException e) {
+					logger.error(e);
+				}
+			}
+		}
+	}
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivity.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivity.java
new file mode 100755
index 0000000..1e6ef77
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivity.java
@@ -0,0 +1,301 @@
+/*******************************************************************************
+ * Copyright (C) 2009 Hajo Nils Krabbenhoeft, INB, University of Luebeck
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+
+package net.sf.taverna.t2.activities.externaltool;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroup;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
+import net.sf.taverna.t2.annotation.Annotated;
+import net.sf.taverna.t2.annotation.annotationbeans.MimeType;
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.reference.WorkflowRunIdEntity;
+import net.sf.taverna.t2.workflowmodel.EditException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AbstractAsynchronousActivity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
+
+import org.apache.log4j.Logger;
+
+import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
+import de.uni_luebeck.inb.knowarc.usecases.ScriptInputUser;
+import de.uni_luebeck.inb.knowarc.usecases.ScriptOutput;
+import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.InvocationException;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.UseCaseInvocation;
+
+/**
+ * This is the main class of the use case activity plugin. Here we store the
+ * configuration and the description of a use case activity, configure the input
+ * and output port and provide use case activity invocation
+ *
+ * @author Hajo Nils Krabbenhoeft
+ */
+public class ExternalToolActivity extends AbstractAsynchronousActivity<ExternalToolActivityConfigurationBean> {
+
+	public static final String URI = "http://ns.taverna.org.uk/2010/activity/tool";
+
+	private static final String STDERR = "STDERR";
+
+	private static final String STDOUT = "STDOUT";
+
+	private static final String STDIN = "STDIN";
+
+	private static Logger logger = Logger.getLogger(ExternalToolActivity.class);
+
+	private ExternalToolActivityConfigurationBean configurationBean;
+	private UseCaseDescription mydesc;
+
+	private List<InvocationCreator> invocationCreators;
+
+	/**
+	 * Add the given MIME types to the given input/output port.
+	 *
+	 * @param annotated
+	 *            The port to which to add the MIME types.
+	 * @param mimeTypes
+	 *            A list of Strings specifying the MIME types to add.
+	 */
+	private void addMimeTypes(Annotated<?> annotated, List<String> mimeTypes) {
+		for (String mimeType : mimeTypes) {
+			MimeType mimeTypeAnnotation = new MimeType();
+			mimeTypeAnnotation.setText(mimeType);
+			try {
+				getEdits().getAddAnnotationChainEdit(annotated, mimeTypeAnnotation).doEdit();
+			} catch (EditException e) {
+				Logger.getLogger(ExternalToolActivity.class).error(e);
+			}
+		}
+	}
+
+	/**
+	 * Create a new input port with the given name, depth, element class and
+	 * MIME types.
+	 *
+	 * @param portName
+	 *            Name of the new port
+	 * @param portDepth
+	 *            Depth of the new port
+	 * @param translatedElementClass
+	 *            Which class of elements would this port like?
+	 * @param mimeTypes
+	 *            Accepted mime types for this port
+	 */
+	private void addInputWithMime(String portName, int portDepth, Class<?> translatedElementClass, List<String> mimeTypes) {
+		List<Class<? extends ExternalReferenceSPI>> handledReferenceSchemes = Collections.emptyList();
+		ActivityInputPort inputPort = getEdits().createActivityInputPort(portName, portDepth, true, handledReferenceSchemes,
+				translatedElementClass);
+		inputPorts.add(inputPort);
+		if (mimeTypes != null) {
+			addMimeTypes(inputPort, mimeTypes);
+		}
+	}
+
+	/**
+	 * Create a new output port with the given MIME types
+	 *
+	 * @param portName
+	 *            Name of the new port
+	 * @param portDepth
+	 *            Depth of the new port
+	 * @param mimeTypes
+	 *            Accepted mime types for this port
+	 */
+	private void addOutputWithMime(String portName, int portDepth, List<String> mimeTypes) {
+		ActivityOutputPort outputPort = getEdits().createActivityOutputPort(portName, portDepth, portDepth);
+		outputPorts.add(outputPort);
+		addMimeTypes(outputPort, mimeTypes);
+	}
+
+	@Override
+	public void configure(ExternalToolActivityConfigurationBean bean) throws ActivityConfigurationException {
+		this.configurationBean = bean;
+
+		try {
+			mydesc = bean.getUseCaseDescription();
+
+			inputPorts.clear();
+			outputPorts.clear();
+
+			if (mydesc != null) {
+
+			// loop through all script inputs and add them as taverna activity
+			// input ports
+			for (Map.Entry<String, ScriptInput> cur : mydesc.getInputs().entrySet()) {
+				ScriptInputUser scriptInputUser = (ScriptInputUser) cur.getValue();
+				// if the input port is a list, depth is 1 otherwise it is a
+				// single element, therefore depth 0
+				// if the input port is binary, we would like byte arrays,
+				// otherwise we require strings
+				addInputWithMime(cur.getKey(), scriptInputUser.isList() ? 1 : 0, cur.getValue().isBinary() ? byte[].class : String.class, scriptInputUser.getMime());
+
+			}
+			// loop through all script outputs and add them to taverna
+			for (Map.Entry<String, ScriptOutput> cur : mydesc.getOutputs().entrySet()) {
+				addOutputWithMime(cur.getKey(), 0, cur.getValue().getMime());
+			}
+			}
+
+			if (mydesc.isIncludeStdIn()) {
+				addInputWithMime(STDIN, 0, byte[].class, null);
+			}
+			if (mydesc.isIncludeStdOut()) {
+				addOutput(STDOUT, 0);
+			}
+			if (mydesc.isIncludeStdErr()) {
+				addOutput(STDERR, 0);
+			}
+		} catch (Exception e) {
+			throw new ActivityConfigurationException("Couldn't create ExternalTool Activity", e);
+		}
+	}
+
+	@Override
+	public ExternalToolActivityConfigurationBean getConfiguration() {
+		if (configurationBean != null) {
+			InvocationGroup invocationGroup = configurationBean.getInvocationGroup();
+			if (invocationGroup == null) {
+				if (configurationBean.getMechanism() != null) {
+					configurationBean.convertMechanismToDetails();
+				}
+			} else {
+				if (invocationGroup.getMechanism() != null) {
+					invocationGroup.convertMechanismToDetails();
+				}
+			}
+		}
+		return configurationBean;
+	}
+
+	public ExternalToolActivityConfigurationBean getConfigurationNoConversion() {
+		return configurationBean;
+	}
+
+	public InvocationMechanism recreateMechanism() {
+		if (configurationBean.getInvocationGroup() != null) {
+			if (configurationBean.getInvocationGroup().getMechanism() == null) {
+				configurationBean.getInvocationGroup().convertDetailsToMechanism();
+			}
+			return configurationBean.getInvocationGroup().getMechanism();
+		} else {
+			if (configurationBean.getMechanism() == null) {
+				configurationBean.convertDetailsToMechanism();
+			}
+			return configurationBean.getMechanism();
+		}
+	}
+
+	@Override
+	public void executeAsynch(final Map<String, T2Reference> data, final AsynchronousActivityCallback callback) {
+
+		callback.requestRun(new Runnable() {
+
+			public void run() {
+				ReferenceService referenceService = callback.getContext().getReferenceService();
+				UseCaseInvocation invoke = null;
+
+				/**
+				 * Note that retrying needs to be either done via Taverna's retry mechanism or as part of the specific invocation
+				 */
+				try {
+
+					invoke = getInvocation(recreateMechanism(),
+							configurationBean.getUseCaseDescription(), data, referenceService);
+					if (invoke == null) {
+						logger.error("Invoke is null");
+						callback.fail("No invocation mechanism found");
+					}
+					String runId = callback.getContext()
+							.getEntities(WorkflowRunIdEntity.class).get(0)
+							.getWorkflowRunId();
+					logger.info("Run id is " + runId);
+					invoke.rememberRun(runId);
+
+					invoke.setContext(callback.getContext());
+
+					// look at every use dynamic case input
+					for (String cur : invoke.getInputs()) {
+						if (!cur.equals(STDIN)) {
+							invoke.setInput(cur, referenceService,
+									data.get(cur));
+						}
+					}
+
+					if (mydesc.isIncludeStdIn() && (data.get(STDIN) != null)) {
+						invoke.setStdIn(referenceService, data.get(STDIN));
+					}
+
+					// submit the use case to its invocation mechanism
+					invoke.submit_generate_job(referenceService);
+
+					// retrieve the result.
+					Map<String, Object> downloads = invoke
+							.submit_wait_fetch_results(referenceService);
+					Map<String, T2Reference> result = new HashMap<String, T2Reference>();
+					for (Map.Entry<String, Object> cur : downloads.entrySet()) {
+						Object value = cur.getValue();
+
+						// register the result value with taverna
+						T2Reference reference = referenceService.register(
+								value, 0, true, callback.getContext());
+
+						// store the reference into the activity result
+						// set
+						result.put(cur.getKey(), reference);
+					}
+					callback.receiveResult(result, new int[0]);
+				} catch (InvocationException e) {
+					callback.fail(e.getMessage(), e);
+				}
+			}
+
+		});
+
+	}
+
+	public void setInvocationCreators(List<InvocationCreator> invocationCreators) {
+		this.invocationCreators = invocationCreators;
+	}
+
+	private UseCaseInvocation getInvocation(InvocationMechanism mechanism, UseCaseDescription description, Map<String, T2Reference> data, ReferenceService referenceService) {
+		UseCaseInvocation result = null;
+		InvocationCreator creator = null;
+		for (InvocationCreator c : invocationCreators) {
+			if (c.canHandle(mechanism.getType())) {
+				creator = c;
+				break;
+			}
+		}
+		if (creator != null) {
+			result = creator.convert(mechanism, description, data, referenceService);
+		}
+		return result;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityConfigurationBean.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityConfigurationBean.java
new file mode 100755
index 0000000..ce3387b
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityConfigurationBean.java
@@ -0,0 +1,194 @@
+package net.sf.taverna.t2.activities.externaltool;
+
+import java.util.List;
+
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroup;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
+import net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
+
+@ConfigurationBean(uri = ExternalToolActivity.URI + "#Config")
+public final class ExternalToolActivityConfigurationBean {
+
+	private InvocationGroup group;
+
+	private String mechanismType;
+
+	private String mechanismName;
+
+	private String mechanismXML;
+
+	private transient InvocationMechanism mechanism;
+
+	protected String repositoryUrl;
+	protected String externaltoolid;
+	protected UseCaseDescription useCaseDescription = null;
+	private boolean edited = false;
+
+	private List<MechanismCreator> mechanismCreators;
+
+    public boolean isEdited() {
+		return edited;
+	}
+
+	public ExternalToolActivityConfigurationBean() {
+	}
+
+	public InvocationGroup getInvocationGroup() {
+	    return group;
+	}
+
+	@ConfigurationProperty(name = "invocationGroup", label = "InvocationGroup", required=false)
+	public void setInvocationGroup(
+			InvocationGroup group) {
+		this.group = group;
+		clearMechanismInformation();
+	}
+
+	private void clearMechanismInformation() {
+		this.mechanismType = null;
+		this.mechanismName = null;
+		this.mechanismXML = null;
+		this.mechanism = null;
+	}
+
+	/**
+	 * @return the repositoryUrl
+	 */
+	public String getRepositoryUrl() {
+		return repositoryUrl;
+	}
+
+	/**
+	 * @param repositoryUrl the repositoryUrl to set
+	 */
+	@ConfigurationProperty(name = "repositoryUrl", label = "Repository URL", required=false)
+	public void setRepositoryUrl(String repositoryUrl) {
+		this.repositoryUrl = repositoryUrl;
+	}
+
+	/**
+	 * @return the externaltoolid
+	 */
+	public String getExternaltoolid() {
+		return externaltoolid;
+	}
+
+	/**
+	 * @param externaltoolid the externaltoolid to set
+	 */
+	@ConfigurationProperty(name = "toolId", label = "Tool ID")
+	public void setExternaltoolid(String externaltoolid) {
+		this.externaltoolid = externaltoolid;
+	}
+
+	/**
+	 * @return the useCaseDescription
+	 */
+	public UseCaseDescription getUseCaseDescription() {
+		return useCaseDescription;
+	}
+
+	/**
+	 * @param useCaseDescription the useCaseDescription to set
+	 */
+	@ConfigurationProperty(name = "toolDescription", label = "Tool Description")
+	public void setUseCaseDescription(UseCaseDescription useCaseDescription) {
+		this.useCaseDescription = useCaseDescription;
+	}
+
+	@ConfigurationProperty(name = "edited", label = "Edited", required=false)
+	public void setEdited(boolean b) {
+		this.edited  = b;
+	}
+
+	/**
+	 * Note this also sets the details
+	 *
+	 * @param mechanism the mechanism to set
+	 */
+	public void setMechanism(InvocationMechanism mechanism) {
+		this.mechanism = mechanism;
+		convertMechanismToDetails();
+		this.group = null;
+	}
+
+	public void convertMechanismToDetails() {
+		if (mechanism != null) {
+			this.setMechanismXML(mechanism.getXML());
+			this.setMechanismName(mechanism.getName());
+			this.setMechanismType(mechanism.getType());
+		}
+	}
+
+	/**
+	 * @param mechanismType the mechanismType to set
+	 */
+	@ConfigurationProperty(name = "mechanismType", label = "Mechanism Type", required=false)
+	public void setMechanismType(String mechanismType) {
+		this.mechanismType = mechanismType;
+	}
+
+	/**
+	 * @param mechanismName the mechanismName to set
+	 */
+	@ConfigurationProperty(name = "mechanismName", label = "Mechanism Name", required=false)
+	public void setMechanismName(String mechanismName) {
+		this.mechanismName = mechanismName;
+	}
+
+	/**
+	 * @param mechanismXML the mechanismXML to set
+	 */
+	@ConfigurationProperty(name = "mechanismXML", label = "Mechanism XML", required=false)
+	public void setMechanismXML(String mechanismXML) {
+		this.mechanismXML = mechanismXML;
+	}
+
+	public void convertDetailsToMechanism() {
+		if (mechanismXML != null) {
+			for (MechanismCreator mc : mechanismCreators) {
+				if (mc.canHandle(getMechanismType())) {
+					mechanism = mc.convert(getMechanismXML(), getMechanismName());
+					break;
+				}
+			}
+		}
+	}
+
+	/**
+	 * @return the mechanism
+	 */
+	public InvocationMechanism getMechanism() {
+
+		return mechanism;
+	}
+
+	/**
+	 * @return the mechanismType
+	 */
+	public String getMechanismType() {
+		return mechanismType;
+	}
+
+	/**
+	 * @return the mechanismName
+	 */
+	public String getMechanismName() {
+		return mechanismName;
+	}
+
+	/**
+	 * @return the mechanismXML
+	 */
+	public String getMechanismXML() {
+		return mechanismXML;
+	}
+
+	public void setMechanismCreators(List<MechanismCreator> mechanismCreators) {
+		this.mechanismCreators = mechanismCreators;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityFactory.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityFactory.java
new file mode 100644
index 0000000..dc27b11
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityFactory.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (C) 2011 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.externaltool;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.List;
+import java.util.Set;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator;
+import net.sf.taverna.t2.workflowmodel.Edits;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
+
+/**
+ * An {@link ActivityFactory} for creating <code>ExternalToolActivity</code>.
+ *
+ * @author David Withers
+ */
+public class ExternalToolActivityFactory implements ActivityFactory {
+
+	private List<InvocationCreator> invocationCreators;
+
+	private List<MechanismCreator> mechanismCreators;
+
+        private Edits edits;
+
+	@Override
+	public ExternalToolActivity createActivity() {
+		ExternalToolActivity activity = new ExternalToolActivity();
+		activity.setInvocationCreators(invocationCreators);
+                activity.setEdits(edits);
+		return activity;
+	}
+
+	@Override
+	public URI getActivityType() {
+		return URI.create(ExternalToolActivity.URI);
+	}
+
+	@Override
+	public JsonNode getActivityConfigurationSchema() {
+		ObjectMapper objectMapper = new ObjectMapper();
+		try {
+ 			return objectMapper.readTree(getClass().getResource("/schema.json"));
+		} catch (IOException e) {
+			return objectMapper.createObjectNode();
+		}
+	}
+
+	public void setInvocationCreators(List<InvocationCreator> invocationCreators) {
+		this.invocationCreators = invocationCreators;
+	}
+
+	public void setMechanismCreators(List<MechanismCreator> mechanismCreators) {
+		this.mechanismCreators = mechanismCreators;
+	}
+
+	@Override
+	public Set<ActivityInputPort> getInputPorts(JsonNode configuration)
+			throws ActivityConfigurationException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Set<ActivityOutputPort> getOutputPorts(JsonNode configuration)
+			throws ActivityConfigurationException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+        public void setEdits(Edits edits) {
+		this.edits = edits;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityHealthChecker.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityHealthChecker.java
new file mode 100755
index 0000000..b65da68
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityHealthChecker.java
@@ -0,0 +1,195 @@
+/*******************************************************************************
+ * Copyright (C) 2009 Hajo Nils Krabbenhoeft, INB, University of Luebeck
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+
+package net.sf.taverna.t2.activities.externaltool;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroup;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroupManager;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
+import net.sf.taverna.t2.visit.VisitReport;
+import net.sf.taverna.t2.visit.VisitReport.Status;
+import net.sf.taverna.t2.workflowmodel.health.HealthCheck;
+import net.sf.taverna.t2.workflowmodel.health.HealthChecker;
+import net.sf.taverna.t2.workflowmodel.utils.Tools;
+
+public class ExternalToolActivityHealthChecker implements HealthChecker<ExternalToolActivity> {
+
+	private InvocationGroupManager invocationGroupManager;
+	private ExternalToolActivity activity;
+
+	public boolean canVisit(Object subject) {
+		return subject != null && subject instanceof ExternalToolActivity;
+	}
+
+	public VisitReport visit(ExternalToolActivity activity, List<Object> ancestry) {
+		this.activity = activity;
+		ExternalToolActivityConfigurationBean configuration = activity.getConfigurationNoConversion();
+		List<VisitReport> reports = new ArrayList<VisitReport>();
+
+		VisitReport locationReport = checkLocation(configuration);
+		if (locationReport != null) {
+			reports.add(locationReport);
+		}
+
+		VisitReport report = new VisitReport(HealthCheck.getInstance(), activity, "External tool service", HealthCheck.NO_PROBLEM, reports);
+
+		return report;
+	}
+
+
+	private VisitReport checkLocation(
+			ExternalToolActivityConfigurationBean configuration) {
+
+		if (!updateLocation(configuration)) {
+			return new VisitReport(HealthCheck.getInstance(), activity, "Unmanaged invocation mechanism", HealthCheck.UNMANAGED_LOCATION, Status.WARNING);
+		} else {
+			return null;
+		}
+	}
+
+	public boolean updateLocation(ExternalToolActivityConfigurationBean configuration) {
+		InvocationGroup invocationGroup = configuration.getInvocationGroup();
+		String invocationGroupSpecification = null;
+		String invocationMechanismSpecification = null;
+		if (invocationGroup != null) {
+			if (invocationGroupManager.containsGroup(invocationGroup)) {
+				return true;
+			}
+			InvocationGroup replacementGroup = invocationGroupManager.getGroupReplacement(invocationGroup);
+			if (replacementGroup != null) {
+				configuration.setInvocationGroup(replacementGroup);
+				return true;
+			}
+			invocationGroupSpecification = invocationGroup.getName() + ":" + invocationGroup.getMechanismXML();
+			InvocationGroup importedGroup = invocationGroupManager.getImportedGroup(invocationGroupSpecification);
+			if (importedGroup != null) {
+				configuration.setInvocationGroup(importedGroup);
+				return true;
+			}
+		}
+
+		InvocationMechanism invocationMechanism = configuration.getMechanism();
+		if (invocationMechanism != null) {
+			if (invocationGroupManager.containsMechanism(invocationMechanism)) {
+				return true;
+			}
+		}
+		String mechanismXML = null;
+		String mechanismName = null;
+
+		if (invocationGroup != null) {
+			mechanismXML = invocationGroup.getMechanismXML();
+			mechanismName = invocationGroup.getMechanismName();
+		} else {
+			mechanismXML = configuration.getMechanismXML();
+			mechanismName = configuration.getMechanismName();
+		}
+		invocationMechanismSpecification = mechanismName + ":" + mechanismXML;
+
+		InvocationMechanism foundMechanism = null;
+		HashSet<String> mechanismNames = new HashSet<String>();
+		for (InvocationMechanism mechanism : invocationGroupManager.getMechanisms()) {
+			mechanismNames.add(mechanism.getName());
+			if (mechanism.getName().equals(mechanismName) && (mechanism.getXML().equals(mechanismXML))) {
+				if (invocationMechanism != mechanism) {
+					foundMechanism = mechanism;
+				}
+			}
+		}
+
+		if (foundMechanism == null) {
+			foundMechanism = invocationGroupManager.getMechanismReplacement(invocationMechanismSpecification);
+			if (foundMechanism == null) {
+				foundMechanism = invocationGroupManager.getImportedMechanism(invocationMechanismSpecification);
+			}
+		}
+
+		if (foundMechanism != null) {
+			if (invocationGroup != null) {
+				invocationGroup.setMechanism(foundMechanism);
+				// Cannot return because invocationGroup is still unknown
+			} else {
+				configuration.setMechanism(foundMechanism);
+				return true;
+			}
+		}
+
+		if (foundMechanism == null) {
+			InvocationMechanism createdMechanism;
+			if (invocationGroup != null) {
+				invocationGroup.convertDetailsToMechanism();
+				createdMechanism = invocationGroup.getMechanism();
+			} else {
+				configuration.convertDetailsToMechanism();
+				createdMechanism = configuration.getMechanism();
+			}
+
+			String chosenMechanismName = Tools.uniqueObjectName(mechanismName,
+					mechanismNames);
+			createdMechanism.setName(chosenMechanismName);
+			if (invocationGroup != null) {
+				invocationGroup.setMechanism(createdMechanism);
+			} else {
+				configuration.setMechanism(createdMechanism);
+			}
+			invocationGroupManager.importMechanism(invocationMechanismSpecification, createdMechanism);
+
+
+			if (invocationGroup == null) {
+				return true;
+			}
+		}
+
+		InvocationGroup foundGroup = null;
+		HashSet<String> groupNames = new HashSet<String>();
+		for (InvocationGroup group : invocationGroupManager.getInvocationGroups()) {
+			groupNames.add(group.getName());
+			if (group.getName().equals(invocationGroup.getName()) && (group.getMechanism() == invocationGroup.getMechanism())) {
+				foundGroup = group;
+			}
+		}
+		if (foundGroup != null) {
+			configuration.setInvocationGroup(foundGroup);
+			return true;
+		}
+		invocationGroup.setName(Tools.uniqueObjectName(invocationGroup.getName(), groupNames));
+		invocationGroupManager.importInvocationGroup(invocationGroupSpecification, invocationGroup);
+		return true;
+	}
+
+	public boolean isTimeConsuming() {
+		return false;
+	}
+
+	/**
+	 * Sets the invocationGroupManager.
+	 *
+	 * @param invocationGroupManager the new value of invocationGroupManager
+	 */
+	public void setInvocationGroupManager(InvocationGroupManager invocationGroupManager) {
+		this.invocationGroupManager = invocationGroupManager;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityMimeTypeChecker.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityMimeTypeChecker.java
new file mode 100644
index 0000000..4ab8f93
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolActivityMimeTypeChecker.java
@@ -0,0 +1,174 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.externaltool;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.Map.Entry;
+
+import net.sf.taverna.t2.visit.VisitReport;
+import net.sf.taverna.t2.visit.VisitReport.Status;
+import net.sf.taverna.t2.workflowmodel.Dataflow;
+import net.sf.taverna.t2.workflowmodel.Datalink;
+import net.sf.taverna.t2.workflowmodel.Merge;
+import net.sf.taverna.t2.workflowmodel.MergeInputPort;
+import net.sf.taverna.t2.workflowmodel.MergeOutputPort;
+import net.sf.taverna.t2.workflowmodel.MergePort;
+import net.sf.taverna.t2.workflowmodel.OutputPort;
+import net.sf.taverna.t2.workflowmodel.Port;
+import net.sf.taverna.t2.workflowmodel.Processor;
+import net.sf.taverna.t2.workflowmodel.ProcessorInputPort;
+import net.sf.taverna.t2.workflowmodel.ProcessorPort;
+import net.sf.taverna.t2.workflowmodel.health.HealthCheck;
+import net.sf.taverna.t2.workflowmodel.health.HealthChecker;
+import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
+import net.sf.taverna.t2.workflowmodel.utils.Tools;
+
+import org.apache.log4j.Logger;
+
+import de.uni_luebeck.inb.knowarc.usecases.ScriptInputUser;
+import de.uni_luebeck.inb.knowarc.usecases.ScriptOutput;
+
+/**
+ * @author alanrw
+ *
+ */
+public final class ExternalToolActivityMimeTypeChecker implements HealthChecker<ExternalToolActivity> {
+	
+	private static Logger logger = Logger.getLogger(ExternalToolActivityMimeTypeChecker.class);
+
+	public boolean canVisit(Object o) {
+		return o != null && o instanceof ExternalToolActivity;
+	}
+
+	public boolean isTimeConsuming() {
+		return false;
+	}
+
+	public VisitReport visit(ExternalToolActivity o,
+			List<Object> ancestry) {
+		List<VisitReport> reports = new ArrayList<VisitReport>();
+			Processor p = (Processor) VisitReport.findAncestor(ancestry, Processor.class);
+			Dataflow d = (Dataflow) VisitReport.findAncestor(ancestry, Dataflow.class);
+			
+			for (ActivityInputPort aip : o.getInputPorts()) {
+				Set<String> sinkMimeSet = getMimeTypesForInput(o, aip);
+				if (sinkMimeSet.isEmpty()) {
+					continue;
+				}
+				ProcessorInputPort pip = Tools.getProcessorInputPort(p, (Activity<?>) o, aip);
+				
+				for (Datalink dl : d.getLinks()) {
+
+					if (dl.getSink().equals(pip)) {
+						Port source = dl.getSource();
+						Set<VisitReport> subReports = checkSource(dl, source, d, (Activity) o, aip, sinkMimeSet);
+						for (VisitReport vr : subReports) {
+							vr.setProperty("sinkProcessor", p);
+						    vr.setProperty("activity", o);
+						    vr.setProperty("sinkPort", pip);
+						}
+						reports.addAll(subReports);
+					}
+				}
+			}
+			
+		if (reports.isEmpty()) {
+			return null;
+		}
+		if (reports.size() == 1) {
+			return reports.get(0);
+		}
+		else {
+			return new VisitReport(HealthCheck.getInstance(), o, "Collation", HealthCheck.DEFAULT_VALUE, reports);
+		}
+	}
+	
+	private Set<VisitReport> checkSource(Datalink datalink, Port source, Dataflow d, Activity o, ActivityInputPort aip, Set<String> sinkMimeSet) {
+		Set<VisitReport> reports = new HashSet<VisitReport>();
+		if (source instanceof ProcessorPort) {
+			ProcessorPort processorPort = (ProcessorPort) source;
+			Processor sourceProcessor = processorPort.getProcessor();
+			Activity sourceActivity = sourceProcessor.getActivityList().get(0);
+			if (sourceActivity instanceof ExternalToolActivity) {
+				ActivityOutputPort aop = getActivityOutputPort(sourceActivity, processorPort);
+				Set<String> sourceMimeTypes = getMimeTypesForOutput((ExternalToolActivity) sourceActivity, aop);
+				if (!sourceMimeTypes.isEmpty()) {
+					Set<String> sinkMimeTypesClone  = new HashSet<String>();
+					sinkMimeTypesClone.addAll(sinkMimeSet);
+					sinkMimeTypesClone.retainAll(sourceMimeTypes);
+					if (sinkMimeTypesClone.isEmpty()) {
+						VisitReport vr = new VisitReport(HealthCheck.getInstance(), o, "Incompatible mime types", HealthCheck.INCOMPATIBLE_MIMETYPES, Status.WARNING);
+						vr.setProperty("sourcePort", processorPort);
+						vr.setProperty("sourceProcessor", sourceProcessor);
+						vr.setProperty("link", datalink);
+						reports.add(vr);
+					}
+				}
+			}
+		} else if (source instanceof MergeOutputPort) {
+			Merge merge = ((MergePort) source).getMerge();
+			for (MergeInputPort mip : merge.getInputPorts()) {
+				for (Datalink dl : d.getLinks()) {
+					if (dl.getSink().equals(mip)) {
+						reports.addAll(checkSource(dl, dl.getSource(), d, o, aip, sinkMimeSet));
+					}
+				}
+				
+			}
+		}
+		return reports;
+	}
+	
+	private Set<String> getMimeTypesForOutput(ExternalToolActivity o, ActivityOutputPort aop) {
+		ScriptOutput so = (ScriptOutput) o.getConfiguration().getUseCaseDescription().getOutputs().get(aop.getName());
+		if (so == null) {
+			return Collections.EMPTY_SET;
+		}
+		List mimeList = Arrays.asList(so.getMime());
+		Set mimeSet = new HashSet(mimeList);
+		return mimeSet;
+	}
+
+	private Set<String> getMimeTypesForInput(ExternalToolActivity a, ActivityInputPort aip) {
+		ScriptInputUser si = (ScriptInputUser) a.getConfiguration().getUseCaseDescription().getInputs().get(aip.getName());
+		if (si == null) {
+			return Collections.EMPTY_SET;
+		}
+		ArrayList<String> mime = si.getMime();
+		if (mime != null) {
+			List mimeList = Arrays.asList(mime);
+			Set mimeSet = new HashSet(mimeList);
+		
+			return mimeSet;
+		} else {
+			return Collections.EMPTY_SET;
+		}
+	}
+	
+	private static ActivityOutputPort getActivityOutputPort(
+			Activity<?> activity, ProcessorPort processorOutputPort) {
+		ProcessorInputPort result = null;
+		for (Entry<String, String> mapEntry : activity.getOutputPortMapping()
+				.entrySet()) {
+			if (mapEntry.getKey().equals(processorOutputPort.getName())) {
+				for (OutputPort activityOutputPort : activity
+						.getOutputPorts()) {
+					if (activityOutputPort.getName().equals(mapEntry.getValue())) {
+						return (ActivityOutputPort) activityOutputPort;
+					}
+				}
+				break;
+			}
+		}
+		return null;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolRunDeletionListener.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolRunDeletionListener.java
new file mode 100644
index 0000000..bbb53ce
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ExternalToolRunDeletionListener.java
@@ -0,0 +1,38 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.externaltool;
+
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroupManager;
+import net.sf.taverna.t2.workflowmodel.RunDeletionListener;
+
+import org.apache.log4j.Logger;
+
+/**
+ * @author alanrw
+ *
+ */
+public class ExternalToolRunDeletionListener implements RunDeletionListener {
+
+	private static Logger logger = Logger.getLogger(ExternalToolRunDeletionListener.class);
+
+	private InvocationGroupManager invocationGroupManager;
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.workflowmodel.RunDeletionListener#deleteRun(java.lang.String)
+	 */
+	@Override
+	public void deleteRun(String runToDelete) {
+		invocationGroupManager.deleteRun(runToDelete);
+	}
+
+	/**
+	 * Sets the invocationGroupManager.
+	 *
+	 * @param invocationGroupManager the new value of invocationGroupManager
+	 */
+	public void setInvocationGroupManager(InvocationGroupManager invocationGroupManager) {
+		this.invocationGroupManager = invocationGroupManager;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/InvocationCreator.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/InvocationCreator.java
new file mode 100644
index 0000000..5184794
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/InvocationCreator.java
@@ -0,0 +1,25 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.externaltool;
+
+import java.util.Map;
+
+import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.UseCaseInvocation;
+
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.T2Reference;
+
+/**
+ * @author alanrw
+ *
+ */
+public interface InvocationCreator {
+	
+	public boolean canHandle(String mechanismType);
+	
+	public UseCaseInvocation convert(InvocationMechanism mechanism, UseCaseDescription description, Map<String, T2Reference> data, ReferenceService referenceService);
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/RetrieveLoginFromTaverna.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/RetrieveLoginFromTaverna.java
new file mode 100644
index 0000000..949f70a
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/RetrieveLoginFromTaverna.java
@@ -0,0 +1,57 @@
+package net.sf.taverna.t2.activities.externaltool;
+
+import java.net.URI;
+
+import net.sf.taverna.t2.security.credentialmanager.CMException;
+import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
+import net.sf.taverna.t2.security.credentialmanager.UsernamePassword;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.AskUserForPw;
+
+public class RetrieveLoginFromTaverna implements AskUserForPw {
+	private final String url;
+	private final CredentialManager credentialManager;
+
+	public RetrieveLoginFromTaverna(String url, CredentialManager credentialManager) {
+		this.url = url;
+		this.credentialManager = credentialManager;
+	}
+
+	private UsernamePassword getUserPass() {
+		try {
+			final String urlStr = url;
+			URI userpassUrl = URI.create(urlStr.replace("//", "/"));
+			final UsernamePassword userAndPass = credentialManager.getUsernameAndPasswordForService(userpassUrl, false, null);
+			return userAndPass;
+		} catch (CMException e) {
+			throw new RuntimeException("Error in Taverna Credential Manager", e);
+		}
+	}
+
+	public String getUsername() throws RuntimeException {
+		final UsernamePassword userPass = getUserPass();
+		if (userPass == null) {
+			throw new RuntimeException("Unable to obtain valid username and password");
+		}
+		userPass.resetPassword();
+		return userPass.getUsername();
+	}
+
+	public String getPassword() {
+		final UsernamePassword userPass = getUserPass();
+		final String pw = userPass.getPasswordAsString();
+		userPass.resetPassword();
+		return pw;
+	}
+
+
+	public String getKeyfile() {
+		return "";
+	}
+
+	public String getPassphrase() {
+		return "";
+	}
+
+	public void authenticationSucceeded() {
+	}
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/local/ExternalToolLocalInvocationMechanism.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/local/ExternalToolLocalInvocationMechanism.java
new file mode 100644
index 0000000..d276407
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/local/ExternalToolLocalInvocationMechanism.java
@@ -0,0 +1,131 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.externaltool.local;
+
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
+
+import org.jdom.Element;
+import org.jdom.Text;
+
+import de.uni_luebeck.inb.knowarc.usecases.invocation.local.LocalUseCaseInvocation;
+
+/**
+ * @author alanrw
+ *
+ */
+public class ExternalToolLocalInvocationMechanism extends
+		InvocationMechanism {
+	
+	private String directory;
+	
+	private String shellPrefix;
+	
+	private String linkCommand;
+	
+	private boolean retrieveData;
+	
+	/**
+	 * 
+	 */
+	public ExternalToolLocalInvocationMechanism() {
+		super();
+		String os = System.getProperty("os.name");
+		if (!os.startsWith("Windows")) {
+			setShellPrefix(UNIX_SHELL);
+			setLinkCommand(UNIX_LINK);
+		}
+	}
+
+	@Override
+	public String getType() {
+		return LocalUseCaseInvocation.LOCAL_USE_CASE_INVOCATION_TYPE;
+	}
+
+	@Override
+	public Element getXMLElement() {
+		Element result = new Element("localInvocation");
+		if ((directory != null) && !directory.isEmpty()){
+			Element directoryElement = new Element("directory");
+			directoryElement.addContent(new Text(directory));
+			result.addContent(directoryElement);
+		}
+		if ((shellPrefix != null) && !shellPrefix.isEmpty()) {
+			Element shellPrefixElement = new Element("shellPrefix");
+			shellPrefixElement.addContent(new Text(shellPrefix));
+			result.addContent(shellPrefixElement);
+		}
+		if ((linkCommand != null) && !linkCommand.isEmpty()) {
+			Element linkCommandElement = new Element("linkCommand");
+			linkCommandElement.addContent(new Text(linkCommand));
+			result.addContent(linkCommandElement);
+		}
+		if (isRetrieveData()) {
+			Element retrieveDataElement = new Element("retrieveData");
+			result.addContent(retrieveDataElement);
+		}
+		return result;
+	}
+
+
+	/**
+	 * @return the directory
+	 */
+	public String getDirectory() {
+		return directory;
+	}
+
+	/**
+	 * @param directory the directory to set
+	 */
+	public void setDirectory(String directory) {
+		this.directory = directory;
+	}
+
+	/**
+	 * @return the shellPrefix
+	 */
+	public String getShellPrefix() {
+		return shellPrefix;
+	}
+
+	/**
+	 * @param shellPrefix the shellPrefix to set
+	 */
+	public void setShellPrefix(String shellPrefix) {
+		this.shellPrefix = shellPrefix;
+	}
+
+	/**
+	 * @return the linkCommand
+	 */
+	public String getLinkCommand() {
+		return linkCommand;
+	}
+
+	/**
+	 * @param linkCommand the linkCommand to set
+	 */
+	public void setLinkCommand(String linkCommand) {
+	    if ((linkCommand == null) || linkCommand.isEmpty()) {
+			this.linkCommand = null;
+		} else {
+			this.linkCommand = linkCommand;
+		}
+	}
+
+	/**
+	 * @return the retrieveData
+	 */
+	public boolean isRetrieveData() {
+		return retrieveData;
+	}
+
+	/**
+	 * @param retrieveData the retrieveData to set
+	 */
+	public void setRetrieveData(boolean retrieveData) {
+		this.retrieveData = retrieveData;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/local/LocalInvocationCreator.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/local/LocalInvocationCreator.java
new file mode 100644
index 0000000..393686f
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/local/LocalInvocationCreator.java
@@ -0,0 +1,49 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.externaltool.local;
+
+import java.io.IOException;
+import java.util.Map;
+
+import net.sf.taverna.t2.activities.externaltool.InvocationCreator;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.T2Reference;
+
+import org.apache.log4j.Logger;
+
+import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.UseCaseInvocation;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.local.LocalUseCaseInvocation;
+
+/**
+ * @author alanrw
+ *
+ */
+public final class LocalInvocationCreator implements
+		InvocationCreator {
+	
+	private static Logger logger = Logger.getLogger(LocalInvocationCreator.class);
+
+	public boolean equals(Object o) {
+		return (o instanceof LocalInvocationCreator);
+	}
+
+	@Override
+	public boolean canHandle(String mechanismType) {
+		return mechanismType.equals(LocalUseCaseInvocation.LOCAL_USE_CASE_INVOCATION_TYPE);
+	}
+
+	@Override
+	public UseCaseInvocation convert(InvocationMechanism m, UseCaseDescription description, Map<String, T2Reference> data, ReferenceService referenceService) {
+	    ExternalToolLocalInvocationMechanism mechanism = (ExternalToolLocalInvocationMechanism) m;
+		UseCaseInvocation result = null;
+		try {
+		    result = new LocalUseCaseInvocation(description, mechanism.isRetrieveData(), mechanism.getDirectory(), mechanism.getShellPrefix(), mechanism.getLinkCommand());
+		} catch (IOException e) {
+			logger.error(e);
+		}
+		return result;
+	}
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/local/LocalInvocationPersister.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/local/LocalInvocationPersister.java
new file mode 100644
index 0000000..f12f4f6
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/local/LocalInvocationPersister.java
@@ -0,0 +1,45 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.externaltool.local;
+
+import java.io.File;
+
+import org.apache.log4j.Logger;
+
+import de.uni_luebeck.inb.knowarc.usecases.invocation.InvocationException;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.local.LocalUseCaseInvocation;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshUseCaseInvocation;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationPersister;
+import net.sf.taverna.t2.activities.externaltool.ssh.SshInvocationPersister;
+
+/**
+ * @author alanrw
+ *
+ */
+public class LocalInvocationPersister extends InvocationPersister {
+	
+	private static Logger logger = Logger.getLogger(LocalInvocationPersister.class);
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.activities.externaltool.manager.InvocationPersister#load()
+	 */
+	@Override
+	public void load(File directory) {
+		LocalUseCaseInvocation.load(directory);
+	}
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.activities.externaltool.manager.InvocationPersister#persist()
+	 */
+	@Override
+	public void persist(File directory) {
+		LocalUseCaseInvocation.persist(directory);
+	}
+	
+	@Override
+	public void deleteRun(String runId) {
+			LocalUseCaseInvocation.cleanup(runId);
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/local/LocalMechanismCreator.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/local/LocalMechanismCreator.java
new file mode 100644
index 0000000..e053a4c
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/local/LocalMechanismCreator.java
@@ -0,0 +1,48 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.externaltool.local;
+
+import org.jdom.Element;
+
+import de.uni_luebeck.inb.knowarc.usecases.invocation.local.LocalUseCaseInvocation;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
+import net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator;
+
+/**
+ * @author alanrw
+ *
+ */
+public class LocalMechanismCreator extends MechanismCreator {
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator#canHandle(java.lang.String)
+	 */
+	@Override
+	public boolean canHandle(String mechanismType) {
+		return mechanismType.equals(LocalUseCaseInvocation.LOCAL_USE_CASE_INVOCATION_TYPE);
+	}
+
+	public InvocationMechanism convert(Element detailsElement,
+			String mechanismName) {
+		ExternalToolLocalInvocationMechanism result = new ExternalToolLocalInvocationMechanism();
+		result.setName(mechanismName);
+		Element directoryElement = detailsElement.getChild("directory");
+		if (directoryElement != null) {
+			result.setDirectory(directoryElement.getText());
+		}
+		Element shellPrefixElement = detailsElement.getChild("shellPrefix");
+		if (shellPrefixElement != null) {
+			result.setShellPrefix(shellPrefixElement.getText());
+		}
+		Element linkCommandElement = detailsElement.getChild("linkCommand");
+		if (linkCommandElement != null) {
+			result.setLinkCommand(linkCommandElement.getText());
+		}
+		Element retrieveDataElement = detailsElement.getChild("retrieveData");
+		result.setRetrieveData(retrieveDataElement != null);
+
+		return result;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroup.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroup.java
new file mode 100644
index 0000000..ec453f5
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroup.java
@@ -0,0 +1,141 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.externaltool.manager;
+
+import java.util.List;
+
+import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+
+import org.apache.log4j.Logger;
+
+/**
+ * @author alanrw
+ *
+ */
+@ConfigurationBean(uri = ExternalToolActivity.URI + "#InvocationGroup")
+public class InvocationGroup {
+
+	private static Logger logger = Logger.getLogger(InvocationGroup.class);
+
+	private String invocationGroupName;
+
+	private String mechanismType;
+
+	private String mechanismName;
+
+	private String mechanismXML;
+
+	private transient InvocationMechanism mechanism;
+
+	private List<MechanismCreator> mechanismCreators;
+
+	public InvocationGroup(List<MechanismCreator> mechanismCreators) {
+		setMechanismCreators(mechanismCreators);
+	}
+
+	/**
+	 * @return the invocationGroupName
+	 */
+	public String getName() {
+		return invocationGroupName;
+	}
+
+	/**
+	 * @param invocationGroupName the invocationGroupName to set
+	 */
+	@ConfigurationProperty(name = "name", label = "Invocation Group Name")
+	public void setName(String invocationGroupName) {
+		this.invocationGroupName = invocationGroupName;
+	}
+
+	/**
+	 * @return the mechanismType
+	 */
+	public String getMechanismType() {
+		return mechanismType;
+	}
+
+	/**
+	 * @param mechanismType the mechanismType to set
+	 */
+	@ConfigurationProperty(name = "mechanismType", label = "Mechanism Type")
+	public void setMechanismType(String mechanismType) {
+		this.mechanismType = mechanismType;
+	}
+
+	/**
+	 * @return the mechanismName
+	 */
+	public String getMechanismName() {
+		return mechanismName;
+	}
+
+	/**
+	 * @param mechanismName the mechanismName to set
+	 */
+	@ConfigurationProperty(name = "mechanismName", label = "Mechanism Name")
+	public void setMechanismName(String mechanismName) {
+		this.mechanismName = mechanismName;
+	}
+
+	/**
+	 * @return the mechanismXML
+	 */
+	public String getMechanismXML() {
+		return mechanismXML;
+	}
+
+	/**
+	 * @param mechanismXML the mechanismXML to set
+	 */
+	@ConfigurationProperty(name = "mechanismXML", label = "Mechanism XML")
+	public void setMechanismXML(String mechanismXML) {
+		this.mechanismXML = mechanismXML;
+	}
+
+	/**
+	 * @return the mechanism
+	 */
+	public InvocationMechanism getMechanism() {
+		return mechanism;
+	}
+
+	/**
+	 * Note this also sets the corresponding details
+	 *
+	 * @param mechanism the mechanism to set
+	 */
+	public void setMechanism(InvocationMechanism mechanism) {
+		this.mechanism = mechanism;
+		convertMechanismToDetails();
+	}
+
+	public String toString() {
+		return getName();
+	}
+
+	public void convertMechanismToDetails() {
+		this.setMechanismXML(mechanism.getXML());
+		this.setMechanismName(mechanism.getName());
+		this.setMechanismType(mechanism.getType());
+	}
+
+	public void convertDetailsToMechanism() {
+		if (mechanismXML != null) {
+			for (MechanismCreator mc : mechanismCreators) {
+				if (mc.canHandle(getMechanismType())) {
+					mechanism = mc.convert(getMechanismXML(), getMechanismName());
+					break;
+				}
+			}
+		}
+	}
+
+	public void setMechanismCreators(List<MechanismCreator> mechanismCreators) {
+		this.mechanismCreators = mechanismCreators;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupAddedEvent.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupAddedEvent.java
new file mode 100644
index 0000000..1f14b37
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupAddedEvent.java
@@ -0,0 +1,18 @@
+package net.sf.taverna.t2.activities.externaltool.manager;
+
+public class InvocationGroupAddedEvent extends InvocationManagerEvent {
+	
+	private InvocationGroup addedGroup;
+	
+	public InvocationGroupAddedEvent(InvocationGroup addedGroup) {
+		this.addedGroup = addedGroup;
+	}
+
+	/**
+	 * @return the addedGroup
+	 */
+	public InvocationGroup getAddedGroup() {
+		return addedGroup;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupChangedEvent.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupChangedEvent.java
new file mode 100644
index 0000000..05c6617
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupChangedEvent.java
@@ -0,0 +1,18 @@
+package net.sf.taverna.t2.activities.externaltool.manager;
+
+public class InvocationGroupChangedEvent extends InvocationManagerEvent {
+	
+	private InvocationGroup changedGroup;
+	
+	public InvocationGroupChangedEvent(InvocationGroup changedGroup) {
+		this.changedGroup = changedGroup;
+	}
+
+	/**
+	 * @return the changedGroup
+	 */
+	public InvocationGroup getChangedGroup() {
+		return changedGroup;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupManager.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupManager.java
new file mode 100644
index 0000000..b398000
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupManager.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (C) 2012 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.externaltool.manager;
+
+import java.io.File;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import net.sf.taverna.t2.lang.observer.Observer;
+
+/**
+ *
+ *
+ * @author David Withers
+ */
+public interface InvocationGroupManager {
+
+	public void addInvocationGroup(InvocationGroup group);
+
+	public void replaceInvocationGroup(InvocationGroup originalGroup,
+			InvocationGroup replacementGroup);
+
+	public void removeInvocationGroup(InvocationGroup group);
+
+	public void replaceInvocationMechanism(InvocationMechanism originalMechanism,
+			InvocationMechanism replacementMechanism);
+
+	public void removeMechanism(InvocationMechanism mechanism);
+
+	public HashSet<InvocationGroup> getInvocationGroups();
+
+	public InvocationGroup getDefaultGroup();
+
+	public Set<InvocationMechanism> getMechanisms();
+
+	public void addMechanism(InvocationMechanism mechanism);
+
+	public InvocationMechanism getDefaultMechanism();
+
+	public boolean containsGroup(InvocationGroup group);
+
+	public InvocationMechanism getInvocationMechanism(String defaultMechanismName);
+
+	public void mechanismChanged(InvocationMechanism im);
+	
+	/**
+	 * Get the directory where the invocation information will be/is saved to.
+	 */
+	public File getInvocationManagerDirectory();
+
+	public void saveConfiguration();
+
+	public void groupChanged(InvocationGroup group);
+
+	public void addObserver(Observer<InvocationManagerEvent> observer);
+
+	public List<Observer<InvocationManagerEvent>> getObservers();
+
+	public void removeObserver(Observer<InvocationManagerEvent> observer);
+
+	public void deleteRun(String runId);
+
+	public void persistInvocations();
+
+	public void loadInvocations();
+
+	public boolean containsMechanism(InvocationMechanism invocationMechanism);
+
+	public InvocationGroup getGroupReplacement(InvocationGroup group);
+
+	public InvocationMechanism getMechanismReplacement(String invocationMechanismSpecification);
+
+	public InvocationGroup getImportedGroup(String groupSpecification);
+
+	public InvocationMechanism getImportedMechanism(String mechanismSpecification);
+
+	public void importMechanism(String invocationMechanismSpecification,
+			InvocationMechanism createdMechanism);
+
+	public void importInvocationGroup(String invocationGroupSpecification,
+			InvocationGroup invocationGroup);
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupRemovedEvent.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupRemovedEvent.java
new file mode 100644
index 0000000..da14f7b
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupRemovedEvent.java
@@ -0,0 +1,24 @@
+package net.sf.taverna.t2.activities.externaltool.manager;
+
+public class InvocationGroupRemovedEvent extends InvocationManagerEvent {
+	
+	private InvocationGroup removedGroup;
+	private final InvocationGroup replacementGroup;
+	
+	public InvocationGroupRemovedEvent(InvocationGroup removedGroup, InvocationGroup replacementGroup) {
+		this.removedGroup = removedGroup;
+		this.replacementGroup = replacementGroup;
+	}
+
+	/**
+	 * @return the removedGroup
+	 */
+	public InvocationGroup getRemovedGroup() {
+		return removedGroup;
+	}
+	
+	public InvocationGroup getReplacementGroup() {
+		return replacementGroup;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationManagerEvent.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationManagerEvent.java
new file mode 100644
index 0000000..146e2df
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationManagerEvent.java
@@ -0,0 +1,5 @@
+package net.sf.taverna.t2.activities.externaltool.manager;
+
+public abstract class InvocationManagerEvent {
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationMechanism.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationMechanism.java
new file mode 100644
index 0000000..ada8e6d
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationMechanism.java
@@ -0,0 +1,60 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.externaltool.manager;
+
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.input.SAXBuilder;
+import org.jdom.output.XMLOutputter;
+
+/**
+ * @author alanrw
+ *
+ */
+public abstract class InvocationMechanism {
+	
+	protected static XMLOutputter outputter = new XMLOutputter();
+
+
+	public static String UNIX_SHELL = "/bin/sh -c";
+
+	public static String UNIX_LINK = "/bin/ln -s %%PATH_TO_ORIGINAL%% %%TARGET_NAME%%";
+	
+	public static String UNIX_COPY = "/bin/cp %%PATH_TO_ORIGINAL%% %%TARGET_NAME%%";
+	
+	
+	private String name;
+
+	public final String getXML() {
+		Document document = new Document(getXMLElement());
+		String result = null;
+		synchronized (outputter) {
+			result = outputter.outputString(document);
+		}
+		return result;
+	}
+	
+	public abstract Element getXMLElement();
+
+	public abstract String getType();
+
+	/**
+	 * @return the name
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * @param name the name to set
+	 */
+	public void setName(String name) {
+		this.name = name;
+	}
+	
+	public String toString() {
+		return getName();
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationMechanismAddedEvent.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationMechanismAddedEvent.java
new file mode 100644
index 0000000..2babb1e
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationMechanismAddedEvent.java
@@ -0,0 +1,18 @@
+package net.sf.taverna.t2.activities.externaltool.manager;
+
+public class InvocationMechanismAddedEvent extends InvocationManagerEvent {
+	
+	private InvocationMechanism addedMechanism;
+	
+	public InvocationMechanismAddedEvent(InvocationMechanism addedMechanism) {
+		this.addedMechanism = addedMechanism;
+	}
+
+	/**
+	 * @return the addeMechanism
+	 */
+	public InvocationMechanism getAddedMechanism() {
+		return addedMechanism;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationMechanismChangedEvent.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationMechanismChangedEvent.java
new file mode 100644
index 0000000..7b26bcd
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationMechanismChangedEvent.java
@@ -0,0 +1,18 @@
+package net.sf.taverna.t2.activities.externaltool.manager;
+
+public class InvocationMechanismChangedEvent extends InvocationManagerEvent {
+	
+	private InvocationMechanism changedMechanism;
+	
+	public InvocationMechanismChangedEvent(InvocationMechanism changedMechanism) {
+		this.changedMechanism = changedMechanism;
+	}
+
+	/**
+	 * @return the changedMechanism
+	 */
+	public InvocationMechanism getChangedMechanism() {
+		return changedMechanism;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationMechanismRemovedEvent.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationMechanismRemovedEvent.java
new file mode 100644
index 0000000..d7c5878
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationMechanismRemovedEvent.java
@@ -0,0 +1,24 @@
+package net.sf.taverna.t2.activities.externaltool.manager;
+
+public class InvocationMechanismRemovedEvent extends InvocationManagerEvent {
+	
+	private InvocationMechanism removedMechanism;
+	private final InvocationMechanism replacementMechanism;
+	
+	public InvocationMechanismRemovedEvent(InvocationMechanism removedMechanism, InvocationMechanism replacementMechanism) {
+		this.removedMechanism = removedMechanism;
+		this.replacementMechanism = replacementMechanism;
+	}
+
+	/**
+	 * @return the addeMechanism
+	 */
+	public InvocationMechanism getRemovedMechanism() {
+		return removedMechanism;
+	}
+	
+	public InvocationMechanism getReplacementMechanism() {
+		return replacementMechanism;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationPersister.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationPersister.java
new file mode 100644
index 0000000..d345595
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationPersister.java
@@ -0,0 +1,20 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.externaltool.manager;
+
+import java.io.File;
+
+/**
+ * @author alanrw
+ *
+ */
+public abstract class InvocationPersister {
+	
+	public abstract void persist(File directory);
+	
+	public abstract void load(File directory);
+
+	public abstract void deleteRun(String runId);
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/MechanismCreator.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/MechanismCreator.java
new file mode 100644
index 0000000..81ef1fb
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/MechanismCreator.java
@@ -0,0 +1,49 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.externaltool.manager;
+
+import java.io.IOException;
+import java.io.StringReader;
+
+import org.apache.log4j.Logger;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+
+/**
+ * @author alanrw
+ *
+ */
+public abstract class MechanismCreator {
+	
+	private static SAXBuilder builder = new SAXBuilder();
+
+	private static Logger logger = Logger.getLogger(MechanismCreator.class);
+	
+	public abstract boolean canHandle(String mechanismType);
+	
+	public InvocationMechanism convert(String xml, String name) {
+		
+		Document document;
+		try {
+			synchronized (builder) {
+				document = builder.build(new StringReader(xml));
+			}
+		} catch (JDOMException e1) {
+			logger.error("Null invocation", e1);
+			return null;
+		} catch (IOException e1) {
+			logger.error("Null invocation", e1);
+			return null;
+		}
+		Element top = document.getRootElement();
+		
+		return convert(top, name);
+	}
+
+	public abstract InvocationMechanism convert(Element detailsElement,
+			String mechanismName);
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/impl/InvocationGroupManagerImpl.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/impl/InvocationGroupManagerImpl.java
new file mode 100644
index 0000000..af18938
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/impl/InvocationGroupManagerImpl.java
@@ -0,0 +1,446 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.externaltool.manager.impl;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import net.sf.taverna.t2.activities.externaltool.local.ExternalToolLocalInvocationMechanism;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroup;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroupAddedEvent;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroupChangedEvent;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroupManager;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroupRemovedEvent;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationManagerEvent;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanismAddedEvent;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanismChangedEvent;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanismRemovedEvent;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationPersister;
+import net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator;
+import net.sf.taverna.t2.lang.observer.MultiCaster;
+import net.sf.taverna.t2.lang.observer.Observable;
+import net.sf.taverna.t2.lang.observer.Observer;
+
+import org.apache.log4j.Logger;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+import org.jdom.output.Format;
+import org.jdom.output.XMLOutputter;
+
+import uk.org.taverna.configuration.app.ApplicationConfiguration;
+
+
+/**
+ * @author alanrw
+ *
+ */
+public class InvocationGroupManagerImpl implements Observable<InvocationManagerEvent>, InvocationGroupManager{
+
+	private static final String DEFAULT_MECHANISM_NAME = "default local";
+	private static final String DEFAULT_GROUP_NAME = "default";
+	private HashSet<InvocationGroup> groups = new HashSet<InvocationGroup>();
+	private InvocationGroup defaultGroup = null;
+
+	private HashSet<InvocationMechanism> mechanisms = new HashSet<InvocationMechanism>();
+
+	private static XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
+	private static SAXBuilder builder = new SAXBuilder();
+
+	private static Logger logger = Logger.getLogger(InvocationGroupManagerImpl.class);
+	
+	private Map<InvocationGroup, InvocationGroup> groupReplacements = Collections.synchronizedMap(new HashMap<InvocationGroup, InvocationGroup>());
+    
+	private Map<String, InvocationMechanism> mechanismReplacements = Collections.synchronizedMap(new HashMap<String, InvocationMechanism>());
+
+	private Map<String, InvocationGroup> groupImports = Collections.synchronizedMap(new HashMap<String, InvocationGroup> ());
+
+	private Map<String, InvocationMechanism> mechanismImports = Collections.synchronizedMap(new HashMap<String, InvocationMechanism> ());
+
+	private final ApplicationConfiguration applicationConfiguration;
+
+	private final List<MechanismCreator> mechanismCreators;
+
+	private final List<InvocationPersister> invocationPersisters;
+	
+	protected MultiCaster<InvocationManagerEvent> observers = new MultiCaster<InvocationManagerEvent>(
+			this);
+
+	private InvocationMechanism defaultMechanism = null;
+
+	public InvocationGroupManagerImpl(ApplicationConfiguration applicationConfiguration, List<MechanismCreator> mechanismCreators, List<InvocationPersister> invocationPersisters) {
+		this.applicationConfiguration = applicationConfiguration;
+		this.mechanismCreators = mechanismCreators;
+		this.invocationPersisters = invocationPersisters;
+		readConfiguration();
+		defaultMechanism = getInvocationMechanism(DEFAULT_MECHANISM_NAME);
+		if (defaultMechanism == null) {
+			createDefaultMechanism();
+		}
+		defaultGroup = getInvocationGroup(DEFAULT_GROUP_NAME);
+		if (defaultGroup == null) {
+			createDefaultGroup();
+		}
+
+		saveConfiguration();
+	}
+
+	@Override
+	public void addInvocationGroup(InvocationGroup group) {
+		groups.add(group);
+		observers.notify(new InvocationGroupAddedEvent(group));
+	}
+
+	@Override
+	public void replaceInvocationGroup(InvocationGroup originalGroup, InvocationGroup replacementGroup) {
+		Set<String> toReplaceImports = new HashSet<String>();
+		for (Entry<String, InvocationGroup> entry : groupImports.entrySet()) {
+			if (entry.getValue() == originalGroup) {
+				toReplaceImports.add(entry.getKey());
+			}
+		}
+		for (String spec : toReplaceImports) {
+			if (replacementGroup == null) {
+				groupImports.remove(spec);
+			} else {
+				groupImports.put(spec, replacementGroup);
+			}
+		}
+		if (replacementGroup != null) {
+			groupReplacements.put(originalGroup, replacementGroup);
+		}
+		observers.notify(new InvocationGroupRemovedEvent(originalGroup, (replacementGroup == null? getDefaultGroup(): replacementGroup)));
+	}
+
+	@Override
+	public void removeInvocationGroup(InvocationGroup group) {
+		groups.remove(group);
+		replaceInvocationGroup(group, getDefaultGroup());
+	}
+
+	@Override
+	public void replaceInvocationMechanism(InvocationMechanism originalMechanism, InvocationMechanism replacementMechanism) {
+		for (InvocationGroup g : groups) {
+			if (g.getMechanism().equals(originalMechanism)) {
+				if (replacementMechanism == null) {
+					g.setMechanism(getDefaultMechanism());
+				} else {
+					g.setMechanism(replacementMechanism);
+				}
+			}
+		}
+		Set<String> toRemoveImports = new HashSet<String>();
+		for (Entry<String, InvocationMechanism> entry : mechanismImports.entrySet()) {
+			if (entry.getValue() == originalMechanism) {
+				toRemoveImports.add(entry.getKey());
+			}
+		}
+		for (String spec : toRemoveImports) {
+			if (replacementMechanism == null) {
+				mechanismImports.remove(spec);
+			} else {
+				mechanismImports.put(spec, replacementMechanism);
+			}
+		}
+		if (replacementMechanism != null) {
+			mechanismReplacements.put(originalMechanism.getName() + ":" + originalMechanism.getXML(), replacementMechanism);
+		}
+		observers.notify(new InvocationMechanismRemovedEvent(originalMechanism, (replacementMechanism == null? getDefaultMechanism(): replacementMechanism)));
+	}
+
+	@Override
+	public void removeMechanism(InvocationMechanism mechanism) {
+		mechanisms.remove(mechanism);
+		replaceInvocationMechanism(mechanism, getDefaultMechanism());
+	}
+
+	@Override
+	public HashSet<InvocationGroup> getInvocationGroups() {
+		return groups;
+	}
+
+	@Override
+	public InvocationGroup getDefaultGroup() {
+		if (defaultGroup == null) {
+			createDefaultGroup();
+		}
+		return defaultGroup;
+	}
+
+	@Override
+	public Set<InvocationMechanism> getMechanisms() {
+		return mechanisms;
+	}
+
+	@Override
+	public void addMechanism(InvocationMechanism mechanism) {
+		mechanisms.add(mechanism);
+		observers.notify(new InvocationMechanismAddedEvent(mechanism));
+	}
+
+	@Override
+	public InvocationMechanism getDefaultMechanism() {
+		if (defaultMechanism == null) {
+			createDefaultMechanism();
+		}
+		return defaultMechanism;
+	}
+
+	@Override
+	public boolean containsGroup(InvocationGroup group) {
+		return groups.contains(group);
+	}
+
+	@Override
+	public InvocationMechanism getInvocationMechanism(
+			String defaultMechanismName) {
+		for (InvocationMechanism m : mechanisms) {
+			if (m.getName().equals(defaultMechanismName)) {
+				return m;
+			}
+		}
+		return null;
+	}
+
+	InvocationGroup getInvocationGroup(String groupName) {
+		for (InvocationGroup g : groups) {
+			if (g.getName().equals(groupName)) {
+				return g;
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public void mechanismChanged(InvocationMechanism im) {
+		observers.notify(new InvocationMechanismChangedEvent(im));
+	}
+
+
+	private void createDefaultMechanism() {
+		defaultMechanism = new ExternalToolLocalInvocationMechanism();
+		defaultMechanism.setName(DEFAULT_MECHANISM_NAME);
+		mechanisms.add(defaultMechanism);
+	}
+
+	private void createDefaultGroup() {
+		defaultGroup = new InvocationGroup(mechanismCreators);
+		defaultGroup.setName(DEFAULT_GROUP_NAME);
+		defaultGroup.setMechanism(defaultMechanism);
+		groups.add(defaultGroup);
+	}
+
+	private void readConfiguration() {
+		File f = new File(getInvocationManagerDirectory(), "invocationManager.xml");
+		if (!f.exists()) {
+			return;
+		}
+		try {
+			Document document = null;
+			synchronized (builder) {
+				document = builder.build(f);
+			}
+			Element topElement = document.getRootElement();
+			Element mechanismsElement = topElement.getChild("invocationMechanisms");
+			for (Object mechanismObject : mechanismsElement.getChildren("invocationMechanism")) {
+				Element mechanismElement = (Element) mechanismObject;
+				Element mechanismNameElement = mechanismElement.getChild("invocationMechanismName");
+				String mechanismName = mechanismNameElement.getText();
+				Element mechanismTypeElement = mechanismElement.getChild("invocationMechanismType");
+				String mechanismType = mechanismTypeElement.getText();
+				Element mechanismDetailsElement = mechanismElement.getChild("mechanismDetails");
+				Element detailsElement = (Element) mechanismDetailsElement.getChildren().get(0);
+				InvocationMechanism mechanism = null;
+				for (MechanismCreator mc : mechanismCreators) {
+					if (mc.canHandle(mechanismType)) {
+						mechanism = mc.convert(detailsElement, mechanismName);
+					}
+				}
+				if (mechanism != null) {
+					this.addMechanism(mechanism);
+				}
+			}
+
+			Element groupsElement = topElement.getChild("invocationGroups");
+			for (Object groupObject : groupsElement.getChildren("invocationGroup")) {
+				Element groupElement = (Element) groupObject;
+				Element groupNameElement = groupElement.getChild("invocationGroupName");
+				String groupName = groupNameElement.getText();
+				Element mechanismNameElement = groupElement.getChild("mechanismName");
+				String mechanismName = mechanismNameElement.getText();
+				InvocationMechanism mechanism = getInvocationMechanism(mechanismName);
+				if (mechanism == null) {
+					logger.warn("Could not find mechanism " + mechanismName);
+					mechanism = getDefaultMechanism();
+				}
+				InvocationGroup group = new InvocationGroup(mechanismCreators);
+				group.setName(groupName);
+				group.setMechanism(mechanism);
+				group.convertMechanismToDetails();
+				this.addInvocationGroup(group);
+			}
+		} catch (JDOMException e) {
+			logger.error("XML parsing problem", e);
+		} catch (IOException e) {
+			logger.error("Unable to read invocation manager", e);
+		}
+	}
+
+	/**
+	 * Get the directory where the invocation information will be/is saved to.
+	 */
+	@Override
+	public File getInvocationManagerDirectory() {
+
+		File home = applicationConfiguration.getApplicationHomeDir();
+
+		File invocationManagerDirectory = new File(home,"externaltool");
+		if (!invocationManagerDirectory.exists()) {
+			invocationManagerDirectory.mkdir();
+		}
+		return invocationManagerDirectory;
+	}
+
+	@Override
+	public void saveConfiguration() {
+		File f = new File(getInvocationManagerDirectory(), "invocationManager.xml");
+
+		Document configDocument = new Document();
+		Element topElement = new Element("invocationManager");
+		Element mechanismsElement = new Element("invocationMechanisms");
+
+		for (InvocationMechanism m : mechanisms) {
+			Element mechanismElement = new Element("invocationMechanism");
+			Element nameElement = new Element("invocationMechanismName");
+			nameElement.setText(m.getName());
+			mechanismElement.addContent(nameElement);
+			Element typeElement = new Element("invocationMechanismType");
+			typeElement.setText(m.getType());
+			mechanismElement.addContent(typeElement);
+			Element mechanismDetails = new Element("mechanismDetails");
+			mechanismDetails.addContent(m.getXMLElement());
+			mechanismElement.addContent(mechanismDetails);
+
+			mechanismsElement.addContent(mechanismElement);
+		}
+		topElement.addContent(mechanismsElement);
+
+		Element groupsElement = new Element("invocationGroups");
+		for (InvocationGroup g : groups) {
+			Element groupElement = new Element("invocationGroup");
+			Element nameElement = new Element("invocationGroupName");
+			nameElement.setText(g.getName());
+			groupElement.addContent(nameElement);
+			Element mechanismNameElement = new Element("mechanismName");
+			mechanismNameElement.setText(g.getMechanism().getName());
+			groupElement.addContent(mechanismNameElement);
+			groupsElement.addContent(groupElement);
+		}
+		topElement.addContent(groupsElement);
+
+		configDocument.setRootElement(topElement);
+
+		FileWriter writer;
+		try {
+			writer = new FileWriter(f);
+			synchronized (outputter) {
+				outputter.output(configDocument, writer);
+			}
+			writer.close();
+		} catch (IOException e) {
+			logger.error("Unable to save invocation manager", e);
+		}
+	}
+
+	@Override
+	public void groupChanged(InvocationGroup group) {
+		observers.notify(new InvocationGroupChangedEvent(group));
+	}
+
+	@Override
+	public void addObserver(Observer<InvocationManagerEvent> observer) {
+		observers.addObserver(observer);
+	}
+
+	@Override
+	public List<Observer<InvocationManagerEvent>> getObservers() {
+		return observers.getObservers();
+	}
+
+	@Override
+	public void removeObserver(Observer<InvocationManagerEvent> observer) {
+		observers.removeObserver(observer);
+	}
+
+	@Override
+	public void deleteRun(String runId) {
+		for (InvocationPersister persister : invocationPersisters) {
+			persister.deleteRun(runId);
+		}
+	}
+
+	@Override
+	public void persistInvocations() {
+		for (InvocationPersister persister : invocationPersisters) {
+			persister.persist(getInvocationManagerDirectory());
+		}
+	}
+
+	@Override
+	public void loadInvocations() {
+		for (InvocationPersister persister : invocationPersisters) {
+			persister.load(getInvocationManagerDirectory());
+		}
+	}
+
+	@Override
+	public boolean containsMechanism(InvocationMechanism invocationMechanism) {
+		return mechanisms.contains(invocationMechanism);
+	}
+
+	@Override
+	public InvocationGroup getGroupReplacement(InvocationGroup group) {
+		return groupReplacements.get(group);
+	}
+
+	@Override
+	public InvocationMechanism getMechanismReplacement(String invocationMechanismSpecification) {
+		return mechanismReplacements.get(invocationMechanismSpecification);
+	}
+
+	@Override
+	public InvocationGroup getImportedGroup(String groupSpecification) {
+		return groupImports.get(groupSpecification);
+	}
+
+	@Override
+	public InvocationMechanism getImportedMechanism(String mechanismSpecification) {
+		return mechanismImports.get(mechanismSpecification);
+	}
+
+	@Override
+	public void importMechanism(String invocationMechanismSpecification,
+			InvocationMechanism createdMechanism) {
+		addMechanism(createdMechanism);
+		mechanismImports.put(invocationMechanismSpecification, createdMechanism);
+	}
+
+	@Override
+	public void importInvocationGroup(String invocationGroupSpecification,
+			InvocationGroup invocationGroup) {
+		addInvocationGroup(invocationGroup);
+		groupImports.put(invocationGroupSpecification, invocationGroup);
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/package.html b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/package.html
new file mode 100644
index 0000000..b07bedc
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/package.html
@@ -0,0 +1,3 @@
+<body>
+Contains the activity classes required to interact with use cases.
+</body>
\ No newline at end of file
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/repository/ExternalToolRepositoryUtil.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/repository/ExternalToolRepositoryUtil.java
new file mode 100644
index 0000000..5bfcc63
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/repository/ExternalToolRepositoryUtil.java
@@ -0,0 +1,12 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.externaltool.repository;
+
+/**
+ * @author alanrw
+ *
+ */
+public class ExternalToolRepositoryUtil {
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ssh/ExternalToolSshInvocationMechanism.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ssh/ExternalToolSshInvocationMechanism.java
new file mode 100644
index 0000000..0b89175
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ssh/ExternalToolSshInvocationMechanism.java
@@ -0,0 +1,96 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.externaltool.ssh;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.Text;
+
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshNodeFactory;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshUseCaseInvocation;
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
+
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshNode;
+
+/**
+ * @author alanrw
+ *
+ */
+public class ExternalToolSshInvocationMechanism extends InvocationMechanism {
+	
+	private List<SshNode> nodes = new ArrayList<SshNode>();
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism#getType()
+	 */
+	@Override
+	public String getType() {
+		return SshUseCaseInvocation.SSH_USE_CASE_INVOCATION_TYPE;
+	}
+
+	/**
+	 * @param list the nodes to set
+	 */
+	public void setNodes(List<SshNode> list) {
+		this.nodes = list;
+	}
+
+	public List<SshNode> getNodes() {
+		if (this.nodes.isEmpty()) {
+			this.nodes.add(SshNodeFactory.getInstance().getDefaultNode());
+		}
+		return this.nodes;
+	}
+
+	@Override
+	public Element getXMLElement() {
+		Element top = new Element("sshInvocation");
+		for (SshNode node : nodes) {
+			Element nodeElement = new Element("sshNode");
+			String host = node.getHost();
+			if (host != null) {
+				Element hostElement = new Element("host");
+				hostElement.addContent(new Text(host));
+				nodeElement.addContent(hostElement);
+			}
+			int port = node.getPort();
+			Element portElement = new Element("port");
+			portElement.addContent(new Text(Integer.toString(port)));
+			nodeElement.addContent(portElement);
+
+			String directory = node.getDirectory();
+			if (directory != null) {
+				Element directoryElement = new Element("directory");
+				directoryElement.addContent(new Text(directory));
+				nodeElement.addContent(directoryElement);
+			}
+			
+			String linkCommand = node.getLinkCommand();
+			if (linkCommand != null) {
+				Element linkCommandElement = new Element("linkCommand");
+				linkCommandElement.addContent(new Text(linkCommand));
+				nodeElement.addContent(linkCommandElement);
+			}
+			
+			String copyCommand = node.getCopyCommand();
+			if (copyCommand != null) {
+				Element copyCommandElement = new Element("copyCommand");
+				copyCommandElement.addContent(new Text(copyCommand));
+				nodeElement.addContent(copyCommandElement);
+			}
+			if (node.isRetrieveData()) {
+				Element retrieveDataElement = new Element("retrieveData");
+				nodeElement.addContent(retrieveDataElement);
+			}
+			
+			top.addContent(nodeElement);
+		}
+		return top;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ssh/SshInvocationCreator.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ssh/SshInvocationCreator.java
new file mode 100644
index 0000000..3d2f5b0
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ssh/SshInvocationCreator.java
@@ -0,0 +1,119 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.externaltool.ssh;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.t2.activities.externaltool.InvocationCreator;
+import net.sf.taverna.t2.activities.externaltool.RetrieveLoginFromTaverna;
+
+import org.apache.log4j.Logger;
+
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.SftpException;
+
+import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.UseCaseInvocation;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshNode;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshNodeFactory;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshReference;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshUrl;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshUseCaseInvocation;
+
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.Identified;
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.ReferenceSet;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
+
+/**
+ * @author alanrw
+ *
+ */
+public final class SshInvocationCreator implements InvocationCreator {
+
+	private static Logger logger = Logger.getLogger(SshInvocationCreator.class);
+
+    private static List<SshNode> knownNodes = new ArrayList<SshNode>();
+
+	private CredentialManager credentialManager;
+
+	@Override
+	public boolean canHandle(String mechanismType) {
+		return mechanismType.equals(SshUseCaseInvocation.SSH_USE_CASE_INVOCATION_TYPE);
+	}
+
+	@Override
+	public UseCaseInvocation convert(InvocationMechanism m, UseCaseDescription description, Map<String, T2Reference> data, ReferenceService referenceService) {
+	    ExternalToolSshInvocationMechanism mechanism = (ExternalToolSshInvocationMechanism) m;
+		SshUseCaseInvocation result = null;
+		try {
+		    SshNode chosenNode = chooseNode(mechanism.getNodes(), data, referenceService);
+		    result = new SshUseCaseInvocation(description, chosenNode, new RetrieveLoginFromTaverna(new SshUrl(chosenNode).toString(), credentialManager), credentialManager);
+		} catch (JSchException e) {
+			logger.error("Null invocation", e);
+		} catch (SftpException e) {
+			logger.error("Null invocation", e);
+		}
+		return result;
+	}
+
+    private static SshNode chooseNode(List<SshNode> possibleNodes, Map<String, T2Reference> data, ReferenceService referenceService) {
+	SshNode result = null;
+	for (T2Reference ref : data.values()) {
+		SshReference r = getAsSshReference(referenceService, ref);
+		if (r != null) {
+			SshNode dataNode = SshNodeFactory.getInstance().getSshNode(r.getHost(), r.getPort(), r.getDirectory());
+			if (possibleNodes.contains(dataNode)) {
+				logger.info("Running with data at " + r.getHost());
+				return dataNode;
+			}
+		}
+	}
+	synchronized(knownNodes) {
+	    int chosenIndex = Integer.MAX_VALUE;
+	    for (SshNode p : possibleNodes) {
+		if (!knownNodes.contains(p)) {
+		    knownNodes.add(p);
+		}
+		int index = knownNodes.indexOf(p);
+		if (index < chosenIndex) {
+		    chosenIndex = index;
+		}
+	    }
+	    if (chosenIndex != Integer.MAX_VALUE) {
+		result = knownNodes.get(chosenIndex);
+		// Move node to end of list
+		knownNodes.remove(result);
+		knownNodes.add(result);
+	    }
+	}
+	return result;
+    }
+
+    private static SshReference getAsSshReference(ReferenceService referenceService,
+			T2Reference t2Reference) {
+    	Identified identified = referenceService.resolveIdentifier(t2Reference, null, null);
+		if (identified instanceof ReferenceSet) {
+			for (ExternalReferenceSPI ref : ((ReferenceSet) identified).getExternalReferences()) {
+				if (ref instanceof SshReference) {
+					SshReference sshRef = (SshReference) ref;
+					return sshRef;
+				}
+			}
+		}
+		return null;
+	}
+
+	public void setCredentialManager(CredentialManager credentialManager) {
+		this.credentialManager = credentialManager;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ssh/SshInvocationPersister.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ssh/SshInvocationPersister.java
new file mode 100644
index 0000000..44217d3
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ssh/SshInvocationPersister.java
@@ -0,0 +1,56 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.externaltool.ssh;
+
+import java.io.File;
+
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationPersister;
+import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
+
+import org.apache.log4j.Logger;
+
+import de.uni_luebeck.inb.knowarc.usecases.invocation.InvocationException;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshUseCaseInvocation;
+
+/**
+ * @author alanrw
+ *
+ */
+public class SshInvocationPersister extends InvocationPersister {
+
+	private static Logger logger = Logger.getLogger(SshInvocationPersister.class);
+	private CredentialManager credentialManager;
+
+
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.activities.externaltool.manager.InvocationPersister#load()
+	 */
+	@Override
+	public void load(File directory) {
+		SshUseCaseInvocation.load(directory);
+	}
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.activities.externaltool.manager.InvocationPersister#persist()
+	 */
+	@Override
+	public void persist(File directory) {
+		SshUseCaseInvocation.persist(directory);
+	}
+
+	@Override
+	public void deleteRun(String runId) {
+		try {
+			SshUseCaseInvocation.cleanup(runId, credentialManager);
+		} catch (InvocationException e) {
+			logger.error(e);
+		}
+	}
+
+	public void setCredentialManager(CredentialManager credentialManager) {
+		this.credentialManager = credentialManager;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ssh/SshMechanismCreator.java b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ssh/SshMechanismCreator.java
new file mode 100644
index 0000000..5271b12
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/java/net/sf/taverna/t2/activities/externaltool/ssh/SshMechanismCreator.java
@@ -0,0 +1,84 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.externaltool.ssh;
+
+import java.util.ArrayList;
+
+import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
+import net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator;
+
+import org.apache.log4j.Logger;
+import org.jdom.Element;
+
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshNode;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshNodeFactory;
+import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshUseCaseInvocation;
+
+/**
+ * @author alanrw
+ *
+ */
+public class SshMechanismCreator extends MechanismCreator {
+
+
+	private static Logger logger = Logger.getLogger(SshMechanismCreator.class);
+	
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator#canHandle(java.lang.String)
+	 */
+	@Override
+	public boolean canHandle(String mechanismType) {
+		return mechanismType.equals(SshUseCaseInvocation.SSH_USE_CASE_INVOCATION_TYPE);
+	}
+
+
+	@Override
+	public InvocationMechanism convert(Element detailsElement,
+			String mechanismName) {
+		ExternalToolSshInvocationMechanism result = new ExternalToolSshInvocationMechanism();
+		result.setName(mechanismName);
+		ArrayList<SshNode> nodeList = new ArrayList<SshNode>();
+		for (Object nodeObject : detailsElement.getChildren("sshNode")) {
+			Element nodeElement = (Element) nodeObject;
+			Element hostElement = nodeElement.getChild("host");
+			String host;
+			int port;
+			String directory;
+
+				host = hostElement.getText();
+
+			Element portElement = nodeElement.getChild("port");
+			port = Integer.parseInt(portElement.getText());
+			
+			Element directoryElement = nodeElement.getChild("directory");
+
+				directory = directoryElement.getText();
+
+				boolean newNode = !SshNodeFactory.getInstance().containsSshNode(host, port, directory);
+			
+			SshNode node = SshNodeFactory.getInstance().getSshNode(host, port, directory);
+			
+			if (newNode) {
+
+			Element linkCommandElement = nodeElement.getChild("linkCommand");
+			if (linkCommandElement != null) {
+				node.setLinkCommand(linkCommandElement.getText());
+			}
+
+			Element copyCommandElement = nodeElement.getChild("copyCommand");
+			if (copyCommandElement != null) {
+				node.setCopyCommand(copyCommandElement.getText());
+			}
+			
+			Element retrieveDataElement = nodeElement.getChild("retrieveData");
+			node.setRetrieveData(retrieveDataElement != null);
+			}
+			nodeList.add(node);
+
+		}
+		result.setNodes(nodeList);		
+		return result;
+	}
+
+}
diff --git a/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.activities.externaltool.InvocationCreator b/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.activities.externaltool.InvocationCreator
new file mode 100644
index 0000000..3eeef74
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.activities.externaltool.InvocationCreator
@@ -0,0 +1,2 @@
+net.sf.taverna.t2.activities.externaltool.local.LocalInvocationCreator
+net.sf.taverna.t2.activities.externaltool.ssh.SshInvocationCreator
diff --git a/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.activities.externaltool.manager.InvocationPersister b/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.activities.externaltool.manager.InvocationPersister
new file mode 100644
index 0000000..4f4b71f
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.activities.externaltool.manager.InvocationPersister
@@ -0,0 +1,2 @@
+net.sf.taverna.t2.activities.externaltool.local.LocalInvocationPersister
+net.sf.taverna.t2.activities.externaltool.ssh.SshInvocationPersister
\ No newline at end of file
diff --git a/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator b/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator
new file mode 100644
index 0000000..2166ed6
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator
@@ -0,0 +1,2 @@
+net.sf.taverna.t2.activities.externaltool.local.LocalMechanismCreator
+net.sf.taverna.t2.activities.externaltool.ssh.SshMechanismCreator
\ No newline at end of file
diff --git a/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceSPI b/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceSPI
new file mode 100644
index 0000000..6a18935
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceSPI
@@ -0,0 +1,2 @@
+# Implementation classes of ExternalReferenceSPI go here, one per line
+de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshReference
diff --git a/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ValueToReferenceConverterSPI b/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ValueToReferenceConverterSPI
new file mode 100644
index 0000000..53ca06c
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ValueToReferenceConverterSPI
@@ -0,0 +1,3 @@
+# Implementation classes of ValueToReferenceConverterSPI go here, one per line
+de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshUrlToSshReference
+
diff --git a/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.RunDeletionListener b/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.RunDeletionListener
new file mode 100644
index 0000000..ac84bb3
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.RunDeletionListener
@@ -0,0 +1 @@
+net.sf.taverna.t2.activities.externaltool.ExternalToolRunDeletionListener
diff --git a/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker b/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
new file mode 100644
index 0000000..c97a79d
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
@@ -0,0 +1,2 @@
+net.sf.taverna.t2.activities.externaltool.ExternalToolActivityHealthChecker
+net.sf.taverna.t2.activities.externaltool.ExternalToolActivityMimeTypeChecker
diff --git a/taverna-external-tool-activity/src/main/resources/META-INF/spring/external-tool-activity-context-osgi.xml b/taverna-external-tool-activity/src/main/resources/META-INF/spring/external-tool-activity-context-osgi.xml
new file mode 100644
index 0000000..197f2c0
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/resources/META-INF/spring/external-tool-activity-context-osgi.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans:beans xmlns="http://www.springframework.org/schema/osgi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:beans="http://www.springframework.org/schema/beans"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans
+                      http://www.springframework.org/schema/beans/spring-beans.xsd
+                      http://www.springframework.org/schema/osgi
+                      http://www.springframework.org/schema/osgi/spring-osgi.xsd">
+
+	<service ref="SshReference" interface="net.sf.taverna.t2.reference.ExternalReferenceSPI" />
+
+	<service ref="invocationGroupManager" interface="net.sf.taverna.t2.activities.externaltool.manager.InvocationGroupManager" />
+
+	<service ref="LocalInvocationPersister" interface="net.sf.taverna.t2.activities.externaltool.manager.InvocationPersister" />
+	<service ref="SshInvocationPersister" interface="net.sf.taverna.t2.activities.externaltool.manager.InvocationPersister" />
+
+	<service ref="LocalMechanismCreator" interface="net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator" />
+	<service ref="SshMechanismCreator" interface="net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator" />
+
+	<service ref="ExternalToolRunDeletionListener" interface="net.sf.taverna.t2.workflowmodel.RunDeletionListener" />
+
+	<service ref="SshUrlToSshReference" interface="net.sf.taverna.t2.reference.ValueToReferenceConverterSPI" />
+
+	<service ref="ExternalToolActivityHealthChecker" interface="net.sf.taverna.t2.workflowmodel.health.HealthChecker" />
+	<service ref="ExternalToolActivityMimeTypeChecker" interface="net.sf.taverna.t2.workflowmodel.health.HealthChecker" />
+
+	<service ref="LocalInvocationCreator" interface="net.sf.taverna.t2.activities.externaltool.InvocationCreator" />
+	<service ref="SshInvocationCreator" interface="net.sf.taverna.t2.activities.externaltool.InvocationCreator" />
+
+	<service ref="externalToolActivityFactory" interface="net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory" />
+
+	<list id="invocationCreators" interface="net.sf.taverna.t2.activities.externaltool.InvocationCreator" cardinality="0..N" />
+
+	<list id="mechanismCreators" interface="net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator" cardinality="0..N" />
+
+        <list id="invocationPersisters" interface="net.sf.taverna.t2.activities.externaltool.manager.InvocationPersister" cardinality="0..N" />
+
+	<reference id="credentialManager" interface="net.sf.taverna.t2.security.credentialmanager.CredentialManager" />
+
+	<reference id="applicationConfiguration" interface="uk.org.taverna.configuration.app.ApplicationConfiguration" />
+
+        <reference id="edits" interface="net.sf.taverna.t2.workflowmodel.Edits" />
+</beans:beans>
diff --git a/taverna-external-tool-activity/src/main/resources/META-INF/spring/external-tool-activity-context.xml b/taverna-external-tool-activity/src/main/resources/META-INF/spring/external-tool-activity-context.xml
new file mode 100644
index 0000000..a3cfdb8
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/resources/META-INF/spring/external-tool-activity-context.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans
+                      http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+	<bean id="SshReference" class="de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshReference">
+		<property name="credentialManager" ref="credentialManager" />
+	</bean>
+
+	<bean id="LocalInvocationPersister" class="net.sf.taverna.t2.activities.externaltool.local.LocalInvocationPersister" />
+	<bean id="SshInvocationPersister" class="net.sf.taverna.t2.activities.externaltool.ssh.SshInvocationPersister">
+		<property name="credentialManager" ref="credentialManager" />
+	</bean>
+
+	<bean id="LocalMechanismCreator" class="net.sf.taverna.t2.activities.externaltool.local.LocalMechanismCreator" />
+	<bean id="SshMechanismCreator" class="net.sf.taverna.t2.activities.externaltool.ssh.SshMechanismCreator" />
+
+	<bean id="ExternalToolRunDeletionListener" class="net.sf.taverna.t2.activities.externaltool.ExternalToolRunDeletionListener">
+		<property name="invocationGroupManager" ref="invocationGroupManager" />
+	</bean>
+
+	<bean id="SshUrlToSshReference" class="de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshUrlToSshReference">
+		<property name="credentialManager" ref="credentialManager" />
+	</bean>
+
+	<bean id="ExternalToolActivityHealthChecker" class="net.sf.taverna.t2.activities.externaltool.ExternalToolActivityHealthChecker">
+		<property name="invocationGroupManager" ref="invocationGroupManager" />
+	</bean>
+	<bean id="ExternalToolActivityMimeTypeChecker" class="net.sf.taverna.t2.activities.externaltool.ExternalToolActivityMimeTypeChecker" />
+
+	<bean id="LocalInvocationCreator" class="net.sf.taverna.t2.activities.externaltool.local.LocalInvocationCreator" />
+	<bean id="SshInvocationCreator" class="net.sf.taverna.t2.activities.externaltool.ssh.SshInvocationCreator">
+		<property name="credentialManager" ref="credentialManager" />
+	</bean>
+
+
+	<bean id="externalToolActivityFactory" class="net.sf.taverna.t2.activities.externaltool.ExternalToolActivityFactory">
+		<property name="invocationCreators" ref="invocationCreators" />
+		<property name="mechanismCreators" ref="mechanismCreators" />
+                <property name="edits" ref="edits" />
+	</bean>
+
+	<bean id="invocationGroupManager" class="net.sf.taverna.t2.activities.externaltool.manager.impl.InvocationGroupManagerImpl">
+		<constructor-arg name="applicationConfiguration" ref="applicationConfiguration" />
+		<constructor-arg name="mechanismCreators" ref="mechanismCreators" />
+		<constructor-arg name="invocationPersisters" ref="invocationPersisters" />
+	</bean>
+
+
+</beans>
diff --git a/taverna-external-tool-activity/src/main/resources/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshReference.hbm.xml b/taverna-external-tool-activity/src/main/resources/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshReference.hbm.xml
new file mode 100644
index 0000000..384cb25
--- /dev/null
+++ b/taverna-external-tool-activity/src/main/resources/de/uni_luebeck/inb/knowarc/usecases/invocation/ssh/SshReference.hbm.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+                "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+                "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<!-- Hibernate mapping for ssh reference bean -->
+<hibernate-mapping>
+	<joined-subclass
+		name="de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshReference"
+		extends="net.sf.taverna.t2.reference.AbstractExternalReference">
+		<!-- Link to primary key from abstract superclass -->
+		<key column="bean_id" />
+		<!-- SshReference specific properties below here -->
+		<property name="host" type="string" />
+		<property name="port" type="integer"/>
+		<property name="directory" type="string" />
+		<property name="subDirectory" type="string" />
+		<property name="fileName" type="string" />
+		<property name="dataNatureInteger" type="integer"/> 
+ 
+		<property name="charset" type="string" />
+	</joined-subclass>
+</hibernate-mapping>
+
diff --git a/taverna-interaction-activity/pom.xml b/taverna-interaction-activity/pom.xml
new file mode 100644
index 0000000..b32410c
--- /dev/null
+++ b/taverna-interaction-activity/pom.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.taverna.commonactivities</groupId>
+		<artifactId>taverna-common-activities</artifactId>
+		<version>2.1.0-incubating-SNAPSHOT</version>
+	</parent>
+	<artifactId>taverna-interaction-activity</artifactId>
+	<packaging>bundle</packaging>
+	<name>Apache Taverna Interaction Activity</name>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<configuration>
+					<instructions>
+					<!--  Export nothing -->
+						<Export-Package></Export-Package>
+						<Embed-Transitive>true</Embed-Transitive>
+						<Embed-Dependency>webdav-servlet</Embed-Dependency>
+					</instructions>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+	<dependencies>
+
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-reference-api</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-workflowmodel-api</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-credential-manager</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-activity-test-utils</artifactId>
+			<version>${taverna.engine.version}</version>
+			<scope>test</scope>
+		</dependency>
+
+	<dependency>
+    <groupId>commons-io</groupId>
+		<artifactId>commons-io</artifactId>
+		<version>${commons.io.version}</version>
+	</dependency>
+
+	<dependency>
+    <groupId>commons-codec</groupId>
+    <artifactId>commons-codec</artifactId>
+		<version>${commons.codec.version}</version>
+	</dependency>
+
+
+
+		<!--  Mortbay jetty artifacts are bundles -->
+		<dependency>
+			<groupId>org.mortbay.jetty</groupId>
+			<artifactId>jetty</artifactId>
+			<version>${jetty.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.mortbay.jetty</groupId>
+			<artifactId>jetty-util</artifactId>
+			<version>${jetty.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.5</version>
+		</dependency>
+
+		<dependency>
+			<groupId>net.sf.webdav-servlet</groupId>
+			<artifactId>webdav-servlet</artifactId>
+			<version>2.0</version>
+		</dependency>
+
+<!--  The abdera artifacts are bundles -->
+		<dependency>
+			<groupId>org.apache.abdera</groupId>
+			<artifactId>abdera-core</artifactId>
+			<version>${abdera.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.abdera</groupId>
+			<artifactId>abdera-client</artifactId>
+			<version>${abdera.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.abdera</groupId>
+			<artifactId>abdera-server</artifactId>
+			<version>${abdera.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.abdera</groupId>
+			<artifactId>abdera-extensions-main</artifactId>
+			<version>${abdera.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.abdera</groupId>
+			<artifactId>abdera-extensions-html</artifactId>
+			<version>${abdera.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.abdera</groupId>
+			<artifactId>abdera-extensions-json</artifactId>
+			<version>${abdera.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.abdera</groupId>
+			<artifactId>abdera-i18n</artifactId>
+			<version>${abdera.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.abdera</groupId>
+			<artifactId>abdera-parser</artifactId>
+			<version>${abdera.version}</version>
+		</dependency>
+
+<!--  The velocity artifact is a bundle -->
+		<dependency>
+			<groupId>org.apache.velocity</groupId>
+			<artifactId>velocity</artifactId>
+			<version>${velocity.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+      <version>${junit.version}</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+
+</project>
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/FeedReader.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/FeedReader.java
new file mode 100644
index 0000000..7be03df
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/FeedReader.java
@@ -0,0 +1,87 @@
+package net.sf.taverna.t2.activities.interaction;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Date;
+
+import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
+
+import org.apache.abdera.model.Document;
+import org.apache.abdera.model.Entry;
+import org.apache.abdera.model.Feed;
+import org.apache.abdera.parser.ParseException;
+import org.apache.abdera.parser.Parser;
+import org.apache.abdera.parser.stax.FOMParser;
+import org.apache.log4j.Logger;
+
+public abstract class FeedReader extends Thread {
+
+	static final Logger logger = Logger.getLogger(FeedReader.class);
+
+	public FeedReader(final String name) {
+		super(name);
+		this.setDaemon(true);
+	}
+
+	protected abstract void considerEntry(Entry entry);
+
+	@Override
+	public void run() {
+		try {
+			final Parser parser = new FOMParser();
+			Date lastCheckedDate = new Date();
+			while (true) {
+				try {
+					sleep(5000);
+				} catch (final InterruptedException e1) {
+					logger.error(e1);
+				}
+				InputStream openStream = null;
+				try {
+					final Date newLastCheckedDate = new Date();
+					final URL url = getInteractionPreference().getFeedUrl();
+					openStream = url.openStream();
+					final Document<Feed> doc = parser.parse(openStream,
+							url.toString());
+					final Feed feed = doc.getRoot().sortEntriesByEdited(true);
+
+					for (final Entry entry : feed.getEntries()) {
+
+						Date d = entry.getEdited();
+						if (d == null) {
+							d = entry.getUpdated();
+						}
+						if (d == null) {
+							d = entry.getPublished();
+						}
+						 if (d.before(lastCheckedDate)) {
+						 break;
+						 }
+						this.considerEntry(entry);
+					}
+					lastCheckedDate = newLastCheckedDate;
+				} catch (final MalformedURLException e) {
+					logger.error(e);
+				} catch (final ParseException e) {
+					logger.error(e);
+				} catch (final IOException e) {
+					logger.error(e);
+				} finally {
+					try {
+						if (openStream != null) {
+							openStream.close();
+						}
+					} catch (final IOException e) {
+						logger.error(e);
+					}
+				}
+			}
+		} catch (final Exception e) {
+			logger.error(e);
+		}
+	}
+
+	protected abstract InteractionPreference getInteractionPreference();
+}
\ No newline at end of file
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivity.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivity.java
new file mode 100644
index 0000000..cfc2182
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivity.java
@@ -0,0 +1,156 @@
+package net.sf.taverna.t2.activities.interaction;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.t2.activities.interaction.jetty.InteractionJetty;
+import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
+import net.sf.taverna.t2.activities.interaction.velocity.InteractionVelocity;
+import net.sf.taverna.t2.activities.interaction.velocity.NotifyChecker;
+import net.sf.taverna.t2.activities.interaction.velocity.ProduceChecker;
+import net.sf.taverna.t2.activities.interaction.velocity.RequireChecker;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AbstractAsynchronousActivity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
+import net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean;
+import net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean;
+
+import org.apache.log4j.Logger;
+import org.apache.velocity.Template;
+import org.apache.velocity.app.Velocity;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.runtime.parser.node.ASTprocess;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+public final class InteractionActivity extends
+		AbstractAsynchronousActivity<JsonNode>
+		implements AsynchronousActivity<JsonNode> {
+	
+	public static final String URI = "http://ns.taverna.org.uk/2010/activity/interaction";
+
+	@SuppressWarnings("unused")
+	private static final Logger logger = Logger
+			.getLogger(InteractionActivity.class);
+
+	private Template presentationTemplate;
+
+	private final Map<String, Integer> inputDepths = new HashMap<String, Integer>();
+	private final Map<String, Integer> outputDepths = new HashMap<String, Integer>();
+
+	private CredentialManager credentialManager;
+
+	private InteractionRecorder interactionRecorder;
+
+	private InteractionUtils interactionUtils;
+
+	private InteractionJetty interactionJetty;
+
+	private InteractionPreference interactionPreference;
+
+	private ResponseFeedListener responseFeedListener;
+
+	private JsonNode json;
+
+	private InteractionVelocity interactionVelocity;
+
+	public InteractionActivity(final CredentialManager credentialManager,
+			final InteractionRecorder interactionRecorder,
+			final InteractionUtils interactionUtils,
+			final InteractionJetty interactionJetty,
+			final InteractionPreference interactionPreference,
+			final ResponseFeedListener responseFeedListener,
+			final InteractionVelocity interactionVelocity) {
+		this.credentialManager = credentialManager;
+		this.interactionRecorder = interactionRecorder;
+		this.interactionUtils = interactionUtils;
+		this.interactionJetty = interactionJetty;
+		this.interactionPreference = interactionPreference;
+		this.responseFeedListener = responseFeedListener;
+		this.interactionVelocity = interactionVelocity;
+		this.json = null;
+	}
+
+	@Override
+	public void configure(final JsonNode json)
+			throws ActivityConfigurationException {
+		
+		this.json = json;
+	}
+
+	@Override
+	public void executeAsynch(final Map<String, T2Reference> inputs,
+			final AsynchronousActivityCallback callback) {
+		// Don't execute service directly now, request to be run ask to be run
+		// from thread pool and return asynchronously
+		final InteractionRequestor requestor = new InteractionCallbackRequestor(
+				this, callback, inputs);
+		callback.requestRun(new InteractionActivityRunnable(requestor,
+				this.presentationTemplate,
+				this.credentialManager,
+				this.interactionRecorder,
+				this.interactionUtils,
+				this.interactionJetty,
+				this.interactionPreference,
+				this.responseFeedListener,
+				this.interactionVelocity));
+	}
+
+	@Override
+	public JsonNode getConfiguration() {
+		return this.json;
+	}
+
+	public ActivityInputPort getInputPort(final String name) {
+		for (final ActivityInputPort port : this.getInputPorts()) {
+			if (port.getName().equals(name)) {
+				return port;
+			}
+		}
+		return null;
+	}
+
+	InteractionActivityType getInteractionActivityType() {
+		JsonNode subNode = json.get("interactivityActivityType");
+		if (subNode == null) {
+			return InteractionActivityType.LocallyPresentedHtml;
+		}
+		String textValue = subNode.textValue();
+		if (textValue == null) {
+			return InteractionActivityType.LocallyPresentedHtml;
+		}
+		if ("VelocityTemplate".equals(textValue)) {
+			return InteractionActivityType.VelocityTemplate;
+		}
+		return InteractionActivityType.LocallyPresentedHtml;
+	}
+	
+
+	 String getPresentationOrigin() {
+		JsonNode subNode = json.get("presentationOrigin");
+		if (subNode == null) {
+			return null;
+		}
+		String textValue = subNode.textValue();
+		if (textValue == null) {
+			return null;			
+		}
+		return textValue;
+	}
+
+	public boolean isProgressNotification() {
+		JsonNode subNode = json.get("progressNotification");
+		if (subNode == null) {
+			return false;
+		}
+		return subNode.booleanValue();
+	}
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityFactory.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityFactory.java
new file mode 100644
index 0000000..911d860
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityFactory.java
@@ -0,0 +1,135 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.interaction;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.Set;
+
+import net.sf.taverna.t2.activities.interaction.jetty.InteractionJetty;
+import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
+import net.sf.taverna.t2.activities.interaction.velocity.InteractionVelocity;
+import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+/**
+ * @author alanrw
+ *
+ */
+public class InteractionActivityFactory implements ActivityFactory {
+	
+	private CredentialManager credentialManager;
+	
+	private InteractionRecorder interactionRecorder;
+	
+	private InteractionUtils interactionUtils;
+
+	private InteractionJetty interactionJetty;
+
+	private InteractionPreference interactionPreference;
+
+	private ResponseFeedListener responseFeedListener;
+
+	private InteractionVelocity interactionVelocity;
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory#createActivity()
+	 */
+	@Override
+	public InteractionActivity createActivity() {
+		return new InteractionActivity(this.credentialManager,
+				this.interactionRecorder,
+				this.interactionUtils,
+				this.interactionJetty,
+				this.interactionPreference,
+				this.responseFeedListener,
+				this.interactionVelocity);
+	}
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory#getActivityType()
+	 */
+	@Override
+	public URI getActivityType() {
+		return URI.create(InteractionActivity.URI);
+	}
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory#getActivityConfigurationSchema()
+	 */
+	@Override
+	public JsonNode getActivityConfigurationSchema() {
+		ObjectMapper objectMapper = new ObjectMapper();
+		try {
+			return objectMapper.readTree(getClass().getResource("/schema.json"));
+		} catch (IOException e) {
+			return objectMapper.createObjectNode();
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory#getInputPorts(com.fasterxml.jackson.databind.JsonNode)
+	 */
+	@Override
+	public Set<ActivityInputPort> getInputPorts(JsonNode configuration)
+			throws ActivityConfigurationException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory#getOutputPorts(com.fasterxml.jackson.databind.JsonNode)
+	 */
+	@Override
+	public Set<ActivityOutputPort> getOutputPorts(JsonNode configuration)
+			throws ActivityConfigurationException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * @return the credentialManager
+	 */
+	public CredentialManager getCredentialManager() {
+		return credentialManager;
+	}
+
+	/**
+	 * @param credentialManager the credentialManager to set
+	 */
+	public void setCredentialManager(CredentialManager credentialManager) {
+		this.credentialManager = credentialManager;
+	}
+
+	public void setInteractionRecorder(InteractionRecorder interactionRecorder) {
+		this.interactionRecorder = interactionRecorder;
+	}
+
+	public void setInteractionUtils(InteractionUtils interactionUtils) {
+		this.interactionUtils = interactionUtils;
+	}
+
+	public void setInteractionJetty(InteractionJetty interactionJetty) {
+		this.interactionJetty = interactionJetty;
+	}
+
+	public void setInteractionPreference(InteractionPreference interactionPreference) {
+		this.interactionPreference = interactionPreference;
+	}
+
+	public void setResponseFeedListener(ResponseFeedListener responseFeedListener) {
+		this.responseFeedListener = responseFeedListener;
+	}
+
+	public void setInteractionVelocity(InteractionVelocity interactionVelocity) {
+		this.interactionVelocity = interactionVelocity;
+	}
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityHealthChecker.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityHealthChecker.java
new file mode 100644
index 0000000..555fe6a
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityHealthChecker.java
@@ -0,0 +1,39 @@
+package net.sf.taverna.t2.activities.interaction;
+
+import java.util.List;
+
+import net.sf.taverna.t2.visit.VisitReport;
+import net.sf.taverna.t2.workflowmodel.health.HealthChecker;
+import net.sf.taverna.t2.workflowmodel.health.RemoteHealthChecker;
+
+/**
+ * Example health checker
+ * 
+ */
+public class InteractionActivityHealthChecker implements
+		HealthChecker<InteractionActivity> {
+
+	@Override
+	public boolean canVisit(final Object o) {
+		return o instanceof InteractionActivity;
+	}
+
+	@Override
+	public boolean isTimeConsuming() {
+		return true;
+	}
+
+	@Override
+	public VisitReport visit(final InteractionActivity activity,
+			final List<Object> ancestry) {
+
+		if (activity.getInteractionActivityType().equals(
+				InteractionActivityType.LocallyPresentedHtml)) {
+			return RemoteHealthChecker.contactEndpoint(activity,
+					activity.getPresentationOrigin());
+		}
+
+		return null;
+	}
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityRunnable.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityRunnable.java
new file mode 100644
index 0000000..342eeda
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityRunnable.java
@@ -0,0 +1,329 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.StringWriter;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.Date;
+import java.util.Map;
+import java.util.UUID;
+
+import net.sf.taverna.t2.activities.interaction.atom.AtomUtils;
+import net.sf.taverna.t2.activities.interaction.jetty.InteractionJetty;
+import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
+import net.sf.taverna.t2.activities.interaction.velocity.InteractionVelocity;
+import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
+
+import org.apache.abdera.Abdera;
+import org.apache.abdera.i18n.text.Normalizer;
+import org.apache.abdera.i18n.text.Sanitizer;
+import org.apache.abdera.model.Element;
+import org.apache.abdera.model.Entry;
+import org.apache.abdera.parser.stax.FOMElement;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.log4j.Logger;
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+
+public final class InteractionActivityRunnable implements Runnable {
+
+	private static final Logger logger = Logger
+			.getLogger(InteractionActivityRunnable.class);
+
+	private static final Abdera ABDERA = Abdera.getInstance();
+
+	private final Template presentationTemplate;
+
+	private final InteractionRequestor requestor;
+
+	private CredentialManager credentialManager;
+
+	private InteractionRecorder interactionRecorder;
+	
+	private InteractionUtils interactionUtils;
+
+	private InteractionJetty interactionJetty;
+
+	private InteractionPreference interactionPreference;
+
+	private ResponseFeedListener responseFeedListener;
+
+	private InteractionVelocity interactionVelocity;
+
+	public InteractionActivityRunnable(final InteractionRequestor requestor,
+			final Template presentationTemplate,
+			final CredentialManager credentialManager,
+			final InteractionRecorder interactionRecorder,
+			final InteractionUtils interactionUtils,
+			final InteractionJetty interactionJetty,
+			final InteractionPreference interactionPreference,
+			final ResponseFeedListener responseFeedListener,
+			final InteractionVelocity interactionVelocity) {
+		this.requestor = requestor;
+		this.presentationTemplate = presentationTemplate;
+		this.credentialManager = credentialManager;
+		this.interactionRecorder = interactionRecorder;
+		this.interactionUtils = interactionUtils;
+		this.interactionJetty = interactionJetty;
+		this.interactionPreference = interactionPreference;
+		this.responseFeedListener = responseFeedListener;
+		this.interactionVelocity = interactionVelocity;
+	}
+
+	@Override
+	public void run() {
+		/*
+		 * InvocationContext context = callback.getContext();
+		 */
+		final String runId = InteractionUtils.getUsedRunId(this.requestor
+				.getRunId());
+
+		final String id = Sanitizer.sanitize(UUID.randomUUID().toString(), "",
+				true, Normalizer.Form.D);
+
+		final Map<String, Object> inputData = this.requestor.getInputData();
+
+		if (interactionPreference.getUseJetty()) {
+			interactionJetty.startJettyIfNecessary(credentialManager);
+		}
+		interactionJetty.startListenersIfNecessary();
+		try {
+			interactionUtils.copyFixedFile("pmrpc.js");
+			interactionUtils.copyFixedFile("interaction.css");
+		} catch (final IOException e1) {
+			logger.error(e1);
+			this.requestor.fail("Unable to copy necessary fixed file");
+			return;
+		}
+		synchronized (ABDERA) {
+			final Entry interactionNotificationMessage = this
+					.createBasicInteractionMessage(id, runId);
+
+			for (final String key : inputData.keySet()) {
+				final Object value = inputData.get(key);
+				if (value instanceof byte[]) {
+					final String replacementUrl = interactionPreference
+							.getPublicationUrlString(id, key);
+					final ByteArrayInputStream bais = new ByteArrayInputStream(
+							(byte[]) value);
+					try {
+						interactionUtils.publishFile(replacementUrl, bais,
+								runId, id);
+						bais.close();
+						inputData.put(key, replacementUrl);
+					} catch (final IOException e) {
+						logger.error(e);
+						this.requestor.fail("Unable to publish to " + replacementUrl);
+						return;
+					}
+				}
+			}
+
+			final String inputDataString = this.createInputDataJson(inputData);
+			if (inputDataString == null) {
+				return;
+			}
+			final String inputDataUrl = interactionPreference
+					.getInputDataUrlString(id);
+			try {
+				interactionUtils.publishFile(inputDataUrl, inputDataString,
+						runId, id);
+			} catch (final IOException e) {
+				logger.error(e);
+				this.requestor.fail("Unable to publish to " + inputDataUrl);
+				return;
+			}
+
+			String outputDataUrl = null;
+
+			if (!this.requestor.getInteractionType().equals(
+					InteractionType.Notification)) {
+				outputDataUrl = interactionPreference
+						.getOutputDataUrlString(id);
+			}
+			final String interactionUrlString = this.generateHtml(inputDataUrl,
+					outputDataUrl, inputData, runId, id);
+
+			try {
+				this.postInteractionMessage(id, interactionNotificationMessage,
+						interactionUrlString, runId);
+			} catch (IOException e) {
+				logger.error(e);
+				this.requestor.fail("Unable to post message");
+				return;
+			}
+			if (!this.requestor.getInteractionType().equals(
+					InteractionType.Notification)) {
+				responseFeedListener.registerInteraction(
+						interactionNotificationMessage, this.requestor);
+			} else {
+				this.requestor.carryOn();
+
+			}
+		}
+	}
+
+	private String createInputDataJson(final Map<String, Object> inputData) {
+		try {
+			return InteractionUtils.objectToJson(inputData);
+		} catch (final IOException e) {
+			logger.error(e);
+			this.requestor.fail("Unable to generate JSON");
+		}
+		return null;
+	}
+
+	private Entry createBasicInteractionMessage(final String id,
+			final String runId) {
+		final Entry interactionNotificationMessage = ABDERA.newEntry();
+
+		interactionNotificationMessage.setId(id);
+		final Date timestamp = new Date();
+		interactionNotificationMessage.setPublished(timestamp);
+		interactionNotificationMessage.setUpdated(timestamp);
+
+		interactionNotificationMessage.addAuthor("Taverna");
+		interactionNotificationMessage.setTitle("Interaction from Taverna for "
+				+ this.requestor.generateId());
+
+		final Element runIdElement = interactionNotificationMessage
+				.addExtension(AtomUtils.getRunIdQName());
+		runIdElement.setText(StringEscapeUtils.escapeJavaScript(runId));
+		
+		final Element pathIdElement = interactionNotificationMessage.addExtension(AtomUtils.getPathIdQName());
+		pathIdElement.setText(StringEscapeUtils.escapeJavaScript(this.requestor.getPath()));
+		
+		final Element countElement = interactionNotificationMessage.addExtension(AtomUtils.getCountQName());
+		countElement.setText(StringEscapeUtils.escapeJavaScript(this.requestor.getInvocationCount().toString()));
+		
+		if (this.requestor.getInteractionType().equals(
+				InteractionType.Notification)) {
+			interactionNotificationMessage.addExtension(AtomUtils
+					.getProgressQName());
+		}
+		final Element idElement = interactionNotificationMessage
+				.addExtension(AtomUtils.getIdQName());
+		idElement.setText(id);
+
+		return interactionNotificationMessage;
+	}
+
+	private void postInteractionMessage(final String id, final Entry entry,
+			final String interactionUrlString, final String runId) throws IOException {
+
+		entry.addLink(StringEscapeUtils.escapeXml(interactionUrlString),
+				"presentation");
+		entry.setContentAsXhtml("<p><a href=\""
+				+ StringEscapeUtils.escapeXml(interactionUrlString)
+				+ "\">Open: "
+				+ StringEscapeUtils.escapeXml(interactionUrlString)
+				+ "</a></p>");
+
+		URL feedUrl;
+
+			feedUrl = new URL(interactionPreference
+					.getFeedUrlString());
+			final String entryContent = ((FOMElement) entry)
+					.toFormattedString();
+			final HttpURLConnection httpCon = (HttpURLConnection) feedUrl
+					.openConnection();
+			httpCon.setDoOutput(true);
+			httpCon.setRequestProperty("Content-Type",
+					"application/atom+xml;type=entry;charset=UTF-8");
+			httpCon.setRequestProperty("Content-Length",
+					"" + entryContent.length());
+			httpCon.setRequestProperty("Slug", id);
+			httpCon.setRequestMethod("POST");
+			httpCon.setConnectTimeout(5000);
+			final OutputStream outputStream = httpCon.getOutputStream();
+			IOUtils.write(entryContent, outputStream, "UTF-8");
+			outputStream.close();
+			final int response = httpCon.getResponseCode();
+			if ((response < 0) || (response >= 400)) {
+				logger.error("Received response code" + response);
+				throw (new IOException ("Received response code " + response));
+			}
+			if (response == HttpURLConnection.HTTP_CREATED) {
+				interactionRecorder.addResource(runId, id,
+						httpCon.getHeaderField("Location"));
+			}
+	}
+
+	String generateHtml(final String inputDataUrl, final String outputDataUrl,
+			final Map<String, Object> inputData, final String runId,
+			final String id) {
+
+		final VelocityContext velocityContext = new VelocityContext();
+
+		for (final String inputName : inputData.keySet()) {
+			final Object input = inputData.get(inputName);
+			velocityContext.put(inputName, input);
+		}
+
+		velocityContext.put("feed", interactionPreference
+				.getFeedUrlString());
+		velocityContext.put("runId", runId);
+		velocityContext.put("entryId", id);
+		final String pmrpcUrl = interactionPreference
+				.getLocationUrl() + "/pmrpc.js";
+		velocityContext.put("pmrpcUrl", pmrpcUrl);
+		velocityContext.put("inputDataUrl", inputDataUrl);
+		velocityContext.put("outputDataUrl", outputDataUrl);
+		final String interactionUrl = interactionPreference
+				.getInteractionUrlString(id);
+
+		velocityContext.put("interactionUrl", interactionUrl);
+
+		String presentationUrl = "";
+		final String authorizeUrl = "";
+		try {
+			if (this.requestor.getPresentationType().equals(
+					InteractionActivityType.VelocityTemplate)) {
+
+				presentationUrl = interactionPreference
+						.getPresentationUrlString(id);
+
+				final String presentationString = this.processTemplate(
+						this.presentationTemplate, velocityContext);
+				interactionUtils.publishFile(presentationUrl,
+						presentationString, runId, id);
+
+			} else if (this.requestor.getPresentationType().equals(
+					InteractionActivityType.LocallyPresentedHtml)) {
+				presentationUrl = this.requestor.getPresentationOrigin();
+			}
+
+			velocityContext.put("presentationUrl", presentationUrl);
+
+			final String interactionString = this.processTemplate(
+					interactionVelocity.getInteractionTemplate(),
+					velocityContext);
+			interactionUtils.publishFile(interactionUrl, interactionString,
+					runId, id);
+
+			if (!authorizeUrl.isEmpty()) {
+				return authorizeUrl;
+			}
+			return interactionUrl;
+		} catch (final IOException e) {
+			logger.error(e);
+			this.requestor.fail("Unable to generate HTML");
+			return null;
+		}
+	}
+
+	private String processTemplate(final Template template,
+			final VelocityContext context) throws IOException {
+		final StringWriter resultWriter = new StringWriter();
+		template.merge(context, resultWriter);
+		resultWriter.close();
+		return resultWriter.toString();
+	}
+
+}
\ No newline at end of file
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityType.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityType.java
new file mode 100644
index 0000000..63bc001
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionActivityType.java
@@ -0,0 +1,15 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction;
+
+/**
+ * @author alanrw
+ * 
+ *         Should be renamed something like presentation type
+ */
+public enum InteractionActivityType {
+
+	VelocityTemplate, LocallyPresentedHtml
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionCallbackRequestor.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionCallbackRequestor.java
new file mode 100644
index 0000000..f7445a8
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionCallbackRequestor.java
@@ -0,0 +1,193 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import net.sf.taverna.t2.invocation.InvocationContext;
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.reference.WorkflowRunIdEntity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
+
+/**
+ * @author alanrw
+ * 
+ */
+public class InteractionCallbackRequestor implements InteractionRequestor {
+
+	private final AsynchronousActivityCallback callback;
+
+	private final Map<String, T2Reference> inputs;
+
+	private final InteractionActivity activity;
+
+	private boolean answered = false;
+
+	private String path;
+
+	private Integer count;
+	
+	private static Map<String, Integer> invocationCount = new HashMap<String, Integer> ();
+
+	public InteractionCallbackRequestor(final InteractionActivity activity,
+			final AsynchronousActivityCallback callback,
+			final Map<String, T2Reference> inputs) {
+		this.activity = activity;
+		this.callback = callback;
+		this.inputs = inputs;
+		this.path = calculatePath();
+		this.count = calculateInvocationCount(path);
+	}
+
+	@Override
+	public String getRunId() {
+		return this.callback.getContext()
+				.getEntities(WorkflowRunIdEntity.class).get(0)
+				.getWorkflowRunId();
+	}
+
+	@Override
+	public Map<String, Object> getInputData() {
+		final Map<String, Object> inputData = new HashMap<String, Object>();
+
+		final InvocationContext context = this.callback.getContext();
+		final ReferenceService referenceService = context.getReferenceService();
+		for (final String inputName : this.inputs.keySet()) {
+			final Object input = referenceService.renderIdentifier(this.inputs
+					.get(inputName), this.getInputPort(inputName)
+					.getTranslatedElementClass(), this.callback.getContext());
+			inputData.put(inputName, input);
+		}
+		return inputData;
+	}
+
+	public ActivityInputPort getInputPort(final String name) {
+		for (final ActivityInputPort port : this.activity.getInputPorts()) {
+			if (port.getName().equals(name)) {
+				return port;
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public void fail(final String string) {
+		if (this.answered) {
+			return;
+		}
+		this.callback.fail(string);
+		this.answered = true;
+	}
+
+	@Override
+	public void carryOn() {
+		if (this.answered) {
+			return;
+		}
+		this.callback.receiveResult(new HashMap<String, T2Reference>(),
+				new int[0]);
+		this.answered = true;
+	}
+
+	@Override
+	public String generateId() {
+		final String workflowRunId = getRunId();
+		final String parentProcessIdentifier = this.callback
+				.getParentProcessIdentifier();
+		return (workflowRunId + ":" + parentProcessIdentifier);
+	}
+
+	@Override
+	public InteractionType getInteractionType() {
+		if (this.activity.isProgressNotification()) {
+			return InteractionType.Notification;
+		}
+		return InteractionType.DataRequest;
+	}
+
+	@Override
+	public InteractionActivityType getPresentationType() {
+		return this.activity.getInteractionActivityType();
+	}
+
+	@Override
+	public String getPresentationOrigin() {
+		return this.activity.getPresentationOrigin();
+	}
+
+	@Override
+	public void receiveResult(final Map<String, Object> resultMap) {
+		if (this.answered) {
+			return;
+		}
+		final Map<String, T2Reference> outputs = new HashMap<String, T2Reference>();
+
+		final InvocationContext context = this.callback.getContext();
+		final ReferenceService referenceService = context.getReferenceService();
+
+		for (final Object key : resultMap.keySet()) {
+			final String keyString = (String) key;
+			final Object value = resultMap.get(key);
+			final Integer depth = this.findPortDepth(keyString);
+			if (depth == null) {
+				this.callback.fail("Data sent for unknown port : " + keyString);
+			}
+			outputs.put(keyString,
+					referenceService.register(value, depth, true, context));
+		}
+		this.callback.receiveResult(outputs, new int[0]);
+		this.answered = true;
+	}
+
+	private Integer findPortDepth(final String portName) {
+		final Set<ActivityOutputPort> ports = this.activity.getOutputPorts();
+		for (final ActivityOutputPort op : ports) {
+			if (op.getName().equals(portName)) {
+				return op.getDepth();
+			}
+		}
+		return null;
+	}
+
+	private String calculatePath() {
+		final String parentProcessIdentifier = this.callback
+				.getParentProcessIdentifier();
+		String result = "";
+		String parts[] = parentProcessIdentifier.split(":");
+
+		for (int i = 2; i < parts.length; i += 4) {
+			if (!result.isEmpty()) {
+				result += ":";
+			}
+			result += parts[i];
+		}
+		return result;
+	}
+
+	@Override
+	public String getPath() {
+		return this.path;
+	}
+	
+	private synchronized static Integer calculateInvocationCount(String path) {
+		Integer currentCount = invocationCount.get(path);
+		if (currentCount == null) {
+			currentCount = Integer.valueOf(0);
+		} else {
+			currentCount = currentCount + 1;
+		}
+		invocationCount.put(path, currentCount);
+		return currentCount;
+	}
+
+	@Override
+	public Integer getInvocationCount() {
+		return count;
+	}
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRecorder.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRecorder.java
new file mode 100644
index 0000000..66b2d38
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRecorder.java
@@ -0,0 +1,163 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.interaction;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.log4j.Logger;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+/**
+ * 
+ * This class is used to remember and forget interactions and their associated
+ * ATOM entries and files
+ * 
+ * @author alanrw
+ * 
+ */
+public class InteractionRecorder {
+
+	private static final Logger logger = Logger
+			.getLogger(InteractionRecorder.class);
+
+	static Map<String, Map<String, Set<String>>> runToInteractionMap = Collections
+			.synchronizedMap(new HashMap<String, Map<String, Set<String>>>());
+	
+	private InteractionUtils interactionUtils;
+
+	private InteractionRecorder() {
+		super();
+	}
+
+	public void deleteRun(final String runToDelete) {
+		final Set<String> interactionIds = new HashSet<String>(
+				getInteractionMap(runToDelete).keySet());
+		for (final String interactionId : interactionIds) {
+			deleteInteraction(runToDelete, interactionId);
+		}
+		runToInteractionMap.remove(runToDelete);
+	}
+
+	public void deleteInteraction(final String runId,
+			final String interactionId) {
+		for (final String urlString : getResourceSet(runId, interactionId)) {
+			try {
+				deleteUrl(urlString);
+			} catch (final IOException e) {
+				logger.info("Unable to delete " + urlString, e);
+			}
+
+		}
+		getInteractionMap(runId).remove(interactionId);
+	}
+
+	private void deleteUrl(final String urlString) throws IOException {
+		logger.info("Deleting resource " + urlString);
+		final URL url = new URL(urlString);
+		final HttpURLConnection httpCon = (HttpURLConnection) url
+				.openConnection();
+		httpCon.setRequestMethod("DELETE");
+		final int response = httpCon.getResponseCode();
+		if (response >= 400) {
+			logger.info("Received response code" + response);
+		}
+	}
+
+	public void addResource(final String runId,
+			final String interactionId, final String resourceId) {
+		if (resourceId == null) {
+			logger.error("Attempt to add null resource",
+					new NullPointerException(""));
+			return;
+		}
+		logger.info("Adding resource " + resourceId);
+		final Set<String> resourceSet = getResourceSet(runId, interactionId);
+
+		resourceSet.add(resourceId);
+	}
+
+	private Set<String> getResourceSet(final String runId,
+			final String interactionId) {
+		final Map<String, Set<String>> interactionMap = getInteractionMap(runId);
+		Set<String> resourceSet = interactionMap.get(interactionId);
+		if (resourceSet == null) {
+			resourceSet = Collections.synchronizedSet(new HashSet<String>());
+			interactionMap.put(interactionId, resourceSet);
+		}
+		return resourceSet;
+	}
+
+	private Map<String, Set<String>> getInteractionMap(final String runId) {
+		Map<String, Set<String>> interactionMap = InteractionRecorder.runToInteractionMap
+				.get(runId);
+		if (interactionMap == null) {
+			interactionMap = Collections.synchronizedMap(Collections
+					.synchronizedMap(new HashMap<String, Set<String>>()));
+			InteractionRecorder.runToInteractionMap.put(runId, interactionMap);
+		}
+		return interactionMap;
+	}
+
+	public void persist() {
+		final File outputFile = getUsageFile();
+		try {
+			FileUtils.writeStringToFile(outputFile, InteractionUtils
+					.objectToJson(InteractionRecorder.runToInteractionMap));
+		} catch (final IOException e) {
+			logger.error(e);
+		}
+	}
+
+	private File getUsageFile() {
+		return new File(getInteractionUtils().getInteractionServiceDirectory(),
+				"usage");
+	}
+
+	public void load() {
+		final File inputFile = getUsageFile();
+		try {
+			final String usageString = FileUtils.readFileToString(inputFile);
+			final ObjectMapper mapper = new ObjectMapper();
+			@SuppressWarnings("unchecked")
+			final Map<String, Object> rootAsMap = mapper.readValue(usageString,
+					Map.class);
+			InteractionRecorder.runToInteractionMap.clear();
+			for (final String runId : rootAsMap.keySet()) {
+				@SuppressWarnings("unchecked")
+				final Map<String, Object> runMap = (Map<String, Object>) rootAsMap
+						.get(runId);
+				for (final String interactionId : runMap.keySet()) {
+					@SuppressWarnings("unchecked")
+					final List<String> urlList = (List<String>) runMap
+							.get(interactionId);
+					for (final String url : urlList) {
+						addResource(runId, interactionId, url);
+					}
+				}
+			}
+		} catch (final IOException e) {
+			logger.info(e);
+		}
+	}
+
+	public InteractionUtils getInteractionUtils() {
+		return interactionUtils;
+	}
+
+	public void setInteractionUtils(InteractionUtils interactionUtils) {
+		this.interactionUtils = interactionUtils;
+	}
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRequestor.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRequestor.java
new file mode 100644
index 0000000..7eff950
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRequestor.java
@@ -0,0 +1,38 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction;
+
+import java.util.Map;
+
+/**
+ * @author alanrw
+ * 
+ */
+public interface InteractionRequestor {
+
+	String getRunId();
+
+	Map<String, Object> getInputData();
+
+	void fail(String string);
+
+	void carryOn();
+
+	String generateId();
+	
+	// The path to whatever requested the interaction
+	String getPath();
+	
+	// The number of times whatever requested the interaction has requested one
+	Integer getInvocationCount();
+
+	InteractionActivityType getPresentationType();
+
+	InteractionType getInteractionType();
+
+	String getPresentationOrigin();
+
+	void receiveResult(Map<String, Object> resultMap);
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRunDeletionListener.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRunDeletionListener.java
new file mode 100644
index 0000000..880ff82
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionRunDeletionListener.java
@@ -0,0 +1,31 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.interaction;
+
+import net.sf.taverna.t2.workflowmodel.RunDeletionListener;
+
+import org.apache.log4j.Logger;
+
+/**
+ * @author alanrw
+ * 
+ */
+public class InteractionRunDeletionListener implements RunDeletionListener {
+	
+	private InteractionRecorder interactionRecorder;
+
+	@SuppressWarnings("unused")
+	private static final Logger logger = Logger
+			.getLogger(InteractionRunDeletionListener.class);
+
+	@Override
+	public void deleteRun(final String runToDelete) {
+		interactionRecorder.deleteRun(runToDelete);
+	}
+
+	public void setInteractionRecorder(InteractionRecorder interactionRecorder) {
+		this.interactionRecorder = interactionRecorder;
+	}
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionType.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionType.java
new file mode 100644
index 0000000..1e42b4a
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionType.java
@@ -0,0 +1,14 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction;
+
+/**
+ * @author alanrw
+ * 
+ */
+public enum InteractionType {
+
+	DataRequest, Notification, SecurityRequest, AuthenticationRequest
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionUtils.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionUtils.java
new file mode 100644
index 0000000..149f842
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/InteractionUtils.java
@@ -0,0 +1,127 @@
+/**
+ * 
+ */
+package net.sf.taverna.t2.activities.interaction;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.StringWriter;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+// import net.sf.taverna.raven.appconfig.ApplicationRuntime;
+import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
+
+import org.apache.commons.io.IOUtils;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import uk.org.taverna.configuration.app.ApplicationConfiguration;
+
+/**
+ * @author alanrw
+ * 
+ */
+public class InteractionUtils {
+
+	static final Set<String> publishedUrls = Collections
+			.synchronizedSet(new HashSet<String>());
+	
+	private ApplicationConfiguration appConfig;
+	
+	private InteractionRecorder interactionRecorder;
+
+	private InteractionPreference interactionPreference;
+
+	private InteractionUtils() {
+		super();
+	}
+
+	protected void copyFixedFile(final String fixedFileName)
+			throws IOException {
+		final String targetUrl = interactionPreference
+				.getLocationUrl() + "/" + fixedFileName;
+		this.publishFile(
+				targetUrl,
+				InteractionActivity.class.getResourceAsStream("/"
+						+ fixedFileName), null, null);
+	}
+
+	public void publishFile(final String urlString,
+			final String contents, final String runId,
+			final String interactionId) throws IOException {
+		final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(
+				contents.getBytes("UTF-8"));
+		this.publishFile(urlString, byteArrayInputStream, runId,
+				interactionId);
+	}
+
+	void publishFile(final String urlString, final InputStream is,
+			final String runId, final String interactionId) throws IOException {
+		if (InteractionUtils.publishedUrls.contains(urlString)) {
+			return;
+		}
+		InteractionUtils.publishedUrls.add(urlString);
+		if (runId != null) {
+			interactionRecorder.addResource(runId, interactionId, urlString);
+		}
+
+		final URL url = new URL(urlString);
+		final HttpURLConnection httpCon = (HttpURLConnection) url
+				.openConnection();
+		httpCon.setDoOutput(true);
+		httpCon.setRequestMethod("PUT");
+		final OutputStream outputStream = httpCon.getOutputStream();
+		IOUtils.copy(is, outputStream);
+		is.close();
+		outputStream.close();
+		int code = httpCon.getResponseCode();
+		if ((code >= 400) || (code < 0)){
+			throw new IOException ("Received code " + code);
+		}
+	}
+
+	public static String getUsedRunId(final String engineRunId) {
+		String runId = engineRunId;
+		final String specifiedId = System.getProperty("taverna.runid");
+		if (specifiedId != null) {
+			runId = specifiedId;
+		}
+		return runId;
+	}
+
+	public File getInteractionServiceDirectory() {
+		final File workingDir = appConfig
+				.getApplicationHomeDir();
+		final File interactionServiceDirectory = new File(workingDir,
+				"interactionService");
+		interactionServiceDirectory.mkdirs();
+		return interactionServiceDirectory;
+	}
+
+	public static String objectToJson(final Object o) throws IOException {
+		final ObjectMapper mapper = new ObjectMapper();
+		final StringWriter sw = new StringWriter();
+		mapper.writeValue(sw, o);
+		final String theString = sw.toString();
+		return theString;
+	}
+
+	public void setAppConfig(ApplicationConfiguration appConfig) {
+		this.appConfig = appConfig;
+	}
+
+	public void setInteractionRecorder(InteractionRecorder interactionRecorder) {
+		this.interactionRecorder = interactionRecorder;
+	}
+
+	public void setInteractionPreference(InteractionPreference interactionPreference) {
+		this.interactionPreference = interactionPreference;
+	}
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/ResponseFeedListener.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/ResponseFeedListener.java
new file mode 100644
index 0000000..78fdd6d
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/ResponseFeedListener.java
@@ -0,0 +1,159 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import net.sf.taverna.t2.activities.interaction.atom.AtomUtils;
+import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
+
+import org.apache.abdera.model.Element;
+import org.apache.abdera.model.Entry;
+import org.apache.commons.io.IOUtils;
+import org.apache.log4j.Logger;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+/**
+ * @author alanrw
+ * 
+ */
+public final class ResponseFeedListener extends FeedReader {
+	
+	private InteractionRecorder interactionRecorder;
+
+	private InteractionPreference interactionPreference;
+
+	private static final String STATUS_OK = "OK";
+
+	private static final String DATA_READ_FAILED = "Data read failed";
+
+	private static ResponseFeedListener instance;
+
+	private static final Logger logger = Logger.getLogger(ResponseFeedListener.class);
+
+	private static final Map<String, InteractionRequestor> requestorMap = new HashMap<String, InteractionRequestor>();
+
+	private ResponseFeedListener() {
+		super("ResponseFeedListener");
+	}
+	
+	@Override
+	protected void considerEntry(final Entry entry) {
+		synchronized (requestorMap) {
+			final String refString = getReplyTo(entry);
+			if (refString == null) {
+				return;
+			}
+			final String runId = getRunId(entry);
+
+			final String entryUrl = interactionPreference
+					.getFeedUrlString() + "/" + entry.getId().toASCIIString();
+			interactionRecorder.addResource(runId, refString, entryUrl);
+
+			if (requestorMap.containsKey(refString)) {
+
+				final InteractionRequestor requestor = requestorMap
+						.get(refString);
+
+				final Element statusElement = entry.getExtension(AtomUtils
+						.getResultStatusQName());
+				final String statusContent = statusElement.getText().trim();
+				if (!statusContent.equals(STATUS_OK)) {
+					cleanup(refString);
+					requestor.fail(statusContent);
+					return;
+				}
+				final String outputDataUrl = interactionPreference
+						.getOutputDataUrlString(refString);
+				// Note that this may not really exist
+				interactionRecorder
+						.addResource(runId, refString, outputDataUrl);
+				String content = null;
+				InputStream iStream;
+				try {
+					iStream = new URL(outputDataUrl).openStream();
+					content = IOUtils.toString(iStream);
+					iStream.close();
+				} catch (final MalformedURLException e1) {
+					logger.error(e1);
+					requestor.fail(DATA_READ_FAILED);
+					return;
+				} catch (final IOException e1) {
+					logger.error(e1);
+					requestor.fail(DATA_READ_FAILED);
+					return;
+				}
+
+				try {
+					final ObjectMapper mapper = new ObjectMapper();
+					@SuppressWarnings("unchecked")
+					final Map<String, Object> rootAsMap = mapper.readValue(
+							content, Map.class);
+					requestor.receiveResult(rootAsMap);
+					cleanup(refString);
+					interactionRecorder.deleteInteraction(runId, refString);
+
+				} catch (final JsonParseException e) {
+					logger.error(e);
+				} catch (final IOException e) {
+					logger.error(e);
+				} catch (final Exception e) {
+					logger.error(e);
+				}
+
+			}
+		}
+	}
+
+	private static void cleanup(final String refString) {
+		requestorMap.remove(refString);
+	}
+
+	private static String getReplyTo(final Entry entry) {
+		final Element replyTo = entry.getFirstChild(AtomUtils
+				.getInReplyToQName());
+		if (replyTo == null) {
+			return null;
+		}
+		return replyTo.getText();
+	}
+
+	private static String getRunId(final Entry entry) {
+		final Element runIdElement = entry.getFirstChild(AtomUtils
+				.getRunIdQName());
+		if (runIdElement == null) {
+			return null;
+		}
+		return runIdElement.getText();
+	}
+
+	public void registerInteraction(final Entry entry,
+			final InteractionRequestor requestor) {
+		synchronized (requestorMap) {
+			final String refString = entry.getId().toString();
+			requestorMap.put(refString, requestor);
+		}
+	}
+
+	public void setInteractionRecorder(InteractionRecorder interactionRecorder) {
+		this.interactionRecorder = interactionRecorder;
+	}
+
+	public void setInteractionPreference(InteractionPreference interactionPreference) {
+		this.interactionPreference = interactionPreference;
+	}
+
+	@Override
+	protected InteractionPreference getInteractionPreference() {
+		return this.interactionPreference;
+	}
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/atom/AtomUtils.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/atom/AtomUtils.java
new file mode 100644
index 0000000..350e986
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/atom/AtomUtils.java
@@ -0,0 +1,83 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction.atom;
+
+import javax.xml.namespace.QName;
+
+/**
+ * @author alanrw
+ * 
+ */
+public class AtomUtils {
+
+	private static QName inputDataQName = new QName(
+			"http://ns.taverna.org.uk/2012/interaction", "input-data",
+			"interaction");
+	private static QName resultDataQName = new QName(
+			"http://ns.taverna.org.uk/2012/interaction", "result-data",
+			"interaction");
+	private static QName resultStatusQName = new QName(
+			"http://ns.taverna.org.uk/2012/interaction", "result-status",
+			"interaction");
+	private static QName idQName = new QName(
+			"http://ns.taverna.org.uk/2012/interaction", "id", "interaction");
+	private static QName pathIdQName = new QName(
+			"http://ns.taverna.org.uk/2012/interaction", "path",
+			"interaction");
+	private static QName countQName = new QName(
+			"http://ns.taverna.org.uk/2012/interaction", "count",
+			"interaction");
+	private static QName runIdQName = new QName(
+			"http://ns.taverna.org.uk/2012/interaction", "run-id",
+			"interaction");
+	private static QName inReplyToQName = new QName(
+			"http://ns.taverna.org.uk/2012/interaction", "in-reply-to",
+			"interaction");
+	private static QName progressQName = new QName(
+			"http://ns.taverna.org.uk/2012/interaction", "progress",
+			"interaction");
+
+	public static QName getInputDataQName() {
+		return inputDataQName;
+	}
+
+	public static QName getIdQName() {
+		return idQName;
+	}
+
+	public static QName getInReplyToQName() {
+		return inReplyToQName;
+	}
+
+	public static QName getResultDataQName() {
+		return resultDataQName;
+	}
+
+	public static QName getResultStatusQName() {
+		return resultStatusQName;
+	}
+
+	/**
+	 * @return the runIdQName
+	 */
+	public static QName getRunIdQName() {
+		return runIdQName;
+	}
+
+	/**
+	 * @return the progressQName
+	 */
+	public static QName getProgressQName() {
+		return progressQName;
+	}
+
+	public static QName getPathIdQName() {
+		return pathIdQName;
+	}
+
+	public static QName getCountQName() {
+		return countQName;
+	}
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/feed/ShowRequestFeedListener.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/feed/ShowRequestFeedListener.java
new file mode 100644
index 0000000..b8996b2
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/feed/ShowRequestFeedListener.java
@@ -0,0 +1,65 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction.feed;
+
+import java.awt.Desktop;
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+import net.sf.taverna.t2.activities.interaction.FeedReader;
+import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
+
+import org.apache.abdera.model.Entry;
+import org.apache.abdera.model.Link;
+import org.apache.log4j.Logger;
+
+/**
+ * @author alanrw
+ * 
+ */
+public class ShowRequestFeedListener extends FeedReader {
+	
+	private static ShowRequestFeedListener instance;
+
+	private static Logger logger = Logger
+			.getLogger(ShowRequestFeedListener.class);
+	
+	private static final String ignore_requests_property = System.getProperty("taverna.interaction.ignore_requests");
+
+	private static boolean operational = (ignore_requests_property == null) || !Boolean.valueOf(ignore_requests_property);
+
+	private InteractionPreference interactionPreference;
+	
+	private ShowRequestFeedListener() {
+		super("ShowRequestFeedListener");
+	}
+	
+			@Override
+			protected void considerEntry(final Entry entry) {
+				if (!operational) {
+					return;
+				}
+				final Link presentationLink = entry.getLink("presentation");
+				if (presentationLink != null) {
+					try {
+						Desktop.getDesktop().browse(
+								presentationLink.getHref().toURI());
+					} catch (final IOException e) {
+						logger.error("Cannot open presentation");
+					} catch (final URISyntaxException e) {
+						logger.error("Cannot open presentation");
+					}
+				}
+			}
+
+			@Override
+			protected InteractionPreference getInteractionPreference() {
+				return this.interactionPreference;
+			}
+
+			public void setInteractionPreference(InteractionPreference interactionPreference) {
+				this.interactionPreference = interactionPreference;
+			}
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/jetty/HackedFilesystemAdapter.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/jetty/HackedFilesystemAdapter.java
new file mode 100644
index 0000000..24ad5a5
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/jetty/HackedFilesystemAdapter.java
@@ -0,0 +1,263 @@
+package net.sf.taverna.t2.activities.interaction.jetty;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  The ASF licenses this file to You
+ * under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.  For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.abdera.Abdera;
+import org.apache.abdera.i18n.templates.Template;
+import org.apache.abdera.i18n.text.Normalizer;
+import org.apache.abdera.i18n.text.Sanitizer;
+import org.apache.abdera.model.Document;
+import org.apache.abdera.model.Entry;
+import org.apache.abdera.model.Feed;
+import org.apache.abdera.model.Link;
+import org.apache.abdera.protocol.server.ProviderHelper;
+import org.apache.abdera.protocol.server.RequestContext;
+import org.apache.abdera.protocol.server.ResponseContext;
+import org.apache.abdera.protocol.server.Target;
+import org.apache.abdera.protocol.server.provider.managed.FeedConfiguration;
+import org.apache.abdera.protocol.server.provider.managed.ManagedCollectionAdapter;
+
+/**
+ * Simple Filesystem Adapter that uses a local directory to store Atompub
+ * collection entries. As an extension of the ManagedCollectionAdapter class,
+ * the Adapter is intended to be used with implementations of the
+ * ManagedProvider and are configured using /abdera/adapter/*.properties files.
+ * The *.properties file MUST specify the fs.root property to specify the root
+ * directory used by the Adapter.
+ */
+public class HackedFilesystemAdapter extends ManagedCollectionAdapter {
+	
+	private InteractionJetty interactionJetty;
+
+	private final File root;
+	private final static FileSorter sorter = new FileSorter();
+	private final static Template paging_template = new Template(
+			"?{-join|&|count,page}");
+
+	public HackedFilesystemAdapter(final Abdera abdera,
+			final FeedConfiguration config) {
+		super(abdera, config);
+		this.root = this.getRoot();
+	}
+
+	private File getRoot() {
+		return interactionJetty.getFeedDirectory();
+	}
+
+	private Entry getEntry(final File entryFile) {
+		if (!entryFile.exists() || !entryFile.isFile()) {
+			throw new RuntimeException();
+		}
+		try {
+			final FileInputStream fis = new FileInputStream(entryFile);
+			final Document<Entry> doc = this.abdera.getParser().parse(fis);
+			final Entry entry = doc.getRoot();
+			return entry;
+		} catch (final Exception e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+	private void addPagingLinks(final RequestContext request, final Feed feed,
+			final int currentpage, final int count) {
+		final Map<String, Object> params = new HashMap<String, Object>();
+		params.put("count", count);
+		params.put("page", currentpage + 1);
+		String next = paging_template.expand(params);
+		next = request.getResolvedUri().resolve(next).toString();
+		feed.addLink(next, "next");
+		if (currentpage > 0) {
+			params.put("page", currentpage - 1);
+			String prev = paging_template.expand(params);
+			prev = request.getResolvedUri().resolve(prev).toString();
+			feed.addLink(prev, "previous");
+		}
+		params.put("page", 0);
+		String current = paging_template.expand(params);
+		current = request.getResolvedUri().resolve(current).toString();
+		feed.addLink(current, "current");
+	}
+
+	private void getEntries(final RequestContext request, final Feed feed,
+			final File root) {
+		final File[] files = root.listFiles();
+		Arrays.sort(files, sorter);
+		final int length = ProviderHelper.getPageSize(request, "count", 25);
+		final int offset = ProviderHelper.getOffset(request, "page", length);
+		final String _page = request.getParameter("page");
+		final int page = (_page != null) ? Integer.parseInt(_page) : 0;
+		this.addPagingLinks(request, feed, page, length);
+		if (offset > files.length) {
+			return;
+		}
+		for (int n = offset; (n < (offset + length)) && (n < files.length); n++) {
+			final File file = files[n];
+			try {
+				final Entry entry = this.getEntry(file);
+				feed.addEntry((Entry) entry.clone());
+			} catch (final Exception e) {
+				// Do nothing
+			}
+		}
+	}
+
+	@Override
+	public ResponseContext getFeed(final RequestContext request) {
+		final Feed feed = this.abdera.newFeed();
+		feed.setId(this.config.getServerConfiguration().getServerUri() + "/"
+				+ this.config.getFeedId());
+		feed.setTitle(this.config.getFeedTitle());
+		feed.addAuthor(this.config.getFeedAuthor());
+		feed.addLink(this.config.getFeedUri());
+		feed.addLink(this.config.getFeedUri(), "self");
+		feed.setUpdated(new Date());
+		this.getEntries(request, feed, this.root);
+		return ProviderHelper.returnBase(feed.getDocument(), 200, null);
+	}
+
+	@Override
+	public ResponseContext deleteEntry(final RequestContext request) {
+		final Target target = request.getTarget();
+		final String key = target.getParameter("entry");
+		final File file = this.getFile(key, false);
+		if (file.exists()) {
+			file.delete();
+		}
+		return ProviderHelper.nocontent();
+	}
+
+	@Override
+	public ResponseContext getEntry(final RequestContext request) {
+		final Target target = request.getTarget();
+		final String key = target.getParameter("entry");
+		final File file = this.getFile(key, false);
+		final Entry entry = this.getEntry(file);
+		if (entry != null) {
+			return ProviderHelper.returnBase(entry.getDocument(), 200, null);
+		} else {
+			return ProviderHelper.notfound(request);
+		}
+	}
+
+	@Override
+	public ResponseContext postEntry(final RequestContext request) {
+		if (request.isAtom()) {
+			try {
+				final Entry entry = (Entry) request.getDocument().getRoot()
+						.clone();
+				final String key = this.createKey(request);
+				this.setEditDetail(request, entry, key);
+				final File file = this.getFile(key);
+				final FileOutputStream out = new FileOutputStream(file);
+				entry.writeTo(out);
+				final String edit = entry.getEditLinkResolvedHref().toString();
+				return ProviderHelper
+						.returnBase(entry.getDocument(), 201, null)
+						.setLocation(edit);
+			} catch (final Exception e) {
+				return ProviderHelper.badrequest(request);
+			}
+		} else {
+			return ProviderHelper.notsupported(request);
+		}
+	}
+
+	private void setEditDetail(final RequestContext request, final Entry entry,
+			final String key) throws IOException {
+		final Target target = request.getTarget();
+		final String feed = target.getParameter("feed");
+		final String id = key;
+		entry.setEdited(new Date());
+		final Link link = entry.getEditLink();
+		final Map<String, Object> params = new HashMap<String, Object>();
+		params.put("feed", feed);
+		params.put("entry", id);
+		final String href = request.absoluteUrlFor("entry", params);
+		if (link == null) {
+			entry.addLink(href, "edit");
+		} else {
+			link.setHref(href);
+		}
+	}
+
+	private File getFile(final String key) {
+		return this.getFile(key, true);
+	}
+
+	private File getFile(final String key, final boolean post) {
+		final File file = new File(this.root, key);
+		if (post && file.exists()) {
+			throw new RuntimeException("File exists");
+		}
+		return file;
+	}
+
+	private String createKey(final RequestContext request) throws IOException {
+		String slug = request.getSlug();
+		if (slug == null) {
+			slug = ((Entry) request.getDocument().getRoot()).getTitle();
+		}
+		return Sanitizer.sanitize(slug, "", true, Normalizer.Form.D);
+	}
+
+	@Override
+	public ResponseContext putEntry(final RequestContext request) {
+		if (request.isAtom()) {
+			try {
+				final Entry entry = (Entry) request.getDocument().getRoot()
+						.clone();
+				final String key = request.getTarget().getParameter("entry");
+				this.setEditDetail(request, entry, key);
+				final File file = this.getFile(key, false);
+				final FileOutputStream out = new FileOutputStream(file);
+				entry.writeTo(out);
+				final String edit = entry.getEditLinkResolvedHref().toString();
+				return ProviderHelper
+						.returnBase(entry.getDocument(), 200, null)
+						.setLocation(edit);
+			} catch (final Exception e) {
+				return ProviderHelper.badrequest(request);
+			}
+		} else {
+			return ProviderHelper.notsupported(request);
+		}
+	}
+
+	private static class FileSorter implements Comparator<File> {
+		@Override
+		public int compare(final File o1, final File o2) {
+			return o1.lastModified() > o2.lastModified() ? -1 : o1
+					.lastModified() < o2.lastModified() ? 1 : 0;
+		}
+	}
+
+	public void setInteractionJetty(InteractionJetty interactionJetty) {
+		this.interactionJetty = interactionJetty;
+	}
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/jetty/InteractionJetty.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/jetty/InteractionJetty.java
new file mode 100644
index 0000000..c5fb3af
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/jetty/InteractionJetty.java
@@ -0,0 +1,203 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction.jetty;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import net.sf.taverna.t2.activities.interaction.FeedReader;
+import net.sf.taverna.t2.activities.interaction.InteractionUtils;
+import net.sf.taverna.t2.activities.interaction.ResponseFeedListener;
+import net.sf.taverna.t2.activities.interaction.feed.ShowRequestFeedListener;
+import net.sf.taverna.t2.activities.interaction.preference.InteractionPreference;
+import net.sf.taverna.t2.security.credentialmanager.CMException;
+import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
+import net.sf.taverna.t2.security.credentialmanager.UsernamePassword;
+//import net.sf.taverna.t2.spi.SPIRegistry;
+import net.sf.webdav.WebdavServlet;
+
+import org.apache.abdera.protocol.server.ServiceManager;
+import org.apache.abdera.protocol.server.provider.basic.BasicProvider;
+import org.apache.abdera.protocol.server.servlet.AbderaServlet;
+import org.apache.log4j.Logger;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.handler.HandlerList;
+import org.mortbay.jetty.security.Constraint;
+import org.mortbay.jetty.security.ConstraintMapping;
+import org.mortbay.jetty.security.HashUserRealm;
+import org.mortbay.jetty.security.SecurityHandler;
+import org.mortbay.jetty.servlet.Context;
+import org.mortbay.jetty.servlet.ServletHolder;
+
+/**
+ * @author alanrw
+ * 
+ */
+public class InteractionJetty {
+
+	private static Logger logger = Logger.getLogger(InteractionJetty.class);
+	
+	private InteractionUtils interactionUtils;
+	
+	private ShowRequestFeedListener showRequestFeedListener;
+	private ResponseFeedListener responseFeedListener;
+
+	private InteractionPreference interactionPreference;
+
+	private static Server server;
+
+	private static String REALM_NAME = "TavernaInteraction";
+	
+	private static boolean listenersStarted = false;
+
+	public synchronized void startJettyIfNecessary(CredentialManager credentialManager) {
+		if (server != null) {
+			return;
+		}
+		
+//		final ClassLoader previousContextClassLoader = Thread.currentThread()
+//				.getContextClassLoader();
+//		Thread.currentThread().setContextClassLoader(
+//				InteractionJetty.class.getClassLoader());
+
+		final String port = interactionPreference.getPort();
+
+		server = new Server(Integer.parseInt(port));
+		server.setStopAtShutdown(true);
+
+		final WebdavServlet interactionServlet = new WebdavServlet();
+
+		final ServletHolder interactionHolder = new ServletHolder();
+		interactionHolder.setServlet(interactionServlet);
+
+		try {
+
+			interactionHolder.setInitParameter("rootpath",
+					getInteractionDirectory().getCanonicalPath());
+		} catch (final IOException e1) {
+			logger.error("Unable to set root of interaction", e1);
+		}
+
+		final HandlerList handlers = new HandlerList();
+		final Context overallContext = new Context(handlers, "/",
+				Context.SESSIONS);
+		overallContext.setContextPath("/");
+		server.setHandler(overallContext);
+
+		final AbderaServlet abderaServlet = new AbderaServlet();
+		final ServletHolder abderaHolder = new ServletHolder(abderaServlet);
+		abderaHolder.setInitParameter(ServiceManager.PROVIDER,
+				BasicProvider.class.getName());
+
+		overallContext.addServlet(abderaHolder, "/*");
+		overallContext.addServlet(interactionHolder, "/interaction/*");
+
+		if (interactionPreference.getUseUsername()) {
+			final Constraint constraint = new Constraint();
+			constraint.setName(Constraint.__BASIC_AUTH);
+
+			constraint.setRoles(new String[] { "user", "admin", "moderator" });
+			constraint.setAuthenticate(true);
+
+			final ConstraintMapping cm = new ConstraintMapping();
+			cm.setConstraint(constraint);
+			cm.setPathSpec("/*");
+
+			final SecurityHandler sh = new SecurityHandler();
+			try {
+				final HashUserRealm realm = new HashUserRealm(REALM_NAME);
+				final URI serviceURI = createServiceURI(port);
+				final UsernamePassword up = credentialManager
+						.getUsernameAndPasswordForService(serviceURI, true,
+								"Please specify the username and password to secure your interactions");
+				if (up != null) {
+					final String username = up.getUsername();
+					realm.put(username, up.getPasswordAsString());
+					realm.addUserToRole(username, "user");
+				}
+				sh.setUserRealm(realm);
+			} catch (final CMException e) {
+				logger.error(e);
+			} catch (final URISyntaxException e) {
+				logger.error(e);
+			}
+			sh.setConstraintMappings(new ConstraintMapping[] { cm });
+			overallContext.addHandler(sh);
+
+		}
+
+		getFeedDirectory();
+
+		try {
+			server.start();
+			while (!server.isRunning()) {
+				Thread.sleep(5000);
+			}
+		} catch (final Exception e) {
+			logger.error("Unable to start Jetty");
+		}
+//		Thread.currentThread()
+//				.setContextClassLoader(previousContextClassLoader);
+	}
+
+	public static URI createServiceURI(final String port)
+			throws URISyntaxException {
+		return new URI("http://localhost:" + port + "/#" + REALM_NAME);
+	}
+
+	public File getJettySubdirectory(final String subdirectoryName) {
+		final File workingDir = interactionUtils
+				.getInteractionServiceDirectory();
+		final File subDir = new File(workingDir, "jetty/" + subdirectoryName);
+		subDir.mkdirs();
+		return subDir;
+	}
+
+	public File getFeedDirectory() {
+		return getJettySubdirectory("feed");
+	}
+
+	public File getInteractionDirectory() {
+		return getJettySubdirectory("interaction");
+	}
+	
+	public synchronized void startListenersIfNecessary() {
+		if (listenersStarted) {
+			return;
+		}
+		listenersStarted = true;
+		startListener(this.responseFeedListener);
+		startListener(showRequestFeedListener);
+
+	}
+
+	private void startListener(FeedReader fr) {
+		try {
+			fr.start();
+		}
+		catch (Exception e) {
+			logger.error("Failed to start " + fr.getClass().getCanonicalName(), e);
+		}
+	}
+	
+	public void setInteractionUtils(InteractionUtils interactionUtils) {
+		this.interactionUtils = interactionUtils;
+	}
+
+	public void setShowRequestFeedListener(
+			ShowRequestFeedListener showRequestFeedListener) {
+		this.showRequestFeedListener = showRequestFeedListener;
+	}
+
+	public void setResponseFeedListener(ResponseFeedListener responseFeedListener) {
+		this.responseFeedListener = responseFeedListener;
+	}
+
+	public void setInteractionPreference(InteractionPreference interactionPreference) {
+		this.interactionPreference = interactionPreference;
+	}
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/preference/InteractionPreference.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/preference/InteractionPreference.java
new file mode 100644
index 0000000..c2ba982
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/preference/InteractionPreference.java
@@ -0,0 +1,268 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction.preference;
+
+import java.awt.GraphicsEnvironment;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Properties;
+
+import org.apache.log4j.Logger;
+
+import uk.org.taverna.configuration.app.ApplicationConfiguration;
+
+/**
+ * @author alanrw
+ * 
+ */
+public class InteractionPreference {
+	
+	private ApplicationConfiguration appConfig;
+
+	private static final String USE_JETTY = "useJetty";
+
+	private static final String DEFAULT_USE_JETTY = "true";
+
+	private static final String PORT = "port";
+
+	private static final String DEFAULT_PORT = "8080";
+
+	private static final String HOST = "host";
+
+	private static final String DEFAULT_HOST = "http://localhost";
+
+	private static final String WEBDAV_PATH = "webdavPath";
+
+	private static final String DEFAULT_WEBDAV_PATH = "/interaction";
+
+	private static final String FEED_PATH = "feedPath";
+
+	private static final String DEFAULT_FEED_PATH = "/feed";
+
+	private static final String USE_USERNAME = "Secure with username / password";
+
+	private static final String DEFAULT_USE_USERNAME = "false";
+
+	// private static final String USE_HTTPS = "Use HTTPS";
+
+	// private static final String DEFAULT_USE_HTTPS = "false";
+
+	private final Logger logger = Logger.getLogger(InteractionPreference.class);
+
+	private final Properties properties;
+
+	private File getConfigFile() {
+		final File home = appConfig
+				.getApplicationHomeDir();
+		final File config = new File(home, "conf");
+		if (!config.exists()) {
+			config.mkdir();
+		}
+		final File configFile = new File(config, this.getFilePrefix() + "-"
+				+ this.getUUID() + ".config");
+		return configFile;
+	}
+
+	private InteractionPreference(ApplicationConfiguration appConfig) {
+		setAppConfig(appConfig);
+		final File configFile = this.getConfigFile();
+		this.properties = new Properties();
+		if (configFile.exists()) {
+			try {
+				final FileReader reader = new FileReader(configFile);
+				this.properties.load(reader);
+				reader.close();
+			} catch (final FileNotFoundException e) {
+				this.logger.error(e);
+			} catch (final IOException e) {
+				this.logger.error(e);
+			}
+		}
+		if (GraphicsEnvironment.isHeadless()
+				|| ((System.getProperty("java.awt.headless") != null) && System
+						.getProperty("java.awt.headless").equals("true"))) {
+			final String definedHost = System
+					.getProperty("taverna.interaction.host");
+			if (definedHost != null) {
+				this.properties.setProperty(USE_JETTY, "false");
+				this.logger.info("USE_JETTY set to false");
+				this.properties.setProperty(HOST, definedHost);
+			}
+			final String definedPort = System
+					.getProperty("taverna.interaction.port");
+			if (definedPort != null) {
+				this.properties.setProperty(PORT, definedPort);
+			}
+			final String definedWebDavPath = System
+					.getProperty("taverna.interaction.webdav_path");
+			if (definedWebDavPath != null) {
+				this.properties.setProperty(WEBDAV_PATH, definedWebDavPath);
+			}
+			final String definedFeedPath = System
+					.getProperty("taverna.interaction.feed_path");
+			if (definedFeedPath != null) {
+				this.properties.setProperty(FEED_PATH, definedFeedPath);
+			}
+		} else {
+			this.logger.info("Running non-headless");
+		}
+		this.fillDefaultProperties();
+	}
+
+	private void fillDefaultProperties() {
+		if (!this.properties.containsKey(USE_JETTY)) {
+			this.properties.setProperty(USE_JETTY, DEFAULT_USE_JETTY);
+			this.logger.info("USE_JETTY set to " + DEFAULT_USE_JETTY);
+		}
+		if (!this.properties.containsKey(PORT)) {
+			this.properties.setProperty(PORT, DEFAULT_PORT);
+		}
+		if (!this.properties.containsKey(HOST)) {
+			this.properties.setProperty(HOST, DEFAULT_HOST);
+		}
+		if (!this.properties.containsKey(WEBDAV_PATH)) {
+			this.properties.setProperty(WEBDAV_PATH, DEFAULT_WEBDAV_PATH);
+		}
+		if (!this.properties.containsKey(FEED_PATH)) {
+			this.properties.setProperty(FEED_PATH, DEFAULT_FEED_PATH);
+		}
+		if (!this.properties.containsKey(USE_USERNAME)) {
+			this.properties.setProperty(USE_USERNAME, DEFAULT_USE_USERNAME);
+		}
+		/*
+		 * if (!properties.containsKey(USE_HTTPS)) {
+		 * properties.setProperty(USE_HTTPS, DEFAULT_USE_HTTPS); }
+		 */
+	}
+
+	public String getFilePrefix() {
+		return "Interaction";
+	}
+
+	public void store() {
+		try {
+			final FileOutputStream out = new FileOutputStream(
+					this.getConfigFile());
+			this.properties.store(out, "");
+			out.close();
+		} catch (final FileNotFoundException e) {
+			this.logger.error(e);
+		} catch (final IOException e) {
+			this.logger.error(e);
+		}
+	}
+
+	public String getUUID() {
+		return "DA992717-5A46-469D-AE25-883F0E4CD348";
+	}
+
+	public void setPort(final String text) {
+		this.properties.setProperty(PORT, text);
+	}
+
+	public void setHost(final String text) {
+		this.properties.setProperty(HOST, text);
+	}
+
+	public void setUseJetty(final boolean use) {
+		this.properties.setProperty(USE_JETTY, Boolean.toString(use));
+	}
+
+	public void setFeedPath(final String path) {
+		this.properties.setProperty(FEED_PATH, path);
+	}
+
+	public void setWebDavPath(final String path) {
+		this.properties.setProperty(WEBDAV_PATH, path);
+	}
+
+	public String getPort() {
+		return this.properties.getProperty(PORT);
+	}
+
+	public String getHost() {
+		return this.properties.getProperty(HOST);
+	}
+
+	public boolean getUseJetty() {
+		return (Boolean.parseBoolean(this.properties.getProperty(USE_JETTY)));
+	}
+
+	public String getFeedPath() {
+		return this.properties.getProperty(FEED_PATH);
+	}
+
+	public String getWebDavPath() {
+		return this.properties.getProperty(WEBDAV_PATH);
+	}
+
+	public String getDefaultHost() {
+		return DEFAULT_HOST;
+	}
+
+	public String getDefaultFeedPath() {
+		return DEFAULT_FEED_PATH;
+	}
+
+	public String getDefaultWebDavPath() {
+		return DEFAULT_WEBDAV_PATH;
+	}
+
+	public String getFeedUrlString() {
+		return this.getHost() + ":" + this.getPort() + this.getFeedPath();
+	}
+
+	public String getLocationUrl() {
+		return this.getHost() + ":" + this.getPort() + this.getWebDavPath();
+	}
+
+	public boolean getUseUsername() {
+		return (Boolean.parseBoolean(this.properties.getProperty(USE_USERNAME)));
+	}
+
+	public void setUseUsername(final boolean useUsername) {
+		this.properties
+				.setProperty(USE_USERNAME, Boolean.toString(useUsername));
+	}
+
+	public String getOutputDataUrlString(final String interactionId) {
+		return this.getLocationUrl()
+				+ "/interaction" + interactionId + "OutputData.json";
+	}
+
+	public String getInputDataUrlString(final String interactionId) {
+		return this.getLocationUrl()
+				+ "/interaction" + interactionId + "InputData.json";
+	}
+
+	public URL getFeedUrl() throws MalformedURLException {
+		return new URL(this.getFeedUrlString());
+	}
+
+	public String getInteractionUrlString(final String interactionId) {
+		return this.getLocationUrl()
+				+ "/interaction" + interactionId + ".html";
+	}
+
+	public String getPresentationUrlString(final String interactionId) {
+		return this.getLocationUrl()
+				+ "/presentation" + interactionId + ".html";
+	}
+
+	public String getPublicationUrlString(final String interactionId,
+			final String key) {
+		return this.getLocationUrl()
+				+ "/interaction" + interactionId + "_" + key;
+	}
+
+	public void setAppConfig(ApplicationConfiguration appConfig) {
+		this.appConfig = appConfig;
+	}
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/InteractionVelocity.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/InteractionVelocity.java
new file mode 100644
index 0000000..d0601b2
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/InteractionVelocity.java
@@ -0,0 +1,130 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction.velocity;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+
+import net.sf.taverna.t2.activities.interaction.InteractionActivity;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.log4j.Logger;
+import org.apache.velocity.Template;
+import org.apache.velocity.app.Velocity;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.runtime.RuntimeConstants;
+import org.apache.velocity.runtime.RuntimeSingleton;
+import org.apache.velocity.runtime.resource.loader.StringResourceLoader;
+import org.apache.velocity.runtime.resource.util.StringResourceRepository;
+
+/**
+ * @author alanrw
+ * 
+ */
+public class InteractionVelocity {
+
+	public static Logger logger = Logger.getLogger(InteractionVelocity.class);
+
+	private static boolean velocityInitialized = false;
+
+	private static final String TEMPLATE_SUFFIX = ".vm";
+
+	private Template interactionTemplate = null;
+	private static final String INTERACTION_TEMPLATE_NAME = "interaction";
+
+	private ArrayList<String> templateNames = new ArrayList<String>();
+
+	private VelocityEngine ve = new VelocityEngine();
+	
+	@SuppressWarnings("deprecation")
+	public synchronized void checkVelocity() {
+		if (velocityInitialized) { 
+			return;
+		}
+		velocityInitialized = true;
+		ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "string");
+		ve.setProperty("resource.loader.class",
+				"org.apache.velocity.runtime.resource.loader.StringResourceLoader");
+		ve.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS,
+				"org.apache.velocity.runtime.log.Log4JLogChute");
+		ve.setProperty("runtime.log.logsystem.log4j.logger",
+				"net.sf.taverna.t2.activities.interaction.velocity.InteractionVelocity");
+		ve.init();
+		ve.loadDirective(RequireDirective.class.getName());
+		ve.loadDirective(ProduceDirective.class.getName());
+		ve.loadDirective(NotifyDirective.class.getName());
+
+		loadTemplates();
+
+		interactionTemplate = ve.getTemplate(INTERACTION_TEMPLATE_NAME);
+		if (interactionTemplate == null) {
+			logger.error("Could not open interaction template "
+					+ INTERACTION_TEMPLATE_NAME);
+		}
+	}
+
+	private void loadTemplates() {
+		final InputStream is = InteractionActivity.class
+				.getResourceAsStream("/index");
+		if (is == null) {
+			logger.error("Unable to read /index");
+			return;
+		}
+		final BufferedReader br = new BufferedReader(new InputStreamReader(is));
+		try {
+			for (String line = br.readLine(); line != null; line = br
+					.readLine()) {
+				if (line.startsWith("#")) {
+					continue;
+				}
+				line = line.trim();
+				if (line.isEmpty()) {
+					continue;
+				}
+				final String templatePath = line + TEMPLATE_SUFFIX;
+				logger.info("Looking for " + templatePath);
+				final StringResourceRepository repo = StringResourceLoader
+						.getRepository();
+				try {
+					repo.putStringResource(line,
+							getTemplateFromResource(templatePath));
+				} catch (final IOException e) {
+					logger.error(
+							"Failed reading template from " + templatePath, e);
+				}
+				final Template t = Velocity.getTemplate(line);
+				if (t == null) {
+					logger.error("Registration failed");
+				}
+				if (!line.equals(INTERACTION_TEMPLATE_NAME)) {
+					templateNames.add(line);
+				}
+			}
+		} catch (final IOException e) {
+			logger.error("Failed reading template index", e);
+		}
+	}
+
+	public Template getInteractionTemplate() {
+		checkVelocity();
+		return interactionTemplate;
+	}
+
+	private String getTemplateFromResource(final String templatePath)
+			throws IOException {
+		checkVelocity();
+		final InputStream stream = InteractionVelocity.class
+				.getResourceAsStream("/" + templatePath);
+		final String result = IOUtils.toString(stream, "UTF-8");
+		return result;
+	}
+
+	public ArrayList<String> getTemplateNames() {
+		checkVelocity();
+		return templateNames;
+	}
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/NotifyChecker.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/NotifyChecker.java
new file mode 100644
index 0000000..82fe384
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/NotifyChecker.java
@@ -0,0 +1,26 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction.velocity;
+
+import org.apache.velocity.runtime.parser.node.ASTDirective;
+import org.apache.velocity.runtime.visitor.BaseVisitor;
+
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+/**
+ * @author alanrw
+ * 
+ */
+public class NotifyChecker extends BaseVisitor {
+
+	@Override
+	public Object visit(final ASTDirective node, final Object data) {
+		ObjectNode json = (ObjectNode) data;
+		if (node.getDirectiveName().equals("notify")) {
+			json.put("progressNotification", true);
+		}
+		return null;
+	}
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/NotifyDirective.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/NotifyDirective.java
new file mode 100644
index 0000000..050b907
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/NotifyDirective.java
@@ -0,0 +1,58 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction.velocity;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import org.apache.velocity.context.InternalContextAdapter;
+import org.apache.velocity.exception.MethodInvocationException;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.runtime.directive.Directive;
+import org.apache.velocity.runtime.parser.node.Node;
+
+/**
+ * @author alanrw
+ * 
+ */
+public class NotifyDirective extends Directive {
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.velocity.runtime.directive.Directive#getName()
+	 */
+	@Override
+	public String getName() {
+		return "notify";
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.velocity.runtime.directive.Directive#getType()
+	 */
+	@Override
+	public int getType() {
+		return LINE;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.velocity.runtime.directive.Directive#render(org.apache.velocity
+	 * .context.InternalContextAdapter, java.io.Write\ r,
+	 * org.apache.velocity.runtime.parser.node.Node)
+	 */
+	@Override
+	public boolean render(final InternalContextAdapter context,
+			final Writer writer, final Node node) throws IOException,
+			ResourceNotFoundException, ParseErrorException,
+			MethodInvocationException {
+		return true;
+	}
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/ProduceChecker.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/ProduceChecker.java
new file mode 100644
index 0000000..a2b8f60
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/ProduceChecker.java
@@ -0,0 +1,35 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction.velocity;
+
+import java.util.Map;
+
+import org.apache.velocity.runtime.parser.node.ASTDirective;
+import org.apache.velocity.runtime.visitor.BaseVisitor;
+
+/**
+ * @author alanrw
+ * 
+ */
+public class ProduceChecker extends BaseVisitor {
+
+	@Override
+	public Object visit(final ASTDirective node, final Object data) {
+		@SuppressWarnings("unchecked")
+		final Map<String, Integer> map = ((Map<String, Integer>) data);
+		if (node.getDirectiveName().equals("produce")) {
+			final String key = String.valueOf(node.jjtGetChild(0).value(
+					this.context));
+			if (node.jjtGetNumChildren() > 1) {
+				final Integer depth = (Integer) node.jjtGetChild(1).value(
+						this.context);
+				map.put(key, depth);
+			} else {
+				map.put(key, 0);
+			}
+		}
+		return map;
+	}
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/ProduceDirective.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/ProduceDirective.java
new file mode 100644
index 0000000..144f224
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/ProduceDirective.java
@@ -0,0 +1,58 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction.velocity;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import org.apache.velocity.context.InternalContextAdapter;
+import org.apache.velocity.exception.MethodInvocationException;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.runtime.directive.Directive;
+import org.apache.velocity.runtime.parser.node.Node;
+
+/**
+ * @author alanrw
+ * 
+ */
+public class ProduceDirective extends Directive {
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.velocity.runtime.directive.Directive#getName()
+	 */
+	@Override
+	public String getName() {
+		return "produce";
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.velocity.runtime.directive.Directive#getType()
+	 */
+	@Override
+	public int getType() {
+		return LINE;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.velocity.runtime.directive.Directive#render(org.apache.velocity
+	 * .context.InternalContextAdapter, java.io.Write\ r,
+	 * org.apache.velocity.runtime.parser.node.Node)
+	 */
+	@Override
+	public boolean render(final InternalContextAdapter context,
+			final Writer writer, final Node node) throws IOException,
+			ResourceNotFoundException, ParseErrorException,
+			MethodInvocationException {
+		return true;
+	}
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/RequireChecker.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/RequireChecker.java
new file mode 100644
index 0000000..d723764
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/RequireChecker.java
@@ -0,0 +1,35 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction.velocity;
+
+import java.util.Map;
+
+import org.apache.velocity.runtime.parser.node.ASTDirective;
+import org.apache.velocity.runtime.visitor.BaseVisitor;
+
+/**
+ * @author alanrw
+ * 
+ */
+public class RequireChecker extends BaseVisitor {
+
+	@Override
+	public Object visit(final ASTDirective node, final Object data) {
+		@SuppressWarnings("unchecked")
+		final Map<String, Integer> map = (Map<String, Integer>) data;
+		if (node.getDirectiveName().equals("require")) {
+			final String key = String.valueOf(node.jjtGetChild(0).value(
+					this.context));
+			if (node.jjtGetNumChildren() > 1) {
+				final Integer depth = (Integer) node.jjtGetChild(1).value(
+						this.context);
+				map.put(key, depth);
+			} else {
+				map.put(key, 0);
+			}
+		}
+		return map;
+	}
+
+}
diff --git a/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/RequireDirective.java b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/RequireDirective.java
new file mode 100644
index 0000000..34b053a
--- /dev/null
+++ b/taverna-interaction-activity/src/main/java/net/sf/taverna/t2/activities/interaction/velocity/RequireDirective.java
@@ -0,0 +1,58 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.interaction.velocity;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import org.apache.velocity.context.InternalContextAdapter;
+import org.apache.velocity.exception.MethodInvocationException;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.runtime.directive.Directive;
+import org.apache.velocity.runtime.parser.node.Node;
+
+/**
+ * @author alanrw
+ * 
+ */
+public class RequireDirective extends Directive {
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.velocity.runtime.directive.Directive#getName()
+	 */
+	@Override
+	public String getName() {
+		return "require";
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.velocity.runtime.directive.Directive#getType()
+	 */
+	@Override
+	public int getType() {
+		return LINE;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.velocity.runtime.directive.Directive#render(org.apache.velocity
+	 * .context.InternalContextAdapter, java.io.Write\ r,
+	 * org.apache.velocity.runtime.parser.node.Node)
+	 */
+	@Override
+	public boolean render(final InternalContextAdapter context,
+			final Writer writer, final Node node) throws IOException,
+			ResourceNotFoundException, ParseErrorException,
+			MethodInvocationException {
+		return true;
+	}
+
+}
diff --git a/taverna-interaction-activity/src/main/resources/Authorize.vm b/taverna-interaction-activity/src/main/resources/Authorize.vm
new file mode 100644
index 0000000..ac9a387
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/Authorize.vm
@@ -0,0 +1,73 @@
+#produce("answer")
+<!doctype html>
+<html>
+  <head>
+      <meta charset="utf-8" />
+      <title></title>
+      <style>
+      	html, body { height: 100%; width: 100%; margin: 0; }
+      </style>
+  </head>
+  <body>
+
+       <script type="text/javascript" src="$pmrpcUrl"></script>
+
+       <script type="text/javascript">
+       
+       var sites = {};
+
+#foreach( $value in $loginSites )
+      sites["${value.getName()}"] = "${value.getAuthorizeUrl(${interactionUrl})}";
+#end
+       
+       function forward() {
+         var chosenSiteName = document.myform.mySelect.options[document.myform.mySelect.selectedIndex].value;
+         window.open(sites[chosenSiteName]);
+       }
+       
+           function reply(token) {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["OK", {"answer" : token}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submitted</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submission failed</h1>';}
+           });
+         }
+ 
+          function considerReply() {
+            pmrpc.call({
+              destination : "publish",
+              publicProcedureName : "getParameterValue",
+              params: ["oauth_token"],
+              onSuccess : function(retVal) { if ((retVal.returnValue != null) && (retVal.returnValue != '')) { reply(retVal.returnValue);}}
+           });
+         }
+                  
+         function cancel() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["Cancelled", {}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancelled</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancellation failed</h1>';}
+           });
+	       return true;
+         }
+         
+         window.onload = considerReply();
+       </script>
+  
+  <h2>Please select an authentication site</h2>
+      <form name="myform" onSubmit="forward(); return false;">
+      <select name="mySelect">
+#foreach( $value in $loginSites )
+      <option value="$value.getName()">$value.getName()</option>
+#end
+      </select><br />
+      <input type="button" value="Cancel" onClick = "cancel()"/>
+      <input type="button" value="Submit" onClick = "forward()"/>
+    </form> 
+  </body>
+</html>
+
diff --git a/taverna-interaction-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.activities.interaction.FeedReader b/taverna-interaction-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.activities.interaction.FeedReader
new file mode 100644
index 0000000..684a478
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.activities.interaction.FeedReader
@@ -0,0 +1,2 @@
+net.sf.taverna.t2.activities.interaction.feed.ShowRequestFeedListener
+net.sf.taverna.t2.activities.interaction.ResponseFeedListener
diff --git a/taverna-interaction-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.RunDeletionListener b/taverna-interaction-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.RunDeletionListener
new file mode 100644
index 0000000..fb7c12a
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.RunDeletionListener
@@ -0,0 +1 @@
+net.sf.taverna.t2.activities.interaction.InteractionRunDeletionListener
diff --git a/taverna-interaction-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker b/taverna-interaction-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
new file mode 100644
index 0000000..4ee82f4
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
@@ -0,0 +1 @@
+net.sf.taverna.t2.activities.interaction.InteractionActivityHealthChecker
diff --git a/taverna-interaction-activity/src/main/resources/META-INF/spring/interaction-activity-context-osgi.xml b/taverna-interaction-activity/src/main/resources/META-INF/spring/interaction-activity-context-osgi.xml
new file mode 100644
index 0000000..f3a35e0
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/META-INF/spring/interaction-activity-context-osgi.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans:beans xmlns="http://www.springframework.org/schema/osgi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:beans="http://www.springframework.org/schema/beans"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans
+                                 http://www.springframework.org/schema/beans/spring-beans.xsd
+                                 http://www.springframework.org/schema/osgi
+                                 http://www.springframework.org/schema/osgi/spring-osgi.xsd">
+
+	<service ref="interactionActivityHealthChecker" interface="net.sf.taverna.t2.workflowmodel.health.HealthChecker" />
+
+	<service ref="interactionActivityFactory" interface="net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory" />
+
+	<reference id="credentialManager" interface="net.sf.taverna.t2.security.credentialmanager.CredentialManager" />
+
+  <reference id="applicationConfiguration"
+         interface="uk.org.taverna.configuration.app.ApplicationConfiguration" />
+
+		
+	<service ref="interactionRunDeletionListener" interface="net.sf.taverna.t2.workflowmodel.RunDeletionListener" />
+
+</beans:beans>
diff --git a/taverna-interaction-activity/src/main/resources/META-INF/spring/interaction-activity-context.xml b/taverna-interaction-activity/src/main/resources/META-INF/spring/interaction-activity-context.xml
new file mode 100644
index 0000000..a629d65
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/META-INF/spring/interaction-activity-context.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+	<bean id="interactionActivityHealthChecker" class="net.sf.taverna.t2.activities.interaction.InteractionActivityHealthChecker" />
+
+	<bean id="interactionActivityFactory" class="net.sf.taverna.t2.activities.interaction.InteractionActivityFactory">
+		<property name="credentialManager" ref="credentialManager" />
+		<property name="interactionRecorder" ref="interactionRecorder" />
+		<property name="interactionUtils" ref="interactionUtils" />
+		<property name="interactionJetty" ref="interactionJetty" />
+		<property name="interactionPreference" ref="interactionPreference" />
+		<property name="responseFeedListener" ref="responseFeedListener"/>
+		<property name="interactionVelocity" ref="interactionVelocity" />
+	</bean>
+	
+	<bean id="interactionUtils" class="net.sf.taverna.t2.activities.interaction.InteractionUtils">
+		<property name="appConfig" ref="applicationConfiguration" />
+		<property name="interactionRecorder" ref="interactionRecorder" />
+		<property name="interactionPreference" ref="interactionPreference" />
+	</bean>
+	
+	<bean id="interactionRecorder" class="net.sf.taverna.t2.activities.interaction.InteractionRecorder">
+		<property name="interactionUtils" ref="interactionUtils" />
+	</bean>
+	
+	<bean id="interactionRunDeletionListener" class="net.sf.taverna.t2.activities.interaction.InteractionRunDeletionListener">
+		<property name="interactionRecorder" ref="interactionRecoder"/>
+	</bean>
+	
+	<bean id="responseFeedListener" class="net.sf.taverna.t2.activities.interaction.ResponseFeedListener">
+		<property name="interactionRecorder" ref="interactionRecorder"/>
+		<property name="interactionPreference" ref="interactionPreference" />
+	</bean>
+	
+	<bean id="showRequestFeedListener" class="net.sf.taverna.t2.activities.interaction.feed.ShowRequestFeedListener">
+		<property name="interactionPreference" ref="interactionPreference" />
+	</bean>
+	
+	<bean id="interactionJetty" class="net.sf.taverna.t2.activities.interaction.jetty.InteractionJetty">
+		<property name="interactionUtils" ref="interactionUtils" />
+		<property name="responseFeedListener" ref="responseFeedListener"/>
+		<property name="showRequestFeedListener" ref="showRequestFeedListener"/>
+		<property name="interactionPreference" ref="interactionPreference" />
+	</bean>
+	
+	<bean id="hackedFilesystemAdapter" class="net.sf.taverna.t2.activities.interaction.jetty.HackedFilesystemAdapter">
+		<property name="interactionJetty" ref="interactionJetty"/>
+	</bean>
+	
+	<bean id="interactionPreference" class="net.sf.taverna.t2.activities.interaction.preference.InteractionPreference">
+		<constructor-arg ref="applicationConfiguration" />
+	</bean>
+	
+	<bean id="interactionVelocity"
+		class="net.sf.taverna.t2.activities.interaction.velocity.InteractionVelocity"
+		init-method="checkVelocity">
+	</bean>
+
+</beans>
diff --git a/taverna-interaction-activity/src/main/resources/MasterPassword.vm b/taverna-interaction-activity/src/main/resources/MasterPassword.vm
new file mode 100644
index 0000000..94e7859
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/MasterPassword.vm
@@ -0,0 +1,47 @@
+#produce("password")
+<!doctype html>
+<html>
+  <head>
+      <meta charset="utf-8" />
+      <title></title>
+   </head>
+  <body>
+
+       <script type="text/javascript" src="$pmrpcUrl"></script>
+
+       <script type="text/javascript">
+
+         function reply() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["OK", {"password" : document.myform.password.value}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submitted</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submission failed</h1>';}
+           });
+	       return true;
+         }
+         
+         function cancel() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["Cancelled", {}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancelled</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancellation failed</h1>';}
+           });
+	       return true;
+         }
+
+       </script>
+  
+  <h2>Credential Manager request</h2>
+    <p>Please enter the master password for the Credential Manager</p>
+    <form name="myform" onSubmit="reply(); return false;">
+      <label>Password<input type="password" name="password"/></label><br />
+      <input type="button" value="Cancel" onClick = "cancel()"/>
+      <input type="button" value="Submit" onClick = "reply()"/>
+    </form> 
+  </body>
+</html>
+
diff --git a/taverna-interaction-activity/src/main/resources/TrustedCertificate.vm b/taverna-interaction-activity/src/main/resources/TrustedCertificate.vm
new file mode 100644
index 0000000..44a5359
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/TrustedCertificate.vm
@@ -0,0 +1,57 @@
+#require("serviceURI")
+#require("requestingPrompt")
+#produce("username")
+#produce("password")
+#produce("shouldSave")
+<!doctype html>
+<html>
+  <head>
+      <meta charset="utf-8" />
+      <title></title>
+   </head>
+  <body>
+
+       <script type="text/javascript" src="$pmrpcUrl"></script>
+
+       <script type="text/javascript">
+
+         function reply() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["OK", {"username" : document.myform.username.value,
+                              "password" : document.myform.password.value,
+                              "shouldsave" : document.myform.shouldsave.checked}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submitted</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submission failed</h1>';}
+           });
+	       return true;
+         }
+         
+         function cancel() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["Cancelled", {}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancelled</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancellation failed</h1>';}
+           });
+	       return true;
+         }
+
+       </script>
+  
+  <h2>Credential Manager request</h2>
+    <p>The credential manager could not find a username and password for the service at <code>$!serviceURI</code></p>
+    <p>$!requestingPrompt</p>
+    <p>Please provide a username and password</p>
+    <form name="myform" onSubmit="reply(); return false;">
+      <label>User name<input type="text" name="username"/></label><br />
+      <label>Password<input type="password" name="password"/></label><br />
+      <label>Save in credental manager<input type="checkbox" name="shouldsave"/></label><br />
+      <input type="button" value="Cancel" onClick = "cancel()"/>
+      <input type="button" value="Submit" onClick = "reply()"/>
+    </form> 
+  </body>
+</html>
+
diff --git a/taverna-interaction-activity/src/main/resources/TruststorePassword.vm b/taverna-interaction-activity/src/main/resources/TruststorePassword.vm
new file mode 100644
index 0000000..6106115
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/TruststorePassword.vm
@@ -0,0 +1,48 @@
+#produce("password")
+<!doctype html>
+<html>
+  <head>
+      <meta charset="utf-8" />
+      <title></title>
+   </head>
+  <body>
+
+       <script type="text/javascript" src="$pmrpcUrl"></script>
+
+       <script type="text/javascript">
+
+         function reply() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["OK", {"password" : document.myform.password.value}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submitted</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submission failed</h1>';}
+           });
+	       return true;
+         }
+         
+         function cancel() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["Cancelled", {}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancelled</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancellation failed</h1>';}
+           });
+	       return true;
+         }
+
+       </script>
+  
+  <h2>Credential Manager request</h2>
+    <p>The Credential Manager needs to copy certificates from the Java truststore.</p>
+    <p>Please enter the truststore password</p>
+    <form name="myform" onSubmit="reply(); return false;">
+      <label>Password<input type="password" name="password"/></label><br />
+      <input type="button" value="Cancel" onClick = "cancel()"/>
+      <input type="button" value="Submit" onClick = "reply()"/>
+    </form> 
+  </body>
+</html>
+
diff --git a/taverna-interaction-activity/src/main/resources/UsernamePassword.vm b/taverna-interaction-activity/src/main/resources/UsernamePassword.vm
new file mode 100644
index 0000000..671c3ee
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/UsernamePassword.vm
@@ -0,0 +1,57 @@
+#require("serviceURI")
+#require("requestingPrompt")
+#produce("username")
+#produce("password")
+#produce("shouldSave")
+<!doctype html>
+<html>
+  <head>
+      <meta charset="UTF-8" />
+      <title></title>
+   </head>
+  <body>
+
+       <script type="text/javascript" src="$pmrpcUrl"></script>
+
+       <script type="text/javascript">
+
+         function reply() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["OK", {"username" : document.myform.username.value,
+                              "password" : document.myform.password.value,
+                              "shouldsave" : document.myform.shouldsave.checked}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submitted</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submission failed</h1>';}
+           });
+	       return true;
+         }
+         
+         function cancel() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["Cancelled", {}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancelled</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancellation failed</h1>';}
+           });
+	       return true;
+         }
+
+       </script>
+  
+  <h2>Credential Manager request</h2>
+    <p>The credential manager could not find a username and password for the service at <code>$!serviceURI</code></p>
+    <p>$!requestingPrompt</p>
+    <p>Please provide a username and password</p>
+    <form name="myform" onSubmit="reply(); return false;">
+      <label>User name<input type="text" name="username"/></label><br />
+      <label>Password<input type="password" name="password"/></label><br />
+      <label>Save in credental manager<input type="checkbox" name="shouldsave"/></label><br />
+      <input type="button" value="Cancel" onClick = "cancel()"/>
+      <input type="button" value="Submit" onClick = "reply()"/>
+    </form> 
+  </body>
+</html>
+
diff --git a/taverna-interaction-activity/src/main/resources/abdera/adapter/feed.properties b/taverna-interaction-activity/src/main/resources/abdera/adapter/feed.properties
new file mode 100644
index 0000000..3371f38
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/abdera/adapter/feed.properties
@@ -0,0 +1,5 @@
+subUri=feed
+adapterClassName=net.sf.taverna.t2.activities.interaction.jetty.HackedFilesystemAdapter
+title=Taverna interaction
+author=alanrw
+configFile=dummyFileLocation
\ No newline at end of file
diff --git a/taverna-interaction-activity/src/main/resources/ask.vm b/taverna-interaction-activity/src/main/resources/ask.vm
new file mode 100644
index 0000000..92ce145
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/ask.vm
@@ -0,0 +1,51 @@
+#require("message")
+#require("title")
+#produce("answer")
+<!doctype html>
+<html>
+  <head>
+      <meta charset="UTF-8" />
+      <title></title>
+   </head>
+  <body>
+
+       <script type="text/javascript" src="$pmrpcUrl"></script>
+
+       <script type="text/javascript">
+
+         function reply() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["OK", {"answer" : document.myform.answerInput.value}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submitted</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submission failed</h1>';}
+           });
+	       return true;
+         }
+         
+         function cancel() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["Cancelled", {}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancelled</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancellation failed</h1>';}
+           });
+	       return true;
+         }
+         pmrpc.call({
+           destination : "publish",
+           publicProcedureName : "setTitle",
+           params : ["$!title"]});
+       </script>
+  
+  <h2>$!message</h2>
+    <form name="myform" onSubmit="reply(); return false;">
+      <input type="text" name="answerInput"/><br />
+      <input type="button" value="Cancel" onClick = "cancel()"/>
+      <input type="button" value="Submit" onClick = "reply()"/>
+    </form> 
+  </body>
+</html>
+
diff --git a/taverna-interaction-activity/src/main/resources/choose.vm b/taverna-interaction-activity/src/main/resources/choose.vm
new file mode 100644
index 0000000..f594beb
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/choose.vm
@@ -0,0 +1,74 @@
+#require("selectionValues",1)
+#require("message")
+#require("title")
+#produce("answer")
+<!doctype html>
+<html>
+  <head>
+      <meta charset="utf-8" />
+      <title></title>
+      <style>
+      </style>
+  </head>
+  <body>
+
+       <script type="text/javascript" src="$pmrpcUrl"></script>
+
+       <script type="text/javascript">
+
+         function reply() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["OK", {"answer" : getSelectedItem()}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submitted</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submission failed</h1>';}
+           });
+	       return true;
+         }
+         
+         function getSelectedItem() {
+           chosen = "";
+           theForm = document.myform;
+           buttons = document.getElementsByTagName('input');
+           for (i = 0; i <buttons.length; i++) {
+             if ((buttons[i].type == 'radio') && buttons[i].checked) {
+               chosen = buttons[i].value
+             }
+           }
+
+           if (chosen == "") {
+             alert("No Location Chosen")
+           }
+           return chosen;
+         }
+         
+         function cancel() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["Cancelled", {}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancelled</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancellation failed</h1>';}
+           });
+	       return true;
+         }
+
+         pmrpc.call({
+           destination : "publish",
+           publicProcedureName : "setTitle",
+           params : ["$!title"]});
+           
+       </script>
+  
+  <h2>$!message</h2>
+    <form name="myform" onSubmit="reply(); return false;">
+#foreach( $value in $selectionValues )
+      <label>$value<input type="radio" name="group" value="$value" /></label><br />  
+#end
+      <input type="button" value="Cancel" onClick = "cancel()"/>
+      <input type="button" value="Submit" onClick = "reply()"/>
+    </form> 
+  </body>
+</html>
+
diff --git a/taverna-interaction-activity/src/main/resources/index b/taverna-interaction-activity/src/main/resources/index
new file mode 100644
index 0000000..8d3d1bc
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/index
@@ -0,0 +1,15 @@
+ask
+choose
+notify
+select
+#select_file
+tell
+warn
+interaction
+#Authorize
+#UsernamePassword
+#MasterPassword
+#TruststorePassword
+#TrustedCertificate
+
+
diff --git a/taverna-interaction-activity/src/main/resources/interaction.css b/taverna-interaction-activity/src/main/resources/interaction.css
new file mode 100644
index 0000000..a6e3301
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/interaction.css
@@ -0,0 +1,5 @@
+      	html, body { height: 100%; width: 100%; margin: 0; border:0; }
+      	#presentationFrame, #presentationDiv { height: 90%; width: 95%; margin: 0; border:0; frameborder:0; }
+     	#acknowledgment { width: 95%; margin: 0; border:0; frameborder:0; background-color: #eeeb99; color: #555555; text-align:center; }
+     	#acknowledgment p {padding: 10px;}
+     	
\ No newline at end of file
diff --git a/taverna-interaction-activity/src/main/resources/interaction.vm b/taverna-interaction-activity/src/main/resources/interaction.vm
new file mode 100644
index 0000000..b2d71e1
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/interaction.vm
@@ -0,0 +1,168 @@
+<!doctype html>
+<html>
+  <head>
+      <meta charset="utf-8" />
+      <title></title>
+      <link rel="stylesheet" type="text/css" href="interaction.css">
+       <script type="text/javascript" src="$pmrpcUrl"></script>
+       
+  </head>
+  <body>
+  
+       <script type="text/javascript">
+       
+       var appendError = function(str){
+         throw new Error("DEBUG: "+str)
+       }
+
+       function log(str){
+         setTimeout("appendError('"+str+"')", 1)
+       }
+       
+         function createReplyContent(status) {
+           date = new Date();
+           msg = "";
+           msg += "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
+           msg += "<entry xmlns=\"http://www.w3.org/2005/Atom\" xmlns:thr=\"http://purl.org/syndication/thread/1.0\">\n";
+           msg += "<title>\"A reply to " + "$entryId" + "\"</title>\n";
+           msg += "<id>" + "$entryId" + "reply" + "</id>\n";
+           msg += "<content/>\n";
+           msg += "<interaction:run-id xmlns:interaction=\"http://ns.taverna.org.uk/2012/interaction\">" + "$runId" + "</interaction:run-id>\n";
+           msg += "<interaction:in-reply-to  xmlns:interaction=\"http://ns.taverna.org.uk/2012/interaction\">" + "$entryId" + "</interaction:in-reply-to>\n";
+           msg += "<interaction:result-status xmlns:interaction=\"http://ns.taverna.org.uk/2012/interaction\">";
+           msg += escape(status);
+           msg += "</interaction:result-status>";
+          msg += "</entry>\n";
+           return msg;
+         }
+
+       // Copied from http://www.netlobo.com/url_query_string_javascript.html
+       function getParameterValue( name )
+	{
+  	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
+  	var regexS = "[\\?&]"+name+"=([^&#]*)";
+  	var regex = new RegExp( regexS );
+  	var results = regex.exec( window.location.href );
+  	if( results == null )
+    	return "";
+  	else
+    	return results[1];
+	}
+
+
+         function reply(status, results) {
+             document.getElementById('presentationDiv').innerHTML="<p>Returning results</p>";
+#if ($outputDataUrl)
+           var outputData = JSON.stringify(results);
+           var dataRequest = new XMLHttpRequest();
+           dataRequest.open("PUT", "$outputDataUrl", false);
+           dataRequest.setRequestHeader("Content-Type", "application/json");
+           dataRequest.send(outputData);
+#end           
+           var msg = createReplyContent(status);
+           var xmlhttp = new XMLHttpRequest();
+           xmlhttp.open("POST", "$feed", false);
+           xmlhttp.setRequestHeader("Content-Type", "application/atom+xml;type=entry");
+           xmlhttp.setRequestHeader("Slug", "$entryId" + "-reply");
+           xmlhttp.send(msg);
+           var shownMessage = 'Returned results';
+           if (status != 'OK') {
+             shownMessage = status;
+           }
+           document.getElementById('presentationDiv').innerHTML="<p>" + shownMessage + "</p>";
+             
+           return false;
+         }
+         
+
+	  function getDataFromUrl(url, type) {
+	      var xmlhttp = new XMLHttpRequest();
+	      xmlhttp.open("GET", url, false);
+	      if (type != null) {
+			if (xmlhttp.overrideMimeType){
+				xmlhttp.overrideMimeType(type);
+			}
+			else{
+				xmlhttp.setRequestHeader("Content-Type",type);
+			}
+		  }
+	      xmlhttp.send();
+	      if (xmlhttp.status != 200) {
+	      	return '';
+	      }
+	      return xmlhttp.responseText;
+	  }
+	  
+	  var inputData = null;
+	  
+      function registerCalls() {
+			pmrpc.register( {
+         	  publicProcedureName : "reply",
+         	  procedure : function(status, results) {
+         	     reply(status, results);
+         	     return "OK";
+         	  }
+           });
+ 
+ 			pmrpc.register( {
+         	  publicProcedureName : "getParameterValue",
+         	  procedure : function(parameterName) {
+         	     return getParameterValue(parameterName);
+         	  }
+           });
+           
+           inputData = JSON.parse(getDataFromUrl('$inputDataUrl', "application/json"));
+         
+           pmrpc.register( {
+             publicProcedureName : "getInputData",
+             procedure : function() {
+//               log("Returning input data");
+#if (!$outputDataUrl)
+               reply("OK", {});
+#end
+               return inputData;
+             }
+           });
+         
+           pmrpc.register( {
+             publicProcedureName : "getWorkflowRunId",
+             procedure : function () {
+               return '$runId';
+             }
+           });
+ 
+         pmrpc.register( {
+         	publicProcedureName : "setTitle",
+         	procedure : function(title) {
+         	   document.title = title;
+         	   return "OK";
+         	}
+         });
+         
+         pmrpc.register( {
+         	publicProcedureName : "getDataFromUrl",
+         	procedure : function(url, type) {
+         		return getDataFromUrl(url, type);
+         	}
+         });
+
+         document.getElementById('presentationFrame').src = "$presentationUrl";
+         document.title = 'Taverna interaction';
+       }
+       
+       window.onload = function() {
+//           log("Interaction loaded");
+           registerCalls();
+           };
+      
+  	   </script>      
+ 
+     <div id="presentationDiv">
+       <iframe id="presentationFrame" name="presentationFrame" src="about:blank">
+</iframe>
+     </div>
+     <div id="acknowledgment">
+       <p>The interaction service was developed in the <a href="http://www.biovel.eu" target="_blank">BioVeL project</a></p>
+     </div>
+  </body>
+</html>
diff --git a/taverna-interaction-activity/src/main/resources/json2.js b/taverna-interaction-activity/src/main/resources/json2.js
new file mode 100644
index 0000000..2dbf60d
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/json2.js
@@ -0,0 +1,487 @@
+/*
+    http://www.JSON.org/json2.js
+    2011-10-19
+
+    Public Domain.
+
+    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
+
+    See http://www.JSON.org/js.html
+
+
+    This code should be minified before deployment.
+    See http://javascript.crockford.com/jsmin.html
+
+    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+    NOT CONTROL.
+
+
+    This file creates a global JSON object containing two methods: stringify
+    and parse.
+
+        JSON.stringify(value, replacer, space)
+            value       any JavaScript value, usually an object or array.
+
+            replacer    an optional parameter that determines how object
+                        values are stringified for objects. It can be a
+                        function or an array of strings.
+
+            space       an optional parameter that specifies the indentation
+                        of nested structures. If it is omitted, the text will
+                        be packed without extra whitespace. If it is a number,
+                        it will specify the number of spaces to indent at each
+                        level. If it is a string (such as '\t' or '&nbsp;'),
+                        it contains the characters used to indent at each level.
+
+            This method produces a JSON text from a JavaScript value.
+
+            When an object value is found, if the object contains a toJSON
+            method, its toJSON method will be called and the result will be
+            stringified. A toJSON method does not serialize: it returns the
+            value represented by the name/value pair that should be serialized,
+            or undefined if nothing should be serialized. The toJSON method
+            will be passed the key associated with the value, and this will be
+            bound to the value
+
+            For example, this would serialize Dates as ISO strings.
+
+                Date.prototype.toJSON = function (key) {
+                    function f(n) {
+                        // Format integers to have at least two digits.
+                        return n < 10 ? '0' + n : n;
+                    }
+
+                    return this.getUTCFullYear()   + '-' +
+                         f(this.getUTCMonth() + 1) + '-' +
+                         f(this.getUTCDate())      + 'T' +
+                         f(this.getUTCHours())     + ':' +
+                         f(this.getUTCMinutes())   + ':' +
+                         f(this.getUTCSeconds())   + 'Z';
+                };
+
+            You can provide an optional replacer method. It will be passed the
+            key and value of each member, with this bound to the containing
+            object. The value that is returned from your method will be
+            serialized. If your method returns undefined, then the member will
+            be excluded from the serialization.
+
+            If the replacer parameter is an array of strings, then it will be
+            used to select the members to be serialized. It filters the results
+            such that only members with keys listed in the replacer array are
+            stringified.
+
+            Values that do not have JSON representations, such as undefined or
+            functions, will not be serialized. Such values in objects will be
+            dropped; in arrays they will be replaced with null. You can use
+            a replacer function to replace those with JSON values.
+            JSON.stringify(undefined) returns undefined.
+
+            The optional space parameter produces a stringification of the
+            value that is filled with line breaks and indentation to make it
+            easier to read.
+
+            If the space parameter is a non-empty string, then that string will
+            be used for indentation. If the space parameter is a number, then
+            the indentation will be that many spaces.
+
+            Example:
+
+            text = JSON.stringify(['e', {pluribus: 'unum'}]);
+            // text is '["e",{"pluribus":"unum"}]'
+
+
+            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
+            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
+
+            text = JSON.stringify([new Date()], function (key, value) {
+                return this[key] instanceof Date ?
+                    'Date(' + this[key] + ')' : value;
+            });
+            // text is '["Date(---current time---)"]'
+
+
+        JSON.parse(text, reviver)
+            This method parses a JSON text to produce an object or array.
+            It can throw a SyntaxError exception.
+
+            The optional reviver parameter is a function that can filter and
+            transform the results. It receives each of the keys and values,
+            and its return value is used instead of the original value.
+            If it returns what it received, then the structure is not modified.
+            If it returns undefined then the member is deleted.
+
+            Example:
+
+            // Parse the text. Values that look like ISO date strings will
+            // be converted to Date objects.
+
+            myData = JSON.parse(text, function (key, value) {
+                var a;
+                if (typeof value === 'string') {
+                    a =
+/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
+                    if (a) {
+                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+                            +a[5], +a[6]));
+                    }
+                }
+                return value;
+            });
+
+            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
+                var d;
+                if (typeof value === 'string' &&
+                        value.slice(0, 5) === 'Date(' &&
+                        value.slice(-1) === ')') {
+                    d = new Date(value.slice(5, -1));
+                    if (d) {
+                        return d;
+                    }
+                }
+                return value;
+            });
+
+
+    This is a reference implementation. You are free to copy, modify, or
+    redistribute.
+*/
+
+/*jslint evil: true, regexp: true */
+
+/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
+    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
+    lastIndex, length, parse, prototype, push, replace, slice, stringify,
+    test, toJSON, toString, valueOf
+*/
+
+
+// Create a JSON object only if one does not already exist. We create the
+// methods in a closure to avoid creating global variables.
+
+var JSON;
+if (!JSON) {
+    JSON = {};
+}
+
+(function () {
+    'use strict';
+
+    function f(n) {
+        // Format integers to have at least two digits.
+        return n < 10 ? '0' + n : n;
+    }
+
+    if (typeof Date.prototype.toJSON !== 'function') {
+
+        Date.prototype.toJSON = function (key) {
+
+            return isFinite(this.valueOf())
+                ? this.getUTCFullYear()     + '-' +
+                    f(this.getUTCMonth() + 1) + '-' +
+                    f(this.getUTCDate())      + 'T' +
+                    f(this.getUTCHours())     + ':' +
+                    f(this.getUTCMinutes())   + ':' +
+                    f(this.getUTCSeconds())   + 'Z'
+                : null;
+        };
+
+        String.prototype.toJSON      =
+            Number.prototype.toJSON  =
+            Boolean.prototype.toJSON = function (key) {
+                return this.valueOf();
+            };
+    }
+
+    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+        gap,
+        indent,
+        meta = {    // table of character substitutions
+            '\b': '\\b',
+            '\t': '\\t',
+            '\n': '\\n',
+            '\f': '\\f',
+            '\r': '\\r',
+            '"' : '\\"',
+            '\\': '\\\\'
+        },
+        rep;
+
+
+    function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+        escapable.lastIndex = 0;
+        return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
+            var c = meta[a];
+            return typeof c === 'string'
+                ? c
+                : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+        }) + '"' : '"' + string + '"';
+    }
+
+
+    function str(key, holder) {
+
+// Produce a string from holder[key].
+
+        var i,          // The loop counter.
+            k,          // The member key.
+            v,          // The member value.
+            length,
+            mind = gap,
+            partial,
+            value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+        if (value && typeof value === 'object' &&
+                typeof value.toJSON === 'function') {
+            value = value.toJSON(key);
+        }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+        if (typeof rep === 'function') {
+            value = rep.call(holder, key, value);
+        }
+
+// What happens next depends on the value's type.
+
+        switch (typeof value) {
+        case 'string':
+            return quote(value);
+
+        case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+            return isFinite(value) ? String(value) : 'null';
+
+        case 'boolean':
+        case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+            return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+        case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+            if (!value) {
+                return 'null';
+            }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+            gap += indent;
+            partial = [];
+
+// Is the value an array?
+
+            if (Object.prototype.toString.apply(value) === '[object Array]') {
+
+// The value is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+                length = value.length;
+                for (i = 0; i < length; i += 1) {
+                    partial[i] = str(i, value) || 'null';
+                }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+                v = partial.length === 0
+                    ? '[]'
+                    : gap
+                    ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
+                    : '[' + partial.join(',') + ']';
+                gap = mind;
+                return v;
+            }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+            if (rep && typeof rep === 'object') {
+                length = rep.length;
+                for (i = 0; i < length; i += 1) {
+                    if (typeof rep[i] === 'string') {
+                        k = rep[i];
+                        v = str(k, value);
+                        if (v) {
+                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
+                        }
+                    }
+                }
+            } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+                for (k in value) {
+                    if (Object.prototype.hasOwnProperty.call(value, k)) {
+                        v = str(k, value);
+                        if (v) {
+                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
+                        }
+                    }
+                }
+            }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+            v = partial.length === 0
+                ? '{}'
+                : gap
+                ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
+                : '{' + partial.join(',') + '}';
+            gap = mind;
+            return v;
+        }
+    }
+
+// If the JSON object does not yet have a stringify method, give it one.
+
+    if (typeof JSON.stringify !== 'function') {
+        JSON.stringify = function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+            var i;
+            gap = '';
+            indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+            if (typeof space === 'number') {
+                for (i = 0; i < space; i += 1) {
+                    indent += ' ';
+                }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+            } else if (typeof space === 'string') {
+                indent = space;
+            }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+            rep = replacer;
+            if (replacer && typeof replacer !== 'function' &&
+                    (typeof replacer !== 'object' ||
+                    typeof replacer.length !== 'number')) {
+                throw new Error('JSON.stringify');
+            }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+            return str('', {'': value});
+        };
+    }
+
+
+// If the JSON object does not yet have a parse method, give it one.
+
+    if (typeof JSON.parse !== 'function') {
+        JSON.parse = function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+            var j;
+
+            function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+                var k, v, value = holder[key];
+                if (value && typeof value === 'object') {
+                    for (k in value) {
+                        if (Object.prototype.hasOwnProperty.call(value, k)) {
+                            v = walk(value, k);
+                            if (v !== undefined) {
+                                value[k] = v;
+                            } else {
+                                delete value[k];
+                            }
+                        }
+                    }
+                }
+                return reviver.call(holder, key, value);
+            }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+            text = String(text);
+            cx.lastIndex = 0;
+            if (cx.test(text)) {
+                text = text.replace(cx, function (a) {
+                    return '\\u' +
+                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+                });
+            }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+            if (/^[\],:{}\s]*$/
+                    .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
+                        .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
+                        .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+                j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+                return typeof reviver === 'function'
+                    ? walk({'': j}, '')
+                    : j;
+            }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+            throw new SyntaxError('JSON.parse');
+        };
+    }
+}());
diff --git a/taverna-interaction-activity/src/main/resources/notify.vm b/taverna-interaction-activity/src/main/resources/notify.vm
new file mode 100644
index 0000000..a144ccc
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/notify.vm
@@ -0,0 +1,39 @@
+#require("message")
+#require("title")
+#notify
+<!doctype html>
+<html>
+  <head>
+      <meta charset="utf-8" />
+      <title></title>
+      <style>
+      </style>
+  </head>
+  <body>
+
+       <script type="text/javascript" src="$pmrpcUrl"></script>
+
+       <script type="text/javascript">
+         
+         function cancel() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["Cancelled", {}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancelled</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancellation failed</h1>';}
+           });
+	       return true;
+         }
+         
+         pmrpc.call({
+           destination : "publish",
+           publicProcedureName : "setTitle",
+           params : ["$!title"]});
+
+       </script>
+  
+  <h2>Message: $!message</h2>
+  </body>
+</html>
+
diff --git a/taverna-interaction-activity/src/main/resources/pmrpc.js b/taverna-interaction-activity/src/main/resources/pmrpc.js
new file mode 100644
index 0000000..0edc8cf
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/pmrpc.js
@@ -0,0 +1,686 @@
+/*
+ * pmrpc 0.6 - Inter-widget remote procedure call library based on HTML5 
+ *             postMessage API and JSON-RPC. https://github.com/izuzak/pmrpc
+ *
+ * Copyright 2011 Ivan Zuzak, Marko Ivankovic
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+pmrpc = self.pmrpc =  function() {
+  // check if JSON library is available
+  if (typeof JSON === "undefined" || typeof JSON.stringify === "undefined" || 
+      typeof JSON.parse === "undefined") {
+    throw "pmrpc requires the JSON library";
+  }
+  
+  // TODO: make "contextType" private variable
+  // check if postMessage APIs are available
+  if (typeof this.postMessage === "undefined" &&  // window or worker
+        typeof this.onconnect === "undefined") {  // shared worker
+      throw "pmrpc requires the HTML5 cross-document messaging and worker APIs";
+  }
+    
+  // Generates a version 4 UUID
+  function generateUUID() {
+    var uuid = [], nineteen = "89AB", hex = "0123456789ABCDEF";
+    for (var i=0; i<36; i++) {
+      uuid[i] = hex[Math.floor(Math.random() * 16)];
+    }
+    uuid[14] = '4';
+    uuid[19] = nineteen[Math.floor(Math.random() * 4)];
+    uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
+    return uuid.join('');
+  }
+  
+  // TODO: remove this - make everything a regex?
+  // Converts a wildcard expression into a regular expression
+  function convertWildcardToRegex(wildcardExpression) {
+    var regex = wildcardExpression.replace(
+                  /([\^\$\.\+\?\=\!\:\|\\\/\(\)\[\]\{\}])/g, "\\$1");
+    regex = "^" + regex.replace(/\*/g, ".*") + "$";
+    return regex;
+  }
+  
+  // Checks whether a domain satisfies the access control list. The access 
+  // control list has a whitelist and a blacklist. In order to satisfy the acl, 
+  // the domain must be on the whitelist, and must not be on the blacklist.
+  function checkACL(accessControlList, origin) {
+    var aclWhitelist = accessControlList.whitelist;
+    var aclBlacklist = accessControlList.blacklist;
+      
+    var isWhitelisted = false;
+    var isBlacklisted = false;
+    
+    for (var i=0; i<aclWhitelist.length; ++i) {
+      var aclRegex = convertWildcardToRegex(aclWhitelist[i]);
+      if(origin.match(aclRegex)) {
+        isWhitelisted = true;
+        break;
+      }
+    }
+     
+    for (var j=0; i<aclBlacklist.length; ++j) {
+      var aclRegex = convertWildcardToRegex(aclBlacklist[j]);
+      if(origin.match(aclRegex)) {
+        isBlacklisted = true;
+        break;
+      }
+    }
+    
+    return isWhitelisted && !isBlacklisted;
+  }
+  
+  // Calls a function with either positional or named parameters
+  // In either case, additionalParams will be appended to the end
+  function invokeProcedure(fn, self, params, additionalParams) {
+    if (!(params instanceof Array)) {
+      // get string representation of function
+      var fnDef = fn.toString();
+      
+      // parse the string representation and retrieve order of parameters
+      var argNames = fnDef.substring(fnDef.indexOf("(")+1, fnDef.indexOf(")"));
+      argNames = (argNames === "") ? [] : argNames.split(", ");
+      
+      var argIndexes = {};
+      for (var i=0; i<argNames.length; i++) {
+        argIndexes[argNames[i]] = i;
+      }
+      
+      // construct an array of arguments from a dictionary
+      var callParameters = [];
+      for (var paramName in params) {
+        if (typeof argIndexes[paramName] !== "undefined") {
+          callParameters[argIndexes[paramName]] = params[paramName];
+        } else {
+          throw "No such param!";
+        }
+      }
+      
+      params = callParameters;
+    }
+    
+    // append additional parameters
+    if (typeof additionalParams !== "undefined") {
+      params = params.concat(additionalParams);
+    }
+    
+    // invoke function with specified context and arguments array
+    return fn.apply(self, params);
+  }
+  
+  // JSON encode an object into pmrpc message
+  function encode(obj) {
+    return "pmrpc." + JSON.stringify(obj);
+  }
+  
+  // JSON decode a pmrpc message
+  function decode(str) {
+    return JSON.parse(str.substring("pmrpc.".length));
+  }
+
+  // Creates a base JSON-RPC object, usable for both request and response.
+  // As of JSON-RPC 2.0 it only contains one field "jsonrpc" with value "2.0"
+  function createJSONRpcBaseObject() {
+    var call = {};
+    call.jsonrpc = "2.0";
+    return call;
+  }
+
+  // Creates a JSON-RPC request object for the given method and parameters
+  function createJSONRpcRequestObject(procedureName, parameters, id) {
+    var call = createJSONRpcBaseObject();
+    call.method = procedureName;
+    call.params = parameters;
+    if (typeof id !== "undefined") {
+      call.id = id;
+    }
+    return call;
+  }
+
+  // Creates a JSON-RPC error object complete with message and error code
+  function createJSONRpcErrorObject(errorcode, message, data) {
+    var error = {};
+    error.code = errorcode;
+    error.message = message;
+    error.data = data;
+    return error;
+  }
+
+  // Creates a JSON-RPC response object.
+  function createJSONRpcResponseObject(error, result, id) {
+    var response = createJSONRpcBaseObject();
+    response.id = id;
+    
+    if (typeof error === "undefined" || error === null) {
+      response.result = (result === "undefined") ? null : result;
+    } else {
+      response.error = error;
+    }
+    
+    return response;
+  }
+
+  // dictionary of services registered for remote calls
+  var registeredServices = {};
+  // dictionary of requests being processed on the client side
+  var callQueue = {};
+  
+  var reservedProcedureNames = {};
+  // register a service available for remote calls
+  // if no acl is given, assume that it is available to everyone
+  function register(config) {
+    if (config.publicProcedureName in reservedProcedureNames) {
+      return false;
+    } else {
+      registeredServices[config.publicProcedureName] = {
+        "publicProcedureName" : config.publicProcedureName,
+        "procedure" : config.procedure,
+        "context" : config.procedure.context,
+        "isAsync" : typeof config.isAsynchronous !== "undefined" ?
+                      config.isAsynchronous : false,
+        "acl" : typeof config.acl !== "undefined" ? 
+                  config.acl : {whitelist: ["*"], blacklist: []}};
+      return true;
+    }
+  }
+
+  // unregister a previously registered procedure
+  function unregister(publicProcedureName) {
+    if (publicProcedureName in reservedProcedureNames) {
+      return false;
+    } else {
+      delete registeredServices[publicProcedureName];
+      return true;
+    }
+  }
+
+  // retreive service for a specific procedure name
+  function fetchRegisteredService(publicProcedureName){
+    return registeredServices[publicProcedureName];
+  }
+  
+  // receive and execute a pmrpc call which may be a request or a response
+  function processPmrpcMessage(eventParams) {
+    var serviceCallEvent = eventParams.event;
+    var eventSource = eventParams.source;
+    var isWorkerComm = typeof eventSource !== "undefined" && eventSource !== null;
+    
+    // if the message is not for pmrpc, ignore it.
+    if (serviceCallEvent.data.indexOf("pmrpc.") !== 0) {
+      return;
+    } else {
+      var message = decode(serviceCallEvent.data);
+      //if (typeof console !== "undefined" && console.log !== "undefined" && (typeof this.frames !== "undefined")) { console.log("Received:" + encode(message)); }
+      if (typeof message.method !== "undefined") {
+        // this is a request
+        
+        // ako je 
+        var newServiceCallEvent = {
+          data : serviceCallEvent.data,
+          source : isWorkerComm ? eventSource : serviceCallEvent.source,
+          origin : isWorkerComm ? "*" : serviceCallEvent.origin,
+          shouldCheckACL : !isWorkerComm
+        };
+        
+        response = processJSONRpcRequest(message, newServiceCallEvent);
+        
+        // return the response
+        if (response !== null) {
+          sendPmrpcMessage(
+            newServiceCallEvent.source, response, newServiceCallEvent.origin);
+        }
+      } else {
+        // this is a response
+        processJSONRpcResponse(message);
+      }
+    }
+  }
+  
+  // Process a single JSON-RPC Request
+  function processJSONRpcRequest(request, serviceCallEvent, shouldCheckACL) {
+    if (request.jsonrpc !== "2.0") {
+      // Invalid JSON-RPC request    
+      return createJSONRpcResponseObject(
+        createJSONRpcErrorObject(-32600, "Invalid request.", 
+          "The recived JSON is not a valid JSON-RPC 2.0 request."),
+        null,
+        null);
+    }
+    
+    var id = request.id;
+    var service = fetchRegisteredService(request.method);
+    
+    if (typeof service !== "undefined") {
+      // check the acl rights
+      if (!serviceCallEvent.shouldCheckACL || 
+            checkACL(service.acl, serviceCallEvent.origin)) {
+        try {
+          if (service.isAsync) {
+            // if the service is async, create a callback which the service
+            // must call in order to send a response back
+            var cb = function (returnValue) {
+                       sendPmrpcMessage(
+                         serviceCallEvent.source,
+                         createJSONRpcResponseObject(null, returnValue, id),
+                         serviceCallEvent.origin);
+                     };
+            invokeProcedure(
+              service.procedure, service.context, request.params, [cb, serviceCallEvent]);
+            return null;
+          } else {
+            // if the service is not async, just call it and return the value
+            var returnValue = invokeProcedure(
+                                service.procedure,
+                                service.context, 
+                                request.params, [serviceCallEvent]);
+            return (typeof id === "undefined") ? null : 
+              createJSONRpcResponseObject(null, returnValue, id);
+          }
+        } catch (error) {
+          if (typeof id === "undefined") {
+            // it was a notification nobody cares if it fails
+            return null;
+          }
+          
+          if (error === "No such param!") {
+            return createJSONRpcResponseObject(
+              createJSONRpcErrorObject(
+                -32602, "Invalid params.", error.description),
+              null,
+              id);            
+          }            
+          
+          // the -1 value is "application defined"
+          return createJSONRpcResponseObject(
+            createJSONRpcErrorObject(
+              -1, "Application error.", error.description),
+            null,
+            id);
+        }
+      } else {
+        // access denied
+        return (typeof id === "undefined") ? null : createJSONRpcResponseObject(
+          createJSONRpcErrorObject(
+            -2, "Application error.", "Access denied on server."),
+          null,
+          id);
+      }
+    } else {
+      // No such method
+      return (typeof id === "undefined") ? null : createJSONRpcResponseObject(
+        createJSONRpcErrorObject(
+          -32601,
+          "Method not found.", 
+          "The requestd remote procedure does not exist or is not available."),
+        null,
+        id);
+    }
+  }
+  
+  // internal rpc service that receives responses for rpc calls 
+  function processJSONRpcResponse(response) {
+    var id = response.id;
+    var callObj = callQueue[id];
+    if (typeof callObj === "undefined" || callObj === null) {
+      return;
+    } else {
+      delete callQueue[id];
+    }
+    
+    // check if the call was sucessful or not
+    if (typeof response.error === "undefined") {
+      callObj.onSuccess( { 
+        "destination" : callObj.destination,
+        "publicProcedureName" : callObj.publicProcedureName,
+        "params" : callObj.params,
+        "status" : "success",
+        "returnValue" : response.result} );
+    } else {
+      callObj.onError( { 
+        "destination" : callObj.destination,
+        "publicProcedureName" : callObj.publicProcedureName,
+        "params" : callObj.params,
+        "status" : "error",
+        "description" : response.error.message + " " + response.error.data} );
+    }
+  }
+  
+  // call remote procedure
+  function call(config) {
+    // check that number of retries is not -1, that is a special internal value
+    if (config.retries && config.retries < 0) {
+      throw new Exception("number of retries must be 0 or higher");
+    }
+    
+    var destContexts = [];
+    
+    if (typeof config.destination === "undefined" || config.destination === null || config.destination === "workerParent") {
+      destContexts = [{context : null, type : "workerParent"}];
+    } else if (config.destination === "publish") {
+      destContexts = findAllReachableContexts();
+    } else if (config.destination instanceof Array) {
+      for (var i=0; i<config.destination.length; i++) {
+        if (config.destination[i] === "workerParent") {
+          destContexts.push({context : null, type : "workerParent"});
+        } else if (typeof config.destination[i].frames !== "undefined") {
+          destContexts.push({context : config.destination[i], type : "window"});
+        } else {
+          destContexts.push({context : config.destination[i], type : "worker"});
+        }
+      }
+    } else {
+      if (typeof config.destination.frames !== "undefined") {
+        destContexts.push({context : config.destination, type : "window"});
+      } else {
+        destContexts.push({context : config.destination, type : "worker"});
+      }
+    }
+        
+    for (var i=0; i<destContexts.length; i++) {
+      var callObj = {
+        destination : destContexts[i].context,
+        destinationDomain : typeof config.destinationDomain === "undefined" ? ["*"] : (typeof config.destinationDomain === "string" ? [config.destinationDomain] : config.destinationDomain),
+        publicProcedureName : config.publicProcedureName,
+        onSuccess : typeof config.onSuccess !== "undefined" ? 
+                      config.onSuccess : function (){},
+        onError : typeof config.onError !== "undefined" ? 
+                      config.onError : function (){},
+        retries : typeof config.retries !== "undefined" ? config.retries : 5,
+        timeout : typeof config.timeout !== "undefined" ? config.timeout : 500,
+        status : "requestNotSent"
+      };
+      
+      isNotification = typeof config.onError === "undefined" && typeof config.onSuccess === "undefined";
+      params = (typeof config.params !== "undefined") ? config.params : [];
+      callId = generateUUID();
+      callQueue[callId] = callObj; 
+      
+      if (isNotification) {
+        callObj.message = createJSONRpcRequestObject(
+                    config.publicProcedureName, params);
+      } else {
+        callObj.message = createJSONRpcRequestObject(
+                            config.publicProcedureName, params, callId);
+      }
+      
+      waitAndSendRequest(callId);
+    }
+  }
+  
+  // Use the postMessage API to send a pmrpc message to a destination
+  function sendPmrpcMessage(destination, message, acl) {
+    //if (typeof console !== "undefined" && console.log !== "undefined" && (typeof this.frames !== "undefined")) { console.log("Sending:" + encode(message)); }
+    if (typeof destination === "undefined" || destination === null) {
+      self.postMessage(encode(message));
+    } else if (typeof destination.frames !== "undefined") {
+      return destination.postMessage(encode(message), acl);
+    } else {
+      destination.postMessage(encode(message));
+    }
+  }
+    
+  // Execute a remote call by first pinging the destination and afterwards
+  // sending the request
+  function waitAndSendRequest(callId) {
+    var callObj = callQueue[callId];
+    if (typeof callObj === "undefined") {
+      return;
+    } else if (callObj.retries <= -1) {      
+      processJSONRpcResponse(
+        createJSONRpcResponseObject(
+          createJSONRpcErrorObject(
+          -4, "Application error.", "Destination unavailable."),
+          null,
+          callId));
+    } else if (callObj.status === "requestSent") {
+      return;
+    } else if (callObj.retries === 0 || callObj.status === "available") {
+      callObj.status = "requestSent";
+      callObj.retries = -1;
+      callQueue[callId] = callObj;
+      for (var i=0; i<callObj.destinationDomain.length; i++) {
+        sendPmrpcMessage(
+          callObj.destination, callObj.message, callObj.destinationDomain[i], callObj);
+        self.setTimeout(function() { waitAndSendRequest(callId); }, callObj.timeout);
+      }
+    } else {
+      // if we can ping some more - send a new ping request
+      callObj.status = "pinging";
+      callObj.retries = callObj.retries - 1;
+      
+      call({
+        "destination" : callObj.destination,
+        "publicProcedureName" : "receivePingRequest",
+        "onSuccess" : function (callResult) {
+                        if (callResult.returnValue === true &&
+                            typeof callQueue[callId] !== 'undefined') {
+                          callQueue[callId].status = "available";
+                          waitAndSendRequest(callId);
+                        }
+                      },
+        "params" : [callObj.publicProcedureName], 
+        "retries" : 0,
+        "destinationDomain" : callObj.destinationDomain});
+      callQueue[callId] = callObj;
+      self.setTimeout(function() { waitAndSendRequest(callId); }, callObj.timeout / callObj.retries);
+    }
+  }
+  
+  // attach the pmrpc event listener 
+  function addCrossBrowserEventListerner(obj, eventName, handler, bubble) {
+    if ("addEventListener" in obj) {
+      // FF
+      obj.addEventListener(eventName, handler, bubble);
+    } else {
+      // IE
+      obj.attachEvent("on" + eventName, handler);
+    }
+  }
+  
+  function createHandler(method, source, destinationType) {
+    return function(event) {
+      var params = {event : event, source : source, destinationType : destinationType};
+      method(params);
+    };
+  }
+  
+  if ('window' in this) {
+    // window object - window-to-window comm
+    var handler = createHandler(processPmrpcMessage, null, "window");
+    addCrossBrowserEventListerner(this, "message", handler, false);
+  } else if ('onmessage' in this) {
+    // dedicated worker - parent X to worker comm
+    var handler = createHandler(processPmrpcMessage, this, "worker");
+    addCrossBrowserEventListerner(this, "message", handler, false);
+  } else if ('onconnect' in this) {
+    // shared worker - parent X to shared-worker comm
+    var connectHandler = function(e) {
+      //this.sendPort = e.ports[0];
+      var handler = createHandler(processPmrpcMessage, e.ports[0], "sharedWorker");      
+      addCrossBrowserEventListerner(e.ports[0], "message", handler, false);
+      e.ports[0].start();
+    };
+    addCrossBrowserEventListerner(this, "connect", connectHandler, false);
+  } else {
+    throw "Pmrpc must be loaded within a browser window or web worker.";
+  }
+  
+  // Override Worker and SharedWorker constructors so that pmrpc may relay
+  // messages. For each message received from the worker, call pmrpc processing
+  // method. This is child worker to parent communication.
+    
+  var createDedicatedWorker = this.Worker;
+  this.nonPmrpcWorker = createDedicatedWorker;
+  var createSharedWorker = this.SharedWorker;
+  this.nonPmrpcSharedWorker = createSharedWorker;
+  
+  var allWorkers = [];
+  
+  this.Worker = function(scriptUri) {
+    var newWorker = new createDedicatedWorker(scriptUri);
+    allWorkers.push({context : newWorker, type : 'worker'});   
+    var handler = createHandler(processPmrpcMessage, newWorker, "worker");
+    addCrossBrowserEventListerner(newWorker, "message", handler, false);
+    return newWorker;
+  };
+  
+  this.SharedWorker = function(scriptUri, workerName) {
+    var newWorker = new createSharedWorker(scriptUri, workerName);
+    allWorkers.push({context : newWorker, type : 'sharedWorker'});    
+    var handler = createHandler(processPmrpcMessage, newWorker.port, "sharedWorker");
+    addCrossBrowserEventListerner(newWorker.port, "message", handler, false);
+    newWorker.postMessage = function (msg, portArray) {
+      return newWorker.port.postMessage(msg, portArray);
+    };
+    newWorker.port.start();
+    return newWorker;
+  };
+  
+  // function that receives pings for methods and returns responses 
+  function receivePingRequest(publicProcedureName) {
+    return typeof fetchRegisteredService(publicProcedureName) !== "undefined";
+  }
+  
+  function subscribe(params) {
+    return register(params);
+  }
+  
+  function unsubscribe(params) {
+    return unregister(params);
+  }
+  
+  function findAllWindows() {
+    var allWindowContexts = [];
+    
+    if (typeof window !== 'undefined') {
+      allWindowContexts.push( { context : window.top, type : 'window' } );
+      
+      // walk through all iframes, starting with window.top
+      for (var i=0; typeof allWindowContexts[i] !== 'undefined'; i++) {
+        var currentWindow = allWindowContexts[i];
+        for (var j=0; j<currentWindow.context.frames.length; j++) {
+          allWindowContexts.push({ 
+            context : currentWindow.context.frames[j],
+            type : 'window'
+          });
+        }
+      }
+    } else {
+      allWindowContexts.push( {context : this, type : 'workerParent'} );
+    }
+    
+    return allWindowContexts;
+  }
+  
+  function findAllWorkers() {
+    return allWorkers;
+  }
+  
+  function findAllReachableContexts() {
+    var allWindows = findAllWindows();
+    var allWorkers = findAllWorkers();
+    var allContexts = allWindows.concat(allWorkers);
+    
+    return allContexts;
+  }
+  
+  // register method for receiving and returning pings
+  register({
+    "publicProcedureName" : "receivePingRequest",
+    "procedure" : receivePingRequest});
+  
+  function getRegisteredProcedures() {
+    var regSvcs = [];
+    var origin = typeof this.frames !== "undefined" ? (window.location.protocol + "//" + window.location.host + (window.location.port !== "" ? ":" + window.location.port : "")) : "";
+    for (publicProcedureName in registeredServices) {
+      if (publicProcedureName in reservedProcedureNames) {
+        continue;
+      } else {
+        regSvcs.push( { 
+          "publicProcedureName" : registeredServices[publicProcedureName].publicProcedureName,
+          "acl" : registeredServices[publicProcedureName].acl,
+          "origin" : origin
+        } );
+      }
+    }
+    return regSvcs;
+  }
+  
+  // register method for returning registered procedures
+  register({
+    "publicProcedureName" : "getRegisteredProcedures",
+    "procedure" : getRegisteredProcedures});
+    
+  function discover(params) {
+    var windowsForDiscovery = null;
+    
+    if (typeof params.destination === "undefined") {
+      windowsForDiscovery = findAllReachableContexts();
+      for (var i=0; i<windowsForDiscovery.length; i++) {
+        windowsForDiscovery[i] = windowsForDiscovery[i].context;
+      }
+    } else {
+      windowsForDiscovery = params.destination;
+    }
+    var originRegex = typeof params.origin === "undefined" ?
+      ".*" : params.origin; 
+    var nameRegex = typeof params.publicProcedureName === "undefined" ?
+      ".*" : params.publicProcedureName;
+    
+    var counter = windowsForDiscovery.length;
+    
+    var discoveredMethods = [];
+    function addToDiscoveredMethods(methods, destination) {
+      for (var i=0; i<methods.length; i++) {
+        if (methods[i].origin.match(originRegex) && methods[i].publicProcedureName.match(nameRegex)) {
+          discoveredMethods.push({
+            publicProcedureName : methods[i].publicProcedureName,
+            destination : destination,
+            procedureACL : methods[i].acl,
+            destinationOrigin : methods[i].origin
+          });
+        }
+      }
+    }
+    
+    pmrpc.call({
+      destination : windowsForDiscovery,
+      destinationDomain : "*",
+      publicProcedureName : "getRegisteredProcedures",
+      onSuccess : function (callResult) {
+                    counter--;
+                    addToDiscoveredMethods(callResult.returnValue, callResult.destination);
+                    if (counter === 0) {
+                      params.callback(discoveredMethods);
+                    }
+                  },
+      onError : function (callResult) {
+                  counter--;
+                  if (counter === 0) {
+                    params.callback(discoveredMethods);
+                  }
+                }
+    });
+  }
+  
+  reservedProcedureNames = {"getRegisteredProcedures" : null, "receivePingRequest" : null};
+  
+  // return public methods
+  return {
+    register : register,
+    unregister : unregister,
+    call : call,
+    discover : discover
+  };
+}();
diff --git a/taverna-interaction-activity/src/main/resources/schema.json b/taverna-interaction-activity/src/main/resources/schema.json
new file mode 100644
index 0000000..dcde96e
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/schema.json
@@ -0,0 +1,31 @@
+{
+	"$schema": "http://json-schema.org/draft-03/schema#",
+    "id": "http://ns.taverna.org.uk/2010/activity/interaction.schema.json",
+    "title": Interaction activity configuration",
+    "type": "object",
+    "properties": {
+        "@context": {
+            "description": "JSON-LD context for interpreting the configuration as RDF",
+            "required": true,
+            "enum": ["http://ns.taverna.org.uk/2010/activity/interaction.context.json"]
+        },
+        "presentationOrigin": {
+        	"type": "string",
+        	"required": true,
+        	"minLength": 1,
+        	"description": "The URL of the presentation page, or the identifier of the standard template"
+        },
+        "interactionActivityType": {
+        	"type": "string",
+        	"required": true,
+        	"minLength": 1,
+		"enum" : [ "VelocityTemplate", "LocallyPresentedHtml"],
+        	"description": "Indication of the type of the definition for the interaction"
+        },
+        "progressNotification": {
+        	"type": "boolean",
+        	"required": true,
+        	"description": "True if the interaction should not block the workflow run"
+        }
+    }
+}
\ No newline at end of file
diff --git a/taverna-interaction-activity/src/main/resources/select.vm b/taverna-interaction-activity/src/main/resources/select.vm
new file mode 100644
index 0000000..6fe5764
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/select.vm
@@ -0,0 +1,61 @@
+#require("valueList",1)
+#require("message")
+#require("title")
+#produce("answer")
+<!doctype html>
+<html>
+  <head>
+      <meta charset="utf-8" />
+      <title></title>
+      <style>
+      </style>
+  </head>
+  <body>
+
+       <script type="text/javascript" src="$pmrpcUrl"></script>
+
+       <script type="text/javascript">
+
+         function reply() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["OK", {"answer" : document.myform.mySelect.options[document.myform.mySelect.selectedIndex].value}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submitted</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submission failed</h1>';}
+           });
+	       return true;
+         }
+        
+         function cancel() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["Cancelled", {}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancelled</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancellation failed</h1>';}
+           });
+	       return true;
+         }
+         
+         pmrpc.call({
+           destination : "publish",
+           publicProcedureName : "setTitle",
+           params : ["$!title"]});
+
+       </script>
+  
+  <h2>$!message</h2>
+    <form name="myform" onSubmit="reply(); return false;">
+      <select name="mySelect">
+#foreach( $value in $valueList )
+      <option value="$value">$value</option>
+#end
+      </select>
+      <br/>
+      <input type="button" value="Cancel" onClick = "cancel()"/>
+      <input type="button" value="Submit" onClick = "reply()"/>
+    </form> 
+  </body>
+</html>
+
diff --git a/taverna-interaction-activity/src/main/resources/tell.vm b/taverna-interaction-activity/src/main/resources/tell.vm
new file mode 100644
index 0000000..948c023
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/tell.vm
@@ -0,0 +1,54 @@
+#require("message")
+#require("title")
+#produce("answer")
+<!doctype html>
+<html>
+  <head>
+      <meta charset="utf-8" />
+      <title></title>
+      <style>
+      </style>
+  </head>
+  <body>
+
+       <script type="text/javascript" src="$pmrpcUrl"></script>
+
+       <script type="text/javascript">
+
+         function reply() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["OK", {"answer" : "answer"}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submitted</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submission failed</h1>';}
+           });
+	       return true;
+         }
+         
+         function cancel() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["Cancelled", {}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancelled</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancellation failed</h1>';}
+           });
+	       return true;
+         }
+         
+         pmrpc.call({
+           destination : "publish",
+           publicProcedureName : "setTitle",
+           params : ["$!title"]});
+
+       </script>
+  
+  <h2>Message: $!message</h2>
+    <form name="myform" onSubmit="reply(); return false;">
+      <input type="button" value="Cancel" onClick = "cancel()"/>
+      <input type="button" value="OK" onClick = "reply()"/>
+    </form> 
+  </body>
+</html>
+
diff --git a/taverna-interaction-activity/src/main/resources/warn.vm b/taverna-interaction-activity/src/main/resources/warn.vm
new file mode 100644
index 0000000..ae9f573
--- /dev/null
+++ b/taverna-interaction-activity/src/main/resources/warn.vm
@@ -0,0 +1,54 @@
+#require("message")
+#require("title")
+#produce("answer")
+<!doctype html>
+<html>
+  <head>
+      <meta charset="UTF-8" />
+      <title></title>
+      <style>
+      </style>
+  </head>
+  <body>
+
+       <script type="text/javascript" src="$pmrpcUrl"></script>
+
+       <script type="text/javascript">
+
+         function reply() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["OK", {"answer" : "answer"}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submitted</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submission failed</h1>';}
+           });
+	       return true;
+         }
+         
+         function cancel() {
+           pmrpc.call({
+             destination : "publish",
+             publicProcedureName : "reply",
+             params : ["Cancelled", {}],
+             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancelled</h1>';},
+             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancellation failed</h1>';}
+           });
+	       return true;
+         }
+         
+         pmrpc.call({
+           destination : "publish",
+           publicProcedureName : "setTitle",
+           params : ["$!title"]});
+
+       </script>
+  
+  <h2>Warning: $!message</h2>
+    <form name="myform" onSubmit="reply(); return false;">
+      <input type="button" value="Cancel" onClick = "cancel()"/>
+      <input type="button" value="OK" onClick = "reply()"/>
+    </form> 
+  </body>
+</html>
+
diff --git a/taverna-rest-activity/pom.xml b/taverna-rest-activity/pom.xml
new file mode 100644
index 0000000..aa0cba3
--- /dev/null
+++ b/taverna-rest-activity/pom.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.taverna.commonactivities</groupId>
+		<artifactId>taverna-common-activities</artifactId>
+		<version>2.1.0-incubating-SNAPSHOT</version>
+	</parent>
+	<artifactId>taverna-rest-activity</artifactId>
+	<name>Apache Taverna REST Activity</name>
+	<packaging>bundle</packaging>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-reference-api</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-workflowmodel-api</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-credential-manager</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>commons-codec</groupId>
+			<artifactId>commons-codec</artifactId>
+			<version>${commons.codec.version}</version>
+		</dependency>
+
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient-osgi</artifactId>
+            <version>${apache.httpclient.version}</version>
+            <exclusions>
+              <!-- These are all embedded within httpclient-osgi -->
+              <exclusion>
+                <groupId>org.apache.httpcomponents</groupId>
+                <artifactId>httpclient</artifactId>
+              </exclusion>
+              <exclusion>
+                <groupId>commons-codec</groupId>
+                <artifactId>commons-codec</artifactId>
+              </exclusion>
+              <exclusion>
+                <groupId>org.apache.httpcomponents</groupId>
+                <artifactId>httpmime</artifactId>
+              </exclusion>
+              <exclusion>
+                <groupId>org.apache.httpcomponents</groupId>
+                <artifactId>httpclient-cache</artifactId>
+              </exclusion>
+              <exclusion>
+                <groupId>org.apache.httpcomponents</groupId>
+                <artifactId>fluent-hc</artifactId>
+              </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpcore-osgi</artifactId>
+            <version>${apache.httpcore.version}</version>
+            <exclusions>
+              <exclusion>
+                <groupId>org.apache.httpcomponents</groupId>
+                <artifactId>httpcore</artifactId>
+              </exclusion>
+              <exclusion>
+                <groupId>org.apache.httpcomponents</groupId>
+                <artifactId>httpcore-nio</artifactId>
+              </exclusion>
+            </exclusions>
+        </dependency>
+
+
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>${junit.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-activity-test-utils</artifactId>
+			<version>${taverna.engine.version}</version>
+			<scope>test</scope>
+		</dependency>
+
+	</dependencies>
+</project>
diff --git a/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/HTTPRequest.java b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/HTTPRequest.java
new file mode 100644
index 0000000..9ff240b
--- /dev/null
+++ b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/HTTPRequest.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (C) 2011 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.rest;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.taverna.t2.activities.rest.RESTActivity.HTTP_METHOD;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+
+/**
+ * HTTP Request configuration bean.
+ *
+ * @author David Withers
+ */
+@ConfigurationBean(uri = RESTActivity.URI + "#Request")
+public class HTTPRequest {
+
+	private HTTP_METHOD method;
+
+	private String absoluteURITemplate;
+
+	private List<HTTPRequestHeader> headers = new ArrayList<HTTPRequestHeader>();
+
+	public HTTP_METHOD getMethod() {
+		return method;
+	}
+
+	@ConfigurationProperty(name = "mthd", label = "HTTP Method", uri="http://www.w3.org/2011/http#mthd")
+	public void setMethod(URI method) {
+		setMethod(HTTP_METHOD.valueOf(method.getFragment()));
+	}
+
+	public void setMethod(HTTP_METHOD method) {
+		this.method = method;
+	}
+
+	public String getAbsoluteURITemplate() {
+		return absoluteURITemplate;
+	}
+
+	@ConfigurationProperty(name = "absoluteURITemplate", label = "URL Template")
+	public void setAbsoluteURITemplate(String absoluteURITemplate) {
+		this.absoluteURITemplate = absoluteURITemplate;
+	}
+
+	public List<HTTPRequestHeader> getHeaders() {
+		return headers;
+	}
+
+	@ConfigurationProperty(name = "headers", label = "HTTP Request Headers", uri="http://www.w3.org/2011/http#headers")
+	public void setHeaders(List<HTTPRequestHeader> headers) {
+		this.headers = headers;
+	}
+
+	public HTTPRequestHeader getHeader(String name) {
+		for (HTTPRequestHeader httpRequestHeader : headers) {
+			if (httpRequestHeader.getFieldName().equals(name)) {
+				return httpRequestHeader;
+			}
+		}
+		return null;
+	}
+
+	public void setHeader(String name, String value) {
+		HTTPRequestHeader httpRequestHeader = getHeader(name);
+		if (httpRequestHeader == null) {
+			httpRequestHeader = new HTTPRequestHeader();
+			httpRequestHeader.setFieldName(name);
+			headers.add(httpRequestHeader);
+		}
+		httpRequestHeader.setFieldValue(value);
+	}
+
+	public void setHeader(String name, boolean use100Continue) {
+		HTTPRequestHeader httpRequestHeader = getHeader(name);
+		if (httpRequestHeader == null) {
+			httpRequestHeader = new HTTPRequestHeader();
+			httpRequestHeader.setFieldName(name);
+			headers.add(httpRequestHeader);
+		}
+		httpRequestHeader.setUse100Continue(use100Continue);
+	}
+
+}
diff --git a/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/HTTPRequestHandler.java b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/HTTPRequestHandler.java
new file mode 100644
index 0000000..6393550
--- /dev/null
+++ b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/HTTPRequestHandler.java
@@ -0,0 +1,586 @@
+package net.sf.taverna.t2.activities.rest;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.ProxySelector;
+import java.net.URL;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.net.ssl.SSLContext;
+
+import net.sf.taverna.t2.activities.rest.RESTActivity.DATA_FORMAT;
+
+import org.apache.http.Header;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpHost;
+import org.apache.http.HttpResponse;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.CredentialsProvider;
+import org.apache.http.client.methods.HttpDelete;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpPut;
+import org.apache.http.client.methods.HttpRequestBase;
+import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.http.conn.ClientConnectionManager;
+import org.apache.http.conn.scheme.Scheme;
+import org.apache.http.conn.scheme.SchemeRegistry;
+import org.apache.http.entity.ByteArrayEntity;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.impl.conn.ProxySelectorRoutePlanner;
+import org.apache.http.impl.conn.SingleClientConnManager;
+import org.apache.http.protocol.BasicHttpContext;
+import org.apache.http.protocol.ExecutionContext;
+import org.apache.http.protocol.HttpContext;
+import org.apache.log4j.Logger;
+
+/**
+ * This class deals with the actual remote REST service invocation. The main
+ * four HTTP methods (GET | POST | PUT | DELETE) are supported. <br/>
+ * <br/>
+ *
+ * Configuration for request execution is obtained from the related REST
+ * activity - encapsulated in a configuration bean.
+ *
+ * @author Sergejs Aleksejevs
+ * @author Alex Nenadic
+ */
+public class HTTPRequestHandler {
+	private static final int HTTPS_DEFAULT_PORT = 443;
+	private static final String CONTENT_TYPE_HEADER_NAME = "Content-Type";
+	private static final String ACCEPT_HEADER_NAME = "Accept";
+	private static Logger logger = Logger.getLogger(HTTPRequestHandler.class);
+
+	public static String PROXY_HOST = "http.proxyHost";
+	public static String PROXY_PORT = "http.proxyPort";
+	public static String PROXY_USERNAME = "http.proxyUser";
+	public static String PROXY_PASSWORD = "http.proxyPassword";
+
+	/**
+	 * This method is the entry point to the invocation of a remote REST
+	 * service. It accepts a number of parameters from the related REST activity
+	 * and uses those to assemble, execute and fetch results of a relevant HTTP
+	 * request.
+	 *
+	 * @param requestURL
+	 *            The URL for the request to be made. This cannot be taken from
+	 *            the <code>configBean</code>, because this should be the
+	 *            complete URL which may be directly used to make the request (
+	 *            <code>configBean</code> would only contain the URL signature
+	 *            associated with the REST activity).
+	 * @param configBean
+	 *            Configuration of the associated REST activity is passed to
+	 *            this class as a configuration bean. Settings such as HTTP
+	 *            method, MIME types for "Content-Type" and "Accept" headers,
+	 *            etc are taken from the bean.
+	 * @param inputMessageBody
+	 *            Body of the message to be sent to the server - only needed for
+	 *            POST and PUT requests; for GET and DELETE it will be
+	 *            discarded.
+	 * @return
+	 */
+	@SuppressWarnings("deprecation")
+	public static HTTPRequestResponse initiateHTTPRequest(String requestURL,
+			RESTActivityConfigurationBean configBean, Object inputMessageBody,
+			Map<String, String> urlParameters, CredentialsProvider credentialsProvider) {
+		ClientConnectionManager connectionManager = null;
+		if (requestURL.toLowerCase().startsWith("https")) {
+			// Register a protocol scheme for https that uses Taverna's
+			// SSLSocketFactory
+			try {
+				URL url = new URL(requestURL); // the URL object which will
+				// parse the port out for us
+				int port = url.getPort();
+				if (port == -1) // no port was defined in the URL
+					port = HTTPS_DEFAULT_PORT; // default HTTPS port
+				Scheme https = new Scheme("https", new org.apache.http.conn.ssl.SSLSocketFactory(
+						SSLContext.getDefault()), port);
+				SchemeRegistry schemeRegistry = new SchemeRegistry();
+				schemeRegistry.register(https);
+				connectionManager = new SingleClientConnManager(null,
+						schemeRegistry);
+			} catch (MalformedURLException ex) {
+				logger.error("Failed to extract port from the REST service URL: the URL "
+						+ requestURL + " is malformed.", ex);
+				// This will cause the REST activity to fail but this method
+				// seems not to throw an exception so we'll just log the error
+				// and let it go through
+			} catch (NoSuchAlgorithmException ex2) {
+				// This will cause the REST activity to fail but this method
+				// seems not to throw an exception so we'll just log the error
+				// and let it go through
+				logger.error(
+						"Failed to create SSLContext for invoking the REST service over https.",
+						ex2);
+			}
+		}
+
+		switch (configBean.getHttpMethod()) {
+		case GET:
+			return doGET(connectionManager, requestURL, configBean, urlParameters, credentialsProvider);
+		case POST:
+			return doPOST(connectionManager, requestURL, configBean, inputMessageBody, urlParameters, credentialsProvider);
+		case PUT:
+			return doPUT(connectionManager, requestURL, configBean, inputMessageBody, urlParameters, credentialsProvider);
+		case DELETE:
+			return doDELETE(connectionManager, requestURL, configBean, urlParameters, credentialsProvider);
+		default:
+			return new HTTPRequestResponse(new Exception("Error: something went wrong; "
+					+ "no failure has occurred, but but unexpected HTTP method (\""
+					+ configBean.getHttpMethod() + "\") encountered."));
+		}
+	}
+
+	private static HTTPRequestResponse doGET(ClientConnectionManager connectionManager,
+			String requestURL, RESTActivityConfigurationBean configBean,
+			Map<String, String> urlParameters, CredentialsProvider credentialsProvider) {
+		HttpGet httpGet = new HttpGet(requestURL);
+		return performHTTPRequest(connectionManager, httpGet, configBean, urlParameters, credentialsProvider);
+	}
+
+	private static HTTPRequestResponse doPOST(ClientConnectionManager connectionManager,
+			String requestURL, RESTActivityConfigurationBean configBean, Object inputMessageBody,
+			Map<String, String> urlParameters, CredentialsProvider credentialsProvider) {
+		HttpPost httpPost = new HttpPost(requestURL);
+
+		// TODO - decide whether this is needed for PUT requests, too (or just
+		// here, for POST)
+		// check whether to send the HTTP Expect header or not
+		if (!configBean.getSendHTTPExpectRequestHeader())
+			httpPost.getParams().setBooleanParameter("http.protocol.expect-continue", false);
+
+		// If the user wants to set MIME type for the 'Content-Type' header
+		if (!configBean.getContentTypeForUpdates().isEmpty())
+			httpPost.setHeader(CONTENT_TYPE_HEADER_NAME, configBean.getContentTypeForUpdates());
+		try {
+			HttpEntity entity = null;
+			if (inputMessageBody == null) {
+				entity = new StringEntity("");
+			} else if (configBean.getOutgoingDataFormat() == DATA_FORMAT.String) {
+				entity = new StringEntity((String) inputMessageBody);
+			} else {
+				entity = new ByteArrayEntity((byte[]) inputMessageBody);
+			}
+			httpPost.setEntity(entity);
+		} catch (UnsupportedEncodingException e) {
+			return (new HTTPRequestResponse(new Exception("Error occurred while trying to "
+					+ "attach a message body to the POST request. See attached cause of this "
+					+ "exception for details.")));
+		}
+		return performHTTPRequest(connectionManager, httpPost, configBean, urlParameters, credentialsProvider);
+	}
+
+	private static HTTPRequestResponse doPUT(ClientConnectionManager connectionManager,
+			String requestURL, RESTActivityConfigurationBean configBean, Object inputMessageBody,
+			Map<String, String> urlParameters, CredentialsProvider credentialsProvider) {
+		HttpPut httpPut = new HttpPut(requestURL);
+		if (!configBean.getContentTypeForUpdates().isEmpty())
+			httpPut.setHeader(CONTENT_TYPE_HEADER_NAME, configBean.getContentTypeForUpdates());
+		try {
+			HttpEntity entity = null;
+			if (inputMessageBody == null) {
+				entity = new StringEntity("");
+			} else if (configBean.getOutgoingDataFormat() == DATA_FORMAT.String) {
+				entity = new StringEntity((String) inputMessageBody);
+			} else {
+				entity = new ByteArrayEntity((byte[]) inputMessageBody);
+			}
+			httpPut.setEntity(entity);
+		} catch (UnsupportedEncodingException e) {
+			return new HTTPRequestResponse(new Exception("Error occurred while trying to "
+					+ "attach a message body to the PUT request. See attached cause of this "
+					+ "exception for details."));
+		}
+		return performHTTPRequest(connectionManager, httpPut, configBean, urlParameters, credentialsProvider);
+	}
+
+	private static HTTPRequestResponse doDELETE(ClientConnectionManager connectionManager,
+			String requestURL, RESTActivityConfigurationBean configBean,
+			Map<String, String> urlParameters, CredentialsProvider credentialsProvider) {
+		HttpDelete httpDelete = new HttpDelete(requestURL);
+		return performHTTPRequest(connectionManager, httpDelete, configBean, urlParameters, credentialsProvider);
+	}
+
+	/**
+	 * TODO - REDIRECTION output:: if there was no redirection, should just show
+	 * the actual initial URL?
+	 *
+	 * @param httpRequest
+	 * @param acceptHeaderValue
+	 */
+	private static HTTPRequestResponse performHTTPRequest(
+			ClientConnectionManager connectionManager, HttpRequestBase httpRequest,
+			RESTActivityConfigurationBean configBean,
+			Map<String, String> urlParameters, CredentialsProvider credentialsProvider) {
+		// headers are set identically for all HTTP methods, therefore can do
+		// centrally - here
+
+		// If the user wants to set MIME type for the 'Accepts' header
+		String acceptsHeaderValue = configBean.getAcceptsHeaderValue();
+		if ((acceptsHeaderValue != null) && !acceptsHeaderValue.isEmpty()) {
+			httpRequest.setHeader(ACCEPT_HEADER_NAME,
+					URISignatureHandler.generateCompleteURI(acceptsHeaderValue, urlParameters, configBean.getEscapeParameters()));
+		}
+
+		// See if user wanted to set any other HTTP headers
+		ArrayList<ArrayList<String>> otherHTTPHeaders = configBean.getOtherHTTPHeaders();
+		if (!otherHTTPHeaders.isEmpty())
+			for (ArrayList<String> httpHeaderNameValuePair : otherHTTPHeaders)
+				if (httpHeaderNameValuePair.get(0) != null
+						&& !httpHeaderNameValuePair.get(0).isEmpty()) {
+					String headerParameterizedValue = httpHeaderNameValuePair.get(1);
+					String headerValue = URISignatureHandler.generateCompleteURI(headerParameterizedValue, urlParameters, configBean.getEscapeParameters());
+					httpRequest.setHeader(httpHeaderNameValuePair.get(0), headerValue);
+				}
+
+		try {
+			HTTPRequestResponse requestResponse = new HTTPRequestResponse();
+			DefaultHttpClient httpClient = new DefaultHttpClient(connectionManager, null);
+			((DefaultHttpClient) httpClient).setCredentialsProvider(credentialsProvider);
+			HttpContext localContext = new BasicHttpContext();
+
+			// Set the proxy settings, if any
+			if (System.getProperty(PROXY_HOST) != null
+					&& !System.getProperty(PROXY_HOST).isEmpty()) {
+				// Instruct HttpClient to use the standard
+				// JRE proxy selector to obtain proxy information
+				ProxySelectorRoutePlanner routePlanner = new ProxySelectorRoutePlanner(httpClient
+						.getConnectionManager().getSchemeRegistry(), ProxySelector.getDefault());
+				httpClient.setRoutePlanner(routePlanner);
+				// Do we need to authenticate the user to the proxy?
+				if (System.getProperty(PROXY_USERNAME) != null
+						&& !System.getProperty(PROXY_USERNAME).isEmpty())
+					// Add the proxy username and password to the list of
+					// credentials
+					httpClient.getCredentialsProvider().setCredentials(
+							new AuthScope(System.getProperty(PROXY_HOST), Integer.parseInt(System
+									.getProperty(PROXY_PORT))),
+							new UsernamePasswordCredentials(System.getProperty(PROXY_USERNAME),
+									System.getProperty(PROXY_PASSWORD)));
+			}
+
+			// execute the request
+			HttpResponse response = httpClient.execute(httpRequest, localContext);
+
+			// record response code
+			requestResponse.setStatusCode(response.getStatusLine().getStatusCode());
+			requestResponse.setReasonPhrase(response.getStatusLine().getReasonPhrase());
+
+			// record header values for Content-Type of the response
+			requestResponse.setResponseContentTypes(response.getHeaders(CONTENT_TYPE_HEADER_NAME));
+
+			// track where did the final redirect go to (if there was any)
+			HttpHost targetHost = (HttpHost) localContext
+					.getAttribute(ExecutionContext.HTTP_TARGET_HOST);
+			HttpUriRequest targetRequest = (HttpUriRequest) localContext
+					.getAttribute(ExecutionContext.HTTP_REQUEST);
+			requestResponse.setRedirectionURL("" + targetHost + targetRequest.getURI());
+			requestResponse.setRedirectionHTTPMethod(targetRequest.getMethod());
+			requestResponse.setHeaders(response.getAllHeaders());
+
+			/* read and store response body
+			 (check there is some content - negative length of content means
+			 unknown length;
+			 zero definitely means no content...)*/
+			// TODO - make sure that this test is sufficient to determine if
+			// there is no response entity
+			if (response.getEntity() != null && response.getEntity().getContentLength() != 0)
+				requestResponse.setResponseBody(readResponseBody(response.getEntity()));
+
+			// release resources (e.g. connection pool, etc)
+			httpClient.getConnectionManager().shutdown();
+			return requestResponse;
+		} catch (Exception ex) {
+			return new HTTPRequestResponse(ex);
+		}
+	}
+
+	/**
+	 * Dispatcher method that decides on the method of reading the server
+	 * response data - either as a string or as binary data.
+	 *
+	 * @param entity
+	 * @return
+	 * @throws IOException
+	 */
+	private static Object readResponseBody(HttpEntity entity) throws IOException {
+		if (entity == null)
+			return null;
+
+		/*
+		 * test whether the data is binary or textual - for binary data will
+		 * read just as it is, for textual data will attempt to perform charset
+		 * conversion from the original one into UTF-8
+		 */
+
+		if (entity.getContentType() == null)
+			// HTTP message contains a body but content type is null??? - we
+			// have seen services like this
+			return readFromInputStreamAsBinary(entity.getContent());
+
+		String contentType = entity.getContentType().getValue().toLowerCase();
+		if (contentType.startsWith("text") || contentType.contains("charset="))
+			// read as text
+			return readResponseBodyAsString(entity);
+		// read as binary - enough to pass the input stream, not the
+		// whole entity
+		return readFromInputStreamAsBinary(entity.getContent());
+	}
+
+	/**
+	 * Worker method that extracts the content of the received HTTP message as a
+	 * string. It also makes use of the charset that is specified in the
+	 * Content-Type header of the received data to read it appropriately.
+	 *
+	 * @param entity
+	 * @return
+	 * @throws IOException
+	 */
+	private static String readResponseBodyAsString(HttpEntity entity) throws IOException {
+		/*
+		 * From RFC2616 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
+		 * Content-Type = "Content-Type" ":" media-type, where media-type = type
+		 * "/" subtype *( ";" parameter ) can have 0 or more parameters such as
+		 * "charset", etc. Linear white space (LWS) MUST NOT be used between the
+		 * type and subtype, nor between an attribute and its value. e.g.
+		 * Content-Type: text/html; charset=ISO-8859-4
+		 */
+
+		// get charset name
+		String charset = null;
+		String contentType = entity.getContentType().getValue().toLowerCase();
+
+		String[] contentTypeParts = contentType.split(";");
+		for (String contentTypePart : contentTypeParts) {
+			contentTypePart = contentTypePart.trim();
+			if (contentTypePart.startsWith("charset="))
+				charset = contentTypePart.substring("charset=".length());
+		}
+
+		// read the data line by line
+		StringBuilder responseBodyString = new StringBuilder();
+		try (BufferedReader reader = new BufferedReader(new InputStreamReader(
+				entity.getContent(), charset != null ? charset : "UTF-8"))) {
+
+			String str;
+			while ((str = reader.readLine()) != null)
+				responseBodyString.append(str + "\n");
+
+			return responseBodyString.toString();
+		}
+	}
+
+	/**
+	 * Worker method that extracts the content of the input stream as binary
+	 * data.
+	 *
+	 * @param inputStream
+	 * @return
+	 * @throws IOException
+	 */
+	public static byte[] readFromInputStreamAsBinary(InputStream inputStream) throws IOException {
+		// use BufferedInputStream for better performance
+		try (BufferedInputStream in = new BufferedInputStream(inputStream)) {
+			// this list is to hold all fetched data
+			List<byte[]> data = new ArrayList<byte[]>();
+
+			// set up buffers for reading the data
+			int bufLength = 100 * 1024; // 100K
+			byte[] buf = new byte[bufLength];
+			byte[] currentPortionOfData = null;
+			int currentlyReadByteCount = 0;
+
+			// read the data portion by portion into a list
+			while ((currentlyReadByteCount = in.read(buf, 0, bufLength)) != -1) {
+				currentPortionOfData = new byte[currentlyReadByteCount];
+				System.arraycopy(buf, 0, currentPortionOfData, 0, currentlyReadByteCount);
+				data.add(currentPortionOfData);
+			}
+
+			// now check how much data was read and return that as a single byte
+			// array
+			if (data.size() == 1)
+				// just a single block of data - return it as it is
+				return data.get(0);
+
+			// there is more than one block of data -- calculate total
+			// length of data
+			bufLength = 0;
+			for (byte[] portionOfData : data)
+				bufLength += portionOfData.length;
+
+			// allocate a single large byte array that could contain all
+			// data
+			buf = new byte[bufLength];
+
+			// fill this byte array with data from all fragments
+			int lastFilledPositionInOutputArray = 0;
+			for (byte[] portionOfData : data) {
+				System.arraycopy(portionOfData, 0, buf,
+						lastFilledPositionInOutputArray, portionOfData.length);
+				lastFilledPositionInOutputArray += portionOfData.length;
+			}
+
+			return buf;
+		}
+	}
+
+	/**
+	 * All fields have public accessor, but private mutators. This is because it
+	 * should only be allowed to modify the HTTPRequestResponse partially inside
+	 * the HTTPRequestHandler class only. For users of this class it will behave
+	 * as immutable.
+	 *
+	 * @author Sergejs Aleksejevs
+	 */
+	public static class HTTPRequestResponse {
+		private int statusCode;
+		private String reasonPhrase;
+		private String redirectionURL;
+		private String redirectionHTTPMethod;
+		private Header[] responseContentTypes;
+		private Object responseBody;
+
+		private Exception exception;
+		private Header[] allHeaders;
+
+		/**
+		 * Private default constructor - will only be accessible from
+		 * HTTPRequestHandler. Values for the entity will then be set using the
+		 * private mutator methods.
+		 */
+		private HTTPRequestResponse() {
+			/*
+			 * do nothing here - values will need to be manually set later by
+			 * using private mutator methods
+			 */
+		}
+		
+		public void setHeaders(Header[] allHeaders) {
+			this.allHeaders = allHeaders;
+		}
+	
+	    public Header[] getHeaders() {
+	    	return allHeaders;
+	    }
+	
+	    public List<String> getHeadersAsStrings() {
+	    	List<String> headerStrings = new ArrayList<String>();
+	    	for (Header h : getHeaders()) {
+	    		headerStrings.add(h.toString());
+	    	}
+	    	return headerStrings;
+	    }
+
+		/**
+		 * Standard public constructor for a regular case, where all values are
+		 * known and the request has succeeded.
+		 *
+		 * @param statusCode
+		 * @param reasonPhrase
+		 * @param redirection
+		 * @param responseContentTypes
+		 * @param responseBody
+		 */
+		public HTTPRequestResponse(int statusCode, String reasonPhrase, String redirectionURL,
+				String redirectionHTTPMethod, Header[] responseContentTypes, String responseBody) {
+			this.statusCode = statusCode;
+			this.reasonPhrase = reasonPhrase;
+			this.redirectionURL = redirectionURL;
+			this.redirectionHTTPMethod = redirectionHTTPMethod;
+			this.responseContentTypes = responseContentTypes;
+			this.responseBody = responseBody;
+		}
+
+		/**
+		 * Standard public constructor for an error case, where an error has
+		 * occurred and request couldn't be executed because of an internal
+		 * exception (rather than an error received from the remote server).
+		 *
+		 * @param exception
+		 */
+		public HTTPRequestResponse(Exception exception) {
+			this.exception = exception;
+		}
+
+		private void setStatusCode(int statusCode) {
+			this.statusCode = statusCode;
+		}
+
+		public int getStatusCode() {
+			return statusCode;
+		}
+
+		public String getReasonPhrase() {
+			return reasonPhrase;
+		}
+
+		private void setReasonPhrase(String reasonPhrase) {
+			this.reasonPhrase = reasonPhrase;
+		}
+
+		public String getRedirectionURL() {
+			return redirectionURL;
+		}
+
+		private void setRedirectionURL(String redirectionURL) {
+			this.redirectionURL = redirectionURL;
+		}
+
+		public String getRedirectionHTTPMethod() {
+			return redirectionHTTPMethod;
+		}
+
+		private void setRedirectionHTTPMethod(String redirectionHTTPMethod) {
+			this.redirectionHTTPMethod = redirectionHTTPMethod;
+		}
+
+		public Header[] getResponseContentTypes() {
+			return responseContentTypes;
+		}
+
+		private void setResponseContentTypes(Header[] responseContentTypes) {
+			this.responseContentTypes = responseContentTypes;
+		}
+
+		public Object getResponseBody() {
+			return responseBody;
+		}
+
+		private void setResponseBody(Object outputBody) {
+			this.responseBody = outputBody;
+		}
+
+		/**
+		 * @return <code>true</code> if an exception has occurred while the HTTP
+		 *         request was executed. (E.g. this doesn't indicate a server
+		 *         error - just that the request couldn't be successfully
+		 *         executed. It could have been a network timeout, etc).
+		 */
+		public boolean hasException() {
+			return (this.exception != null);
+		}
+
+		public Exception getException() {
+			return exception;
+		}
+
+		/**
+		 * @return <code>true</code> if HTTP code of server response is either
+		 *         4xx or 5xx.
+		 */
+		public boolean hasServerError() {
+			return (statusCode >= 400 && statusCode < 600);
+		}
+	}
+}
diff --git a/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/HTTPRequestHeader.java b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/HTTPRequestHeader.java
new file mode 100644
index 0000000..5885870
--- /dev/null
+++ b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/HTTPRequestHeader.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (C) 2011 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.rest;
+
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+
+/**
+ * HTTP Request Header configuration bean
+ *
+ * @author David Withers
+ */
+@ConfigurationBean(uri = "http://www.w3.org/2011/http#RequestHeader")
+public class HTTPRequestHeader {
+
+	private String fieldName, fieldValue;
+
+	private boolean use100Continue;
+
+	public String getFieldName() {
+		return fieldName;
+	}
+
+	@ConfigurationProperty(name = "fieldName", label = "HTTP Header Name")
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+
+	public String getFieldValue() {
+		return fieldValue;
+	}
+
+	@ConfigurationProperty(name = "fieldValue", label = "HTTP Header Value")
+	public void setFieldValue(String fieldValue) {
+		this.fieldValue = fieldValue;
+	}
+
+	public boolean isUse100Continue() {
+		return use100Continue;
+	}
+
+	@ConfigurationProperty(name = "use100Continue", label = "Use 100 Continue", required = false, uri = RESTActivity.URI
+			+ "#use100Continue")
+	public void setUse100Continue(boolean use100Continue) {
+		this.use100Continue = use100Continue;
+	}
+
+}
diff --git a/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivity.java b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivity.java
new file mode 100644
index 0000000..76625f8
--- /dev/null
+++ b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivity.java
@@ -0,0 +1,345 @@
+package net.sf.taverna.t2.activities.rest;
+
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.t2.activities.rest.HTTPRequestHandler.HTTPRequestResponse;
+import net.sf.taverna.t2.activities.rest.URISignatureHandler.URISignatureParsingException;
+import net.sf.taverna.t2.invocation.InvocationContext;
+import net.sf.taverna.t2.reference.ErrorDocument;
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AbstractAsynchronousActivity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
+
+import org.apache.http.client.CredentialsProvider;
+import org.apache.log4j.Logger;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+/**
+ * Generic REST activity that is capable to perform all four HTTP methods.
+ *
+ * @author Sergejs Aleksejevs
+ */
+public class RESTActivity extends AbstractAsynchronousActivity<JsonNode> {
+
+	public static final String URI = "http://ns.taverna.org.uk/2010/activity/rest";
+
+	private static Logger logger = Logger.getLogger(RESTActivity.class);
+
+	// This generic activity can deal with any of the four HTTP methods
+	public static enum HTTP_METHOD {
+		GET, POST, PUT, DELETE
+	};
+
+	// Default choice of data format (especially, for outgoing data)
+	public static enum DATA_FORMAT {
+		String(String.class), Binary(byte[].class);
+
+		private final Class<?> dataFormat;
+
+		DATA_FORMAT(Class<?> dataFormat) {
+			this.dataFormat = dataFormat;
+		}
+
+		public Class<?> getDataFormat() {
+			return this.dataFormat;
+		}
+	};
+
+	// These ports are default ones; additional ports will be dynamically
+	// generated from the
+	// URI signature used to configure the activity
+	public static final String IN_BODY = "inputBody";
+	public static final String OUT_RESPONSE_BODY = "responseBody";
+	public static final String OUT_RESPONSE_HEADERS = "responseHeaders";
+	public static final String OUT_STATUS = "status";
+	public static final String OUT_REDIRECTION = "redirection";
+	public static final String OUT_COMPLETE_URL = "actualURL";
+
+	// Configuration bean for this activity - essentially defines a particular
+	// instance
+	// of the activity through the values of its parameters
+	private RESTActivityConfigurationBean configBean;
+	private JsonNode json;
+
+	private CredentialsProvider credentialsProvider;
+
+	public RESTActivity(CredentialsProvider credentialsProvider) {
+		this.credentialsProvider = credentialsProvider;
+	}
+
+	@Override
+	public JsonNode getConfiguration() {
+		return json;
+	}
+
+	public RESTActivityConfigurationBean getConfigurationBean() {
+		return configBean;
+	}
+
+	@Override
+	public void configure(JsonNode json) throws ActivityConfigurationException {
+		this.json = json;
+		configBean = new RESTActivityConfigurationBean(json);
+		// Check configBean is valid - mainly check the URI signature for being
+		// well-formed and
+		// other details being present and valid;
+		//
+		// NB! The URI signature will still be valid if there are no
+		// placeholders at all - in this
+		// case for GET and DELETE methods no input ports will be generated and
+		// a single input
+		// port for input message body will be created for POST / PUT methods.
+		if (!configBean.isValid()) {
+			throw new ActivityConfigurationException(
+					"Bad data in the REST activity configuration bean - "
+							+ "possible causes are: missing or ill-formed URI signature, missing or invalid MIME types for the "
+							+ "specified HTTP headers ('Accept' | 'Content-Type'). This should not have happened, as validation "
+							+ "on the UI had to be performed prior to accepting this configuration.");
+		}
+
+		// (Re)create input/output ports depending on configuration
+		configurePorts();
+	}
+
+	protected void configurePorts() {
+		// all input ports are dynamic and depend on the configuration
+		// of the particular instance of the REST activity
+
+		// now process the URL signature - extract all placeholders and create
+		// an input data type for each
+		Map<String, Class<?>> activityInputs = new HashMap<>();
+		List<String> placeholders = URISignatureHandler.extractPlaceholders(configBean
+				.getUrlSignature());
+		String acceptsHeaderValue = configBean.getAcceptsHeaderValue();
+		if (acceptsHeaderValue != null && !acceptsHeaderValue.isEmpty())
+			try {
+				List<String> acceptsPlaceHolders = URISignatureHandler
+						.extractPlaceholders(acceptsHeaderValue);
+				acceptsPlaceHolders.removeAll(placeholders);
+				placeholders.addAll(acceptsPlaceHolders);
+			} catch (URISignatureParsingException e) {
+				logger.error(e);
+			}
+		for (ArrayList<String> httpHeaderNameValuePair : configBean.getOtherHTTPHeaders())
+			try {
+				List<String> headerPlaceHolders = URISignatureHandler
+						.extractPlaceholders(httpHeaderNameValuePair.get(1));
+				headerPlaceHolders.removeAll(placeholders);
+				placeholders.addAll(headerPlaceHolders);
+			} catch (URISignatureParsingException e) {
+				logger.error(e);
+			}
+		for (String placeholder : placeholders)
+			// these inputs will have a dynamic name each;
+			// the data type is string as they are the values to be
+			// substituted into the URL signature at the execution time
+			activityInputs.put(placeholder, String.class);
+
+		// all inputs have now been configured - store the resulting set-up in
+		// the config bean;
+		// this configuration will be reused during the execution of activity,
+		// so that existing
+		// set-up could simply be referred to, rather than "re-calculated"
+		configBean.setActivityInputs(activityInputs);
+
+		// ---- CREATE OUTPUTS ----
+		// all outputs are of depth 0 - i.e. just a single value on each;
+
+		// output ports for Response Body and Status are static - they don't
+		// depend on the configuration of the activity;
+		addOutput(OUT_RESPONSE_BODY, 0);
+		addOutput(OUT_STATUS, 0);
+		if (configBean.getShowActualUrlPort())
+			addOutput(OUT_COMPLETE_URL, 0);
+		if (configBean.getShowResponseHeadersPort())
+			addOutput(OUT_RESPONSE_HEADERS, 1);
+
+		// Redirection port may be hidden/shown
+		if (configBean.getShowRedirectionOutputPort())
+			addOutput(OUT_REDIRECTION, 0);
+	}
+
+	/**
+	 * Uses HTTP method value of the config bean of the current instance of
+	 * RESTActivity.
+	 *
+	 * @see RESTActivity#hasMessageBodyInputPort(HTTP_METHOD)
+	 */
+	public boolean hasMessageBodyInputPort() {
+		return hasMessageBodyInputPort(configBean.getHttpMethod());
+	}
+
+	/**
+	 * Return value of this method has a number of implications - various input
+	 * ports and configuration options for this activity are applied based on
+	 * the selected HTTP method.
+	 *
+	 * @param httpMethod
+	 *            HTTP method to make the decision for.
+	 * @return True if this instance of the REST activity uses HTTP POST / PUT
+	 *         methods; false otherwise.
+	 */
+	public static boolean hasMessageBodyInputPort(HTTP_METHOD httpMethod) {
+		return httpMethod == HTTP_METHOD.POST || httpMethod == HTTP_METHOD.PUT;
+	}
+
+	/**
+	 * This method executes pre-configured instance of REST activity. It
+	 * resolves inputs of the activity and registers its outputs; the real
+	 * invocation of the HTTP request is performed by
+	 * {@link HTTPRequestHandler#initiateHTTPRequest(String, RESTActivityConfigurationBean, String)}
+	 * .
+	 */
+	@Override
+	public void executeAsynch(final Map<String, T2Reference> inputs,
+			final AsynchronousActivityCallback callback) {
+		// Don't execute service directly now, request to be run asynchronously
+		callback.requestRun(new Runnable() {
+			private Logger logger = Logger.getLogger(RESTActivity.class);
+
+			@Override
+			public void run() {
+
+				InvocationContext context = callback.getContext();
+				ReferenceService referenceService = context.getReferenceService();
+
+				// ---- RESOLVE INPUTS ----
+
+				// RE-ASSEMBLE REQUEST URL FROM SIGNATURE AND PARAMETERS
+				// (just use the configuration that was determined in
+				// configurePorts() - all ports in this set are required)
+				Map<String, String> urlParameters = new HashMap<>();
+				try {
+					for (String inputName : configBean.getActivityInputs().keySet())
+						urlParameters.put(inputName, (String) referenceService.renderIdentifier(
+								inputs.get(inputName), configBean.getActivityInputs()
+										.get(inputName), context));
+				} catch (Exception e) {
+					// problem occurred while resolving the inputs
+					callback.fail("REST activity was unable to resolve all necessary inputs"
+							+ "that contain values for populating the URI signature placeholders "
+							+ "with values.", e);
+
+					// make sure we don't call callback.receiveResult later
+					return;
+				}
+				String completeURL = URISignatureHandler.generateCompleteURI(
+						configBean.getUrlSignature(), urlParameters,
+						configBean.getEscapeParameters());
+
+				// OBTAIN THE INPUT BODY IF NECESSARY
+				// ("IN_BODY" is treated as *optional* for now)
+				Object inputMessageBody = null;
+				if (hasMessageBodyInputPort() && inputs.containsKey(IN_BODY)) {
+					inputMessageBody = referenceService.renderIdentifier(inputs.get(IN_BODY),
+							configBean.getOutgoingDataFormat().getDataFormat(), context);
+				}
+
+				// ---- DO THE ACTUAL SERVICE INVOCATION ----
+				HTTPRequestResponse requestResponse = HTTPRequestHandler.initiateHTTPRequest(
+						completeURL, configBean, inputMessageBody, urlParameters,
+						credentialsProvider);
+
+				// test if an internal failure has occurred
+				if (requestResponse.hasException()) {
+					callback.fail(
+							"Internal error has occurred while trying to execute the REST activity",
+							requestResponse.getException());
+
+					// make sure we don't call callback.receiveResult later
+					return;
+				}
+
+				// ---- REGISTER OUTPUTS ----
+				Map<String, T2Reference> outputs = new HashMap<String, T2Reference>();
+
+				T2Reference responseBodyRef = null;
+				if (requestResponse.hasServerError()) {
+					// test if a server error has occurred -- if so, return
+					// output as an error document
+
+					// Check if error returned is a string - sometimes services return byte[]
+					ErrorDocument errorDocument = null;
+					if (requestResponse.getResponseBody() == null) {
+						// No response body - register empty string
+						errorDocument = referenceService.getErrorDocumentService().registerError(
+								"", 0, context);
+					} else {
+						if (requestResponse.getResponseBody() instanceof String) {
+							errorDocument = referenceService.getErrorDocumentService()
+									.registerError((String) requestResponse.getResponseBody(), 0,
+											context);
+						} else if (requestResponse.getResponseBody() instanceof byte[]) {
+							// Do the only thing we can - try to convert to
+							// UTF-8 encoded string
+							// and hope we'll get back something intelligible
+							String str = null;
+							try {
+								str = new String((byte[]) requestResponse.getResponseBody(),
+										"UTF-8");
+							} catch (UnsupportedEncodingException e) {
+								logger.error(
+										"Failed to reconstruct the response body byte[]"
+										+ " into string using UTF-8 encoding",
+										e);
+								// try with no encoding, probably will get garbage
+								str = new String((byte[]) requestResponse.getResponseBody());
+							}
+							errorDocument = referenceService.getErrorDocumentService()
+									.registerError(str, 0, context);
+						} else {
+							// Do what we can - call toString() method and hope
+							// for the best
+							errorDocument = referenceService.getErrorDocumentService()
+									.registerError(requestResponse.getResponseBody().toString(), 0,
+											context);
+						}
+					}
+					responseBodyRef = referenceService.register(errorDocument, 0, true, context);
+				} else if (requestResponse.getResponseBody() != null) {
+					// some response data is available
+					responseBodyRef = referenceService.register(requestResponse.getResponseBody(),
+							0, true, context);
+				} else {
+					// no data was received in response to the request - must
+					// have been just a response header...
+					responseBodyRef = referenceService.register("", 0, true, context);
+				}
+				outputs.put(OUT_RESPONSE_BODY, responseBodyRef);
+
+				T2Reference statusRef = referenceService.register(requestResponse.getStatusCode(),
+						0, true, context);
+				outputs.put(OUT_STATUS, statusRef);
+
+				if (configBean.getShowActualUrlPort()) {
+					T2Reference completeURLRef = referenceService.register(completeURL, 0, true,
+							context);
+					outputs.put(OUT_COMPLETE_URL, completeURLRef);
+				}
+				if (configBean.getShowResponseHeadersPort())
+					outputs.put(OUT_RESPONSE_HEADERS, referenceService.register(
+							requestResponse.getHeadersAsStrings(), 1, true, context));
+
+				// only put an output to the Redirection port if the processor
+				// is configured to display that port
+				if (configBean.getShowRedirectionOutputPort()) {
+					T2Reference redirectionRef = referenceService.register(
+							requestResponse.getRedirectionURL(), 0, true, context);
+					outputs.put(OUT_REDIRECTION, redirectionRef);
+				}
+
+				// return map of output data, with empty index array as this is
+				// the only and final result (this index parameter is used if
+				// pipelining output)
+				callback.receiveResult(outputs, new int[0]);
+			}
+		});
+	}
+}
diff --git a/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivityConfigurationBean.java b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivityConfigurationBean.java
new file mode 100644
index 0000000..7a0d5d6
--- /dev/null
+++ b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivityConfigurationBean.java
@@ -0,0 +1,306 @@
+package net.sf.taverna.t2.activities.rest;
+
+import static net.sf.taverna.t2.activities.rest.RESTActivity.hasMessageBodyInputPort;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+import net.sf.taverna.t2.activities.rest.RESTActivity.DATA_FORMAT;
+import net.sf.taverna.t2.activities.rest.RESTActivity.HTTP_METHOD;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+
+/**
+ * Beans of this class store configuration information for REST activities.
+ * Configuration is comprised of the HTTP method to use, URL signature, and MIME
+ * types for Accept and Content-Type HTTP request headers. Additional value is
+ * used to record the format of outgoing data - binary or string. <br/>
+ * <br/>
+ * Also, derived attribute "activityInputs" is generated by identifying all
+ * "input ports" in the provided URL signature. <br/>
+ * <br/>
+ * Complete request URL (obtained by substituting values into the placeholders
+ * of the URL signature) is not stored, as it represents an instantiation of the
+ * activity invocation. The same applies for the input message body sent along
+ * with POST / PUT requests.
+ * 
+ * @author Sergejs Aleksejevs
+ */
+@SuppressWarnings("serial")
+@ConfigurationBean(uri = RESTActivity.URI + "#Config")
+public class RESTActivityConfigurationBean implements Serializable {
+	private static final List<String> knownHeaders = Arrays.asList("Accept",
+			"Content-Type", "Expect");
+	private RESTActivity.DATA_FORMAT outgoingDataFormat;
+
+	private boolean showRedirectionOutputPort;
+	private boolean showActualUrlPort;
+	private boolean showResponseHeadersPort;
+
+	// whether to perform URL escaping of passed parameters, true by default
+	private boolean escapeParameters = true;
+
+	// only need to store the configuration of inputs, as all of them are
+	// dynamic;
+	// only inputs that constitute components of URL signature are to be stored
+	// in this map all outputs are currently fixed, so no need to keep
+	// configuration of those
+	private Map<String, Class<?>> activityInputs;
+
+	private HTTPRequest request;
+
+	/**
+	 * @return An instance of the {@link RESTActivityConfigurationBean}
+	 *         pre-configured with default settings for all parameters.
+	 */
+	public static RESTActivityConfigurationBean getDefaultInstance() {
+		// TODO - set sensible default values here
+		RESTActivityConfigurationBean defaultBean = new RESTActivityConfigurationBean();
+		defaultBean.setRequest(new HTTPRequest());
+		defaultBean.setHttpMethod(RESTActivity.HTTP_METHOD.GET);
+		defaultBean.setAcceptsHeaderValue("application/xml");
+		defaultBean.setContentTypeForUpdates("application/xml");
+		defaultBean.setUrlSignature("http://www.uniprot.org/uniprot/{id}.xml");
+		defaultBean.setOutgoingDataFormat(RESTActivity.DATA_FORMAT.String);
+		// not ticked by default to allow to post to Twitter
+		defaultBean.setSendHTTPExpectRequestHeader(false);
+		// not showing the Redirection output port by default to make processor
+		// look simpler
+		defaultBean.setShowRedirectionOutputPort(false);
+		defaultBean.setShowActualUrlPort(false);
+		defaultBean.setShowResponseHeadersPort(false);
+		defaultBean.setEscapeParameters(true);
+		defaultBean.setOtherHTTPHeaders(new ArrayList<ArrayList<String>>());
+		return (defaultBean);
+	}
+
+	public RESTActivityConfigurationBean() {
+
+	}
+
+	public RESTActivityConfigurationBean(JsonNode json) {
+		JsonNode requestNode = json.get("request");
+		HTTPRequest request = new HTTPRequest();
+		if (requestNode.has("httpMethod")) {
+			request.setMethod(HTTP_METHOD.valueOf(requestNode.get("httpMethod")
+					.textValue()));
+		} else {
+			request.setMethod(HTTP_METHOD.GET);
+		}
+		request.setAbsoluteURITemplate(requestNode.get("absoluteURITemplate")
+				.textValue());
+		setRequest(request);
+		setAcceptsHeaderValue("application/xml");
+		setContentTypeForUpdates("application/xml");
+		setSendHTTPExpectRequestHeader(false);
+		if (requestNode.has("headers")) {
+			for (JsonNode headerNode : requestNode.get("headers")) {
+				String headerName = headerNode.get("header").textValue();
+				String headerValue = headerNode.get("value").textValue();
+				if ("Expect".equals(headerName)) {
+					request.setHeader(headerName, true);
+				} else {
+					request.setHeader(headerName, headerValue);
+				}
+			}
+		}
+		if (json.has("outgoingDataFormat")) {
+			setOutgoingDataFormat(DATA_FORMAT.valueOf(json.get(
+					"outgoingDataFormat").textValue()));
+		} else {
+			setOutgoingDataFormat(DATA_FORMAT.String);
+		}
+		if (json.has("showRedirectionOutputPort")) {
+			setShowRedirectionOutputPort(json.get("showRedirectionOutputPort")
+					.booleanValue());
+		} else {
+			setShowRedirectionOutputPort(false);
+		}
+		if (json.has("showActualURLPort")) {
+			setShowActualUrlPort(json.get("showActualURLPort").booleanValue());
+		} else {
+			setShowActualUrlPort(false);
+		}
+		if (json.has("showResponseHeadersPort")) {
+			setShowResponseHeadersPort(json.get("showResponseHeadersPort")
+					.booleanValue());
+		} else {
+			setShowResponseHeadersPort(false);
+		}
+		if (json.has("escapeParameters")) {
+			setEscapeParameters(json.get("escapeParameters").booleanValue());
+		} else {
+			setEscapeParameters(true);
+		}
+	}
+
+	/**
+	 * Tests validity of the configuration held in this bean. <br/>
+	 * <br/>
+	 * Performed tests are as follows: <br/>
+	 * * <code>httpMethod</code> is known to be valid - it's an enum; <br/>
+	 * * <code>urlSignature</code> - uses
+	 * {@link URISignatureHandler#isValid(String)} to test validity; <br/>
+	 * * <code>acceptsHeaderValue</code> and <code>contentTypeForUpdates</code>
+	 * must not be empty. <br/>
+	 * <br/>
+	 * <code>contentTypeForUpdates</code> is only checked if the
+	 * <code>httpMethod</code> is such that it is meant to use the Content-Type
+	 * header (that is POST / PUT only).
+	 * 
+	 * @return <code>true</code> if the configuration in the bean is valid;
+	 *         <code>false</code> otherwise.
+	 */
+	public boolean isValid() {
+		if (getUrlSignature() == null
+				|| !URISignatureHandler.isValid(getUrlSignature()))
+			return false;
+		return (hasMessageBodyInputPort(getHttpMethod())
+				&& getContentTypeForUpdates() != null
+				&& getContentTypeForUpdates().length() > 0 && outgoingDataFormat != null)
+				|| !hasMessageBodyInputPort(getHttpMethod());
+	}
+
+	public void setHttpMethod(RESTActivity.HTTP_METHOD httpMethod) {
+		request.setMethod(httpMethod);
+	}
+
+	public RESTActivity.HTTP_METHOD getHttpMethod() {
+		return request.getMethod();
+	}
+
+	public String getUrlSignature() {
+		return request.getAbsoluteURITemplate();
+	}
+
+	public void setUrlSignature(String urlSignature) {
+		request.setAbsoluteURITemplate(urlSignature);
+	}
+
+	public String getAcceptsHeaderValue() {
+		HTTPRequestHeader header = request.getHeader("Accept");
+		return header == null ? null : header.getFieldValue();
+	}
+
+	public void setAcceptsHeaderValue(String acceptsHeaderValue) {
+		request.setHeader("Accept", acceptsHeaderValue);
+	}
+
+	public String getContentTypeForUpdates() {
+		HTTPRequestHeader header = request.getHeader("Content-Type");
+		return header == null ? null : header.getFieldValue();
+	}
+
+	public void setContentTypeForUpdates(String contentTypeForUpdates) {
+		request.setHeader("Content-Type", contentTypeForUpdates);
+	}
+
+	public void setActivityInputs(Map<String, Class<?>> activityInputs) {
+		this.activityInputs = activityInputs;
+	}
+
+	public Map<String, Class<?>> getActivityInputs() {
+		return activityInputs;
+	}
+
+	public RESTActivity.DATA_FORMAT getOutgoingDataFormat() {
+		return outgoingDataFormat;
+	}
+
+	@ConfigurationProperty(name = "outgoingDataFormat", label = "Send data as", required = false)
+	public void setOutgoingDataFormat(
+			RESTActivity.DATA_FORMAT outgoingDataFormat) {
+		this.outgoingDataFormat = outgoingDataFormat;
+	}
+
+	public boolean getSendHTTPExpectRequestHeader() {
+		HTTPRequestHeader header = request.getHeader("Expect");
+		return header == null ? false : header.isUse100Continue();
+	}
+
+	public void setSendHTTPExpectRequestHeader(
+			boolean sendHTTPExpectRequestHeader) {
+		request.setHeader("Expect", sendHTTPExpectRequestHeader);
+	}
+
+	public boolean getShowRedirectionOutputPort() {
+		return showRedirectionOutputPort;
+	}
+
+	@ConfigurationProperty(name = "showRedirectionOutputPort", label = "Show 'Redirection' output port", required = false)
+	public void setShowRedirectionOutputPort(boolean showRedirectionOutputPort) {
+		this.showRedirectionOutputPort = showRedirectionOutputPort;
+	}
+
+	@ConfigurationProperty(name = "escapeParameters", label = "Escape URL parameter values", required = false)
+	public void setEscapeParameters(boolean escapeParameters) {
+		this.escapeParameters = Boolean.valueOf(escapeParameters);
+	}
+
+	public boolean getEscapeParameters() {
+		return escapeParameters;
+	}
+
+	public void setOtherHTTPHeaders(
+			ArrayList<ArrayList<String>> otherHTTPHeaders) {
+		for (ArrayList<String> otherHTTPHeader : otherHTTPHeaders)
+			request.setHeader(otherHTTPHeader.get(0), otherHTTPHeader.get(1));
+	}
+
+	public ArrayList<ArrayList<String>> getOtherHTTPHeaders() {
+		ArrayList<ArrayList<String>> otherHTTPHeaders = new ArrayList<>();
+		List<HTTPRequestHeader> headers = request.getHeaders();
+		for (HTTPRequestHeader header : headers)
+			if (!knownHeaders.contains(header.getFieldName())) {
+				ArrayList<String> nameValuePair = new ArrayList<>();
+				nameValuePair.add(header.getFieldName());
+				nameValuePair.add(header.getFieldValue());
+				otherHTTPHeaders.add(nameValuePair);
+			}
+		return otherHTTPHeaders;
+	}
+
+	/**
+	 * @return the showActualUrlPort
+	 */
+	public boolean getShowActualUrlPort() {
+		return showActualUrlPort;
+	}
+
+	/**
+	 * @param showActualUrlPort
+	 *            the showActualUrlPort to set
+	 */
+	public void setShowActualUrlPort(boolean showActualUrlPort) {
+		this.showActualUrlPort = showActualUrlPort;
+	}
+
+	/**
+	 * @return the showResponseHeadersPort
+	 */
+	public boolean getShowResponseHeadersPort() {
+		return showResponseHeadersPort;
+	}
+
+	/**
+	 * @param showResponseHeadersPort
+	 *            the showResponseHeadersPort to set
+	 */
+	public void setShowResponseHeadersPort(boolean showResponseHeadersPort) {
+		this.showResponseHeadersPort = showResponseHeadersPort;
+	}
+
+	public HTTPRequest getRequest() {
+		return request;
+	}
+
+	@ConfigurationProperty(name = "request", label = "HTTP Request")
+	public void setRequest(HTTPRequest request) {
+		this.request = request;
+	}
+}
diff --git a/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivityCredentialsProvider.java b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivityCredentialsProvider.java
new file mode 100644
index 0000000..050cdd8
--- /dev/null
+++ b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivityCredentialsProvider.java
@@ -0,0 +1,178 @@
+package net.sf.taverna.t2.activities.rest;
+
+import java.net.URI;
+import java.net.URLEncoder;
+import java.security.Principal;
+
+import javax.management.remote.JMXPrincipal;
+
+import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
+import net.sf.taverna.t2.security.credentialmanager.UsernamePassword;
+
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.Credentials;
+//import org.apache.http.client.CredentialsProvider;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.log4j.Logger;
+
+/**
+ * This CredentialsProvider acts as a mediator between the Apache HttpClient and
+ * Taverna's CredentialManager that stores all user's credentials.
+ *
+ * The only role of it is to retrieve stored details from CredentialManager when
+ * they are required for HTTP authentication.
+ *
+ * @author Sergejs Aleksejevs
+ * @author Alex Nenadic
+ */
+public class RESTActivityCredentialsProvider extends BasicCredentialsProvider {
+	private static Logger logger = Logger.getLogger(RESTActivityCredentialsProvider.class);
+	
+	private static final int DEFAULT_HTTP_PORT = 80;
+	private static final int DEFAULT_HTTPS_PORT = 443;
+	
+	private static final String HTTP_PROTOCOL = "http";
+	private static final String HTTPS_PROTOCOL = "https";
+	
+	private CredentialManager credentialManager;
+	
+	public RESTActivityCredentialsProvider(CredentialManager credentialManager) {
+		this.credentialManager = credentialManager;
+	}
+	
+	@Override
+	public Credentials getCredentials(AuthScope authscope) {
+		logger.info("Looking for credentials for: Host - " + authscope.getHost() + ";" + "Port - "
+				+ authscope.getPort() + ";" + "Realm - " + authscope.getRealm() + ";"
+				+ "Authentication scheme - " + authscope.getScheme());
+		
+		// Ask the superclass first
+		Credentials creds = super.getCredentials(authscope);
+		if (creds != null) {
+			/*
+			 * We have used setCredentials() on this class (for proxy host,
+			 * port, username,password) just before we invoked the http request,
+			 * which will then pick the proxy credentials up from here.
+			 */
+			return creds;
+		}
+		
+		// Otherwise, ask Credential Manager if is can provide the credential
+		String AUTHENTICATION_REQUEST_MSG = "This REST service requires authentication in "
+				+ authscope.getRealm();
+
+		try {
+			UsernamePassword credentials = null;
+
+			/*
+			 * if port is 80 - use HTTP, don't append port if port is 443 - use
+			 * HTTPS, don't append port any other port - append port + do 2
+			 * tests:
+			 * 
+			 * --- test HTTPS first has...()
+			 * --- if not there, do get...() for HTTP (which will save the thing)
+			 *
+			 * (save both these entries for HTTP + HTTPS if not there)
+			 */
+
+			// build the service URI back to front
+			StringBuilder serviceURI = new StringBuilder();
+			serviceURI.insert(0, "/#" + URLEncoder.encode(authscope.getRealm(), "UTF-16"));
+			if (authscope.getPort() != DEFAULT_HTTP_PORT
+					&& authscope.getPort() != DEFAULT_HTTPS_PORT) {
+				// non-default port - add port name to the URI
+				serviceURI.insert(0, ":" + authscope.getPort());
+			}
+			serviceURI.insert(0, authscope.getHost());
+			serviceURI.insert(0, "://");
+
+			// now the URI is complete, apart from the protocol name
+			if (authscope.getPort() == DEFAULT_HTTP_PORT
+					|| authscope.getPort() == DEFAULT_HTTPS_PORT) {
+				// definitely HTTP or HTTPS
+				serviceURI.insert(0, (authscope.getPort() == DEFAULT_HTTP_PORT ? HTTP_PROTOCOL
+						: HTTPS_PROTOCOL));
+
+				// request credentials from CrendentialManager
+				credentials = credentialManager.getUsernameAndPasswordForService(
+						URI.create(serviceURI.toString()), true, AUTHENTICATION_REQUEST_MSG);
+			} else {
+				/*
+				 * non-default port - will need to try both HTTP and HTTPS; just
+				 * check (no pop-up will be shown) if credentials are there -
+				 * one protocol that matched will be used; if
+				 */
+				if (credentialManager.hasUsernamePasswordForService(URI.create(HTTPS_PROTOCOL
+						+ serviceURI.toString()))) {
+					credentials = credentialManager.getUsernameAndPasswordForService(
+							URI.create(HTTPS_PROTOCOL + serviceURI.toString()), true,
+							AUTHENTICATION_REQUEST_MSG);
+				} else if (credentialManager.hasUsernamePasswordForService(URI.create(HTTP_PROTOCOL
+						+ serviceURI.toString()))) {
+					credentials = credentialManager.getUsernameAndPasswordForService(
+							URI.create(HTTP_PROTOCOL + serviceURI.toString()), true,
+							AUTHENTICATION_REQUEST_MSG);
+				} else {
+					/*
+					 * Neither of the two options succeeded, request details with a
+					 * popup for HTTP...
+					 */
+					credentials = credentialManager.getUsernameAndPasswordForService(
+							URI.create(HTTP_PROTOCOL + serviceURI.toString()), true,
+							AUTHENTICATION_REQUEST_MSG);
+
+					/*
+					 * ...then save a second entry with HTTPS protocol (if the
+					 * user has chosen to save the credentials)
+					 */
+					if (credentials != null && credentials.isShouldSave()) {
+						credentialManager.addUsernameAndPasswordForService(credentials,
+								URI.create(HTTPS_PROTOCOL + serviceURI.toString()));
+					}
+				}
+			}
+
+			if (credentials != null) {
+				logger.info("Credentials obtained successfully");
+				return new RESTActivityCredentials(credentials.getUsername(),
+						credentials.getPasswordAsString());
+			}
+		} catch (Exception e) {
+			logger.error(
+					"Unexpected error while trying to obtain user's credential from CredentialManager",
+					e);
+		}
+
+		// error or nothing was found
+		logger.info("Credentials not found - the user must have refused to enter them.");
+		return null;
+	}
+
+	/**
+	 * This class encapsulates user's credentials that this CredentialsProvider
+	 * can pass to Apache HttpClient.
+	 *
+	 * @author Sergejs Aleksejevs
+	 */
+	public class RESTActivityCredentials implements Credentials {
+		// this seems to be the simplest existing standard implementation of
+		// Principal interface
+		private final JMXPrincipal user;
+		private final String password;
+
+		public RESTActivityCredentials(String username, String password) {
+			this.user = new JMXPrincipal(username);
+			this.password = password;
+		}
+
+		@Override
+		public String getPassword() {
+			return password;
+		}
+
+		@Override
+		public Principal getUserPrincipal() {
+			return user;
+		}
+	}
+}
diff --git a/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivityFactory.java b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivityFactory.java
new file mode 100644
index 0000000..abf9bc8
--- /dev/null
+++ b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivityFactory.java
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * Copyright (C) 2011 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.rest;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import net.sf.taverna.t2.activities.rest.URISignatureHandler.URISignatureParsingException;
+import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
+import net.sf.taverna.t2.workflowmodel.Edits;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
+
+import org.apache.http.client.CredentialsProvider;
+import org.apache.log4j.Logger;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+/**
+ * An {@link ActivityFactory} for creating <code>RESTActivity</code>.
+ *
+ * @author David Withers
+ */
+public class RESTActivityFactory implements ActivityFactory {
+
+	private static Logger logger = Logger.getLogger(RESTActivityFactory.class);
+
+	private CredentialsProvider credentialsProvider;
+	private Edits edits;
+
+	@Override
+	public RESTActivity createActivity() {
+                RESTActivity activity = new RESTActivity(credentialsProvider);
+                activity.setEdits(edits);
+		return activity; 
+	}
+
+	@Override
+	public URI getActivityType() {
+		return URI.create(RESTActivity.URI);
+	}
+
+	@Override
+	public JsonNode getActivityConfigurationSchema() {
+		ObjectMapper objectMapper = new ObjectMapper();
+		try {
+ 			return objectMapper.readTree(getClass().getResource("/schema.json"));
+		} catch (IOException e) {
+			return objectMapper.createObjectNode();
+		}
+	}
+
+	public void setCredentialManager(CredentialManager credentialManager) {
+		credentialsProvider = new RESTActivityCredentialsProvider(credentialManager);
+	}
+
+	@Override
+	public Set<ActivityInputPort> getInputPorts(JsonNode configuration)
+			throws ActivityConfigurationException {
+		Set<ActivityInputPort> activityInputPorts = new HashSet<>();
+		RESTActivityConfigurationBean configBean = new RESTActivityConfigurationBean(configuration);
+		// ---- CREATE INPUTS ----
+
+		// all input ports are dynamic and depend on the configuration
+		// of the particular instance of the REST activity
+
+		// POST and PUT operations send data, so an input for the message body
+		// is required
+		if (RESTActivity.hasMessageBodyInputPort(configBean.getHttpMethod())) {
+			// the input message will be just an XML string for now
+			activityInputPorts.add(edits.createActivityInputPort(RESTActivity.IN_BODY, 0, true, null, configBean.getOutgoingDataFormat()
+					.getDataFormat()));
+		}
+
+		// now process the URL signature - extract all placeholders and create
+		// an input port for each
+		List<String> placeholders = URISignatureHandler
+				.extractPlaceholders(configBean.getUrlSignature());
+		String acceptsHeaderValue = configBean.getAcceptsHeaderValue();
+		if (acceptsHeaderValue != null && !acceptsHeaderValue.isEmpty()) {
+			try {
+			List<String> acceptsPlaceHolders = URISignatureHandler
+				.extractPlaceholders(acceptsHeaderValue);
+			acceptsPlaceHolders.removeAll(placeholders);
+			placeholders.addAll(acceptsPlaceHolders);
+			}
+			catch (URISignatureParsingException e) {
+				logger.error(e);
+			}
+		}
+		for (ArrayList<String> httpHeaderNameValuePair : configBean.getOtherHTTPHeaders()) {
+			try {
+				List<String> headerPlaceHolders = URISignatureHandler
+				.extractPlaceholders(httpHeaderNameValuePair.get(1));
+				headerPlaceHolders.removeAll(placeholders);
+				placeholders.addAll(headerPlaceHolders);
+			}
+			catch (URISignatureParsingException e) {
+				logger.error(e);
+			}
+		}
+		for (String placeholder : placeholders) {
+			// these inputs will have a dynamic name each;
+			// the data type is string as they are the values to be
+			// substituted into the URL signature at the execution time
+			activityInputPorts.add(edits.createActivityInputPort(placeholder, 0, true, null, String.class));
+		}
+		return activityInputPorts;
+	}
+
+	@Override
+	public Set<ActivityOutputPort> getOutputPorts(JsonNode configuration)
+			throws ActivityConfigurationException {
+		Set<ActivityOutputPort> activityOutputPorts = new HashSet<>();
+		RESTActivityConfigurationBean configBean = new RESTActivityConfigurationBean(configuration);
+		// ---- CREATE OUTPUTS ----
+		// all outputs are of depth 0 - i.e. just a single value on each;
+
+		// output ports for Response Body and Status are static - they don't
+		// depend on the configuration of the activity;
+		activityOutputPorts.add(edits.createActivityOutputPort(RESTActivity.OUT_RESPONSE_BODY, 0, 0));
+		activityOutputPorts.add(edits.createActivityOutputPort(RESTActivity.OUT_STATUS, 0, 0));
+		if (configBean.getShowActualUrlPort()) {
+			activityOutputPorts.add(edits.createActivityOutputPort(RESTActivity.OUT_COMPLETE_URL, 0, 0));
+			}
+			if (configBean.getShowResponseHeadersPort()) {
+				activityOutputPorts.add(edits.createActivityOutputPort(RESTActivity.OUT_RESPONSE_HEADERS, 1, 1));
+			}
+		// Redirection port may be hidden/shown
+		if (configBean.getShowRedirectionOutputPort()) {
+			activityOutputPorts.add(edits.createActivityOutputPort(RESTActivity.OUT_REDIRECTION, 0, 0));
+		}
+		return activityOutputPorts;
+	}
+
+	public void setEdits(Edits edits) {
+		this.edits = edits;
+	}
+
+}
diff --git a/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivityHealthCheck.java b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivityHealthCheck.java
new file mode 100644
index 0000000..1a80810
--- /dev/null
+++ b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivityHealthCheck.java
@@ -0,0 +1,32 @@
+package net.sf.taverna.t2.activities.rest;
+
+import net.sf.taverna.t2.visit.VisitKind;
+import net.sf.taverna.t2.visit.Visitor;
+
+/**
+ * A <code>RESTActivityHealthCheck</code> is a kind of visit that determines
+ * if the corresponding REST activity in a workflow will work during a workflow run.
+ *
+ * @author Sergejs Aleksejevs
+ */
+public class RESTActivityHealthCheck extends VisitKind {
+
+	// The following values indicate the type of results that can be associated
+	// with a VisitReport generated by a health-checking visitor.
+
+	public static final int CORRECTLY_CONFIGURED = 0;
+	public static final int GENERAL_CONFIG_PROBLEM = 10;
+
+	@Override
+	public Class<? extends Visitor<?>> getVisitorClass() {
+		return RESTActivityHealthChecker.class;
+	}
+
+	private static class Singleton {
+		private static RESTActivityHealthCheck instance = new RESTActivityHealthCheck();
+	}
+
+	public static RESTActivityHealthCheck getInstance() {
+		return Singleton.instance;
+	}
+}
diff --git a/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivityHealthChecker.java b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivityHealthChecker.java
new file mode 100644
index 0000000..cbca70a
--- /dev/null
+++ b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/RESTActivityHealthChecker.java
@@ -0,0 +1,58 @@
+package net.sf.taverna.t2.activities.rest;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.taverna.t2.visit.VisitReport;
+import net.sf.taverna.t2.visit.VisitReport.Status;
+import net.sf.taverna.t2.workflowmodel.health.HealthCheck;
+import net.sf.taverna.t2.workflowmodel.health.HealthChecker;
+
+/**
+ * A {@link HealthChecker} for a {@link RESTActivity}.
+ *
+ * @author Sergejs Aleksejevs
+ */
+public class RESTActivityHealthChecker implements HealthChecker<RESTActivity> {
+	@Override
+	public boolean canVisit(Object subject) {
+		return (subject instanceof RESTActivity);
+	}
+
+	@Override
+	public VisitReport visit(RESTActivity activity, List<Object> ancestors) {
+		// collection of validation reports that this health checker will create
+		List<VisitReport> reports = new ArrayList<VisitReport>();
+
+		RESTActivityConfigurationBean configBean = activity.getConfigurationBean();
+		if (configBean.isValid()) {
+			reports.add(new VisitReport(RESTActivityHealthCheck.getInstance(), activity,
+					"REST Activity is configured correctly",
+					RESTActivityHealthCheck.CORRECTLY_CONFIGURED, Status.OK));
+		} else {
+			reports.add(new VisitReport(RESTActivityHealthCheck.getInstance(), activity,
+					"REST Activity - bad configuration",
+					RESTActivityHealthCheck.GENERAL_CONFIG_PROBLEM, Status.SEVERE));
+		}
+
+		// (possibly other types of reports could be added later)
+
+		// collection all reports together
+		Status worstStatus = VisitReport.getWorstStatus(reports);
+		VisitReport report = new VisitReport(RESTActivityHealthCheck.getInstance(), activity,
+				"REST Activity Report", HealthCheck.NO_PROBLEM, worstStatus, reports);
+
+		return report;
+	}
+
+	/**
+	 * Health check for the REST activity only involves
+	 * verifying details in the configuration bean -
+	 * that is quick.
+	 */
+	@Override
+	public boolean isTimeConsuming() {
+		return false;
+	}
+
+}
diff --git a/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/URISignatureHandler.java b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/URISignatureHandler.java
new file mode 100644
index 0000000..6a669f6
--- /dev/null
+++ b/taverna-rest-activity/src/main/java/net/sf/taverna/t2/activities/rest/URISignatureHandler.java
@@ -0,0 +1,412 @@
+package net.sf.taverna.t2.activities.rest;
+
+import java.io.UnsupportedEncodingException;
+import java.text.Normalizer;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+
+/**
+ * This class deals with URI signatures - essentially, strings that represent
+ * some resource's URI with zero or more placeholders. URI signatures are known
+ * at workflow definition time and represent the pattern of the complete URIs
+ * that will be used at workflow run time.
+ * 
+ * An example of the URI signature is:
+ * http://sysmo-db.org/sops/{sop_id}/experimental_conditions
+ * /{cond_id}?condition_unit={unit}
+ * 
+ * Placeholders "{sop_id}", "{cond_id}" and "{unit}" will be replaced by the
+ * real values prior to using the URI for a real request.
+ * 
+ * This class is concerned with validation of URI signatures, extraction of
+ * placeholders and substituting placeholders to generate complete URIs.
+ * 
+ * @author Sergejs Aleksejevs
+ */
+public class URISignatureHandler {
+	
+	private static Logger logger = Logger.getLogger(URISignatureHandler.class);
+	
+
+	public static final char PLACEHOLDER_START_SYMBOL = '{';
+	public static final char PLACEHOLDER_END_SYMBOL = '}';
+
+	/**
+	 * Extracts placeholders of the given URI signature with their positions in
+	 * the signature in the order of their occurrence.
+	 * 
+	 * Extraction is done in a robust way with signature validity checks being
+	 * carried out simultaneously. This makes sure that even with no explicit
+	 * validation (see {@link URISignatureHandler#isValid(String)}) no
+	 * unexpected faults occur.
+	 * 
+	 * @param uriSignature
+	 *            The URI signature to process.
+	 * @return A map of placeholders as they are encountered (from start to end)
+	 *         in the URI signature and their start positions. Keys of the map
+	 *         are the "titles" of the placeholders without opening and closing
+	 *         placeholder symbols; values are the URI signature string indices,
+	 *         where the title of the corresponding placeholder starts in the
+	 *         string.
+	 */
+	public static LinkedHashMap<String, Integer> extractPlaceholdersWithPositions(
+			String uriSignature) {
+		// no signature - nothing to process
+		if (uriSignature == null || uriSignature.isEmpty())
+			throw new URISignatureParsingException(
+					"URI signature is null or empty - nothing to process.");
+
+		LinkedHashMap<String, Integer> foundPlaceholdersWithPositions = new LinkedHashMap<>();
+
+		int nestingLevel = 0;
+		int startSymbolIdx = -1;
+
+		// go through the signature character by character trying to extract
+		// placeholders
+		for (int i = 0; i < uriSignature.length(); i++) {
+			switch (uriSignature.charAt(i)) {
+			case PLACEHOLDER_START_SYMBOL:
+				if (++nestingLevel != 1)
+					throw new URISignatureParsingException(
+							"Malformed URL: at least two parameter placeholder opening\n" +
+									"symbols follow each other without being closed appropriately\n" +
+							"(possibly the signature contains nested placeholders).");
+				startSymbolIdx = i;
+				break;
+
+			case PLACEHOLDER_END_SYMBOL:
+				if (--nestingLevel < 0)
+					throw new URISignatureParsingException(
+							"Malformed URL: parameter placeholder closing symbol found before the opening one.");
+				if (nestingLevel == 0) {
+					// correctly opened and closed placeholder found; check if
+					// it is a "fresh" one
+					String placeholderCandidate = uriSignature.substring(
+							startSymbolIdx + 1, i);
+					if (!foundPlaceholdersWithPositions
+							.containsKey(placeholderCandidate)) {
+						foundPlaceholdersWithPositions.put(
+								placeholderCandidate, startSymbolIdx + 1);
+					} else {
+						throw new URISignatureParsingException(
+								"Malformed URL: duplicate parameter placeholder \""
+										+ placeholderCandidate + "\" found.");
+					}
+				}
+				break;
+
+			default:
+				continue;
+			}
+		}
+
+		// the final check - make sure that after traversing the string, we are
+		// not "inside" one of the placeholders (e.g. this could happen if a
+		// placeholder
+		// opening symbol was found, but the closing one never occurred after
+		// that)
+		if (nestingLevel > 0)
+			throw new URISignatureParsingException(
+					"Malformed URL: parameter placeholder opening symbol found,\n"
+							+ "but the closing one has not been encountered.");
+
+		return foundPlaceholdersWithPositions;
+	}
+
+	/**
+	 * Works identical to
+	 * {@link URISignatureHandler#extractPlaceholdersWithPositions(String)}
+	 * except for returning only the list of placeholder titles - without
+	 * positions.
+	 * 
+	 * @param uriSignature
+	 *            The URI signature to process.
+	 * @return List of the placeholder titles in the order of their occurrence
+	 *         in the provided URI signature.
+	 */
+	public static List<String> extractPlaceholders(String uriSignature) {
+		return new ArrayList<>(extractPlaceholdersWithPositions(uriSignature)
+				.keySet());
+	}
+
+	/**
+	 * This method performs explicit validation of the URI signature. If the
+	 * validation succeeds, the method terminates quietly; in case of any
+	 * identified problems a {@link URISignatureParsingException} is thrown.
+	 * 
+	 * @param uriSignature
+	 *            The URI signature to validate.
+	 * @throws URISignatureParsingException
+	 */
+	public static void validate(String uriSignature)
+			throws URISignatureParsingException {
+		// this method essentially needs to do exactly the same thing
+		// as the method to extract the placeholders with their corresponding
+		// positions; all necessary validation is already performed there -
+		// hence the trick is simply to call that method (discarding its
+		// output),
+		// while keeping track of any exceptions that may be generated by the
+		// called method;
+		//
+		// for this simply call the placeholder extraction method - any
+		// exceptions
+		// will be forwarded up the method call stack; in case of success, the
+		// method
+		// will terminate quietly
+		extractPlaceholdersWithPositions(uriSignature);
+	}
+	
+	 /**
+	  * Check if the URL string contains "unsafe" characters, i.e. characters 
+	  * that need URL-encoding.
+	  * From RFC 1738: "...Only alphanumerics [0-9a-zA-Z], the special 
+	  * characters "$-_.+!*'()," (not including the quotes) and reserved 
+	  * characters used for their reserved purposes may be 
+	  * used unencoded within a URL." 
+	  * Reserved characters are: ";/?:@&=" ..." and "%" used for escaping.
+	 */
+	public static void checkForUnsafeCharacters(String candidateURLSignature) throws URISignatureParsingException{
+		String allowedURLCharactersString = new String("abcdefghijklmnopqrstuvwxyz0123456789$-_.+!*'(),;/?:@&=%");
+		char[] allowedURLCharactersArray = allowedURLCharactersString.toCharArray();
+		List<Character> allowedURLCharactersList = new ArrayList<Character>();
+		    for (char value : allowedURLCharactersArray)
+		    	allowedURLCharactersList.add(new Character(value));
+
+		int index = 0;
+		String unsafeCharactersDetected = "";
+		while (index < candidateURLSignature.length()){
+			char character = candidateURLSignature.charAt(index);
+			if (character == '{') { // a start of a parameter
+				// This is a paramater name - ignore until we find the closing '}'
+				index++;
+				while(character != '}' && index < candidateURLSignature.length()){
+					character = candidateURLSignature.charAt(index);
+					index++;
+				}
+			} else if (!allowedURLCharactersList.contains(Character
+					.valueOf(Character.toLowerCase(character)))) {
+				// We found an unsafe character in the URL - add to the list of unsafe characters
+				unsafeCharactersDetected += "'" + character + "', ";
+				index++;
+			} else {
+				index++;
+			}
+		}
+		String message = "";
+		unsafeCharactersDetected = unsafeCharactersDetected.trim();
+		if (unsafeCharactersDetected.endsWith(",")){ // remove the last ","
+			unsafeCharactersDetected = unsafeCharactersDetected.substring(0, unsafeCharactersDetected.lastIndexOf(','));
+		}
+		if  (!unsafeCharactersDetected.equals("")){
+			message += "REST service's URL contains unsafe characters that need\nto be URL-encoded or the service will most probably fail:\n"+ unsafeCharactersDetected;	
+			throw new URISignatureParsingException(message);
+		}
+	}
+
+
+	/**
+	 * Tests whether the provided URI signature is valid or not.
+	 * 
+	 * @param uriSignature
+	 *            URI signature to check for validity.
+	 * @return <code>true</code> if the URI signature is valid;
+	 *         <code>false</code> otherwise.
+	 */
+	public static boolean isValid(String uriSignature) {
+		try {
+			// no exceptions are generated by validate(), the validation has
+			// succeeded
+			validate(uriSignature);
+			return (true);
+		} catch (URISignatureParsingException e) {
+			return false;
+		}
+	}
+
+	/**
+	 * Substitutes real values for all placeholders encountered in the URI
+	 * signature and produces a complete URI that can be used directly.
+	 * 
+	 * @param uriSignature
+	 *            The URI signature to use as a basis.
+	 * @param parameters
+	 *            Map of {name,value} pairs for all placeholders in the
+	 *            signature. These values will be used to replace the
+	 *            placeholders in the signature.
+	 * @param escapeParameters
+	 *            Whether to URL-escape paramaters before placing them in the
+	 *            final URL.
+	 * @return A complete URI with all placeholders replaced by the provided
+	 *         values.
+	 * @throws URISignatureParsingException
+	 *             Thrown if there is a problem with the provided URI signature
+	 *             (e.g. null, empty, ill-formed, etc).
+	 * @throws URIGenerationFromSignatureException
+	 *             Thrown if there is a problem with the provided parameter map
+	 *             (e.g. null, empty, not containing enough values for some of
+	 *             the placeholders found in <code>uriSignature</code>.
+	 */
+	public static String generateCompleteURI(String uriSignature,
+			Map<String, String> specifiedParameters, boolean escapeParameters)
+			throws URISignatureParsingException,
+			URIGenerationFromSignatureException {
+		StringBuilder completeURI = new StringBuilder(uriSignature);
+
+		// no need to make any checks on the uriSignature - it is
+		// already handled by extractPlaceholdersWithPositions() --
+		// if something goes wrong a runtime exception will be thrown
+		// during placeholder extraction
+		LinkedHashMap<String, Integer> placeholdersWithPositions = extractPlaceholdersWithPositions(uriSignature);
+
+		// check that the URI signature contains some placeholders
+		if (placeholdersWithPositions.keySet().size() > 0) {
+			Map<String, String> parameters;
+			// some work will actually have to be done to replace placeholders
+			// with real values;
+			// check that the parameter map contains some values
+			if (specifiedParameters == null || specifiedParameters.isEmpty()) {
+				parameters = Collections.emptyMap();
+			} else {
+				parameters = specifiedParameters;
+			}
+
+			// the 'placeholders' linked list is guaranteed to be in the order
+			// of occurrence of placeholders in the URI signature;
+			// this will allow to traverse the URI signature and replace the
+			// placeholders in the reverse order --
+			// this way it is possible to use the indices of placeholders that
+			// were already found during their extraction to
+			// improve performance
+			LinkedList<String> placeholders = new LinkedList<String>(
+					placeholdersWithPositions.keySet());
+			Collections.reverse(placeholders);
+			Iterator<String> placeholdersIterator = placeholders.iterator();
+
+			while (placeholdersIterator.hasNext()) {
+				String placeholder = placeholdersIterator.next();
+				int placeholderStartPos = placeholdersWithPositions
+						.get(placeholder) - 1;
+				int placeholderEndPos = placeholderStartPos
+						+ placeholder.length() + 2;
+				if (parameters.containsKey(placeholder)) {
+					if (escapeParameters) {
+						completeURI.replace(placeholderStartPos,
+								placeholderEndPos, urlEncodeQuery(parameters
+										.get(placeholder)));
+					} else {
+						completeURI.replace(placeholderStartPos,
+								placeholderEndPos, parameters.get(placeholder));
+					}
+				} else {
+					int qnPos = completeURI.lastIndexOf("?", placeholderStartPos);
+ 					int ampPos = completeURI.lastIndexOf("&", placeholderStartPos);
+ 					int slashPos = completeURI.lastIndexOf("/", placeholderStartPos);
+ 					int startParamPos = Math.max(qnPos, ampPos);
+					if (startParamPos > -1 && startParamPos > slashPos) {
+ 						// We found an optional parameter, so delete all of it
+ 						if (qnPos > ampPos) {
+ 							// It might be the first or only parameter so delete carefully
+ 							if (placeholderEndPos >= (completeURI.length() - 1)) {
+ 								// No parameters
+ 								completeURI.replace(startParamPos, placeholderEndPos, "");
+ 							} else {
+ 								// Remove the & from the following parameter, not the ? that starts
+ 								completeURI.replace(startParamPos + 1, placeholderEndPos + 1, "");
+ 							}
+						} else {
+ 							// Just delete the optional parameter in total
+							completeURI.replace(startParamPos, placeholderEndPos, "");
+ 						}
+ 					} else {
+ 						throw new URIGenerationFromSignatureException(
+ 								"Parameter map does not contain a key/value for \""
+ 										+ placeholder + "\" mandatory placeholder");
+ 					}
+				}
+			}
+		}
+		/*
+		 * else { NO PLACEHOLDERS, SO NOTHING TO REPLACE WITH REAL VALUES - JUST
+		 * RETURN THE ORIGINAL 'uriSignature' }
+		 */
+
+		return (completeURI.toString());
+	}
+
+	/**
+	 * Exceptions of this type may be thrown when errors occur during URI
+	 * signature parsing - these will often indicate the reason for failure
+	 * (e.g. missing URI signature, nested placeholders, ill-formed signature,
+	 * etc).
+	 * 
+	 * @author Sergejs Aleksejevs
+	 */
+	@SuppressWarnings("serial")
+	public static class URISignatureParsingException extends
+			IllegalArgumentException {
+		public URISignatureParsingException() {
+		}
+
+		public URISignatureParsingException(String message) {
+			super(message);
+		}
+	}
+
+	/**
+	 * Exceptions of this type may be thrown during generation of a complete URI
+	 * from the provided signature and parameter hash. These may occur because
+	 * of wrong parameters, etc.
+	 * 
+	 * @author Sergejs Aleksejevs
+	 */
+	@SuppressWarnings("serial")
+	public static class URIGenerationFromSignatureException extends
+			RuntimeException {
+		public URIGenerationFromSignatureException() {
+		}
+
+		public URIGenerationFromSignatureException(String message) {
+			super(message);
+		}
+	}
+
+	/**
+	 * Prepares the string to serve as a part of url query to the server.
+	 * 
+	 * @param query
+	 *            The string that needs URL encoding.
+	 * @return URL encoded string that can be inserted into the request URL.
+	 */
+	public static String urlEncodeQuery(String query) {
+		String ns = Normalizer.normalize(query, Normalizer.Form.NFC);
+		byte[] bb = null;
+		try {
+			bb = ns.getBytes("UTF-8");
+		} catch (UnsupportedEncodingException e) {
+			logger.error(e);
+			return query;
+		}
+		
+		StringBuffer sb = new StringBuffer();
+		
+		for (int i = 0; i < bb.length; i++) {
+		    int b = bb[i] & 0xff;
+		    if (!Character.isLetterOrDigit(b) || (b >= 0x80)) {
+		    	sb.append("%");
+		    	sb.append(Integer.toHexString(b).toUpperCase());
+			} else {
+		    	sb.append((char)b);
+		    }
+		}
+		return sb.toString();
+	}
+
+}
diff --git a/taverna-rest-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.report.explainer.VisitExplainer b/taverna-rest-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.report.explainer.VisitExplainer
new file mode 100644
index 0000000..86b3ad6
--- /dev/null
+++ b/taverna-rest-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.report.explainer.VisitExplainer
@@ -0,0 +1 @@
+net.sf.taverna.t2.activities.rest.RESTActivityHealthCheckVisitExplainer
\ No newline at end of file
diff --git a/taverna-rest-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker b/taverna-rest-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
new file mode 100644
index 0000000..737de29
--- /dev/null
+++ b/taverna-rest-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
@@ -0,0 +1 @@
+net.sf.taverna.t2.activities.rest.RESTActivityHealthChecker
\ No newline at end of file
diff --git a/taverna-rest-activity/src/main/resources/META-INF/spring/rest-activity-context-osgi.xml b/taverna-rest-activity/src/main/resources/META-INF/spring/rest-activity-context-osgi.xml
new file mode 100644
index 0000000..44fa5c4
--- /dev/null
+++ b/taverna-rest-activity/src/main/resources/META-INF/spring/rest-activity-context-osgi.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans:beans xmlns="http://www.springframework.org/schema/osgi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:beans="http://www.springframework.org/schema/beans"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans
+                      http://www.springframework.org/schema/beans/spring-beans.xsd
+                      http://www.springframework.org/schema/osgi
+                      http://www.springframework.org/schema/osgi/spring-osgi.xsd">
+
+	<service ref="RESTActivityHealthChecker" interface="net.sf.taverna.t2.workflowmodel.health.HealthChecker" />
+
+	<service ref="restActivityFactory" interface="net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory" />
+
+	<reference id="credentialManager" interface="net.sf.taverna.t2.security.credentialmanager.CredentialManager" />
+	<reference id="edits" interface="net.sf.taverna.t2.workflowmodel.Edits" />
+
+</beans:beans>
diff --git a/taverna-rest-activity/src/main/resources/META-INF/spring/rest-activity-context.xml b/taverna-rest-activity/src/main/resources/META-INF/spring/rest-activity-context.xml
new file mode 100644
index 0000000..f1c900e
--- /dev/null
+++ b/taverna-rest-activity/src/main/resources/META-INF/spring/rest-activity-context.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans
+                      http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+	<bean id="RESTActivityHealthChecker" class="net.sf.taverna.t2.activities.rest.RESTActivityHealthChecker" />
+
+	<bean id="restActivityFactory" class="net.sf.taverna.t2.activities.rest.RESTActivityFactory">
+		<property name="credentialManager" ref="credentialManager" />
+		<property name="edits" ref="edits" />
+	</bean>
+
+</beans>
diff --git a/taverna-rest-activity/src/main/resources/schema.json b/taverna-rest-activity/src/main/resources/schema.json
new file mode 100644
index 0000000..376b479
--- /dev/null
+++ b/taverna-rest-activity/src/main/resources/schema.json
@@ -0,0 +1,75 @@
+{
+    "$schema": "http://json-schema.org/draft-03/schema#",
+    "id": "http://ns.taverna.org.uk/2010/activity/rest.schema.json",
+    "title": "REST activity configuration",
+    "type": "object",
+    "properties": {
+        "@context": {
+            "description": "JSON-LD context for interpreting the configuration as RDF",
+            "required": true,
+            "enum": ["http://ns.taverna.org.uk/2010/activity/rest.context.json"]
+        },
+        "request": {
+            "type": "object",
+            "description": "The HTTP request the REST activity is to perform",
+            "required": true,
+            "properties": {
+                "httpMethod": {
+                    "description": "The HTTP method of the REST request",
+                    "default": "GET",
+                    "enum": ["GET", "POST", "PUT", "DELETE"]
+                },
+                "absoluteURITemplate": {
+                    "type": "string",
+                    "required": true,
+                    "description": "The URI template for this request.  The template is an URI with 0 or more {variables}, e.g. http://example.com/user/{username}?page={page} (RFC6570 Level 1). Matching activity input ports are created for each variable, so the variable name must be a valid Taverna input port name. "
+                },
+                "headers": {
+                    "description": "HTTP headers of the request. GET requests SHOULD include Accept. PUT and POST request SHOULD include Content-Type. The header Expect: 100-continue is recognized and supported by the REST activity for POST and PUT requests.",
+                    "type": "array",
+                    "items": {
+                        "type": "object",
+                        "properties": {
+                            "header": {
+                                "type": "string",
+                                "required": true,
+                                "description": "The HTTP header name, e.g. Accept or Content-Type"
+                            },
+                            "value": {
+                                "type": "string",
+                                "required": true,
+                                "description": "The value of the HTTP header, e.g. text/plain"
+                            }
+                        }
+                    }
+                }
+            }
+        },
+        "outgoingDataFormat": {
+            "description": "Format of the POSTed content",
+            "default": "String",
+            "enum": ["String", "Binary"]
+        },
+        "showRedirectionOutputPort": {
+            "type": "boolean",
+            "default": false,
+            "description": "If set, the output port 'redirection' is added, showing the URL of the requested body. This is particularly useful for following redirection. "
+        },
+        "showActualURLPort": {
+            "type": "boolean",
+            "default": false,
+            "description": "If true, the output port 'actualURL' is added to show the requested URL after expanding the template."
+        },
+        "showResponseHeadersPort": {
+            "type": "boolean",
+            "default": false,
+            "description": "If true, the output port 'responseHeaders' is added to show the response header from the HTTP server."
+        },
+        "escapeParameters": {
+            "type": "boolean",
+            "default": true,
+            "description": "If true (default), input port values are URI-escaped (RFC 2396) before expanding variables in the URI template."
+        }
+        
+    }
+}
diff --git a/taverna-rest-activity/src/test/java/net/sf/taverna/t2/activities/rest/ApacheHttpClientUsageTest.java.bak b/taverna-rest-activity/src/test/java/net/sf/taverna/t2/activities/rest/ApacheHttpClientUsageTest.java.bak
new file mode 100644
index 0000000..518fbc3
--- /dev/null
+++ b/taverna-rest-activity/src/test/java/net/sf/taverna/t2/activities/rest/ApacheHttpClientUsageTest.java.bak
@@ -0,0 +1,215 @@
+package net.sf.taverna.t2.activities.rest;
+
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpHost;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpDelete;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpPut;
+import org.apache.http.client.methods.HttpRequestBase;
+import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.protocol.BasicHttpContext;
+import org.apache.http.protocol.ExecutionContext;
+import org.apache.http.protocol.HttpContext;
+
+/**
+ * 
+ * @author Sergejs Aleksejevs
+ */
+public class ApacheHttpClientUsageTest extends JFrame implements ActionListener
+{
+  private JComboBox cbHttpMethod;
+  private JTextField tfAddressBar;
+  private JButton bGo;
+  private JTextArea taResponse;
+  private JScrollPane spResponse;
+  
+  
+  /**
+   * Constructor is solely involved in the UI initialisation.
+   */
+  public ApacheHttpClientUsageTest()
+  {
+    Container contentPane = this.getContentPane();
+    contentPane.setLayout(new BorderLayout(5,5));
+    
+    bGo = new JButton("GO!");
+    bGo.addActionListener(this);
+    bGo.setDefaultCapable(true);
+    this.getRootPane().setDefaultButton(bGo);
+    
+    tfAddressBar = new JTextField(50);
+    tfAddressBar.setPreferredSize(new Dimension(0,bGo.getPreferredSize().height));
+    tfAddressBar.setText("http://test.biocatalogue.org/");
+    
+    JPanel jpAddressBar = new JPanel();
+    jpAddressBar.add(tfAddressBar);
+    jpAddressBar.add(bGo);
+    
+    cbHttpMethod = new JComboBox(RESTActivity.HTTP_METHOD.values());
+    cbHttpMethod.setBorder(BorderFactory.createCompoundBorder(
+        BorderFactory.createEmptyBorder(5, 5, 5, 5),
+        cbHttpMethod.getBorder()));
+    
+    JPanel jpAllNavigation = new JPanel(new BorderLayout());
+    jpAllNavigation.add(jpAddressBar, BorderLayout.NORTH);
+    jpAllNavigation.add(cbHttpMethod, BorderLayout.CENTER);
+    
+    contentPane.add(jpAllNavigation, BorderLayout.NORTH);
+    
+    taResponse = new JTextArea(20, 20);
+    taResponse.setEditable(true);
+    
+    spResponse = new JScrollPane(taResponse);
+    spResponse.setBorder(BorderFactory.createCompoundBorder(
+        BorderFactory.createEmptyBorder(0, 5, 5, 5),
+        BorderFactory.createEtchedBorder()));
+    contentPane.add(spResponse, BorderLayout.CENTER);
+    
+    this.pack();
+    this.setLocationRelativeTo(null); // center on screen
+  }
+  
+  
+  /**
+   * Click handler for the only button there is - the "GO!" button 
+   */
+  public void actionPerformed(ActionEvent e)
+  {
+    if (e.getSource().equals(bGo))
+    {
+      try { 
+        switch ((RESTActivity.HTTP_METHOD)cbHttpMethod.getSelectedItem()) {
+          case GET:    doGET(); break;
+          case POST:   doPOST(); break;
+          case PUT:    doPUT(); break;
+          case DELETE: doDELETE(); break;
+        }
+      }
+      catch (Exception ex) {
+        taResponse.setText(ex + "\n\n" + ex.getStackTrace());
+      }
+    }
+  }
+  
+  
+  private void doGET() {
+    HttpGet httpGet = new HttpGet(tfAddressBar.getText());
+    httpGet.addHeader("Accept", "application/xml");
+    performHTTPRequest(httpGet);
+  }
+  
+  
+  private void doPOST() throws UnsupportedEncodingException {
+//    // POST TO MYEXPERIMENT - basic auth
+//    HttpPost httpPost = new HttpPost("http://sandbox.myexperiment.org/comment.xml");
+//    httpPost.addHeader("Authorization", "Basic " + new String(Base64.encodeBase64(("LOGIN" + ":" + "PASSWORD").getBytes())));
+//    httpPost.addHeader("Accept", "application/xml");
+//    httpPost.addHeader("Content-Type", "application/xml");
+//    httpPost.setEntity(new StringEntity("<comment><subject resource=\"http://sandbox.myexperiment.org/files/226\"/><comment>1234567</comment></comment>"));
+//    performHTTPRequest(httpPost);
+    
+    // POST TO BIOCATALOGUE - no auth
+    HttpPost httpPost = new HttpPost(tfAddressBar.getText());
+    httpPost.addHeader("Accept", "application/xml");
+    httpPost.addHeader("Content-Type", "application/xml");
+    httpPost.setEntity(new StringEntity("<searchByData><searchType>input</searchType><limit>20</limit><data>test</data></searchByData>"));
+    performHTTPRequest(httpPost);
+  }
+  
+  
+  private void doPUT() throws UnsupportedEncodingException {
+    HttpPut httpPut = new HttpPut("http://sandbox.myexperiment.org/comment.xml?id=251");
+    httpPut.addHeader("Authorization", "Basic " + new String(Base64.encodeBase64(("LOGIN" + ":" + "PASSWORD").getBytes())));
+    httpPut.addHeader("Accept", "application/xml");
+    httpPut.addHeader("Content-Type", "application/xml");
+    httpPut.setEntity(new StringEntity("<comment><subject resource=\"http://sandbox.myexperiment.org/files/226\"/><comment>12345678</comment></comment>"));
+    performHTTPRequest(httpPut);
+  }
+  
+  
+  private void doDELETE() {
+    HttpDelete httpDelete = new HttpDelete("http://sandbox.myexperiment.org/comment.xml?id=251");
+    httpDelete.addHeader("Authorization", "Basic " + new String(Base64.encodeBase64(("LOGIN" + ":" + "PASSWORD").getBytes())));
+    httpDelete.addHeader("Accept", "application/xml");
+    performHTTPRequest(httpDelete);
+  }
+  
+  
+  private void performHTTPRequest(HttpRequestBase httpRequest) {
+    try {
+      StringBuilder responseStr = new StringBuilder();
+      // ---------------------------------------------
+      
+      HttpClient httpClient = new DefaultHttpClient();
+      HttpContext localContext = new BasicHttpContext();
+      
+      HttpResponse response = httpClient.execute(httpRequest, localContext);
+      // ---
+      // TRACK WHERE THE FINAL REDIRECT ENDS UP - target host + URI
+      HttpHost target = (HttpHost) localContext.getAttribute(ExecutionContext.HTTP_TARGET_HOST);
+      HttpUriRequest req = (HttpUriRequest) localContext.getAttribute(ExecutionContext.HTTP_REQUEST);
+
+      responseStr.append("Final request URI: " + req.getMethod() + " " + target + req.getURI() + "\n");
+//      System.out.println("Target host: " + target);
+//      System.out.println("Final request URI: " + req.getURI());
+//      System.out.println("Final request method: " + req.getMethod());
+      // ---
+      responseStr.append(response.getStatusLine() + "\n");
+      
+      HttpEntity entity = response.getEntity();
+      responseStr.append(entity.getContentType() + "\n\n");
+      
+      if (entity != null) {
+        InputStream in = entity.getContent();
+        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
+        
+        String str;
+        while ((str = reader.readLine()) != null) {
+          responseStr.append(str + "\n");
+        }
+        
+        taResponse.setText(responseStr.toString());
+        taResponse.setCaretPosition(0);
+      }
+      
+      httpClient.getConnectionManager().shutdown();
+    }
+    catch (Exception ex) {
+      taResponse.setText(ex.getMessage() + "\n\n" + ex.getStackTrace());
+    }
+  }
+  
+  
+  public static void main(String[] args)
+  {
+    ApacheHttpClientUsageTest frame = new ApacheHttpClientUsageTest();
+    frame.setVisible(true);
+    frame.tfAddressBar.setCaretPosition(frame.tfAddressBar.getText().length());
+  }
+  
+}
diff --git a/taverna-rest-activity/src/test/java/net/sf/taverna/t2/activities/rest/ExampleActivityTest.java.bak b/taverna-rest-activity/src/test/java/net/sf/taverna/t2/activities/rest/ExampleActivityTest.java.bak
new file mode 100644
index 0000000..56b6904
--- /dev/null
+++ b/taverna-rest-activity/src/test/java/net/sf/taverna/t2/activities/rest/ExampleActivityTest.java.bak
@@ -0,0 +1,153 @@
+package net.sf.taverna.t2.activities.rest;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.net.URI;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import net.sf.taverna.t2.activities.testutils.ActivityInvoker;
+import net.sf.taverna.t2.reference.ErrorDocument;
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.workflowmodel.OutputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class ExampleActivityTest {
+
+	private RESTActivityConfigurationBean configBean;
+
+	private RESTActivity activity = new RESTActivity();
+
+	@Before
+	public void makeConfigBean() throws Exception {
+		configBean = new RESTActivityConfigurationBean();
+		configBean.setExampleString("something");
+		configBean
+				.setExampleUri(URI.create("http://localhost:8080/myEndPoint"));
+	}
+
+	@Test(expected = ActivityConfigurationException.class)
+	public void invalidConfiguration() throws ActivityConfigurationException {
+		RESTActivityConfigurationBean invalidBean = new RESTActivityConfigurationBean();
+		invalidBean.setExampleString("invalidExample");
+		// Should throw ActivityConfigurationException
+		activity.configure(invalidBean);
+	}
+
+	@Test
+	public void executeAsynch() throws Exception {
+		activity.configure(configBean);
+
+		Map<String, Object> inputs = new HashMap<String, Object>();
+		inputs.put("firstInput", "hello");
+
+		Map<String, Class<?>> expectedOutputTypes = new HashMap<String, Class<?>>();
+		expectedOutputTypes.put("simpleOutput", String.class);
+		expectedOutputTypes.put("moreOutputs", ExternalReferenceSPI.class);
+
+		Map<String, Object> outputs = ActivityInvoker.invokeAsyncActivity(
+				activity, inputs, expectedOutputTypes);
+
+		assertEquals("Unexpected outputs", 2, outputs.size());
+		assertEquals("da39a3ee5e6b4b0d3255bfef95601890afd80709", outputs.get("simpleOutput"));
+		ErrorDocument errorDoc = (ErrorDocument) outputs.get("moreOutputs");
+		assertEquals("java.lang.Exception: There are no more values",
+		             errorDoc.getExceptionMessage());
+
+	}
+	
+	
+	
+	@Test
+  public void checksumOfExtraData() throws Exception {
+    configBean.setExampleString("specialCase");
+	  activity.configure(configBean);
+
+    Map<String, Object> inputs = new HashMap<String, Object>();
+    inputs.put("firstInput", "hello");
+    inputs.put("extraData", Arrays.asList("Test1".getBytes("utf8"),
+        "Test2".getBytes("utf8")));
+
+
+    Map<String, Class<?>> expectedOutputTypes = new HashMap<String, Class<?>>();
+    expectedOutputTypes.put("simpleOutput", String.class);
+    expectedOutputTypes.put("moreOutputs", ExternalReferenceSPI.class);
+    expectedOutputTypes.put("report", String.class);
+
+
+    Map<String, Object> outputs = ActivityInvoker.invokeAsyncActivity(
+        activity, inputs, expectedOutputTypes);
+
+    assertEquals("Unexpected outputs", 3, outputs.size());
+    assertEquals("35bceb434ff8e69fb89b829e461c921a28b423b3", outputs.get("simpleOutput"));
+    ErrorDocument errorDoc = (ErrorDocument) outputs.get("moreOutputs");
+    assertEquals("java.lang.Exception: There are no more values",
+                 errorDoc.getExceptionMessage());
+
+  }
+	
+	
+
+	@Test
+	public void reConfiguredActivity() throws Exception {
+		assertEquals("Unexpected inputs", 0, activity.getInputPorts().size());
+		assertEquals("Unexpected outputs", 0, activity.getOutputPorts().size());
+
+		activity.configure(configBean);
+		assertEquals("Unexpected inputs", 1, activity.getInputPorts().size());
+		assertEquals("Unexpected outputs", 2, activity.getOutputPorts().size());
+
+		activity.configure(configBean);
+		// Should not change on reconfigure
+		assertEquals("Unexpected inputs", 1, activity.getInputPorts().size());
+		assertEquals("Unexpected outputs", 2, activity.getOutputPorts().size());
+	}
+
+	@Test
+	public void reConfiguredSpecialPorts() throws Exception {
+		activity.configure(configBean);
+
+		RESTActivityConfigurationBean specialBean = new RESTActivityConfigurationBean();
+		specialBean.setExampleString("specialCase");
+		specialBean.setExampleUri(URI
+				.create("http://localhost:8080/myEndPoint"));
+		activity.configure(specialBean);		
+		// Should now have added the optional ports
+		assertEquals("Unexpected inputs", 2, activity.getInputPorts().size());
+		assertEquals("Unexpected outputs", 3, activity.getOutputPorts().size());
+	}
+
+	@Test
+	public void configureActivity() throws Exception {
+		Set<String> expectedInputs = new HashSet<String>();
+		expectedInputs.add("firstInput");
+
+		Set<String> expectedOutputs = new HashSet<String>();
+		expectedOutputs.add("simpleOutput");
+		expectedOutputs.add("moreOutputs");
+
+		activity.configure(configBean);
+
+		Set<ActivityInputPort> inputPorts = activity.getInputPorts();
+		assertEquals(expectedInputs.size(), inputPorts.size());
+		for (ActivityInputPort inputPort : inputPorts) {
+			assertTrue("Wrong input : " + inputPort.getName(), expectedInputs
+					.remove(inputPort.getName()));
+		}
+
+		Set<OutputPort> outputPorts = activity.getOutputPorts();
+		assertEquals(expectedOutputs.size(), outputPorts.size());
+		for (OutputPort outputPort : outputPorts) {
+			assertTrue("Wrong output : " + outputPort.getName(),
+					expectedOutputs.remove(outputPort.getName()));
+		}
+	}
+}
diff --git a/taverna-rest-activity/src/test/java/net/sf/taverna/t2/activities/rest/URISignatureHandlerTest.java b/taverna-rest-activity/src/test/java/net/sf/taverna/t2/activities/rest/URISignatureHandlerTest.java
new file mode 100644
index 0000000..8aad5ec
--- /dev/null
+++ b/taverna-rest-activity/src/test/java/net/sf/taverna/t2/activities/rest/URISignatureHandlerTest.java
@@ -0,0 +1,594 @@
+package net.sf.taverna.t2.activities.rest;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.*;
+
+import static org.junit.Assert.*;
+
+public class URISignatureHandlerTest {
+	// ==========================================================================
+	// TEST URIs
+	// ==========================================================================
+
+	final String validURI_NoPlaceholders = "http://sysmo-db.org/sops/";
+	final String validURI_PlaceholdersInMainPartOfURIOnly = "http://sysmo-db.org/sops/{sop_id}/experimental_conditions/{cond_id}";
+	final String validURI_PlaceholdersInQueryStringOnly = "http://sandbox.myexperiment.org/user.xml?id={user_id}&verbose=true";
+	final String validURI_3MixedPlaceholders = "http://sysmo-db.org/sops/{sop_id}/experimental_conditions/{cond_id}?condition_unit={unit}";
+
+	final String badURI_nullURI = null;
+	final String badURI_emptyURI = "";
+	final String badURI_SingleOpeningSymbolNoClosingSymbol = "http://sysmo-db.org/sops/{sop_id/experimental_conditions";
+	final String badURI_SingleClosingSymbolNoOpeningSymbol = "http://sysmo-db.org/sops/sop_id}/experimental_conditions";
+	final String badURI_DoubleOpeningSymbolsNoClosingSymbol = "http://sysmo-db.org/sops/{{sop_id/experimental_conditions";
+	final String badURI_DoubleOpeningSymbols = "http://sysmo-db.org/sops/{{sop_id}/experimental_conditions";
+	final String badURI_DoubleOpeningSymbolsSpaced = "http://sysmo-db.org/sops/{sop_{id}/experimental_conditions";
+	final String badURI_DoubleClosingSymbols = "http://sysmo-db.org/sops/{sop_id}}/experimental_conditions";
+	final String badURI_DoubleClosingSymbolsSpaced = "http://sysmo-db.org/sops/{sop}_id}/experimental_conditions";
+	final String badURI_NestedPlaceholders = "http://sandbox.myexperiment.org/user.xml?id={user_{id}}&verbose=true";
+	final String badURI_NestedPlaceholdersSpaced = "http://sandbox.myexperiment.org/user.xml?id={us{er}_id}&verbose=true";
+	final String badURI_DuplicatePlaceholders = "http://sandbox.myexperiment.org/user.xml?id={user_id}&verbose={user_id}";
+	final String badURI_DuplicatePlaceholdersWithOthers = "http://sysmo-db.org/sops/{unit}/experimental_conditions/{cond_id}?condition_unit={unit}";
+	
+     final String validURI_MultipleQueryString =
+            "http://dr-site.esrin.esa.int/{catalogue}/genesi/ASA_IMS_1P/rdf/?count={count?}&startPage={startPage?}&startIndex={startIndex?}&q={searchTerms?}"; 	
+
+	// ==========================================================================
+	// TEST URI SIGNATURE BOOLEAN VALIDATION
+	// ==========================================================================
+
+	// success cases
+
+	@Test
+	public void isValid_validURI_NoPlaceholders() {
+		assertTrue(URISignatureHandler.isValid(validURI_NoPlaceholders));
+	}
+
+	@Test
+	public void isValid_validURI_PlaceholdersInMainPartOfURIOnly() {
+		assertTrue(URISignatureHandler
+				.isValid(validURI_PlaceholdersInMainPartOfURIOnly));
+	}
+
+	@Test
+	public void isValid_validURI_PlaceholdersInQueryStringOnly() {
+		assertTrue(URISignatureHandler
+				.isValid(validURI_PlaceholdersInQueryStringOnly));
+	}
+
+	@Test
+	public void isValid_validURI_MixedPlaceholders() {
+		assertTrue(URISignatureHandler.isValid(validURI_3MixedPlaceholders));
+	}
+
+ 	@Test
+ 	public void isValid_validURI_MultipleQueryString() {
+ 		assertTrue(URISignatureHandler.isValid(validURI_MultipleQueryString));
+ 	}
+ 	
+	// failure cases
+
+	@Test
+	public void isValid_badURI_nullURI() {
+		assertFalse(URISignatureHandler.isValid(badURI_nullURI));
+	}
+
+	@Test
+	public void isValid_badURI_emptyURI() {
+		assertFalse(URISignatureHandler.isValid(badURI_emptyURI));
+	}
+
+	@Test
+	public void isValid_badURI_SingleOpeningSymbolNoClosingSymbol() {
+		assertFalse(URISignatureHandler
+				.isValid(badURI_SingleOpeningSymbolNoClosingSymbol));
+	}
+
+	@Test
+	public void isValid_badURI_SingleClosingSymbolNoOpeningSymbol() {
+		assertFalse(URISignatureHandler
+				.isValid(badURI_SingleClosingSymbolNoOpeningSymbol));
+	}
+
+	@Test
+	public void isValid_badURI_DoubleOpeningSymbolsNoClosingSymbol() {
+		assertFalse(URISignatureHandler
+				.isValid(badURI_DoubleOpeningSymbolsNoClosingSymbol));
+	}
+
+	@Test
+	public void isValid_badURI_DoubleOpeningSymbols() {
+		assertFalse(URISignatureHandler.isValid(badURI_DoubleOpeningSymbols));
+	}
+
+	@Test
+	public void isValid_badURI_DoubleOpeningSymbolsSpaced() {
+		assertFalse(URISignatureHandler
+				.isValid(badURI_DoubleOpeningSymbolsSpaced));
+	}
+
+	@Test
+	public void isValid_badURI_DoubleClosingSymbols() {
+		assertFalse(URISignatureHandler.isValid(badURI_DoubleClosingSymbols));
+	}
+
+	@Test
+	public void isValid_badURI_DoubleClosingSymbolsSpaced() {
+		assertFalse(URISignatureHandler
+				.isValid(badURI_DoubleClosingSymbolsSpaced));
+	}
+
+	@Test
+	public void isValid_badURI_NestedPlaceholders() {
+		assertFalse(URISignatureHandler.isValid(badURI_NestedPlaceholders));
+	}
+
+	@Test
+	public void isValid_badURI_NestedPlaceholdersSpaced() {
+		assertFalse(URISignatureHandler
+				.isValid(badURI_NestedPlaceholdersSpaced));
+	}
+
+	@Test
+	public void isValid_badURI_DuplicatePlaceholders() {
+		assertFalse(URISignatureHandler.isValid(badURI_DuplicatePlaceholders));
+	}
+
+	@Test
+	public void isValid_badURI_DuplicatePlaceholdersWithOthers() {
+		assertFalse(URISignatureHandler
+				.isValid(badURI_DuplicatePlaceholdersWithOthers));
+	}
+
+	// ==========================================================================
+	// TEST URI SIGNATURE DETAILED VALIDATION
+	// ==========================================================================
+
+	// success cases
+
+	@Test
+	public void validate_validURI_NoPlaceholders() {
+		// nothing should happen when this is executed if validation succeeds
+		URISignatureHandler.validate(validURI_NoPlaceholders);
+	}
+
+	@Test
+	public void validate_validURI_PlaceholdersInMainPartOfURIOnly() {
+		// nothing should happen when this is executed if validation succeeds
+		URISignatureHandler.validate(validURI_PlaceholdersInMainPartOfURIOnly);
+	}
+
+	@Test
+	public void validate_validURI_PlaceholdersInQueryStringOnly() {
+		// nothing should happen when this is executed if validation succeeds
+		URISignatureHandler.validate(validURI_PlaceholdersInQueryStringOnly);
+	}
+
+	@Test
+	public void validate_validURI_MixedPlaceholders() {
+		// nothing should happen when this is executed if validation succeeds
+		URISignatureHandler.validate(validURI_3MixedPlaceholders);
+	}
+
+ 	@Test
+ 	public void validate_validURI_validURI_Multiple() {
+ 		URISignatureHandler.validate(validURI_MultipleQueryString);
+ 	}
+	
+	// failure cases
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void validate_badURI_nullURI() {
+		URISignatureHandler.validate(badURI_nullURI);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void validate_badURI_emptyURI() {
+		URISignatureHandler.validate(badURI_emptyURI);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void validate_badURI_SingleOpeningSymbolNoClosingSymbol() {
+		URISignatureHandler.validate(badURI_SingleOpeningSymbolNoClosingSymbol);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void validate_badURI_SingleClosingSymbolNoOpeningSymbol() {
+		URISignatureHandler.validate(badURI_SingleClosingSymbolNoOpeningSymbol);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void validate_badURI_DoubleOpeningSymbolsNoClosingSymbol() {
+		URISignatureHandler
+				.validate(badURI_DoubleOpeningSymbolsNoClosingSymbol);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void validate_badURI_DoubleOpeningSymbols() {
+		URISignatureHandler.validate(badURI_DoubleOpeningSymbols);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void validate_badURI_DoubleOpeningSymbolsSpaced() {
+		URISignatureHandler.validate(badURI_DoubleOpeningSymbolsSpaced);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void validate_badURI_DoubleClosingSymbols() {
+		URISignatureHandler.validate(badURI_DoubleClosingSymbols);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void validate_badURI_DoubleClosingSymbolsSpaced() {
+		URISignatureHandler.validate(badURI_DoubleClosingSymbolsSpaced);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void validate_badURI_NestedPlaceholders() {
+		URISignatureHandler.validate(badURI_NestedPlaceholders);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void validate_badURI_NestedPlaceholdersSpaced() {
+		URISignatureHandler.validate(badURI_NestedPlaceholdersSpaced);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void validate_badURI_DuplicatePlaceholders() {
+		URISignatureHandler.validate(badURI_DuplicatePlaceholders);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void validate_badURI_DuplicatePlaceholdersWithOthers() {
+		URISignatureHandler.validate(badURI_DuplicatePlaceholdersWithOthers);
+	}
+
+	// ==========================================================================
+	// TEST PLACEHOLDER EXTRACTION FROM URI SIGNATURE
+	// ==========================================================================
+
+	// success cases
+
+	@Test
+	public void extractPlaceholders_validURI_NoPlaceholders() {
+		List<String> placeholders = URISignatureHandler
+				.extractPlaceholders(validURI_NoPlaceholders);
+		assertNotNull(placeholders);
+		assertEquals(0, placeholders.size());
+	}
+
+	@Test
+	public void extractPlaceholders_validURI_PlaceholdersInMainPartOfURIOnly() {
+		List<String> placeholders = URISignatureHandler
+				.extractPlaceholders(validURI_PlaceholdersInMainPartOfURIOnly);
+		assertNotNull(placeholders);
+		assertEquals(2, placeholders.size());
+		assertEquals("Wrong first placeholder", "sop_id", placeholders.get(0));
+		assertEquals("Wrong second placeholder", "cond_id", placeholders.get(1));
+	}
+
+	@Test
+	public void extractPlaceholders_validURI_PlaceholdersInQueryStringOnly() {
+		List<String> placeholders = URISignatureHandler
+				.extractPlaceholders(validURI_PlaceholdersInQueryStringOnly);
+		assertNotNull(placeholders);
+		assertEquals(1, placeholders.size());
+		assertEquals("Wrong first placeholder", "user_id", placeholders.get(0));
+	}
+
+	@Test
+	public void extractPlaceholders_validURI_MixedPlaceholders() {
+		List<String> placeholders = URISignatureHandler
+				.extractPlaceholders(validURI_3MixedPlaceholders);
+		assertNotNull(placeholders);
+		assertEquals("Wrong number of placeholders extracted", 3, placeholders
+				.size());
+		assertEquals("Wrong first placeholder", "sop_id", placeholders.get(0));
+		assertEquals("Wrong second placeholder", "cond_id", placeholders.get(1));
+		assertEquals("Wrong third placeholder", "unit", placeholders.get(2));
+	}
+
+	@Test
+ 	public void extractPlaceholders_validURI_MultipleQueryString() {
+ 		List<String> placeholders = URISignatureHandler
+ 				.extractPlaceholders(validURI_MultipleQueryString);
+ 		assertNotNull(placeholders);
+ 		assertEquals(5, placeholders.size());
+ 		assertEquals("Wrong first placeholder", "catalogue", placeholders.get(0));
+ 		assertEquals("Wrong second placeholder", "count?", placeholders.get(1));
+ 		assertEquals("Wrong third placeholder", "startPage?", placeholders.get(2));
+ 		assertEquals("Wrong fourth placeholder", "startIndex?", placeholders.get(3));
+ 		assertEquals("Wrong fifth placeholder", "searchTerms?", placeholders.get(4));
+ 	}
+	
+	// failure cases
+
+	/*
+	 * These tests are all meant to generate an exception - therefore, no need
+	 * to evaluate generated values, as there will be none returned.
+	 */
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void extractPlaceholders_badURI_nullURI() {
+		URISignatureHandler.extractPlaceholders(badURI_nullURI);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void extractPlaceholders_badURI_emptyURI() {
+		URISignatureHandler.extractPlaceholders(badURI_emptyURI);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void extractPlaceholders_badURI_SingleOpeningSymbolNoClosingSymbol() {
+		URISignatureHandler
+				.extractPlaceholders(badURI_SingleOpeningSymbolNoClosingSymbol);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void extractPlaceholders_badURI_SingleClosingSymbolNoOpeningSymbol() {
+		URISignatureHandler
+				.extractPlaceholders(badURI_SingleClosingSymbolNoOpeningSymbol);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void extractPlaceholders_badURI_DoubleOpeningSymbolsNoClosingSymbol() {
+		URISignatureHandler
+				.extractPlaceholders(badURI_DoubleOpeningSymbolsNoClosingSymbol);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void extractPlaceholders_badURI_DoubleOpeningSymbols() {
+		URISignatureHandler.extractPlaceholders(badURI_DoubleOpeningSymbols);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void extractPlaceholders_badURI_DoubleOpeningSymbolsSpaced() {
+		URISignatureHandler
+				.extractPlaceholders(badURI_DoubleOpeningSymbolsSpaced);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void extractPlaceholders_badURI_DoubleClosingSymbols() {
+		URISignatureHandler.extractPlaceholders(badURI_DoubleClosingSymbols);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void extractPlaceholders_badURI_DoubleClosingSymbolsSpaced() {
+		URISignatureHandler
+				.extractPlaceholders(badURI_DoubleClosingSymbolsSpaced);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void extractPlaceholders_badURI_NestedPlaceholders() {
+		URISignatureHandler.extractPlaceholders(badURI_NestedPlaceholders);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void extractPlaceholders_badURI_NestedPlaceholdersSpaced() {
+		URISignatureHandler
+				.extractPlaceholders(badURI_NestedPlaceholdersSpaced);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void extractPlaceholders_badURI_DuplicatePlaceholders() {
+		URISignatureHandler.extractPlaceholders(badURI_DuplicatePlaceholders);
+	}
+
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void extractPlaceholders_badURI_DuplicatePlaceholdersWithOthers() {
+		URISignatureHandler
+				.extractPlaceholders(badURI_DuplicatePlaceholdersWithOthers);
+	}
+
+	// ==========================================================================
+	// TEST COMPLETE URI GENERATION FROM URI SIGNATURE + PARAMETERS
+	// ==========================================================================
+
+	// success cases
+
+	@SuppressWarnings("serial")
+	@Test
+	public void generateCompleteURI_successfulURIGeneration() {
+		String uriSignature = "http://sysmo-db.org/sops/{sop_id}/experimental_conditions/{cond_id}?condition_unit={unit}";
+		Map<String, String> parameters = new HashMap<String, String>() {
+			{
+				put("sop_id", "111");
+				put("unit", "33");
+				put("cond_id", "2222");
+			}
+		};
+
+		String completeURI = URISignatureHandler.generateCompleteURI(
+				uriSignature, parameters, true);
+		assertEquals(
+				"http://sysmo-db.org/sops/111/experimental_conditions/2222?condition_unit=33",
+				completeURI);
+	}
+
+	@SuppressWarnings("serial")
+	@Test
+	public void generateCompleteURI_successfulURIGeneration_URLParameterEscaping() {
+		String uriSignature = "http://sysmo-db.org/sops/{sop_id}/experimental_conditions/{cond_id}?condition_unit={unit}";
+		Map<String, String> parameters = new HashMap<String, String>() {
+			{
+				put("sop_id", "1 11");
+				put("unit", "3;3");
+				put("cond_id", "2/2$2&2:");
+			}
+		};
+
+		String completeURI = URISignatureHandler.generateCompleteURI(
+				uriSignature, parameters, true);
+		System.err.println(completeURI);
+		assertEquals(
+				"http://sysmo-db.org/sops/1%2011/experimental_conditions/2%2F2%242%262%3A?condition_unit=3%3B3",
+				completeURI);
+	}
+
+	@SuppressWarnings("serial")
+	@Test
+	public void generateCompleteURI_successfulURIGeneration_noURLParameterEscaping() {
+		String uriSignature = "http://sysmo-db.org/sops/{sop_id}/experimental_conditions/{cond_id}?condition_unit={unit}";
+		Map<String, String> parameters = new HashMap<String, String>() {
+			{
+				put("sop_id", "1 11");
+				put("unit", "3;3");
+				put("cond_id", "2/2$2&2:");
+			}
+		};
+
+		String completeURI = URISignatureHandler.generateCompleteURI(
+				uriSignature, parameters, false);
+		assertEquals(
+				"http://sysmo-db.org/sops/1 11/experimental_conditions/2/2$2&2:?condition_unit=3;3",
+				completeURI);
+	}
+	
+ 	@SuppressWarnings("serial")
+ 	@Test
+ 	public void generateCompleteURI_successfulURIGeneration_optionalParams() {
+ 		String uriSignature = "http://dr-site.esrin.esa.int/{catalogue}/genesi/ASA_IMS_1P/rdf/?count={count?}&startPage={startPage?}&startIndex={startIndex?}&q={searchTerms?}";
+ 		Map<String, String> allParameters = new HashMap<String, String>() {
+ 			{
+ 				put("catalogue", "catalogue");
+ 				put("count?", "10");
+ 				put("startPage?", "1");
+ 				put("startIndex?", "1");
+ 				put("searchTerms?", "term1");
+ 			}
+ 		};
+ 
+ 		Map<String, String> parametersMissingOptional = new HashMap<String, String>() {
+ 			{
+ 				put("catalogue", "catalogue");
+ 				put("count?", "10");
+ 				put("searchTerms?", "term1");
+ 			}
+ 		};
+ 
+ 		Map<String, String> parametersMissingFirstOptional = new HashMap<String, String>() {
+ 			{
+ 				put("catalogue", "catalogue");
+ 				put("startPage?", "1");
+ 				put("startIndex?", "1");
+ 				put("searchTerms?", "term1");
+ 			}
+ 		};
+ 
+ 		String completeURI1 = URISignatureHandler.generateCompleteURI(
+ 				uriSignature, allParameters, false);
+ 		assertEquals(
+				"http://dr-site.esrin.esa.int/catalogue/genesi/ASA_IMS_1P/rdf/?count=10&startPage=1&startIndex=1&q=term1",
+ 				completeURI1);
+ 
+ 		String completeURI2 = URISignatureHandler.generateCompleteURI(
+ 				uriSignature, parametersMissingOptional, false);
+ 		assertEquals(
+ 				"http://dr-site.esrin.esa.int/catalogue/genesi/ASA_IMS_1P/rdf/?count=10&q=term1",
+ 				completeURI2);
+ 
+ 		String completeURI3 = URISignatureHandler.generateCompleteURI(
+ 				uriSignature, parametersMissingFirstOptional, false);
+ 		assertEquals(
+ 				"http://dr-site.esrin.esa.int/catalogue/genesi/ASA_IMS_1P/rdf/?startPage=1&startIndex=1&q=term1",
+ 				completeURI3);
+ 	}
+ 
+	@Test
+	public void generateCompleteURI_signatureWithNoPlaceholders_nullParameterMap() {
+		String completeURI = URISignatureHandler.generateCompleteURI(
+				validURI_NoPlaceholders, null, true);
+		assertEquals(validURI_NoPlaceholders, completeURI);
+	}
+
+	@Test
+	public void generateCompleteURI_signatureWithNoPlaceholders_emptyParameterMap() {
+		String completeURI = URISignatureHandler.generateCompleteURI(
+				validURI_NoPlaceholders, Collections
+						.<String, String> emptyMap(), true);
+		assertEquals(validURI_NoPlaceholders, completeURI);
+	}
+
+	// failure cases
+
+	@Test(expected = URISignatureHandler.URIGenerationFromSignatureException.class)
+	public void generateCompleteURI_signatureWithPlaceholders_nullParameterMap() {
+		URISignatureHandler.generateCompleteURI(validURI_3MixedPlaceholders,
+				null, true);
+	}
+
+	@Test(expected = URISignatureHandler.URIGenerationFromSignatureException.class)
+	public void generateCompleteURI_signatureWithPlaceholders_emptyParameterMap() {
+		URISignatureHandler.generateCompleteURI(validURI_3MixedPlaceholders,
+				Collections.<String, String> emptyMap(), true);
+	}
+
+	@SuppressWarnings("serial")
+	@Test
+	public void generateCompleteURI_signatureWithPlaceholders_missingParameterURIGeneration_FailureNotExpected() {
+		String uriSignature = "http://sysmo-db.org/sops/{sop_id}/experimental_conditions/{cond_id}?condition_unit={unit}";
+		Map<String, String> parameters = new HashMap<String, String>() {
+			{
+				put("sop_id", "111");
+				put("cond_id", "2222");
+			}
+		};
+
+		String completeURI = URISignatureHandler.generateCompleteURI(
+				uriSignature, parameters, true);
+
+		assertEquals(
+				"http://sysmo-db.org/sops/111/experimental_conditions/2222",
+				completeURI);
+	}
+
+	// the following failure case is just to confirm the validation of the URI
+	// signature by the validation mechanism, which is the same for
+	// generateCompleteURI()
+	// and extractPlaceholders()
+
+	@SuppressWarnings("serial")
+	@Test(expected = URISignatureHandler.URISignatureParsingException.class)
+	public void generateCompleteURI_duplicatePlaceholderURIGeneration_FailureExpected() {
+		String uriSignature = "http://sysmo-db.org/sops/{sop_id}/experimental_conditions/{cond_id}?condition_unit={sop_id}";
+		Map<String, String> parameters = new HashMap<String, String>() {
+			{
+				put("sop_id", "111");
+				put("unit", "33");
+				put("cond_id", "2222");
+			}
+		};
+
+		String completeURI = URISignatureHandler.generateCompleteURI(
+				uriSignature, parameters, true);
+
+		assertEquals(
+				"http://sysmo-db.org/sops/111/experimental_conditions/2222?condition_unit=33",
+				completeURI);
+	}
+
+	@SuppressWarnings("serial")
+ 	@Test(expected = URISignatureHandler.URIGenerationFromSignatureException.class)
+ 	public void generateCompleteURI_failureURIGeneration_optionalParams() {
+ 		String uriSignature = "http://dr-site.esrin.esa.int/{catalogue}/genesi/ASA_IMS_1P/rdf/?count={count?}&startPage={startPage?}&startIndex={startIndex?}&q={searchTerms?}";
+ 
+ 		Map<String, String> parametersMissingCompulsory = new HashMap<String, String>() {
+ 			{
+ 				put("count?", "10");
+ 				put("startPage?", "1");
+ 				put("startIndex?", "1");
+ 				put("searchTerms?", "term1");
+ 			}
+ 		};
+ 
+ 		String completeURI = URISignatureHandler.generateCompleteURI(
+ 				uriSignature, parametersMissingCompulsory, false);
+ 
+ 		assertEquals(
+ 				"http://dr-site.esrin.esa.int/catalogue/genesi/ASA_IMS_1P/rdf/?count={count?}&startPage={startPage?}&startIndex={startIndex?}&q={searchTerms?}",
+ 				completeURI);
+ 	}
+}
diff --git a/taverna-spreadsheet-import-activity/pom.xml b/taverna-spreadsheet-import-activity/pom.xml
new file mode 100644
index 0000000..ff86d5b
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/pom.xml
@@ -0,0 +1,121 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.taverna.commonactivities</groupId>
+		<artifactId>taverna-common-activities</artifactId>
+		<version>2.1.0-incubating-SNAPSHOT</version>
+	</parent>
+	<artifactId>taverna-spreadsheet-import-activity</artifactId>
+	<packaging>bundle</packaging>
+	<name>Apache Taverna Spreadsheet Import Activity</name>
+	<description>Activity to import data from spreadsheet files</description>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<extensions>true</extensions>
+				<configuration>
+					<instructions>
+						<Private-Package>org.apache.poi.*;-split-package:=merge-first,org.openxmlformats.schemas.*,schemasMicrosoftCom*,schemaorg_apache_xmlbeans.system.*,org.odftoolkit.*,com.csvreader.*</Private-Package>
+						<Import-Package>!org.apache.poi.hdgf.extractor,
+                                                        !org.apache.poi.hslf.extractor,
+                                                        !org.apache.poi.hwpf.extractor,
+                                                        !org.apache.poi.sl.*,
+                                                        org.apache.xmlbeans.impl.schema,
+                                                        !junit.*,
+                                                        !org.openxmlformats.schemas.*,
+                                                        !schemasMicrosoftComOfficePowerpoint,
+                                                        !schemasMicrosoftComOfficeWord,
+                                                        *
+                                                </Import-Package>
+					</instructions>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-reference-api</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-workflowmodel-api</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.poi</groupId>
+			<artifactId>poi</artifactId>
+			<version>${poi.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.poi</groupId>
+			<artifactId>poi-ooxml</artifactId>
+			<version>${poi.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.apache.xmlbeans</groupId>
+					<artifactId>xmlbeans</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<!-- FIXME: Use Apache ODFDom (incubating) -->
+			<groupId>org.odftoolkit</groupId>
+			<artifactId>odfdom-java</artifactId>
+			<version>${odfdom.version}</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>net.sourceforge.javacsv</groupId>
+			<artifactId>javacsv</artifactId>
+			<version>${javacsv.version}</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.xmlbeans</groupId>
+			<artifactId>com.springsource.org.apache.xmlbeans</artifactId>
+			<version>${xmlbeans.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+			<version>${log4j.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>${junit.version}</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-activity-test-utils</artifactId>
+			<version>${taverna.engine.version}</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+
+  <repositories>
+
+    <!-- for outdated odfdom -->
+    <repository>
+        <id>mygrid-ext-release-local</id>
+        <name>myGrid ext-release-local</name>
+        <url>http://repository.mygrid.org.uk/artifactory/ext-release-local</url>
+        <releases />
+        <snapshots>
+          <enabled>false</enabled>
+        </snapshots>
+    </repository>
+
+  </repositories>
+
+
+</project>
diff --git a/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/CSVSpreadsheetReader.java b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/CSVSpreadsheetReader.java
new file mode 100644
index 0000000..154019a
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/CSVSpreadsheetReader.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+import com.csvreader.CsvReader;
+
+/**
+ * Reads CSV files.
+ *
+ * @author David Withers
+ */
+public class CSVSpreadsheetReader implements SpreadsheetReader {
+
+	public void read(InputStream inputStream, Range rowRange,
+			Range columnRange, boolean ignoreBlankRows,
+			SpreadsheetRowProcessor rowProcessor)
+			throws SpreadsheetReadException {
+		CsvReader csvReader = new CsvReader(new InputStreamReader(inputStream));
+		csvReader.setSkipEmptyRecords(false);
+
+		SortedMap<Integer, String> currentDataRow = new TreeMap<Integer, String>();
+
+		try {
+			while(csvReader.readRecord()) {
+				int rowIndex = (int) csvReader.getCurrentRecord();
+				boolean blankRow = true;
+				if (rowRange.contains(rowIndex)) {
+					for (int columnIndex = columnRange.getStart(); columnIndex <= columnRange.getEnd(); columnIndex++) {
+						if (columnRange.contains(columnIndex)) {
+							String value = csvReader.get(columnIndex);
+							value = "".equals(value) ? null : value;
+							if (value != null) {
+								blankRow = false;
+							}
+							currentDataRow.put(columnIndex, value);
+							if (columnIndex == columnRange.getEnd()) {
+								if (!ignoreBlankRows || !blankRow) {
+									rowProcessor.processRow(rowIndex, currentDataRow);
+								}
+								currentDataRow = new TreeMap<Integer, String>();
+							}
+						}
+					}
+				
+					if (rowIndex == rowRange.getEnd()) {
+						break;
+					}
+				}
+			}
+		} catch (IOException e) {
+			throw new SpreadsheetReadException("Unable to read CSV file", e);
+		}
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/ExcelSpreadsheetReader.java b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/ExcelSpreadsheetReader.java
new file mode 100644
index 0000000..8237ec1
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/ExcelSpreadsheetReader.java
@@ -0,0 +1,324 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+import org.apache.log4j.Logger;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.DataFormatter;
+import org.apache.poi.ss.usermodel.DateUtil;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
+
+/**
+ * Reads Excel '97 (.xls) or Excel '07 (.xlsx) spreadsheet files.
+ * 
+ * @author David Withers
+ */
+public class ExcelSpreadsheetReader implements SpreadsheetReader {
+
+	private static Logger logger = Logger.getLogger(ExcelSpreadsheetReader.class);
+
+	public void read(InputStream inputStream, Range rowRange, Range columnRange, boolean ignoreBlankRows, SpreadsheetRowProcessor rowProcessor)
+			throws SpreadsheetReadException {
+		Workbook workbook;
+		try {
+			workbook = WorkbookFactory.create(inputStream);
+		} catch (InvalidFormatException e) {
+			throw new SpreadsheetReadException(
+					"The file does not have a compatible spreadsheet format", e);
+		} catch (IOException e) {
+			throw new SpreadsheetReadException("The spreadsheet stream could not be read", e);
+		} catch (IllegalArgumentException e) {
+			throw new SpreadsheetReadException("The spreadsheet stream could not be read", e);
+		}
+
+		DataFormatter dataFormatter = new DataFormatter();
+		
+		workbook.setMissingCellPolicy(Row.CREATE_NULL_AS_BLANK);
+		Sheet sheet = workbook.getSheetAt(0);
+
+		if (rowRange.getEnd() < 0) {
+			rowRange.setEnd(sheet.getLastRowNum());
+			logger.debug("No end of row range specified, setting to " + rowRange.getEnd());
+		}
+
+		SortedMap<Integer, String> currentDataRow = new TreeMap<Integer, String>();
+
+		for (int rowIndex = rowRange.getStart(); rowIndex <= rowRange.getEnd(); rowIndex++) {
+			boolean blankRow = true;
+			if (rowRange.contains(rowIndex)) {
+				Row row = sheet.getRow(rowIndex);
+				for (int columnIndex = columnRange.getStart(); columnIndex <= columnRange.getEnd(); columnIndex++) {
+					if (columnRange.contains(columnIndex)) {
+						String value = null;
+						if (row != null) {
+							Cell cell = row.getCell(columnIndex);
+							if (cell != null) {
+								value = getCellValue(cell, dataFormatter);
+							}
+						}
+						if (value != null) {
+							blankRow = false;
+						}
+						currentDataRow.put(columnIndex, value);
+						if (columnIndex == columnRange.getEnd()) {
+							if (!ignoreBlankRows || !blankRow) {
+								rowProcessor.processRow(rowIndex, currentDataRow);
+							}
+							currentDataRow = new TreeMap<Integer, String>();
+						}
+					}
+				}
+			}
+		}
+
+	}
+
+	private String getCellValue(Cell cell, DataFormatter dataFormatter) {
+		String value = null;
+		switch (cell.getCellType()) {
+		case Cell.CELL_TYPE_BOOLEAN:
+			value = Boolean.toString(cell.getBooleanCellValue());
+			break;
+		case Cell.CELL_TYPE_NUMERIC:
+			if (DateUtil.isCellDateFormatted(cell)) {
+//				value = cell.getDateCellValue().toString();
+				value = dataFormatter.formatCellValue(cell);
+			} else {
+				value = Double.toString(cell.getNumericCellValue());
+			}
+			break;
+		case Cell.CELL_TYPE_STRING:
+			value = cell.getStringCellValue();
+			break;
+		case Cell.CELL_TYPE_FORMULA:
+			switch (cell.getCachedFormulaResultType()) {
+			case Cell.CELL_TYPE_BOOLEAN:
+				value = Boolean.toString(cell.getBooleanCellValue());
+				break;
+			case Cell.CELL_TYPE_NUMERIC:
+				if (DateUtil.isCellDateFormatted(cell)) {
+					value = cell.getDateCellValue().toString();
+				} else {
+					value = Double.toString(cell.getNumericCellValue());
+				}
+				break;
+			case Cell.CELL_TYPE_STRING:
+				value = cell.getStringCellValue();
+				break;
+			default:
+				break;
+			}
+		default:
+			break;
+		}
+		// value = dataFormatter.formatCellValue(cell);
+		// if ("".equals(value)) value = null;
+		return value;
+	}
+
+
+//	/**
+//	 * Reads data from an HSSF stream.
+//	 * 
+//	 * @param inputStream
+//	 * @param spreradsheetRowProcessor
+//	 * @throws IOException
+//	 * @deprecated can't generalize for XSSF streams and not much advantage as all the (non
+//	 *             duplicated) data is contained in one event so memory footprint isn't much smaller
+//	 */
+//	public void readHSSF(InputStream inputStream, SpreadsheetRowProcessor spreradsheetRowProcessor)
+//			throws IOException {
+//		POIFSFileSystem poifs = new POIFSFileSystem(inputStream);
+//
+//		// get the workbook part of the stream
+//		InputStream documentInputStream = poifs.createDocumentInputStream("Workbook");
+//
+//		RecordProcessor recordProcessor = new RecordProcessor(spreradsheetRowProcessor);
+//		MissingRecordAwareHSSFListener hssfListener = new MissingRecordAwareHSSFListener(
+//				recordProcessor);
+//
+//		// listen for all records
+//		HSSFRequest request = new HSSFRequest();
+//		request.addListenerForAllRecords(hssfListener);
+//
+//		HSSFEventFactory factory = new HSSFEventFactory();
+//		factory.processEvents(request, documentInputStream);
+//
+//		inputStream.close();
+//		documentInputStream.close();
+//	}
+//
+//	/**
+//	 * Listener for processing events from an HSSF stream.
+//	 * 
+//	 * @author David Withers
+//	 * @deprecated can't generalize for XSSF streams and not much advantage as all the (non
+//	 *             duplicated) data is contained in one event so memory footprint isn't much smaller
+//	 */
+//	class RecordProcessor implements HSSFListener {
+//
+//		private SpreadsheetRowProcessor spreradsheetRowProcessor;
+//
+//		private SSTRecord sstrec;
+//
+//		private boolean worksheetOpen = false;
+//
+//		private int row, column;
+//
+//		private Map<Integer, String> currentDataRow = new HashMap<Integer, String>();
+//
+//		public RecordProcessor(SpreadsheetRowProcessor spreradsheetRowProcessor) {
+//			this.spreradsheetRowProcessor = spreradsheetRowProcessor;
+//		}
+//
+//		public void processRecord(Record record) {
+//			switch (record.getSid()) {
+//			// the BOFRecord can represent either the beginning of a sheet or
+//			// the workbook
+//			case BOFRecord.sid:
+//				BOFRecord bof = (BOFRecord) record;
+//				if (bof.getType() == BOFRecord.TYPE_WORKSHEET) {
+//					worksheetOpen = true;
+//				}
+//				break;
+//			case EOFRecord.sid:
+//				if (worksheetOpen) {
+//					while (row < rowRange.getEnd()) {
+//						row++;
+//						if (rowRange.contains(row)) {
+//							for (column = columnRange.getStart(); column <= columnRange.getEnd(); column++) {
+//								processCell(row, column, null);
+//							}
+//							spreradsheetRowProcessor.processRow(row, currentDataRow);
+//						}
+//						currentDataRow = new HashMap<Integer, String>();
+//					}
+//					worksheetOpen = false;
+//				}
+//				break;
+//			// don't care about sheet name for now
+//			// case BoundSheetRecord.sid:
+//			// BoundSheetRecord bsr = (BoundSheetRecord) record;
+//			// logger.info("New sheet named: " + bsr.getSheetname());
+//			// break;
+//			case RowRecord.sid:
+//				// RowRecord rowRecord = (RowRecord) record;
+//				// if (readAllRows) {
+//				// int rowNumber = row.getRowNumber();
+//				// if (rowNumber < minRow) {
+//				// minRow = rowNumber;
+//				// currentRow = rowNumber;
+//				// }
+//				// if (rowNumber > maxRow) {
+//				// maxRow = rowNumber;
+//				// }
+//				// }
+//				// if (readAllColumns) {
+//				// int firstColumn = row.getFirstCol();
+//				// int lastColumn = row.getLastCol() - 1;
+//				// if (firstColumn < minColumn) {
+//				// minColumn = firstColumn;
+//				// currentColumn = firstColumn;
+//				// }
+//				// if (lastColumn > maxColumn) {
+//				// maxColumn = lastColumn;
+//				// }
+//				// }
+//
+//				break;
+//			case NumberRecord.sid:
+//				NumberRecord number = (NumberRecord) record;
+//				row = number.getRow();
+//				column = number.getColumn();
+//				processCell(row, column, String.valueOf(number.getValue()));
+//				break;
+//			case SSTRecord.sid:
+//				// SSTRecords store a array of unique strings used in Excel.
+//				sstrec = (SSTRecord) record;
+//				break;
+//			case LabelSSTRecord.sid:
+//				LabelSSTRecord label = (LabelSSTRecord) record;
+//				row = label.getRow();
+//				column = label.getColumn();
+//				processCell(row, column, sstrec.getString(label.getSSTIndex()).getString());
+//				break;
+//			case BlankRecord.sid:
+//				BlankRecord blank = (BlankRecord) record;
+//				row = blank.getRow();
+//				column = blank.getColumn();
+//				processCell(row, column, null);
+//				break;
+//			}
+//
+//			// Missing column
+//			if (record instanceof MissingCellDummyRecord) {
+//				MissingCellDummyRecord cell = (MissingCellDummyRecord) record;
+//				row = cell.getRow();
+//				column = cell.getColumn();
+//				processCell(row, column, null);
+//			}
+//
+//			// Missing row
+//			if (record instanceof MissingRowDummyRecord) {
+//				MissingRowDummyRecord missingRow = (MissingRowDummyRecord) record;
+//				row = missingRow.getRowNumber();
+//				if (rowRange.contains(row)) {
+//					for (column = columnRange.getStart(); column <= columnRange.getEnd(); column++) {
+//						processCell(row, column, null);
+//					}
+//					spreradsheetRowProcessor.processRow(row, currentDataRow);
+//				}
+//				currentDataRow = new HashMap<Integer, String>();
+//			}
+//
+//			// End of row
+//			if (record instanceof LastCellOfRowDummyRecord) {
+//				LastCellOfRowDummyRecord lastCell = (LastCellOfRowDummyRecord) record;
+//				row = lastCell.getRow();
+//				if (rowRange.contains(row)) {
+//					int lastColumn = lastCell.getLastColumnNumber();
+//					for (column = lastColumn + 1; column <= columnRange.getEnd(); column++) {
+//						processCell(row, column, null);
+//					}
+//					spreradsheetRowProcessor.processRow(row, currentDataRow);
+//				}
+//				currentDataRow = new HashMap<Integer, String>();
+//			}
+//		}
+//
+//		private void processCell(int row, int column, String value) {
+//			if (rowRange.contains(row) && columnRange.contains(column)) {
+//				currentDataRow.put(column, value);
+//			}
+//		}
+//
+//	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/ODFSpreadsheetReader.java b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/ODFSpreadsheetReader.java
new file mode 100644
index 0000000..2b01e00
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/ODFSpreadsheetReader.java
@@ -0,0 +1,193 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import java.io.InputStream;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+
+import org.apache.log4j.Logger;
+import org.odftoolkit.odfdom.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.doc.table.OdfTableCell;
+import org.odftoolkit.odfdom.doc.table.OdfTableRow;
+import org.w3c.dom.NodeList;
+
+/**
+ * Reads Open Document Format (ODF) spreadsheet files.
+ * 
+ * @author David Withers
+ */
+public class ODFSpreadsheetReader implements SpreadsheetReader {
+
+	private static Logger logger = Logger.getLogger(ODFSpreadsheetReader.class);
+
+	public void read(InputStream inputStream, Range rowRange, Range columnRange, boolean ignoreBlankRows, SpreadsheetRowProcessor rowProcessor)
+			throws SpreadsheetReadException {
+		NodeList rowList = null;
+		try {
+			// Load the ODF document
+			OdfDocument odfDoc = OdfDocument.loadDocument(inputStream);
+			logger.debug("Reading document of type : " + odfDoc.getMediaType());
+			// Get the content as DOM tree
+			OdfFileDom odfContent = odfDoc.getContentDom();
+			// Initialize XPath
+			XPath xpath = odfDoc.getXPath();
+			// Get the rows of the first table
+			String rowsPath = ("//table:table[1]/table:table-row");
+			rowList = (NodeList) xpath.evaluate(rowsPath, odfContent, XPathConstants.NODESET);
+		} catch (Exception e) {
+			if (e instanceof RuntimeException) {
+				throw (RuntimeException) e;
+			}
+			throw new SpreadsheetReadException("The spreadsheet file could not be read", e);
+		}
+
+		if (rowRange.getEnd() < 0) {
+			rowRange.setEnd(calculateRowCount(rowList) - 1);
+		}
+
+		SortedMap<Integer, String> currentDataRow = new TreeMap<Integer, String>();
+		int rowRep = 0;
+		for (int rowIndex = rowRange.getStart(); rowIndex <= rowRange.getEnd(); rowIndex++) {
+			boolean blankRow = true;
+			OdfTableRow row = (OdfTableRow) rowList.item(rowIndex);
+			int columnRep = 0;
+			for (int columnIndex = columnRange.getStart(); columnIndex <= columnRange.getEnd(); columnIndex++) {
+				String value = null;
+				OdfTableCell cell = null;
+				if (row != null) {
+					cell = (OdfTableCell) row.getCellAt(columnIndex);
+					if (cell != null) {
+						String type = cell.getOfficeValueTypeAttribute();
+						if ("float".equals(type)) {
+							value = cell.getOfficeValueAttribute().toString();
+						} else if ("percentage".equals(type)) {
+							value = cell.getOfficeValueAttribute().toString();
+						} else if ("currency".equals(type)) {
+							value = cell.getOfficeValueAttribute().toString();
+						} else if ("date".equals(type)) {
+							value = cell.getOfficeDateValueAttribute();
+						} else if ("time".equals(type)) {
+							value = cell.getOfficeTimeValueAttribute();
+						} else if ("boolean".equals(type)) {
+							value = cell.getOfficeBooleanValueAttribute().toString();
+						} else if ("string".equals(type)) {
+							value = cell.getOfficeStringValueAttribute();
+							if (value == null) {
+								value = cell.getTextContent();
+							}
+						} else {
+							value = cell.getTextContent();
+						}
+					}
+				}
+				value = "".equals(value) ? null : value;
+				if (value != null) {
+					blankRow = false;
+				}
+				// if the cell is within the column range add it to the row values
+				if (columnRange.contains(columnIndex + columnRep)) {
+					currentDataRow.put(columnIndex + columnRep, value);
+				}
+				// check if this cell is repeated
+				int repeatedCells = cell == null ? 0 : cell
+						.getTableNumberColumnsRepeatedAttribute() - 1;
+				while (repeatedCells > 0 && columnIndex + columnRep < columnRange.getEnd()) {
+					columnRep++;
+					if (columnRange.contains(columnIndex + columnRep)) {
+						currentDataRow
+								.put(columnIndex + columnRep, value);
+					}
+					repeatedCells--;
+				}
+				// if it's the last cell in the range process the row
+				if (columnIndex == columnRange.getEnd()) {
+					if (rowRange.contains(rowIndex + rowRep)) {
+						if (!ignoreBlankRows || !blankRow) {
+							rowProcessor.processRow(rowIndex + rowRep, currentDataRow);
+						}
+					}
+					// check if this row is repeated
+					int repeatedRows = row == null ? 0
+							: row.getTableNumberRowsRepeatedAttribute() - 1;
+					while (repeatedRows > 0 && rowIndex + rowRep < rowRange.getEnd()) {
+						rowRep++;
+						if (rowRange.contains(rowIndex + rowRep)) {
+							if (!ignoreBlankRows || !blankRow) {
+								rowProcessor.processRow(rowIndex + rowRep, currentDataRow);
+							}
+						}
+						repeatedRows--;
+					}
+					currentDataRow = new TreeMap<Integer, String>();
+				}
+
+			}
+		}
+
+	}
+
+	/**
+	 * Calculates the number of rows in a table, ignoring blank rows at the end of the table.
+	 * 
+	 * @param rowList
+	 *            the list of rows in a table
+	 * @return the number of rows in a table
+	 */
+	private int calculateRowCount(NodeList rowList) {
+		int rowCount = 0;
+		int blankRows = 0;
+		for (int i = 0; i < rowList.getLength(); i++) {
+			OdfTableRow row = (OdfTableRow) rowList.item(i);
+			int repeatedRows = row.getTableNumberRowsRepeatedAttribute();
+			if (isBlankRow(row)) {
+				blankRows += repeatedRows;
+			} else {
+				rowCount += repeatedRows + blankRows;
+				blankRows = 0;
+			}
+		}
+		return rowCount;
+	}
+
+	/**
+	 * Returns <code>true</code> if a row is blank (non of the cells contain data).
+	 * 
+	 * @param row
+	 * @return <code>true</code> if a row is blank
+	 */
+	private boolean isBlankRow(OdfTableRow row) {
+		OdfTableCell cell = (OdfTableCell) row.getCellAt(0);
+		for (int i = 1; cell != null; i++) {
+			String cellContent = cell.getTextContent();
+			if (cellContent != null && !cellContent.equals("")) {
+				return false;
+			}
+			cell = (OdfTableCell) row.getCellAt(i);
+		}
+		return true;
+	}
+
+}
\ No newline at end of file
diff --git a/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/Range.java b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/Range.java
new file mode 100644
index 0000000..29f5e05
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/Range.java
@@ -0,0 +1,298 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+
+/**
+ * A range of integer values.
+ *
+ * @author David Withers
+ */
+@ConfigurationBean(uri = SpreadsheetImportActivity.URI + "/Range")
+public class Range {
+
+	/**
+	 * The (inclusive) start and end of this <code>Range</code>.
+	 */
+	private int start, end;
+
+	/**
+	 * <code>Range</code>s that are excluded from this <code>Range</code>.
+	 */
+	private List<Range> excludes = new ArrayList<Range>();
+
+	/**
+	 * Constructs a <code>Range</code>.
+	 */
+	public Range() {
+	}
+
+	/**
+	 * Constructs a <code>Range</code> with the specified start and end values.
+	 *
+	 * @param start
+	 *            the start of the range
+	 * @param end
+	 *            the end of the range
+	 */
+	public Range(int start, int end) {
+		this.start = start;
+		this.end = end;
+	}
+
+	/**
+	 * Constructs a <code>Range</code> with the specified start and end values and a
+	 * <code>Range</code> of excluded values.
+	 *
+	 * @param start
+	 *            the start of the range
+	 * @param end
+	 *            the end of the range
+	 * @param exclude
+	 *            the range to exclude
+	 */
+	public Range(int start, int end, Range exclude) {
+		this.start = start;
+		this.end = end;
+		if (exclude != null) {
+			excludes.add(exclude);
+		}
+	}
+
+	/**
+	 * Constructs a <code>Range</code> with the specified start and end values and
+	 * <code>Range</code>s of excluded values.
+	 *
+	 * @param start
+	 *            the start of the range
+	 * @param end
+	 *            the end of the range
+	 * @param excludes
+	 *            the ranges to exclude
+	 */
+	public Range(int start, int end, List<Range> excludes) {
+		this.start = start;
+		this.end = end;
+		if (excludes != null) {
+			for (Range range : excludes) {
+				this.excludes.add(range);
+			}
+		}
+	}
+
+	/**
+	 * Constructs a <code>Range</code> that is a deep copy of the specified range.
+	 *
+	 * @param range
+	 *            the <code>Range</code> to copy
+	 */
+	public Range(Range range) {
+		this.start = range.start;
+		this.end = range.end;
+		if (range.excludes != null) {
+			for (Range excludeRange : range.excludes) {
+				excludes.add(new Range(excludeRange));
+			}
+		}
+	}
+
+	/**
+	 * Returns <code>true</code> if <code>value</code> is included in this <code>Range</code>.
+	 *
+	 * @param value
+	 * @return
+	 */
+	public boolean contains(int value) {
+		if (value >= start && (value <= end || end < 0)) {
+			for (Range exclude : excludes) {
+				if (exclude.contains(value)) {
+					return false;
+				}
+			}
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Returns an array of the values contained in this <code>Range</code>.
+	 *
+	 * @return an array of the values contained in this <code>Range</code>
+	 */
+	public int[] getRangeValues() {
+		List<Integer> rangeList = new ArrayList<Integer>();
+		for (int i = start; i <= end; i++) {
+			boolean excluded = false;
+			for (Range range : excludes) {
+				if (range.contains(i)) {
+					excluded = true;
+					break;
+				}
+			}
+			if (!excluded) {
+				rangeList.add(i);
+			}
+		}
+		int[] rangeArray = new int[rangeList.size()];
+		for (int i = 0; i < rangeArray.length; i++) {
+			rangeArray[i] = rangeList.get(i);
+		}
+		return rangeArray;
+	}
+
+	/**
+	 * Returns the start of the <code>Range</code>.
+	 *
+	 * @return the start of the <code>Range</code>
+	 */
+	public int getStart() {
+		return start;
+	}
+
+	/**
+	 * Sets the start of the <code>Range</code>.
+	 *
+	 * @param start
+	 *            the new value for start of the <code>Range</code>
+	 */
+	@ConfigurationProperty(name = "start", label = "Start", description = "The start of the range")
+	public void setStart(int start) {
+		this.start = start;
+	}
+
+	/**
+	 * Returns the end of the <code>Range</code>.
+	 *
+	 * @return the end of the <code>Range</code>
+	 */
+	public int getEnd() {
+		return end;
+	}
+
+	/**
+	 * Sets the end of the range.
+	 *
+	 * @param end
+	 *            the new value for end of the <code>Range</code>
+	 */
+	@ConfigurationProperty(name = "end", label = "End", description = "The end of the range")
+	public void setEnd(int end) {
+		this.end = end;
+	}
+
+	/**
+	 * Adds a <code>Range</code> to be excluded from this <code>Range</code>.
+	 *
+	 * @param exclude
+	 *            a <code>Range</code> to be excluded
+	 */
+	public void addExclude(Range exclude) {
+		excludes.add(exclude);
+	}
+
+	/**
+	 * Removes a <code>Range</code> from the exclusions for this range.
+	 *
+	 * @param exclude
+	 *            a <code>Range</code> to be removed from the exclusions
+	 */
+	public void removeExclude(Range exclude) {
+		excludes.remove(exclude);
+	}
+
+	/**
+	 * Returns the exclusions for this range.
+	 *
+	 * @return the exclusions for this range
+	 */
+	public List<Range> getExcludes() {
+		return excludes;
+	}
+
+	/**
+	 * Sets the exclusions for this range.
+	 *
+	 * @param excludes
+	 *            the exclusions for this range
+	 */
+	@ConfigurationProperty(name = "excludes", label = "Excludes Ranges", description = "The ranges the exclude from this range", required = false)
+	public void setExcludes(List<Range> excludes) {
+		this.excludes = excludes;
+	}
+
+	@Override
+	public String toString() {
+		StringBuilder result = new StringBuilder();
+		result.append('[');
+		result.append(start);
+		result.append("..");
+		result.append(end);
+		result.append(']');
+		return result.toString();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see java.lang.Object#hashCode()
+	 */
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + end;
+		result = prime * result + ((excludes == null) ? 0 : excludes.hashCode());
+		result = prime * result + start;
+		return result;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see java.lang.Object#equals(java.lang.Object)
+	 */
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		Range other = (Range) obj;
+		if (end != other.end)
+			return false;
+		if (excludes == null) {
+			if (other.excludes != null)
+				return false;
+		} else if (!excludes.equals(other.excludes))
+			return false;
+		if (start != other.start)
+			return false;
+		return true;
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetEmptyCellPolicy.java b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetEmptyCellPolicy.java
new file mode 100644
index 0000000..ece75e5
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetEmptyCellPolicy.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+/**
+ * Enumeration of the policies for handling empty/missing cells in a spreadsheet.
+ * <p>
+ * <dl>
+ * <dt>EMPTY_STRING</dt>
+ * <dd>Use an empty string value ("")</dd>
+ * <dt>USER_DEFINED</dt>
+ * <dd>Use a value defined by the user</dd>
+ * <dt>GENERATE_ERROR</dt>
+ * <dd>Generate an ErrorDocument</dd>
+ * </dl>
+ * 
+ * @author David Withers
+ */
+public enum SpreadsheetEmptyCellPolicy {
+	EMPTY_STRING, USER_DEFINED, GENERATE_ERROR
+}
\ No newline at end of file
diff --git a/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportActivity.java b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportActivity.java
new file mode 100644
index 0000000..1f48ce8
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportActivity.java
@@ -0,0 +1,358 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.SortedMap;
+
+import net.sf.taverna.t2.invocation.InvocationContext;
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.Identified;
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.ReferenceServiceException;
+import net.sf.taverna.t2.reference.ReferenceSet;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.reference.ValueCarryingExternalReference;
+import net.sf.taverna.t2.workflowmodel.OutputPort;
+import net.sf.taverna.t2.workflowmodel.Port;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AbstractAsynchronousActivity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
+
+import org.apache.log4j.Logger;
+
+import com.csvreader.CsvWriter;
+import com.fasterxml.jackson.databind.JsonNode;
+
+
+/**
+ * An {@link net.sf.taverna.t2.workflowmodel.processor.activity.Activity} that reads spreadsheet
+ * files.
+ *
+ * @author David Withers
+ */
+public class SpreadsheetImportActivity extends AbstractAsynchronousActivity<JsonNode> {
+
+	public static final String URI = "http://ns.taverna.org.uk/2010/activity/spreadsheet-import";
+
+	public static final String INPUT_PORT_NAME = "fileurl";
+
+	public static final String OUTPUT_PORT_NAME = "output";
+
+	private static Logger logger = Logger.getLogger(SpreadsheetImportActivity.class);
+
+	private JsonNode configurationBean;
+
+	private Range rowRange, columnRange;
+
+	private boolean ignoreBlankRows;
+
+	private String missingCellValue;
+
+	private SpreadsheetEmptyCellPolicy emptyCellPolicy;
+
+	private SpreadsheetOutputFormat outputFormat;
+
+	private String csvDelimiter;
+
+	/**
+	 * Constructs a SpreadsheetImport activity.
+	 */
+	public SpreadsheetImportActivity() {
+	}
+
+	@Override
+	public void configure(JsonNode configurationBean)
+			throws ActivityConfigurationException {
+		this.configurationBean = configurationBean;
+		rowRange = SpreadsheetUtils.getRange(configurationBean.get("rowRange"));
+		logger.debug("Setting row range to " + rowRange);
+		columnRange = SpreadsheetUtils.getRange(configurationBean.get("columnRange"));
+		logger.debug("Setting column range to " + columnRange);
+		ignoreBlankRows = configurationBean.get("ignoreBlankRows").booleanValue();
+		missingCellValue = configurationBean.get("emptyCellValue").textValue();
+		logger.debug("Setting empty cell value to '" + missingCellValue + "'");
+		emptyCellPolicy = SpreadsheetEmptyCellPolicy.valueOf(configurationBean.get("emptyCellPolicy").textValue());
+		logger.debug("Setting empty cell policy to " + emptyCellPolicy);
+		outputFormat = SpreadsheetOutputFormat.valueOf(configurationBean.get("outputFormat").textValue());
+		logger.debug("Setting output format to " + outputFormat);
+		csvDelimiter = configurationBean.get("csvDelimiter").textValue();
+		logger.debug("Setting csv delimiter to '" + csvDelimiter + "'");
+//		configurePorts();
+	}
+
+	private void configurePorts() {
+		removeInputs();
+		addInput(INPUT_PORT_NAME, 0, false, null, null);
+
+		removeOutputs();
+		if (outputFormat.equals(SpreadsheetOutputFormat.PORT_PER_COLUMN)) {
+			for (int column = columnRange.getStart(); column <= columnRange.getEnd(); column++) {
+				if (columnRange.contains(column)) {
+					addOutput(SpreadsheetUtils.getPortName(column, configurationBean), 1, 1);
+				}
+			}
+		} else {
+			addOutput(OUTPUT_PORT_NAME, 0, 0);
+		}
+	}
+
+	@Override
+	public JsonNode getConfiguration() {
+		return configurationBean;
+	}
+
+	@Override
+	public void executeAsynch(final Map<String, T2Reference> data,
+			final AsynchronousActivityCallback callback) {
+		callback.requestRun(new Runnable() {
+
+			public void run() {
+
+				Map<String, T2Reference> outputData = new HashMap<String, T2Reference>();
+
+				InvocationContext context = callback.getContext();
+				ReferenceService referenceService = context.getReferenceService();
+
+				try {
+					T2Reference inputRef = data.get(INPUT_PORT_NAME);
+
+					SpreadsheetRowProcessor spreadsheetRowProcessor = null;
+					Map<String, List<T2Reference>> outputLists = null;
+					StringWriter output = null;
+
+					if (outputFormat.equals(SpreadsheetOutputFormat.PORT_PER_COLUMN)) {
+						outputLists = new HashMap<String, List<T2Reference>>();
+						for (Port port : getOutputPorts()) {
+							outputLists.put(port.getName(), new ArrayList<T2Reference>());
+						}
+						spreadsheetRowProcessor = new MultiplePortRowProcessor(referenceService, outputLists, context);
+					} else {
+						output = new StringWriter();
+						char csvDelimiterCharacter = ',';
+						if (csvDelimiter != null && csvDelimiter.length() > 0) {
+							csvDelimiterCharacter = csvDelimiter.charAt(0);
+						}
+						CsvWriter csvWriter = new CsvWriter(output, csvDelimiterCharacter);
+						csvWriter.setEscapeMode(CsvWriter.ESCAPE_MODE_DOUBLED);
+						csvWriter.setTextQualifier('"');
+						csvWriter.setUseTextQualifier(true);
+						spreadsheetRowProcessor = new SingleOutputRowProcessor(csvWriter);
+					}
+
+					InputStream inputStream = getInputStream(context, referenceService, inputRef);
+					if (inputStream == null) {
+						logger.warn("Input is not a file reference or a file name");
+						callback.fail("Input is not a file reference or a file name");
+						return;
+					}
+					try {
+						try {
+							new ExcelSpreadsheetReader().read(inputStream, new Range(rowRange),
+									new Range(columnRange), ignoreBlankRows, spreadsheetRowProcessor);
+						} catch (SpreadsheetReadException e) {
+							inputStream.close();
+							inputStream = getInputStream(context, referenceService, inputRef);
+							try {
+								new ODFSpreadsheetReader().read(inputStream, new Range(rowRange),
+										new Range(columnRange), ignoreBlankRows, spreadsheetRowProcessor);
+							} catch (SpreadsheetReadException e2) {
+								inputStream.close();
+								inputStream = getInputStream(context, referenceService, inputRef);
+								new CSVSpreadsheetReader().read(inputStream, new Range(rowRange),
+										new Range(columnRange), ignoreBlankRows, spreadsheetRowProcessor);
+							}
+						} finally {
+							inputStream.close();
+						}
+					} catch (IOException e1) {
+						logger.warn("Failed to close spereadsheet stream", e1);
+					}
+
+					// get outputs
+					if (outputFormat.equals(SpreadsheetOutputFormat.PORT_PER_COLUMN)) {
+						for (OutputPort outputPort : getOutputPorts()) {
+							String name = outputPort.getName();
+							Object value = outputLists.get(name);
+							T2Reference id = referenceService.register(value, outputPort.getDepth(),
+									true, context);
+							outputData.put(name, id);
+						}
+					} else {
+						T2Reference id = referenceService.register(output.toString(), 0, true, context);
+						outputData.put(OUTPUT_PORT_NAME, id);
+					}
+					callback.receiveResult(outputData, new int[0]);
+				} catch (ReferenceServiceException e) {
+					logger.warn("Error accessing spreadsheet input/output data", e);
+					callback.fail("Error accessing spreadsheet input/output data", e);
+				} catch (SpreadsheetReadException e) {
+					logger.warn("Spreadsheet input cannot be read", e);
+					callback.fail("Spreadsheet input cannot be read", e);
+				} catch (FileNotFoundException e) {
+					logger.warn("Input spreadsheet file does not exist", e);
+					callback.fail("Input spreadsheet file does not exist", e);
+				} catch (IOException e) {
+					logger.warn("Error reading spreadsheet", e);
+					callback.fail("Error reading spreadsheet", e);
+				}
+			}
+
+
+		});
+	}
+
+	private InputStream getInputStream(InvocationContext context,
+			ReferenceService referenceService, T2Reference inputRef)
+			throws IOException {
+		InputStream inputStream = null;
+
+		Identified identified = referenceService.resolveIdentifier(inputRef, null, context);
+		if (identified instanceof ReferenceSet) {
+			ReferenceSet referenceSet = (ReferenceSet) identified;
+			Set<ExternalReferenceSPI> externalReferences = referenceSet
+					.getExternalReferences();
+			for (ExternalReferenceSPI externalReference : externalReferences) {
+				if (externalReference instanceof ValueCarryingExternalReference<?>) {
+					ValueCarryingExternalReference<?> vcer = (ValueCarryingExternalReference<?>) externalReference;
+					if (String.class.isAssignableFrom(vcer.getValueType())) {
+						String input = (String) vcer.getValue();
+						try {
+							URL url = new URL(input);
+							inputStream = url.openStream();
+							logger.debug("Input spreadsheet url is '" + input + "'");
+						} catch (MalformedURLException e) {
+							logger.debug("Input spreadsheet file name is '" + input + "'");
+							inputStream = new FileInputStream(input);
+						}
+					}
+					break;
+				} else {
+					inputStream = externalReference.openStream(context);
+					break;
+				}
+			}
+		}
+		return inputStream;
+	}
+
+	/**
+	 * SpreadsheetRowProcessor for handling a single output formatted as csv.
+	 *
+	 * @author David Withers
+	 */
+	private final class SingleOutputRowProcessor implements SpreadsheetRowProcessor {
+
+		private final CsvWriter csvWriter;
+
+		/**
+		 * Constructs a new SingleOutputRowProcessor.
+		 *
+		 * @param csvWriter
+		 */
+		private SingleOutputRowProcessor(CsvWriter csvWriter) {
+			this.csvWriter = csvWriter;
+		}
+
+		public void processRow(int rowIndex, SortedMap<Integer, String> row) {
+			try {
+				for (String value : row.values()) {
+					if (value == null) {
+						if (emptyCellPolicy.equals(SpreadsheetEmptyCellPolicy.GENERATE_ERROR)) {
+							value = "ERROR";
+						} else if (emptyCellPolicy.equals(SpreadsheetEmptyCellPolicy.EMPTY_STRING)) {
+							value = "";
+						} else {
+							value = missingCellValue;
+						}
+					}
+					csvWriter.write(value, true);
+				}
+				csvWriter.endRecord();
+			} catch (IOException e) {
+				throw new RuntimeException(e);
+			}
+		}
+	}
+
+	/**
+	 * SpreadsheetRowProcessor for handling multiple outputs.
+	 *
+	 * @author David Withers
+	 */
+	private final class MultiplePortRowProcessor implements SpreadsheetRowProcessor {
+
+		private final ReferenceService referenceService;
+		private final Map<String, List<T2Reference>> outputLists;
+		private final InvocationContext context;
+
+		/**
+		 * Constructs a new MultiplePortRowProcessor.
+		 *
+		 * @param referenceService
+		 * @param outputLists
+		 * @param context
+		 */
+		private MultiplePortRowProcessor(ReferenceService referenceService,
+				Map<String, List<T2Reference>> outputLists, InvocationContext context) {
+			this.referenceService = referenceService;
+			this.outputLists = outputLists;
+			this.context = context;
+		}
+
+		public void processRow(int rowIndex, SortedMap<Integer, String> row) {
+			for (Entry<Integer, String> entry : row.entrySet()) {
+				String column = SpreadsheetUtils.getPortName(entry.getKey(),
+						configurationBean);
+				Object value = entry.getValue();
+				if (value == null) {
+					if (emptyCellPolicy
+							.equals(SpreadsheetEmptyCellPolicy.GENERATE_ERROR)) {
+						value = referenceService.getErrorDocumentService()
+								.registerError(
+										"Missing data for spreadsheet cell "
+												+ column + row, 0, context);
+					} else if (emptyCellPolicy
+							.equals(SpreadsheetEmptyCellPolicy.EMPTY_STRING)) {
+						value = "";
+					} else {
+						value = missingCellValue;
+					}
+				}
+				T2Reference id = referenceService.register(value, 0, true, context);
+				outputLists.get(column).add(id);
+			}
+		}
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportActivityFactory.java b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportActivityFactory.java
new file mode 100644
index 0000000..a4b1ab8
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportActivityFactory.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (C) 2011 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.HashSet;
+import java.util.Set;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import net.sf.taverna.t2.workflowmodel.Edits;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
+
+/**
+ * An {@link ActivityFactory} for creating <code>SpreadsheetImportActivity</code>.
+ *
+ * @author David Withers
+ */
+public class SpreadsheetImportActivityFactory implements ActivityFactory {
+
+	private Edits edits;
+
+	@Override
+	public SpreadsheetImportActivity createActivity() {
+		return new SpreadsheetImportActivity();
+	}
+
+	@Override
+	public URI getActivityType() {
+		return URI.create(SpreadsheetImportActivity.URI);
+	}
+
+	@Override
+	public JsonNode getActivityConfigurationSchema() {
+		ObjectMapper objectMapper = new ObjectMapper();
+		try {
+ 			return objectMapper.readTree(getClass().getResource("/schema.json"));
+		} catch (IOException e) {
+			return objectMapper.createObjectNode();
+		}
+	}
+
+	@Override
+	public Set<ActivityInputPort> getInputPorts(JsonNode configuration)
+			throws ActivityConfigurationException {
+		Set<ActivityInputPort> inputPorts = new HashSet<>();
+		inputPorts.add(edits.createActivityInputPort(SpreadsheetImportActivity.INPUT_PORT_NAME, 0, false, null, null));
+		return inputPorts;
+	}
+
+	@Override
+	public Set<ActivityOutputPort> getOutputPorts(JsonNode configuration)
+			throws ActivityConfigurationException {
+		Set<ActivityOutputPort> outputPorts = new HashSet<>();
+		if ("PORT_PER_COLUMN".equals(configuration.get("outputFormat").textValue())) {
+			Range columnRange = SpreadsheetUtils.getRange(configuration.get("columnRange"));
+			for (int column = columnRange.getStart(); column <= columnRange.getEnd(); column++) {
+				if (columnRange.contains(column)) {
+					outputPorts.add(edits.createActivityOutputPort(SpreadsheetUtils.getPortName(column, configuration), 1, 1));
+				}
+			}
+		} else {
+			outputPorts.add(edits.createActivityOutputPort(SpreadsheetImportActivity.OUTPUT_PORT_NAME, 0, 0));
+		}
+		return outputPorts;
+	}
+
+	public void setEdits(Edits edits) {
+		this.edits = edits;
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportConfiguration.java b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportConfiguration.java
new file mode 100644
index 0000000..1cf37ae
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportConfiguration.java
@@ -0,0 +1,416 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+
+/**
+ * Configuration for the SpreadsheetImport activity.
+ *
+ * @author David Withers
+ */
+@ConfigurationBean(uri = SpreadsheetImportActivity.URI + "#Config")
+public class SpreadsheetImportConfiguration {
+
+	private Range columnRange;
+	private Range rowRange;
+	private String emptyCellValue;
+	private Map<String, String> columnNames;
+	private boolean allRows;
+	private boolean excludeFirstRow;
+	private boolean ignoreBlankRows;
+	private SpreadsheetEmptyCellPolicy emptyCellPolicy;
+	private SpreadsheetOutputFormat outputFormat;
+	private String csvDelimiter;
+
+	/**
+	 * Constructs a new SpreadsheetImportConfiguration.
+	 */
+	public SpreadsheetImportConfiguration() {
+		columnRange = new Range(0, 1);
+		rowRange = new Range(0, -1);
+		emptyCellValue = "";
+		columnNames = new HashMap<String, String>();
+		allRows = true;
+		excludeFirstRow = false;
+		ignoreBlankRows = false;
+		emptyCellPolicy = SpreadsheetEmptyCellPolicy.EMPTY_STRING;
+		outputFormat = SpreadsheetOutputFormat.PORT_PER_COLUMN;
+		csvDelimiter = ",";
+	}
+
+	/**
+	 * Constructs a new SpreadsheetImportConfiguration that copies the values from the given
+	 * configuration.
+	 *
+	 * @param configuration
+	 */
+	public SpreadsheetImportConfiguration(SpreadsheetImportConfiguration configuration) {
+		columnRange = new Range(configuration.columnRange);
+		rowRange = new Range(configuration.rowRange);
+		emptyCellValue = configuration.emptyCellValue;
+		columnNames = new HashMap<String, String>(configuration.columnNames);
+		allRows = configuration.allRows;
+		excludeFirstRow = configuration.excludeFirstRow;
+		emptyCellPolicy = configuration.emptyCellPolicy;
+		ignoreBlankRows = configuration.ignoreBlankRows;
+		outputFormat = configuration.outputFormat;
+		csvDelimiter = configuration.csvDelimiter;
+	}
+
+	/**
+	 * Returns the columnRange.
+	 *
+	 * @return the value of columnRange
+	 */
+	public Range getColumnRange() {
+		return columnRange;
+	}
+
+	/**
+	 * Sets the columnRange.
+	 *
+	 * @param columnRange
+	 *            the new value for columnRange
+	 */
+	@ConfigurationProperty(name = "columnRange", label = "Column Range", description = "The range of columns to be imported (e.g. columns 2 to 7")
+	public void setColumnRange(Range columnRange) {
+		this.columnRange = columnRange;
+	}
+
+	/**
+	 * Returns the rowRange.
+	 *
+	 * @return the value of rowRange
+	 */
+	public Range getRowRange() {
+		return rowRange;
+	}
+
+	/**
+	 * Sets the rowRange.
+	 *
+	 * @param rowRange
+	 *            the new value for rowRange
+	 */
+	@ConfigurationProperty(name = "rowRange", label = "Row Range", description = "The range of rows to be imported (e.g. rows 1 to 15", required = false)
+	public void setRowRange(Range rowRange) {
+		this.rowRange = rowRange;
+	}
+
+	/**
+	 * Returns the emptyCellValue. The default value is "".
+	 *
+	 * @return the value of emptyCellValue
+	 */
+	public String getEmptyCellValue() {
+		return emptyCellValue;
+	}
+
+	/**
+	 * Sets the emptyCellValue.
+	 *
+	 * @param emptyCellValue
+	 *            the new value for emptyCellValue
+	 */
+	@ConfigurationProperty(name = "emptyCellValue", label = "Empty Cell Value", description = "The value to use for empty cells. The default is \"\"", required = false)
+	public void setEmptyCellValue(String emptyCellValue) {
+		this.emptyCellValue = emptyCellValue;
+	}
+
+	/**
+	 * Returns the columnNames. The default value is an empty map.
+	 *
+	 * @return the value of columnNames
+	 */
+	public Map<String, String> getColumnNames() {
+		return columnNames;
+	}
+
+	/**
+	 * Sets the columnNames.
+	 *
+	 * @param columnNames
+	 *            the new value for columnNames
+	 */
+	public void setColumnNames(Map<String, String> columnNames) {
+		this.columnNames = columnNames;
+	}
+
+	/**
+	 * Sets the columnNames.
+	 *
+	 * @param columnNames
+	 *            the new value for columnNames
+	 */
+	@ConfigurationProperty(name = "columnNames", label = "Column Name Mapping", description = "Mapping from column to port names", required = false)
+	public void setColumnNames(Set<Mapping> columnNames) {
+		Map<String, String> columnNamesMap = new HashMap<String, String>();
+		for (Mapping mapping : columnNames) {
+			columnNamesMap.put(mapping.column, mapping.port);
+		}
+		this.columnNames = columnNamesMap;
+	}
+
+	/**
+	 * Returns the allRows property. The default value is <code>true</code>.
+	 *
+	 * @return the value of allRows
+	 */
+	public boolean isAllRows() {
+		return allRows;
+	}
+
+	/**
+	 * Sets the allRows property.
+	 *
+	 * @param allRows
+	 *            the new value for allRows
+	 */
+	@ConfigurationProperty(name = "allRows", label = "Import All Rows", description = "Imports all the rows containing data", required = false)
+	public void setAllRows(boolean allRows) {
+		this.allRows = allRows;
+	}
+
+	/**
+	 * Returns the excludeFirstRow property. The default value is <code>false</code>.
+	 *
+	 * @return the value of excludeFirstRow
+	 */
+	public boolean isExcludeFirstRow() {
+		return excludeFirstRow;
+	}
+
+	/**
+	 * Sets the excludeFirstRow property.
+	 *
+	 * @param excludeFirstRow
+	 *            the new value for excludeFirstRow
+	 */
+	@ConfigurationProperty(name = "excludeFirstRow", label = "Exclude First Row", description = "Excludes the first row from the import", required = false)
+	public void setExcludeFirstRow(boolean excludeFirstRow) {
+		this.excludeFirstRow = excludeFirstRow;
+	}
+
+	/**
+	 * Returns the ignoreBlankRows property. The default value is <code>false</code>.
+	 *
+	 * @return the value of ignoreBlankRows
+	 */
+	public boolean isIgnoreBlankRows() {
+		return ignoreBlankRows;
+	}
+
+	/**
+	 * Sets the ignoreBlankRows property.
+	 *
+	 * @param ignoreBlankRows the new value for ignoreBlankRows
+	 */
+	@ConfigurationProperty(name = "ignoreBlankRows", label = "Ignore Blank Rows", description = "Excludes blank rows from the import", required = false)
+	public void setIgnoreBlankRows(boolean ignoreBlankRows) {
+		this.ignoreBlankRows = ignoreBlankRows;
+	}
+
+	/**
+	 * Returns the emptyCellPolicy. The default value is
+	 * <code>SpreadsheetEmptyCellPolicy.EMPTY_STRING</code>.
+	 *
+	 * @return the value of emptyCellPolicy
+	 */
+	public SpreadsheetEmptyCellPolicy getEmptyCellPolicy() {
+		return emptyCellPolicy;
+	}
+
+	/**
+	 * Sets the emptyCellPolicy.
+	 *
+	 * @param emptyCellPolicy
+	 *            the new value for emptyCellPolicy
+	 */
+	@ConfigurationProperty(name = "emptyCellPolicy", label = "Empty Cell Policy", description = "Policy for handling empty cells", required = false)
+	public void setEmptyCellPolicy(SpreadsheetEmptyCellPolicy emptyCellPolicy) {
+		this.emptyCellPolicy = emptyCellPolicy;
+	}
+
+	/**
+	 * Returns the outputFormat. The default value is
+	 * <code>SpreadsheetOutputFormat.PORT_PER_COLUMN</code>.
+	 *
+	 * @return the value of outputFormat
+	 */
+	public SpreadsheetOutputFormat getOutputFormat() {
+		return outputFormat == null ? SpreadsheetOutputFormat.PORT_PER_COLUMN : outputFormat;
+	}
+
+	/**
+	 * Sets the outputFormat.
+	 *
+	 * @param outputFormat
+	 *            the new value for outputFormat
+	 */
+	@ConfigurationProperty(name = "outputFormat", label = "Output Format", description = "How the activity outputs are to be formatted", required = false)
+	public void setOutputFormat(SpreadsheetOutputFormat outputFormat) {
+		this.outputFormat = outputFormat;
+	}
+
+	/**
+	 * Returns the delimiter for CSV formatted output. The default value is
+	 * <code>","</code>.
+	 *
+	 * @return the delimiter for CSV formatted output
+	 */
+	public String getCsvDelimiter() {
+		return csvDelimiter == null ? "," : csvDelimiter;
+	}
+
+	/**
+	 * Sets the delimiter for CSV formatted output.
+	 *
+	 * @param outputFormat
+	 *            the new delimiter for CSV formatted output
+	 */
+	@ConfigurationProperty(name = "csvDelimiter", label = "CSV Delimiter", description = "The delimiter to use for CSV input files. The default is ','", required = false)
+	public void setCsvDelimiter(String csvDelimiter) {
+		this.csvDelimiter = csvDelimiter;
+	}
+
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + (allRows ? 1231 : 1237);
+		result = prime * result + ((columnNames == null) ? 0 : columnNames.hashCode());
+		result = prime * result + ((columnRange == null) ? 0 : columnRange.hashCode());
+		result = prime * result + ((csvDelimiter == null) ? 0 : csvDelimiter.hashCode());
+		result = prime * result + ((emptyCellPolicy == null) ? 0 : emptyCellPolicy.hashCode());
+		result = prime * result + ((emptyCellValue == null) ? 0 : emptyCellValue.hashCode());
+		result = prime * result + (excludeFirstRow ? 1231 : 1237);
+		result = prime * result + (ignoreBlankRows ? 1231 : 1237);
+		result = prime * result + ((outputFormat == null) ? 0 : outputFormat.hashCode());
+		result = prime * result + ((rowRange == null) ? 0 : rowRange.hashCode());
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj) {
+			return true;
+		}
+		if (obj == null) {
+			return false;
+		}
+		if (getClass() != obj.getClass()) {
+			return false;
+		}
+		SpreadsheetImportConfiguration other = (SpreadsheetImportConfiguration) obj;
+		if (allRows != other.allRows) {
+			return false;
+		}
+		if (columnNames == null) {
+			if (other.columnNames != null) {
+				return false;
+			}
+		} else if (!columnNames.equals(other.columnNames)) {
+			return false;
+		}
+		if (columnRange == null) {
+			if (other.columnRange != null) {
+				return false;
+			}
+		} else if (!columnRange.equals(other.columnRange)) {
+			return false;
+		}
+		if (csvDelimiter == null) {
+			if (other.csvDelimiter != null) {
+				return false;
+			}
+		} else if (!csvDelimiter.equals(other.csvDelimiter)) {
+			return false;
+		}
+		if (emptyCellPolicy == null) {
+			if (other.emptyCellPolicy != null) {
+				return false;
+			}
+		} else if (!emptyCellPolicy.equals(other.emptyCellPolicy)) {
+			return false;
+		}
+		if (emptyCellValue == null) {
+			if (other.emptyCellValue != null) {
+				return false;
+			}
+		} else if (!emptyCellValue.equals(other.emptyCellValue)) {
+			return false;
+		}
+		if (excludeFirstRow != other.excludeFirstRow) {
+			return false;
+		}
+		if (ignoreBlankRows != other.ignoreBlankRows) {
+			return false;
+		}
+		if (outputFormat == null) {
+			if (other.outputFormat != null) {
+				return false;
+			}
+		} else if (!outputFormat.equals(other.outputFormat)) {
+			return false;
+		}
+		if (rowRange == null) {
+			if (other.rowRange != null) {
+				return false;
+			}
+		} else if (!rowRange.equals(other.rowRange)) {
+			return false;
+		}
+		return true;
+	}
+
+	@ConfigurationBean(uri = SpreadsheetImportActivity.URI + "/Mapping")
+	public static class Mapping {
+		private String column, port;
+
+		public Mapping() {
+		}
+
+		public String getColumn() {
+			return column;
+		}
+
+		@ConfigurationProperty(name = "column", label = "Column", description = "The name of the column")
+		public void setColumn(String column) {
+			this.column = column;
+		}
+
+		public String getPort() {
+			return port;
+		}
+
+		@ConfigurationProperty(name = "port", label = "Port", description = "The name of the port")
+		public void setPort(String port) {
+			this.port = port;
+		}
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportHealthChecker.java b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportHealthChecker.java
new file mode 100644
index 0000000..35db532
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportHealthChecker.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import java.util.List;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+import net.sf.taverna.t2.workflowmodel.Processor;
+import net.sf.taverna.t2.workflowmodel.health.HealthCheck;
+import net.sf.taverna.t2.workflowmodel.health.HealthChecker;
+import net.sf.taverna.t2.visit.VisitReport;
+import net.sf.taverna.t2.visit.VisitReport.Status;
+
+
+/**
+ * Health checker for SpreadsheetImport activities.
+ *
+ * @author David Withers
+ */
+public class SpreadsheetImportHealthChecker implements HealthChecker<SpreadsheetImportActivity> {
+
+	public boolean canVisit(Object subject) {
+		return (subject != null && subject instanceof SpreadsheetImportActivity);
+	}
+
+	public VisitReport visit(SpreadsheetImportActivity activity, List<Object> ancestors) {
+		Processor p = (Processor) VisitReport.findAncestor(ancestors, Processor.class);
+		if (p == null) {
+			return null;
+		}
+		JsonNode configuration = activity.getConfiguration();
+		if (configuration == null) {
+			return new VisitReport(HealthCheck.getInstance(), p, "Spreadsheet import has not been configured", HealthCheck.NO_CONFIGURATION, Status.SEVERE);
+		}
+		return new VisitReport(HealthCheck.getInstance(), p, "Spreadsheet OK", HealthCheck.NO_PROBLEM, Status.OK);
+	}
+
+	public boolean isTimeConsuming() {
+		return false;
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetOutputFormat.java b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetOutputFormat.java
new file mode 100644
index 0000000..d1aaca8
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetOutputFormat.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+/**
+ * Enumeration of the formats for output of spreadsheet cell values.
+ * <p>
+ * <dl>
+ * <dt>PORT_PER_COLUMN</dt>
+ * <dd>One port of depth 1 (a list) per column</dd>
+ * <dt>SINGLE_PORT</dt>
+ * <dd>A single port of depth 0, formatted as CSV</dd>
+ * </dl>
+ *
+ * @author David Withers
+ */
+public enum SpreadsheetOutputFormat {
+	PORT_PER_COLUMN, SINGLE_PORT
+}
diff --git a/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetReadException.java b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetReadException.java
new file mode 100644
index 0000000..9cd4ba8
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetReadException.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+/**
+ * Exception thrown when a spreadsheet cannot be read due to an IO error or when the file format is
+ * not supported.
+ * 
+ * @author David Withers
+ */
+public class SpreadsheetReadException extends Exception {
+
+	private static final long serialVersionUID = -823966225836697180L;
+
+	/**
+	 * Constructs a new SpreadsheetReadException with null as its detail message.
+	 */
+	public SpreadsheetReadException() {
+	}
+
+	/**
+	 * Constructs a new SpreadsheetReadException with the specified detail message.
+	 * 
+	 * @param message
+	 */
+	public SpreadsheetReadException(String message) {
+		super(message);
+	}
+
+	/**
+	 * Constructs a new SpreadsheetReadException with the specified cause and a detail message of
+	 * (cause==null ? null : cause.toString()) (which typically contains the class and detail
+	 * message of cause).
+	 * 
+	 * @param cause
+	 */
+	public SpreadsheetReadException(Throwable cause) {
+		super(cause);
+	}
+
+	/**
+	 * Constructs a new SpreadsheetReadException with the specified detail message and cause.
+	 * 
+	 * @param message
+	 * @param cause
+	 */
+	public SpreadsheetReadException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetReader.java b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetReader.java
new file mode 100644
index 0000000..79c92d1
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetReader.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import java.io.InputStream;
+
+/**
+ * Interface for reading a spreadsheet from an input stream.
+ * 
+ * @author David Withers
+ */
+public interface SpreadsheetReader {
+
+	/**
+	 * Reads an InputStream and passes spreadsheet cell data values, row by row, to the
+	 * rowProcessor.
+	 * 
+	 * @param inputStream
+	 *            the stream to read
+	 * @param rowProcessor
+	 *            the rowProcessor to write rows of data values to
+	 * @param rowRange
+	 *            the rows to read
+	 * @param columnRange
+	 *            the columns to read
+	 * @param ignoreBlankRows
+	 *            whether to ignore blank rows
+	 * @throws SpreadsheetReadException
+	 *             if there's an error reading the stream or the stream is not a valid spreadsheet
+	 */
+	public void read(InputStream inputStream, Range rowRange, Range columnRange, boolean ignoreBlankRows,
+			SpreadsheetRowProcessor rowProcessor) throws SpreadsheetReadException;
+
+}
\ No newline at end of file
diff --git a/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetRowProcessor.java b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetRowProcessor.java
new file mode 100644
index 0000000..98bc466
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetRowProcessor.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import java.util.SortedMap;
+
+/**
+ * Interface for processing a row of data from a {@link ExcelSpreadsheetReader}.
+ * 
+ * @author David Withers
+ */
+public interface SpreadsheetRowProcessor {
+
+	/**
+	 * Called by a {@link SpreadsheetReader} when all the cells of a row have been read.
+	 * 
+	 * @param rowIndex
+	 *            the index of the spreadsheet row
+	 * @param rowData
+	 *            the map of column index -> cell data for the spreadsheet row
+	 */
+	public void processRow(int rowIndex, SortedMap<Integer, String> rowData);
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetUtils.java b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetUtils.java
new file mode 100644
index 0000000..970b3b9
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetUtils.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+/**
+ * Utility functions for handling spreadsheet column labels and indexes.
+ *
+ * @author David Withers
+ */
+public class SpreadsheetUtils {
+
+	/**
+	 * Converts a column label to a (0 based) column index.
+	 * <p>
+	 * Label must match the format [A-Z]+ for result to be valid.
+	 *
+	 * @param column
+	 *            the column label
+	 * @return the (0 based) column index
+	 */
+	public static int getColumnIndex(String column) {
+		int result = -1;
+		char a = 'A' - 1;
+		char[] chars = column.toCharArray();
+		for (int i = 0; i < chars.length; i++) {
+			int pos = (chars[i] - a);
+			result += pos * Math.pow(26, chars.length - i - 1);
+		}
+		return result;
+	}
+
+	/**
+	 * Converts a (0 based) column index to a column label.
+	 *
+	 * @param column
+	 *            the (0 based) column index
+	 * @return the column label
+	 */
+	public static String getColumnLabel(int column) {
+		StringBuilder result = new StringBuilder();
+		while (column >= 0) {
+			result.insert(0, (char) ((char) (column % 26) + 'A'));
+			column = (column / 26) - 1;
+		}
+		return result.toString();
+	}
+
+	/**
+	 * Returns the port name for the column label.
+	 *
+	 * @param columnLabel
+	 *            the column label
+	 * @param columnNameMapping
+	 * @return the port name for the column label
+	 */
+	public static String getPortName(String columnLabel, JsonNode jsonNode) {
+		String portName = columnLabel;
+		if (jsonNode != null && jsonNode.has("columnNames")) {
+			for (JsonNode mappingNode : jsonNode.get("columnNames")) {
+				if (columnLabel.equals(mappingNode.get("column").textValue())) {
+					portName = mappingNode.get("port").textValue();
+					break;
+				}
+			}
+		}
+		return portName;
+	}
+
+	/**
+	 * Returns the port name for the column index.
+	 *
+	 * @param columnIndex
+	 *            the column index
+	 * @param columnNameMapping
+	 * @return the port name for the column index
+	 */
+	public static String getPortName(int columnIndex, JsonNode jsonNode) {
+		return getPortName(getColumnLabel(columnIndex), jsonNode);
+	}
+
+	/**
+	 * @param jsonNode
+	 * @return
+	 */
+	public static Range getRange(JsonNode jsonNode) {
+		Range range = new Range();
+		if (jsonNode != null) {
+			if (jsonNode.has("start")) {
+				range.setStart(jsonNode.get("start").intValue());
+			}
+			if (jsonNode.has("end")) {
+				range.setEnd(jsonNode.get("end").intValue());
+			}
+			if (jsonNode.has("excludes")) {
+				List<Range> excludes = new ArrayList<>();
+				for (JsonNode rangeNode : jsonNode.get("excludes")) {
+					excludes.add(getRange(rangeNode));
+				}
+				range.setExcludes(excludes);
+			}
+		}
+		return range;
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/package.html b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/package.html
new file mode 100644
index 0000000..356b9b2
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/java/net/sf/taverna/t2/activities/spreadsheet/package.html
@@ -0,0 +1,3 @@
+<body>
+Contains the activity classes required to include spreadsheet files within a DataFlow.
+</body>
\ No newline at end of file
diff --git a/taverna-spreadsheet-import-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker b/taverna-spreadsheet-import-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
new file mode 100644
index 0000000..e8dfa9a
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
@@ -0,0 +1 @@
+net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportHealthChecker
\ No newline at end of file
diff --git a/taverna-spreadsheet-import-activity/src/main/resources/META-INF/spring/spreadsheetimport-activity-context-osgi.xml b/taverna-spreadsheet-import-activity/src/main/resources/META-INF/spring/spreadsheetimport-activity-context-osgi.xml
new file mode 100644
index 0000000..577b30b
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/resources/META-INF/spring/spreadsheetimport-activity-context-osgi.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans:beans xmlns="http://www.springframework.org/schema/osgi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:beans="http://www.springframework.org/schema/beans"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans
+                                 http://www.springframework.org/schema/beans/spring-beans.xsd
+                                 http://www.springframework.org/schema/osgi
+                                 http://www.springframework.org/schema/osgi/spring-osgi.xsd">
+
+	<service ref="spreadsheetImportActivityHealthChecker" interface="net.sf.taverna.t2.workflowmodel.health.HealthChecker" />
+
+	<service ref="spreadsheetImportActivityFactory" interface="net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory" />
+
+	<reference id="edits" interface="net.sf.taverna.t2.workflowmodel.Edits" />
+
+</beans:beans>
diff --git a/taverna-spreadsheet-import-activity/src/main/resources/META-INF/spring/spreadsheetimport-activity-context.xml b/taverna-spreadsheet-import-activity/src/main/resources/META-INF/spring/spreadsheetimport-activity-context.xml
new file mode 100644
index 0000000..031ab52
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/resources/META-INF/spring/spreadsheetimport-activity-context.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+	<bean id="spreadsheetImportActivityHealthChecker" class="net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportHealthChecker" />
+
+	<bean id="spreadsheetImportActivityFactory" class="net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportActivityFactory">
+		<property name="edits" ref="edits" />
+	</bean>
+
+</beans>
diff --git a/taverna-spreadsheet-import-activity/src/main/resources/schema.json b/taverna-spreadsheet-import-activity/src/main/resources/schema.json
new file mode 100644
index 0000000..b351137
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/main/resources/schema.json
@@ -0,0 +1,126 @@
+{
+    "$schema": "http://json-schema.org/draft-03/schema#",
+    "id": "http://ns.taverna.org.uk/2010/activity/spreadsheet-import.schema.json",
+    "title": "Spreadsheet import activity configuration",
+    "type": "object",
+    "properties": {
+        "@context": {
+            "description": "JSON-LD context for interpreting the configuration as RDF",
+            "required": true,
+            "enum": ["http://ns.taverna.org.uk/2010/activity/spreadsheet-import.context.json"]
+        },
+        "columnRange": {
+            "title": "Column Range",
+            "description": "The range of columns to be imported (e.g. columns 2 to 7)",
+            "type": "object",
+            "$ref": "#/definitions/range",
+            "default": {"start": 0, "end": 1},
+            "required": true
+        },
+        "rowRange": {
+            "title": "Row Range",
+            "description": "The range of rows to be imported (e.g. rows 1 to 15)",
+            "type": "object",
+            "$ref": "#/definitions/range",
+            "default": {"start": 0, "end": -1},
+            "required": true
+        },
+        "emptyCellValue": {
+            "title": "Empty Cell Value",
+            "description": "The value to use for empty cells. The default is \"\"",
+            "type": "string",
+            "default": "",
+            "required": true
+        },
+        "columnNames": {
+            "title": "Column Name Mapping",
+            "description": "Mapping from column to port names",
+            "type": "array",
+            "elements": {
+            	"type": "object",
+                "properties": {
+           			"column": {
+            			"title": "Column",
+            			"description": "The name of the column",
+            			"type": "string",
+ 		         		"required": true
+            		},
+           			"port": {
+            			"title": "Port",
+            			"description": "The name of the port",
+            			"type": "string",
+		          		"required": true
+           			}
+            	}
+            },
+            "required": false
+        },
+        "allRows": {
+            "title": "Import All Rows",
+            "description": "Imports all the rows containing data",
+            "type": "boolean",
+            "default": true,
+            "required": true
+        },
+        "excludeFirstRow": {
+            "title": "Exclude First Row",
+            "description": "Excludes the first row from the import",
+            "type": "boolean",
+            "default": false,
+            "required": true
+        },
+        "ignoreBlankRows": {
+            "title": "Ignore Blank Rows",
+            "description": "Excludes blank rows from the import",
+            "type": "boolean",
+            "default": false,
+            "required": true
+        },
+        "emptyCellPolicy": {
+            "title": "Empty Cell Policy",
+            "description": "Policy for handling empty cells",
+            "enum": ["EMPTY_STRING", "USER_DEFINED", "GENERATE_ERROR"],
+            "default": "EMPTY_STRING",
+            "required": true
+        },
+        "outputFormat": {
+            "title": "Output Format",
+            "description": "How the activity outputs are to be formatted",
+            "enum": ["PORT_PER_COLUMN", "SINGLE_PORT"],
+            "default": "PORT_PER_COLUMN",
+            "required": true
+        },
+        "csvDelimiter": {
+            "title": "CSV Delimiter",
+            "description": "The delimiter to use for CSV input files. The default is ','",
+            "type": "string",
+            "default": ",",
+            "required": true
+        }
+    },
+    "definitions": {
+    	"range": {
+            "properties": {
+           		"start": {
+            		"title": "Start",
+            		"description": "The start of the range",
+            		"type": "integer",
+		          	"required": true
+           		},
+           		"end": {
+            		"title": "End",
+            		"description": "The end of the range",
+            		"type": "integer",
+ 		         	"required": true
+            	},
+           		"excludes": {
+            		"title": "Excludes Ranges",
+            		"description": "The ranges to exclude from this range",
+            		"type": "array",
+             		"items": { "type": "object", "$ref": "#/definitions/range" },
+ 		         	"required": false
+            	}
+            }
+    	}
+    }
+}
diff --git a/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/CSVSpreadsheetReaderTest.java b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/CSVSpreadsheetReaderTest.java
new file mode 100644
index 0000000..fc04468
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/CSVSpreadsheetReaderTest.java
@@ -0,0 +1,259 @@
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.SortedMap;
+import java.util.Map.Entry;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class CSVSpreadsheetReaderTest {
+
+	private SpreadsheetReader spreadsheetReader;
+
+	@Before
+	public void setUp() throws Exception {
+		spreadsheetReader = new CSVSpreadsheetReader();
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.OdfSpreadsheetReader#read(java.io.InputStream, net.sf.taverna.t2.activities.spreadsheet.Range, net.sf.taverna.t2.activities.spreadsheet.Range, net.sf.taverna.t2.activities.spreadsheet.SpreadsheetRowProcessor)}.
+	 */
+	@Test
+	public void testRead() throws Exception {
+		String[] testFiles2 = new String[] { "/test-spreadsheet.csv" };
+		for (int i = 0; i < testFiles2.length; i++) {
+			final List<Integer> rows = new ArrayList<Integer>(Arrays.asList(0, 1, 2, 3, 4, 5));
+			spreadsheetReader.read(getClass().getResourceAsStream(testFiles2[i]), new Range(0, 5), new Range(0, 4), false,
+					new SpreadsheetRowProcessor() {
+
+						public void processRow(int rowIndex, SortedMap<Integer, String> row) {
+							assertTrue(rows.remove((Integer) rowIndex));
+							List<Integer> columns = new ArrayList<Integer>(Arrays.asList(0, 1, 2,
+									3, 4));
+							for (Entry<Integer, String> cell : row.entrySet()) {
+								assertTrue(columns.remove(cell.getKey()));
+								if (rowIndex == 0) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 1) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 2) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("TRUE", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("15/06/09", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertNull(cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("2", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 3 || rowIndex == 4) {
+									if (cell.getKey().equals(4)) {
+										assertNull(cell.getValue());
+									} else {
+										assertEquals("X", cell.getValue());
+									}
+								} else {
+									assertNull(cell.getValue());
+								}
+							}
+							assertTrue(columns.isEmpty());
+						}
+					});
+			assertTrue(rows.isEmpty());
+
+		}
+
+	}
+
+	@Test(expected=SpreadsheetReadException.class)
+	public void testReadException() throws Exception {
+		spreadsheetReader.read(new InputStream() {
+			public int read() throws IOException {
+				throw new IOException();
+			}			
+		}, new Range(0,1), new Range(0,1), false, new SpreadsheetRowProcessor() {
+			public void processRow(int rowIndex, SortedMap<Integer, String> rowData) {				
+			}			
+		});
+	}	
+	
+	@Test
+	public void testReadAllRows() throws Exception {
+		String[] testFiles2 = new String[] { "/test-spreadsheet.csv" };
+		for (int i = 0; i < testFiles2.length; i++) {
+			final List<Integer> rows = new ArrayList<Integer>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7,
+					8, 9, 10, 11, 12, 13, 14));
+			spreadsheetReader.read(getClass().getResourceAsStream(testFiles2[i]), new Range(0, -1), new Range(0, 4), false,
+					new SpreadsheetRowProcessor() {
+
+						public void processRow(int rowIndex, SortedMap<Integer, String> row) {
+							assertTrue(rows.remove((Integer) rowIndex));
+							List<Integer> columns = new ArrayList<Integer>(Arrays.asList(0, 1, 2,
+									3, 4));
+							for (Entry<Integer, String> cell : row.entrySet()) {
+								assertTrue(columns.remove(cell.getKey()));
+								if (rowIndex == 0) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 1) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 2) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("TRUE", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("15/06/09", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertNull(cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("2", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 3 || rowIndex == 4) {
+									if (cell.getKey().equals(4)) {
+										assertNull(cell.getValue());
+									} else {
+										assertEquals("X", cell.getValue());
+									}
+								} else if (rowIndex == 5 || rowIndex == 6 || rowIndex == 7
+										|| rowIndex == 8) {
+									assertNull(cell.getValue());
+								} else if (rowIndex == 9 || rowIndex == 10 || rowIndex == 11
+										|| rowIndex == 12 || rowIndex == 13 || rowIndex == 14) {
+									if (cell.getKey().equals(4)) {
+										assertNull(cell.getValue());
+									} else {
+										assertEquals("y", cell.getValue());
+									}
+								}
+							}
+							assertTrue(columns.isEmpty());
+						}
+					});
+			assertTrue(rows.isEmpty());
+		}
+	}
+
+	@Test
+	public void testIgnoreBlankRows() throws Exception {
+		String[] testFiles2 = new String[] { "/test-spreadsheet.csv" };
+		for (int i = 0; i < testFiles2.length; i++) {
+			final List<Integer> rows = new ArrayList<Integer>(Arrays.asList(0, 1, 2, 3, 4, 9, 10, 11, 12, 13, 14));
+			spreadsheetReader.read(getClass().getResourceAsStream(testFiles2[i]), new Range(0, -1), new Range(0, 4), true,
+					new SpreadsheetRowProcessor() {
+
+						public void processRow(int rowIndex, SortedMap<Integer, String> row) {
+							assertTrue(rows.remove((Integer) rowIndex));
+							List<Integer> columns = new ArrayList<Integer>(Arrays.asList(0, 1, 2,
+									3, 4));
+							for (Entry<Integer, String> cell : row.entrySet()) {
+								assertTrue(columns.remove(cell.getKey()));
+								if (rowIndex == 0) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 1) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 2) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("TRUE", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("15/06/09", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertNull(cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("2", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 3 || rowIndex == 4) {
+									if (cell.getKey().equals(4)) {
+										assertNull(cell.getValue());
+									} else {
+										assertEquals("X", cell.getValue());
+									}
+								} else if (rowIndex == 9 || rowIndex == 10 || rowIndex == 11
+										|| rowIndex == 12 || rowIndex == 13 || rowIndex == 14) {
+									if (cell.getKey().equals(4)) {
+										assertNull(cell.getValue());
+									} else {
+										assertEquals("y", cell.getValue());
+									}
+								}
+							}
+							assertTrue(columns.isEmpty());
+						}
+					});
+			assertTrue(rows.isEmpty());
+		}
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/ExcelSpreadsheetReaderTest.java b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/ExcelSpreadsheetReaderTest.java
new file mode 100644
index 0000000..90960b6
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/ExcelSpreadsheetReaderTest.java
@@ -0,0 +1,299 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.SortedMap;
+import java.util.Map.Entry;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Unit tests for {@link net.sf.taverna.t2.activities.spreadsheet.ExcelSpreadsheetReader}.
+ * 
+ * @author David Withers
+ */
+public class ExcelSpreadsheetReaderTest {
+
+	private SpreadsheetReader spreadsheetReader;
+	private String[] testFiles = new String[] {"/test-spreadsheet.xlsx" , "/test-spreadsheet.xls"};
+
+	@Before
+	public void setUp() throws Exception {
+		spreadsheetReader = new ExcelSpreadsheetReader();
+	}
+
+	/**
+	 * Test method for
+	 * {@link net.sf.taverna.t2.activities.spreadsheet.ExcelSpreadsheetReader#read(java.io.InputStream, net.sf.taverna.t2.activities.spreadsheet.SpreadsheetRowProcessor)}
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	public void testRead() throws Exception {
+		for (int i = 0; i < testFiles.length; i++) {
+			final List<Integer> rows = new ArrayList<Integer>(Arrays.asList(0, 1, 2, 3, 4, 5));
+			spreadsheetReader.read(getClass().getResourceAsStream(testFiles[i]), new Range(0, 5),
+					new Range(0, 4), false, new SpreadsheetRowProcessor() {
+
+						public void processRow(int rowIndex, SortedMap<Integer, String> row) {
+							assertTrue(rows.remove((Integer) rowIndex));
+							List<Integer> columns = new ArrayList<Integer>(Arrays.asList(0, 1, 2,
+									3, 4));
+							for (Entry<Integer, String> cell : row.entrySet()) {
+								assertTrue(columns.remove(cell.getKey()));
+								if (rowIndex == 0) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5.0", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 1) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5.0", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 2) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("true", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertTrue("Unexpected date format: " + cell.getValue(), cell.getValue().matches("Mon Jun 15 00:00:00 ....? 2009"));
+									} else if (cell.getKey().equals(2)) {
+										assertNull(cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("2.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 3 || rowIndex == 4) {
+									if (cell.getKey().equals(4)) {
+										assertNull(cell.getValue());
+									} else {
+										assertEquals("X", cell.getValue());
+									}
+								} else if (rowIndex == 5) {
+									assertNull(cell.getValue());
+								}
+							}
+							assertTrue(columns.isEmpty());
+						}
+					});
+			assertTrue(rows.isEmpty());
+		}
+	}
+
+	@Test(expected=SpreadsheetReadException.class)
+	public void testReadIOException() throws Exception {
+		spreadsheetReader.read(new InputStream() {
+			public int read() throws IOException {
+				throw new IOException();
+			}			
+		}, new Range(0,1), new Range(0,1), false, new SpreadsheetRowProcessor() {
+			public void processRow(int rowIndex, SortedMap<Integer, String> rowData) {				
+			}			
+		});
+	}	
+	
+	@Test(expected=SpreadsheetReadException.class)
+	public void testReadInvalidFormatException() throws Exception {
+		spreadsheetReader.read(getClass().getResourceAsStream("/test-spreadsheet.ods"), new Range(0,1), new Range(0,1), false, new SpreadsheetRowProcessor() {
+			public void processRow(int rowIndex, SortedMap<Integer, String> rowData) {				
+			}			
+		});
+	}	
+	
+	@Test(expected=SpreadsheetReadException.class)
+	public void testReadIllegalArgumentException() throws Exception {
+		spreadsheetReader.read(getClass().getResourceAsStream("/test-spreadsheet.csv"), new Range(0,1), new Range(0,1), false, new SpreadsheetRowProcessor() {
+			public void processRow(int rowIndex, SortedMap<Integer, String> rowData) {				
+			}			
+		});
+	}	
+	
+	@Test
+	public void testReadAllRows() throws Exception {
+		for (int i = 0; i < testFiles.length; i++) {
+			final List<Integer> rows = new ArrayList<Integer>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7,
+					8, 9, 10, 11, 12, 13, 14));
+			spreadsheetReader.read(getClass().getResourceAsStream(testFiles[i]), new Range(0, -1), new Range(0, 4), false,
+					new SpreadsheetRowProcessor() {
+
+						public void processRow(int rowIndex, SortedMap<Integer, String> row) {
+							assertTrue(rows.remove((Integer) rowIndex));
+							List<Integer> columns = new ArrayList<Integer>(Arrays.asList(0, 1, 2,
+									3, 4));
+							for (Entry<Integer, String> cell : row.entrySet()) {
+								assertTrue(columns.remove(cell.getKey()));
+								if (rowIndex == 0) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5.0", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 1) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5.0", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 2) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("true", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertTrue("Unexpected date format: " + cell.getValue(), cell.getValue().matches("Mon Jun 15 00:00:00 ....? 2009"));
+									} else if (cell.getKey().equals(2)) {
+										assertNull(cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("2.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 3 || rowIndex == 4) {
+									if (cell.getKey().equals(4)) {
+										assertNull(cell.getValue());
+									} else {
+										assertEquals("X", cell.getValue());
+									}
+								} else if (rowIndex == 5 || rowIndex == 6 || rowIndex == 7
+										|| rowIndex == 8) {
+									assertNull(cell.getValue());
+								} else if (rowIndex == 9 || rowIndex == 10 || rowIndex == 11
+										|| rowIndex == 12 || rowIndex == 13 || rowIndex == 14) {
+									if (cell.getKey().equals(4)) {
+										assertNull(cell.getValue());
+									} else {
+										assertEquals("y", cell.getValue());
+									}
+								}
+							}
+							assertTrue(columns.isEmpty());
+						}
+					});
+			assertTrue(rows.isEmpty());
+		}
+	}
+
+	@Test
+	public void testIgnoreBlankRows() throws Exception {
+		for (int i = 0; i < testFiles.length; i++) {
+			final List<Integer> rows = new ArrayList<Integer>(Arrays.asList(0, 1, 2, 3, 4, 9, 10, 11, 12, 13, 14));
+			spreadsheetReader.read(getClass().getResourceAsStream(testFiles[i]), new Range(0, -1), new Range(0, 4), true,
+					new SpreadsheetRowProcessor() {
+
+						public void processRow(int rowIndex, SortedMap<Integer, String> row) {
+							assertTrue(rows.remove((Integer) rowIndex));
+							List<Integer> columns = new ArrayList<Integer>(Arrays.asList(0, 1, 2,
+									3, 4));
+							for (Entry<Integer, String> cell : row.entrySet()) {
+								assertTrue(columns.remove(cell.getKey()));
+								if (rowIndex == 0) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5.0", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 1) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5.0", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 2) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("true", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertTrue("Unexpected date format: " + cell.getValue(), cell.getValue().matches("Mon Jun 15 00:00:00 ....? 2009"));
+									} else if (cell.getKey().equals(2)) {
+										assertNull(cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("2.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 3 || rowIndex == 4) {
+									if (cell.getKey().equals(4)) {
+										assertNull(cell.getValue());
+									} else {
+										assertEquals("X", cell.getValue());
+									}
+								} else if (rowIndex == 9 || rowIndex == 10 || rowIndex == 11
+										|| rowIndex == 12 || rowIndex == 13 || rowIndex == 14) {
+									if (cell.getKey().equals(4)) {
+										assertNull(cell.getValue());
+									} else {
+										assertEquals("y", cell.getValue());
+									}
+								}
+							}
+							assertTrue(columns.isEmpty());
+						}
+					});
+			assertTrue(rows.isEmpty());
+		}
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/ODFSpreadsheetReaderTest.java b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/ODFSpreadsheetReaderTest.java
new file mode 100644
index 0000000..055ef09
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/ODFSpreadsheetReaderTest.java
@@ -0,0 +1,293 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.SortedMap;
+import java.util.Map.Entry;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Unit tests for {@link net.sf.taverna.t2.activities.spreadsheet.ODFSpreadsheetReader}.
+ *
+ * @author David Withers
+ */
+public class ODFSpreadsheetReaderTest {
+
+	private SpreadsheetReader spreadsheetReader;
+
+	@Before
+	public void setUp() throws Exception {
+		spreadsheetReader = new ODFSpreadsheetReader();
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.OdfSpreadsheetReader#read(java.io.InputStream, net.sf.taverna.t2.activities.spreadsheet.Range, net.sf.taverna.t2.activities.spreadsheet.Range, net.sf.taverna.t2.activities.spreadsheet.SpreadsheetRowProcessor)}.
+	 */
+	@Test
+	public void testRead() throws Exception {
+		String[] testFiles2 = new String[] { "/test-spreadsheet.ods" };
+		for (int i = 0; i < testFiles2.length; i++) {
+			final List<Integer> rows = new ArrayList<Integer>(Arrays.asList(0, 1, 2, 3, 4, 5));
+			spreadsheetReader.read(getClass().getResourceAsStream(testFiles2[i]), new Range(0, 5), new Range(0, 4), false,
+					new SpreadsheetRowProcessor() {
+
+						public void processRow(int rowIndex, SortedMap<Integer, String> row) {
+							assertTrue(rows.remove((Integer) rowIndex));
+							List<Integer> columns = new ArrayList<Integer>(Arrays.asList(0, 1, 2,
+									3, 4));
+							for (Entry<Integer, String> cell : row.entrySet()) {
+								assertTrue(columns.remove(cell.getKey()));
+								if (rowIndex == 0) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5.0", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 1) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5.0", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 2) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("true", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("2009-06-15", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertNull(cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("2.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 3 || rowIndex == 4) {
+									if (cell.getKey().equals(4)) {
+										assertNull(cell.getValue());
+									} else {
+										assertEquals("X", cell.getValue());
+									}
+								} else {
+									assertNull(cell.getValue());
+								}
+							}
+							assertTrue(columns.isEmpty());
+						}
+					});
+			assertTrue(rows.isEmpty());
+
+		}
+
+	}
+
+	@Test(expected=SpreadsheetReadException.class)
+	public void testReadException() throws Exception {
+		spreadsheetReader.read(getClass().getResourceAsStream("/test-spreadsheet.csv"), new Range(0,1), new Range(0,1), false, new SpreadsheetRowProcessor() {
+			public void processRow(int rowIndex, SortedMap<Integer, String> rowData) {				
+			}
+			
+		});
+	}	
+	
+	@Test(expected=RuntimeException.class)
+	public void testReadRuntimeException() throws Exception {
+		spreadsheetReader.read(new InputStream() {
+			public int read() throws IOException {
+				throw new RuntimeException();
+			}			
+		}, new Range(0,1), new Range(0,1), false, new SpreadsheetRowProcessor() {
+			public void processRow(int rowIndex, SortedMap<Integer, String> rowData) {				
+			}			
+		});
+	}	
+	
+	@Test
+	public void testReadAllRows() throws Exception {
+		String[] testFiles2 = new String[] { "/test-spreadsheet.ods" };
+		for (int i = 0; i < testFiles2.length; i++) {
+			final List<Integer> rows = new ArrayList<Integer>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7,
+					8, 9, 10, 11, 12, 13, 14));
+			spreadsheetReader.read(getClass().getResourceAsStream(testFiles2[i]), new Range(0, -1), new Range(0, 4), false,
+					new SpreadsheetRowProcessor() {
+
+						public void processRow(int rowIndex, SortedMap<Integer, String> row) {
+							assertTrue(rows.remove((Integer) rowIndex));
+							List<Integer> columns = new ArrayList<Integer>(Arrays.asList(0, 1, 2,
+									3, 4));
+							for (Entry<Integer, String> cell : row.entrySet()) {
+								assertTrue(columns.remove(cell.getKey()));
+								if (rowIndex == 0) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5.0", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 1) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5.0", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 2) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("true", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("2009-06-15", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertNull(cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("2.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 3 || rowIndex == 4) {
+									if (cell.getKey().equals(4)) {
+										assertNull(cell.getValue());
+									} else {
+										assertEquals("X", cell.getValue());
+									}
+								} else if (rowIndex == 5 || rowIndex == 6 || rowIndex == 7
+										|| rowIndex == 8) {
+									assertNull(cell.getValue());
+								} else if (rowIndex == 9 || rowIndex == 10 || rowIndex == 11
+										|| rowIndex == 12 || rowIndex == 13 || rowIndex == 14) {
+									if (cell.getKey().equals(4)) {
+										assertNull(cell.getValue());
+									} else {
+										assertEquals("y", cell.getValue());
+									}
+								}
+							}
+							assertTrue(columns.isEmpty());
+						}
+					});
+			assertTrue(rows.isEmpty());
+		}
+	}
+
+	@Test
+	public void testIgnoreBlankRows() throws Exception {
+		String[] testFiles2 = new String[] { "/test-spreadsheet.ods" };
+		for (int i = 0; i < testFiles2.length; i++) {
+			final List<Integer> rows = new ArrayList<Integer>(Arrays.asList(0, 1, 2, 3, 4, 9, 10, 11, 12, 13, 14));
+			spreadsheetReader.read(getClass().getResourceAsStream(testFiles2[i]), new Range(0, -1), new Range(0, 4), true,
+					new SpreadsheetRowProcessor() {
+
+						public void processRow(int rowIndex, SortedMap<Integer, String> row) {
+							assertTrue(rows.remove((Integer) rowIndex));
+							List<Integer> columns = new ArrayList<Integer>(Arrays.asList(0, 1, 2,
+									3, 4));
+							for (Entry<Integer, String> cell : row.entrySet()) {
+								assertTrue(columns.remove(cell.getKey()));
+								if (rowIndex == 0) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5.0", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 1) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("A", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("5.0", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertEquals("C", cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("1.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 2) {
+									if (cell.getKey().equals(0)) {
+										assertEquals("true", cell.getValue());
+									} else if (cell.getKey().equals(1)) {
+										assertEquals("2009-06-15", cell.getValue());
+									} else if (cell.getKey().equals(2)) {
+										assertNull(cell.getValue());
+									} else if (cell.getKey().equals(3)) {
+										assertEquals("2.0", cell.getValue());
+									} else {
+										assertNull(cell.getValue());
+									}
+								} else if (rowIndex == 3 || rowIndex == 4) {
+									if (cell.getKey().equals(4)) {
+										assertNull(cell.getValue());
+									} else {
+										assertEquals("X", cell.getValue());
+									}
+								} else if (rowIndex == 9 || rowIndex == 10 || rowIndex == 11
+										|| rowIndex == 12 || rowIndex == 13 || rowIndex == 14) {
+									if (cell.getKey().equals(4)) {
+										assertNull(cell.getValue());
+									} else {
+										assertEquals("y", cell.getValue());
+									}
+								}
+							}
+							assertTrue(columns.isEmpty());
+						}
+					});
+			assertTrue(rows.isEmpty());
+		}
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/RangeTest.java b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/RangeTest.java
new file mode 100644
index 0000000..ffe9032
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/RangeTest.java
@@ -0,0 +1,195 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Unit tests for {@link net.sf.taverna.t2.activities.spreadsheet.Range}.
+ * 
+ * @author David Withers
+ */
+public class RangeTest {
+
+	private Range range;
+
+	@Before
+	public void setUp() throws Exception {
+		range = new Range(1, 5);
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.Range#Range(int, int)}.
+	 */
+	@Test
+	public void testRangeIntInt() {
+		Range range = new Range(3, 9);
+		assertEquals(3, range.getStart());
+		assertEquals(9, range.getEnd());
+	}
+
+	/**
+	 * Test method for
+	 * {@link net.sf.taverna.t2.activities.spreadsheet.Range#Range(int, int, net.sf.taverna.t2.activities.spreadsheet.Range)}
+	 * .
+	 */
+	@Test
+	public void testRangeIntIntRange() {
+		Range range = new Range(0, 12, new Range(3, 9));
+		assertEquals(0, range.getStart());
+		assertEquals(12, range.getEnd());
+		assertTrue(range.contains(0));
+		assertTrue(range.contains(2));
+		assertFalse(range.contains(5));
+	}
+
+	/**
+	 * Test method for
+	 * {@link net.sf.taverna.t2.activities.spreadsheet.Range#Range(int, int, java.util.List)}.
+	 */
+	@Test
+	public void testRangeIntIntListOfRange() {
+		Range range = new Range(-2, 12, Arrays.asList(new Range(3, 5), new Range(10, 11)));
+		assertEquals(-2, range.getStart());
+		assertEquals(12, range.getEnd());
+		assertTrue(range.contains(-2));
+		assertTrue(range.contains(-0));
+		assertTrue(range.contains(6));
+		assertTrue(range.contains(12));
+		assertFalse(range.contains(4));
+		assertFalse(range.contains(11));
+	}
+
+	/**
+	 * Test method for
+	 * {@link net.sf.taverna.t2.activities.spreadsheet.Range#Range(net.sf.taverna.t2.activities.spreadsheet.Range)}
+	 * .
+	 */
+	@Test
+	public void testRangeRange() {
+		Range rangeCopy = new Range(range);
+		assertEquals(rangeCopy, range);
+		assertEquals(range.getStart(), rangeCopy.getStart());
+		assertEquals(range.getEnd(), rangeCopy.getEnd());
+		range = new Range(0, 7, range);
+		rangeCopy = new Range(range);
+		assertFalse(rangeCopy.equals(new Range(2,3)));
+		assertEquals(rangeCopy, range);
+		assertEquals(range.getStart(), rangeCopy.getStart());
+		assertEquals(range.getEnd(), rangeCopy.getEnd());
+		assertArrayEquals(range.getRangeValues(), rangeCopy.getRangeValues());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.Range#contains(int)}.
+	 */
+	@Test
+	public void testContains() {
+		assertTrue(range.contains(2));
+		assertFalse(range.contains(7));
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.Range#getRangeValues()}.
+	 */
+	@Test
+	public void testGetRangeValues() {
+		assertArrayEquals(new int[] { 1, 2, 3, 4, 5 }, range.getRangeValues());
+		Range range2 = new Range(0, 7, range);
+		assertArrayEquals(new int[] { 0, 6, 7 }, range2.getRangeValues());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.Range#getStart()}.
+	 */
+	@Test
+	public void testGetStart() {
+		assertEquals(1, range.getStart());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.Range#setStart(int)}.
+	 */
+	@Test
+	public void testSetStart() {
+		range.setStart(2);
+		assertEquals(2, range.getStart());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.Range#getEnd()}.
+	 */
+	@Test
+	public void testGetEnd() {
+		assertEquals(5, range.getEnd());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.Range#setEnd(int)}.
+	 */
+	@Test
+	public void testSetEnd() {
+		range.setEnd(7);
+		assertEquals(7, range.getEnd());
+	}
+
+	/**
+	 * Test method for
+	 * {@link net.sf.taverna.t2.activities.spreadsheet.Range#addExclude(net.sf.taverna.t2.activities.spreadsheet.Range)}
+	 * .
+	 */
+	@Test
+	public void testAddExclude() {
+		range.addExclude(new Range(4, 4));
+		assertTrue(range.contains(2));
+		assertTrue(range.contains(5));
+		assertFalse(range.contains(4));
+	}
+
+	/**
+	 * Test method for
+	 * {@link net.sf.taverna.t2.activities.spreadsheet.Range#removeExclude(net.sf.taverna.t2.activities.spreadsheet.Range)}
+	 * .
+	 */
+	@Test
+	public void testRemoveExclude() {
+		range.addExclude(new Range(4, 4));
+		range.removeExclude(new Range(4, 4));
+		assertTrue(range.contains(4));
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.Range#toString()}.
+	 */
+	@Test
+	public void testToString() {
+		assertEquals("[1..5]", range.toString());
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportActivityFactoryTest.java b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportActivityFactoryTest.java
new file mode 100644
index 0000000..f97eb0b
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportActivityFactoryTest.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (C) 2010 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.net.URI;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+/**
+ *
+ * @author David Withers
+ */
+public class SpreadsheetImportActivityFactoryTest {
+
+	private SpreadsheetImportActivityFactory factory;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		factory = new SpreadsheetImportActivityFactory();
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportActivity#createActivity()}.
+	 */
+	@Test
+	public void testCreateActivity() {
+		SpreadsheetImportActivity createActivity = factory.createActivity();
+		assertNotNull(createActivity);
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportActivity#getActivityType()}.
+	 */
+	@Test
+	public void testGetActivityURI() {
+		assertEquals(URI.create(SpreadsheetImportActivity.URI), factory.getActivityType());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.rshell.RshellActivityFactory#getActivityConfigurationSchema()}.
+	 */
+	@Test
+	public void testGetActivityConfigurationSchema() {
+		assertTrue(factory.getActivityConfigurationSchema() instanceof JsonNode);
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportActivityTest.java b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportActivityTest.java
new file mode 100644
index 0000000..2cd2a2a
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportActivityTest.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import net.sf.taverna.t2.activities.testutils.ActivityInvoker;
+import net.sf.taverna.t2.workflowmodel.EditException;
+import net.sf.taverna.t2.workflowmodel.Edits;
+import net.sf.taverna.t2.workflowmodel.Port;
+import net.sf.taverna.t2.workflowmodel.impl.EditsImpl;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+/**
+ * Unit tests for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportActivityTest}.
+ *
+ * @author David Withers
+ */
+public class SpreadsheetImportActivityTest {
+
+	private SpreadsheetImportActivity activity;
+	private SpreadsheetImportActivityFactory activityFactory;
+	private Edits edits;
+	private ObjectNode configuration;
+
+	@Before
+	public void setUp() throws Exception {
+		activity = new SpreadsheetImportActivity();
+		activityFactory = new SpreadsheetImportActivityFactory();
+		edits = new EditsImpl();
+		activityFactory.setEdits(edits);
+		configuration = JsonNodeFactory.instance.objectNode();
+		configuration.put("columnRange", configuration.objectNode().put("start", 0).put("end", 1));
+		configuration.put("rowRange", configuration.objectNode().put("start", 0).put("end", -1));
+		configuration.put("emptyCellValue", "");
+		configuration.put("allRows", true);
+		configuration.put("excludeFirstRow", false);
+		configuration.put("ignoreBlankRows", false);
+		configuration.put("emptyCellPolicy", "EMPTY_STRING");
+		configuration.put("outputFormat", "PORT_PER_COLUMN");
+		configuration.put("csvDelimiter", ",");
+	}
+
+	@Test
+	public void testSpreadsheetImportActivity() {
+		assertNotNull(activity);
+		assertNull(activity.getConfiguration());
+	}
+
+	@Test
+	public void testConfigureSpreadsheetImportConfiguration() throws Exception {
+		assertEquals(0, activity.getInputPorts().size());
+		assertEquals(0, activity.getOutputPorts().size());
+		configuration.put("columnRange", configuration.objectNode().put("start", 0).put("end", 10));
+		ArrayNode columnNames = configuration.arrayNode();
+		columnNames.addObject().put("column", "C").put("port", "test");
+		configuration.put("columnNames", columnNames);
+		activity.configure(configuration);
+		for (ActivityInputPort activityInputPort : activityFactory.getInputPorts(configuration)) {
+			edits.getAddActivityInputPortEdit(activity, activityInputPort).doEdit();
+		}
+		for (ActivityOutputPort activityOutputPort : activityFactory.getOutputPorts(configuration)) {
+			edits.getAddActivityOutputPortEdit(activity, activityOutputPort).doEdit();
+		}
+		assertEquals(configuration, activity.getConfiguration());
+		assertEquals(1, activity.getInputPorts().size());
+		Set<ActivityOutputPort> outputPorts = activity.getOutputPorts();
+		int[] rangeValues = SpreadsheetUtils.getRange(configuration.get("columnRange")).getRangeValues();
+		assertEquals(rangeValues.length, outputPorts.size());
+		for (int i = 0; i < rangeValues.length; i++) {
+			String portName = SpreadsheetUtils.getPortName(rangeValues[i], configuration);
+			Port port = null;
+			for (Port outputPort : outputPorts) {
+				if (outputPort.getName().equals(portName)) {
+					port = outputPort;
+					break;
+				}
+			}
+			assertNotNull(port);
+			outputPorts.remove(port);
+		}
+		assertEquals(0, outputPorts.size());
+
+		configuration.put("outputFormat", SpreadsheetOutputFormat.SINGLE_PORT.name());
+		activity.configure(configuration);
+		assertEquals(1, activityFactory.getOutputPorts(configuration).size());
+	}
+
+	@Test
+	public void testGetConfiguration() throws ActivityConfigurationException {
+		assertNull(activity.getConfiguration());
+		activity.configure(configuration);
+		assertNotNull(activity.getConfiguration());
+		assertEquals(configuration, activity.getConfiguration());
+	}
+
+	@Test
+	public void testExecuteAsynchMapOfStringT2ReferenceAsynchronousActivityCallback() throws Exception {
+		configuration.put("columnRange", configuration.objectNode().put("start", 0).put("end", 3));
+		activity.configure(configuration);
+		for (ActivityInputPort activityInputPort : activityFactory.getInputPorts(configuration)) {
+			edits.getAddActivityInputPortEdit(activity, activityInputPort).doEdit();
+		}
+		for (ActivityOutputPort activityOutputPort : activityFactory.getOutputPorts(configuration)) {
+			edits.getAddActivityOutputPortEdit(activity, activityOutputPort).doEdit();
+		}
+		Map<String, Class<?>> outputs = new HashMap<String, Class<?>>();
+		outputs.put("A", String.class);
+		outputs.put("B", String.class);
+		outputs.put("C", String.class);
+		outputs.put("D", String.class);
+		Map<String, Object> results = ActivityInvoker.invokeAsyncActivity(activity, Collections.singletonMap("fileurl",
+				(Object) "src/test/resources/test-spreadsheet.xls"), outputs);
+		assertEquals(4, results.size());
+		assertTrue(results.get("A") instanceof List<?>);
+		assertEquals(15, ((List<?>) results.get("A")).size());
+		results = ActivityInvoker.invokeAsyncActivity(activity, Collections.singletonMap("fileurl",
+				(Object) "src/test/resources/test-spreadsheet.ods"), outputs);
+		assertEquals(4, results.size());
+		assertTrue(results.get("A") instanceof List<?>);
+		assertEquals(15, ((List<?>) results.get("A")).size());
+		results = ActivityInvoker.invokeAsyncActivity(activity, Collections.singletonMap("fileurl",
+				(Object) "src/test/resources/test-spreadsheet.csv"), outputs);
+		assertEquals(4, results.size());
+		assertTrue(results.get("A") instanceof List<?>);
+		assertEquals(15, ((List<?>) results.get("A")).size());
+
+		// CSV output
+		configuration.put("outputFormat", SpreadsheetOutputFormat.SINGLE_PORT.name());
+		activity.configure(configuration);
+		outputs = new HashMap<String, Class<?>>();
+		outputs.put("output", String.class);
+		results = ActivityInvoker.invokeAsyncActivity(activity, Collections.singletonMap("fileurl",
+				(Object) "src/test/resources/test-spreadsheet.xls"), outputs);
+		assertEquals(1, results.size());
+		assertTrue(results.get("output") instanceof String);
+		assertEquals(15, ((String) results.get("output")).split(System.getProperty("line.separator")).length);
+
+		// TSV output
+		configuration.put("csvDelimiter", "\t");
+		activity.configure(configuration);
+		results = ActivityInvoker.invokeAsyncActivity(activity, Collections.singletonMap("fileurl",
+				(Object) "src/test/resources/test-spreadsheet.csv"), outputs);
+		assertEquals(1, results.size());
+		assertTrue(results.get("output") instanceof String);
+		assertEquals(15, ((String) results.get("output")).split(System.getProperty("line.separator")).length);
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportConfigurationTest.java b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportConfigurationTest.java
new file mode 100644
index 0000000..918f6f7
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportConfigurationTest.java
@@ -0,0 +1,265 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import static org.junit.Assert.*;
+
+import java.util.Collections;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Unit tests for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration}.
+ *
+ * @author David Withers
+ */
+public class SpreadsheetImportConfigurationTest {
+
+	private SpreadsheetImportConfiguration configuration;
+	
+	@Before
+	public void setUp() throws Exception {
+		configuration = new SpreadsheetImportConfiguration();
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#SpreadsheetImportConfiguration()}.
+	 */
+	@Test
+	public void testSpreadsheetImportConfiguration() {
+		assertNotNull(configuration);
+		assertEquals(new Range(0, 1), configuration.getColumnRange());
+		assertEquals(new Range(0, -1), configuration.getRowRange());
+		assertEquals("", configuration.getEmptyCellValue());
+		assertEquals(SpreadsheetEmptyCellPolicy.EMPTY_STRING, configuration.getEmptyCellPolicy());
+		assertEquals(SpreadsheetOutputFormat.PORT_PER_COLUMN, configuration.getOutputFormat());
+		assertEquals(Collections.EMPTY_MAP, configuration.getColumnNames());
+		assertEquals(true, configuration.isAllRows());
+		assertEquals(false, configuration.isExcludeFirstRow());
+		assertEquals(false, configuration.isIgnoreBlankRows());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#SpreadsheetImportConfiguration(net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration)}.
+	 */
+	@Test
+	public void testSpreadsheetImportConfigurationSpreadsheetImportConfiguration() {
+		configuration.setColumnRange(new Range(3, 22));
+		configuration.setColumnRange(new Range(2, 53));
+		configuration.setAllRows(false);
+		configuration.setExcludeFirstRow(true);
+		configuration.setIgnoreBlankRows(true);
+		configuration.setEmptyCellPolicy(SpreadsheetEmptyCellPolicy.GENERATE_ERROR);
+		configuration.setEmptyCellValue("NO VALUE");
+		configuration.setColumnNames(Collections.singletonMap("D", "delta"));
+		configuration.setOutputFormat(SpreadsheetOutputFormat.SINGLE_PORT);
+		configuration.setCsvDelimiter(" ");
+		SpreadsheetImportConfiguration newConfiguration = new SpreadsheetImportConfiguration(configuration);
+		assertEquals(configuration, newConfiguration);
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#getEmptyCellValue()}.
+	 */
+	@Test
+	public void testGetEmptyCellValue() {
+		assertEquals("", configuration.getEmptyCellValue());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#setEmptyCellValue(java.lang.String)}.
+	 */
+	@Test
+	public void testSetEmptyCellValue() {
+		configuration.setEmptyCellValue("XXXX");
+		assertEquals("XXXX", configuration.getEmptyCellValue());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#getColumnRange()}.
+	 */
+	@Test
+	public void testGetColumnRange() {
+		assertEquals(new Range(0, 1), configuration.getColumnRange());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#setColumnRange(net.sf.taverna.t2.activities.spreadsheet.Range)}.
+	 */
+	@Test
+	public void testSetColumnRange() {
+		configuration.setColumnRange(new Range(5, 89));
+		assertEquals(new Range(5, 89), configuration.getColumnRange());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#getRowRange()}.
+	 */
+	@Test
+	public void testGetRowRange() {
+		assertEquals(new Range(0, -1), configuration.getRowRange());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#setRowRange(net.sf.taverna.t2.activities.spreadsheet.Range)}.
+	 */
+	@Test
+	public void testSetRowRange() {
+		configuration.setRowRange(new Range(41, 67));
+		assertEquals(new Range(41, 67), configuration.getRowRange());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#getColumnNames()}.
+	 */
+	@Test
+	public void testGetColumnNames() {
+		assertEquals(Collections.EMPTY_MAP, configuration.getColumnNames());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#setColumnNames(java.util.Map)}.
+	 */
+	@Test
+	public void testSetColumnNames() {
+		configuration.setColumnNames(Collections.singletonMap("A", "alpha"));
+		assertEquals(Collections.singletonMap("A", "alpha"), configuration.getColumnNames());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#isAllRows()}.
+	 */
+	@Test
+	public void testIsAllRows() {
+		assertEquals(true, configuration.isAllRows());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#setAllRows(boolean)}.
+	 */
+	@Test
+	public void testSetAllRows() {
+		configuration.setAllRows(false);
+		assertEquals(false, configuration.isAllRows());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#isExcludeFirstRow()}.
+	 */
+	@Test
+	public void testIsExcludeFirstRow() {
+		assertEquals(false, configuration.isExcludeFirstRow());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#setExcludeFirstRow(boolean)}.
+	 */
+	@Test
+	public void testSetExcludeFirstRow() {
+		configuration.setExcludeFirstRow(true);
+		assertEquals(true, configuration.isExcludeFirstRow());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#isIgnoreBlankRows()}.
+	 */
+	@Test
+	public void testIsIgnoreBlankRows() {
+		assertEquals(false, configuration.isIgnoreBlankRows());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#setIgnoreBlankRows(boolean)}.
+	 */
+	@Test
+	public void testSetIgnoreBlankRows() {
+		configuration.setIgnoreBlankRows(true);
+		assertEquals(true, configuration.isIgnoreBlankRows());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#getEmptyCellPolicy()}.
+	 */
+	@Test
+	public void testGetEmptyCellPolicy() {
+		assertEquals(SpreadsheetEmptyCellPolicy.EMPTY_STRING, configuration.getEmptyCellPolicy());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#setEmptyCellPolicy(net.sf.taverna.t2.activities.spreadsheet.SpreadsheetEmptyCellPolicy)}.
+	 */
+	@Test
+	public void testSetEmptyCellPolicy() {
+		configuration.setEmptyCellPolicy(SpreadsheetEmptyCellPolicy.GENERATE_ERROR);
+		assertEquals(SpreadsheetEmptyCellPolicy.GENERATE_ERROR, configuration.getEmptyCellPolicy());
+		configuration.setEmptyCellPolicy(SpreadsheetEmptyCellPolicy.USER_DEFINED);
+		assertEquals(SpreadsheetEmptyCellPolicy.USER_DEFINED, configuration.getEmptyCellPolicy());
+		configuration.setEmptyCellPolicy(SpreadsheetEmptyCellPolicy.EMPTY_STRING);
+		assertEquals(SpreadsheetEmptyCellPolicy.EMPTY_STRING, configuration.getEmptyCellPolicy());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#equals(java.lang.Object)}.
+	 */
+	@Test
+	public void testEqualsObject() {
+		assertTrue(configuration.equals(configuration));
+		assertTrue(configuration.equals(new SpreadsheetImportConfiguration()));
+		assertFalse(configuration.equals(null));
+		configuration.setEmptyCellValue("NIL");
+		assertFalse(configuration.equals(new SpreadsheetImportConfiguration()));
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportConfiguration#hashCode()}.
+	 */
+	@Test
+	public void testHashCode() {
+		assertEquals(configuration.hashCode(), configuration.hashCode());
+		assertEquals(configuration.hashCode(), new SpreadsheetImportConfiguration().hashCode());
+	}
+
+	@Test
+	public void testGetOutputFormat() {
+		assertEquals(SpreadsheetOutputFormat.PORT_PER_COLUMN, configuration.getOutputFormat());
+	}
+
+	@Test
+	public void testSetOutputFormat() {
+		configuration.setOutputFormat(SpreadsheetOutputFormat.PORT_PER_COLUMN);
+		assertEquals(SpreadsheetOutputFormat.PORT_PER_COLUMN, configuration.getOutputFormat());
+		configuration.setOutputFormat(SpreadsheetOutputFormat.SINGLE_PORT);
+		assertEquals(SpreadsheetOutputFormat.SINGLE_PORT, configuration.getOutputFormat());
+	}
+
+	@Test
+	public void testGetCsvDelimiter() {
+		assertEquals(",", configuration.getCsvDelimiter());
+	}
+
+	@Test
+	public void testSetCsvDelimiter() {
+		configuration.setCsvDelimiter("'");
+		assertEquals("'", configuration.getCsvDelimiter());
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportHealthCheckerTest.java b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportHealthCheckerTest.java
new file mode 100644
index 0000000..dbf6711
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetImportHealthCheckerTest.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+
+import net.sf.taverna.t2.visit.VisitReport.Status;
+import net.sf.taverna.t2.workflowmodel.impl.EditsImpl;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+/**
+ * Unit tests for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportHealthChecker}.
+ *
+ * @author David Withers
+ */
+public class SpreadsheetImportHealthCheckerTest {
+
+	private SpreadsheetImportHealthChecker healthChecker;
+
+	private SpreadsheetImportActivity activity;
+	private ArrayList ancestors;
+
+	@Before
+	public void setUp() throws Exception {
+		EditsImpl ei = new EditsImpl();
+		healthChecker = new SpreadsheetImportHealthChecker();
+		activity = new SpreadsheetImportActivity();
+		activity.setEdits(new EditsImpl());
+		ancestors = new ArrayList();
+		ancestors.add(ei.createProcessor("fred"));
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportHealthChecker#canHandle(java.lang.Object)}.
+	 */
+	@Test
+	public void testCanHandle() {
+		assertTrue(healthChecker.canVisit(activity));
+		assertFalse(healthChecker.canVisit(null));
+		assertFalse(healthChecker.canVisit(""));
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportHealthChecker#checkHealth(net.sf.taverna.t2.activities.spreadsheet.SpreadsheetImportActivity)}.
+	 * @throws Exception
+	 */
+	@Test
+	public void testCheckHealth() throws Exception {
+		assertEquals(Status.SEVERE, healthChecker.visit(activity, ancestors).getStatus());
+		ObjectNode configuration = JsonNodeFactory.instance.objectNode();
+		configuration.put("columnRange", configuration.objectNode().put("start", 0).put("end", 1));
+		configuration.put("rowRange", configuration.objectNode().put("start", 0).put("end", -1));
+		configuration.put("emptyCellValue", "");
+		configuration.put("allRows", true);
+		configuration.put("excludeFirstRow", false);
+		configuration.put("ignoreBlankRows", false);
+		configuration.put("emptyCellPolicy", "EMPTY_STRING");
+		configuration.put("outputFormat", "PORT_PER_COLUMN");
+		configuration.put("csvDelimiter", ",");
+		activity.configure(configuration);
+		assertEquals(Status.OK, healthChecker.visit(activity, ancestors).getStatus());
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetReadExceptionTest.java b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetReadExceptionTest.java
new file mode 100644
index 0000000..ef3445f
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetReadExceptionTest.java
@@ -0,0 +1,38 @@
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class SpreadsheetReadExceptionTest {
+
+	@Test
+	public void testSpreadsheetReadException() {
+		SpreadsheetReadException spreadsheetReadException = new SpreadsheetReadException();
+		assertNull(spreadsheetReadException.getMessage());
+		assertNull(spreadsheetReadException.getCause());
+	}
+
+	@Test
+	public void testSpreadsheetReadExceptionString() {
+		SpreadsheetReadException spreadsheetReadException = new SpreadsheetReadException("test exception");
+		assertEquals("test exception", spreadsheetReadException.getMessage());
+		assertNull(spreadsheetReadException.getCause());
+	}
+
+	@Test
+	public void testSpreadsheetReadExceptionThrowable() {
+		Exception exception = new Exception();
+		SpreadsheetReadException spreadsheetReadException = new SpreadsheetReadException(exception);
+		assertEquals(exception, spreadsheetReadException.getCause());
+	}
+
+	@Test
+	public void testSpreadsheetReadExceptionStringThrowable() {
+		Exception exception = new Exception();
+		SpreadsheetReadException spreadsheetReadException = new SpreadsheetReadException("test exception", exception);
+		assertEquals("test exception", spreadsheetReadException.getMessage());
+		assertEquals(exception, spreadsheetReadException.getCause());
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetUtilsTest.java b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetUtilsTest.java
new file mode 100644
index 0000000..1c3a8f5
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/test/java/net/sf/taverna/t2/activities/spreadsheet/SpreadsheetUtilsTest.java
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * Copyright (C) 2009 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.spreadsheet;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+/**
+ * Unit tests for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetUtils}.
+ *
+ * @author David Withers
+ */
+public class SpreadsheetUtilsTest {
+
+	@Test
+	public void testSpreadsheetUtils() {
+		assertNotNull(new SpreadsheetUtils());
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetUtils#getColumnIndex(java.lang.String)}.
+	 */
+	@Test
+	public void testGetColumnIndex() {
+		assertEquals(0, SpreadsheetUtils.getColumnIndex("A"));
+		assertEquals(4, SpreadsheetUtils.getColumnIndex("E"));
+		assertEquals(25, SpreadsheetUtils.getColumnIndex("Z"));
+		assertEquals(26, SpreadsheetUtils.getColumnIndex("AA"));
+		assertEquals(457833, SpreadsheetUtils.getColumnIndex("ZAFZ"));
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetUtils#getColumnLabel(int)}.
+	 */
+	@Test
+	public void testGetColumnLabel() {
+		assertEquals("A", SpreadsheetUtils.getColumnLabel(0));
+		assertEquals("E", SpreadsheetUtils.getColumnLabel(4));
+		assertEquals("Z", SpreadsheetUtils.getColumnLabel(25));
+		assertEquals("AA", SpreadsheetUtils.getColumnLabel(26));
+		assertEquals("ZAFZ", SpreadsheetUtils.getColumnLabel(457833));
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetUtils#getPortName(java.lang.String, java.util.Map)}.
+	 */
+	@Test
+	public void testGetPortNameStringMapOfStringString() {
+		assertEquals("A", SpreadsheetUtils.getPortName("A", null));
+		assertEquals("AABR", SpreadsheetUtils.getPortName("AABR", null));
+		ObjectNode configuration = JsonNodeFactory.instance.objectNode();
+		ArrayNode columnNames = configuration.arrayNode();
+		columnNames.addObject().put("column", "B").put("port", "beta");
+		configuration.put("columnNames", columnNames);
+		assertEquals("beta", SpreadsheetUtils.getPortName("B", configuration));
+		assertEquals("T", SpreadsheetUtils.getPortName("T", configuration));
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.spreadsheet.SpreadsheetUtils#getPortName(int, java.util.Map)}.
+	 */
+	@Test
+	public void testGetPortNameIntMapOfStringString() {
+		assertEquals("A", SpreadsheetUtils.getPortName(0, null));
+		assertEquals("AA", SpreadsheetUtils.getPortName(26, null));
+		ObjectNode configuration = JsonNodeFactory.instance.objectNode();
+		ArrayNode columnNames = configuration.arrayNode();
+		columnNames.addObject().put("column", "D").put("port", "delta");
+		configuration.put("columnNames", columnNames);
+		assertEquals("delta", SpreadsheetUtils.getPortName(3, configuration));
+		assertEquals("AB", SpreadsheetUtils.getPortName(27, configuration));
+	}
+
+}
diff --git a/taverna-spreadsheet-import-activity/src/test/resources/test-spreadsheet.csv b/taverna-spreadsheet-import-activity/src/test/resources/test-spreadsheet.csv
new file mode 100644
index 0000000..bbbc3f3
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/test/resources/test-spreadsheet.csv
Binary files differ
diff --git a/taverna-spreadsheet-import-activity/src/test/resources/test-spreadsheet.ods b/taverna-spreadsheet-import-activity/src/test/resources/test-spreadsheet.ods
new file mode 100644
index 0000000..e4dbd98
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/test/resources/test-spreadsheet.ods
Binary files differ
diff --git a/taverna-spreadsheet-import-activity/src/test/resources/test-spreadsheet.xls b/taverna-spreadsheet-import-activity/src/test/resources/test-spreadsheet.xls
new file mode 100644
index 0000000..12a2536
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/test/resources/test-spreadsheet.xls
Binary files differ
diff --git a/taverna-spreadsheet-import-activity/src/test/resources/test-spreadsheet.xlsx b/taverna-spreadsheet-import-activity/src/test/resources/test-spreadsheet.xlsx
new file mode 100644
index 0000000..2accc38
--- /dev/null
+++ b/taverna-spreadsheet-import-activity/src/test/resources/test-spreadsheet.xlsx
Binary files differ
diff --git a/taverna-wsdl-activity/pom.xml b/taverna-wsdl-activity/pom.xml
new file mode 100644
index 0000000..d92b618
--- /dev/null
+++ b/taverna-wsdl-activity/pom.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.taverna.commonactivities</groupId>
+		<artifactId>taverna-common-activities</artifactId>
+		<version>2.1.0-incubating-SNAPSHOT</version>
+	</parent>
+	<artifactId>taverna-wsdl-activity</artifactId>
+	<packaging>bundle</packaging>
+	<name>Apache Taverna WSDL Activity</name>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<extensions>true</extensions>
+				<configuration>
+					<instructions>
+						<!-- Use the java version instead of xmlcommons for javax.* packages -->
+						<Import-Package>javax.xml.namespace;version="0.0.0",javax.xml.parsers;version="0.0.0",org.w3c.dom;version="0.0.0",org.xml.sax;version="0.0.0",*</Import-Package>
+					</instructions>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-workflowmodel-api</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-reference-api</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>${project.parent.groupId}</groupId>
+			<artifactId>taverna-wsdl-generic</artifactId>
+			<version>${project.parent.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-credential-manager</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.jdom</groupId>
+			<artifactId>com.springsource.org.jdom</artifactId>
+			<version>${jdom.version}</version>
+		</dependency>
+<!--
+		<dependency>
+			<groupId>org.apache.ws</groupId>
+			<artifactId>com.springsource.org.apache.ws.security</artifactId>
+			<version>${ws.security.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.xml</groupId>
+			<artifactId>com.springsource.org.apache.xml.security</artifactId>
+			<version>${xml.security.version}</version>
+		</dependency>
+-->
+<!--
+<dependency>
+  <groupId>org.apache.axis</groupId>
+  <artifactId>com.springsource.org.apache.axis</artifactId>
+  <version>1.4.0</version>
+</dependency>
+-->
+<dependency>
+  <groupId>org.apache.ws.security</groupId>
+  <artifactId>wss4j</artifactId>
+  <version>${wss4j.version}</version> 
+  <!-- NOTE: wss4j 1.6 removes org.apache.ws.axis.security.WSDoAllSender 
+       Do we still need this? I can't see how it's used.. -->
+</dependency>
+<dependency>
+  <groupId>org.apache.santuario</groupId>
+  <artifactId>xmlsec</artifactId>
+  <version>${santuario.xmlsec.version}</version>
+</dependency>
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+			<version>${log4j.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-databind</artifactId>
+			<version>2.2.2</version>
+		</dependency>
+
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>${junit.version}</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-activity-test-utils</artifactId>
+			<version>${taverna.engine.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-workflowmodel-impl</artifactId>
+			<version>${taverna.engine.version}</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+</project>
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/InputPortTypeDescriptorActivity.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/InputPortTypeDescriptorActivity.java
new file mode 100644
index 0000000..c153722
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/InputPortTypeDescriptorActivity.java
@@ -0,0 +1,57 @@
+package net.sf.taverna.t2.activities.wsdl;
+
+import java.io.IOException;
+import java.util.Map;
+
+import net.sf.taverna.t2.activities.wsdl.xmlsplitter.XMLInputSplitterActivity;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.parser.UnknownOperationException;
+
+/**
+ * Interface for an activity such as {@link WSDLActivity} and
+ * {@link XMLInputSplitterActivity} that can provide {@link TypeDescriptor}s for
+ * its inputs.
+ *
+ * @author Stian Soiland-Reyes
+ *
+ * @param <ActivityBeanType> The configuration bean type of the activity
+ */
+public interface InputPortTypeDescriptorActivity {
+
+	/**
+	 * Provides access to the TypeDescriptor for a given input port name.
+	 * <br>
+	 * This TypeDescriptor represents the Type defined in the schema for this Activities
+	 * WSDL.
+	 *
+	 * @param portName
+	 * @return the TypeDescriptor, or null if the portName is not recognised.
+	 * @throws UnknownOperationException if the operation this Activity is associated with doesn't exist.
+	 * @throws IOException
+	 *
+	 * @see TypeDescriptor
+	 * @see #getTypeDescriptorsForInputPorts()
+	 * @see #getTypeDescriptorForOutputPort(String)
+	 */
+	public abstract TypeDescriptor getTypeDescriptorForInputPort(String portName)
+			throws UnknownOperationException, IOException;
+
+	/**
+	 * Return TypeDescriptor for a all input ports.
+	 * <p>
+	 * This TypeDescriptor represents the Type defined in the schema for this Activities
+	 * WSDL.
+	 *
+	 * @param portName
+	 * @return A {@link Map} from portname to {@link TypeDescriptor}
+	 * @throws UnknownOperationException if the operation this Activity is associated with doesn't exist.
+	 * @throws IOException If the WSDL or some of its dependencies could not be read
+	 *
+	 * @see TypeDescriptor
+	 * @see #getTypeDescriptorForInputPort(String)
+	 * @see #getTypeDescriptorsForOutputPorts()
+	 */
+	public abstract Map<String, TypeDescriptor> getTypeDescriptorsForInputPorts()
+			throws UnknownOperationException, IOException;
+
+}
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/OutputPortTypeDescriptorActivity.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/OutputPortTypeDescriptorActivity.java
new file mode 100644
index 0000000..23a235c
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/OutputPortTypeDescriptorActivity.java
@@ -0,0 +1,57 @@
+package net.sf.taverna.t2.activities.wsdl;
+
+import java.io.IOException;
+import java.util.Map;
+
+import net.sf.taverna.t2.activities.wsdl.xmlsplitter.XMLOutputSplitterActivity;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.parser.UnknownOperationException;
+
+/**
+ * Interface for an activity such as {@link WSDLActivity} and
+ * {@link XMLOutputSplitterActivity} that can provide {@link TypeDescriptor}s for
+ * it's outputs.
+ *
+ * @author Stian Soiland-Reyes
+ *
+ * @param <ActivityBeanType> The configuration bean type of the activity
+ */
+public interface OutputPortTypeDescriptorActivity {
+
+	/**
+	 * Provides access to the TypeDescriptor for a given output port name.
+	 * <br>
+	 * This TypeDescriptor represents the Type defined in the schema for this Activities
+	 * WSDL.
+	 *
+	 * @param portName
+	 * @return the TypeDescriptor, or null if the portName is not recognised.
+	 * @throws UnknownOperationException if the operation this Activity is associated with doesn't exist.
+	 * @throws IOException
+	 *
+	 * @see TypeDescriptor
+	 * @see #getTypeDescriptorsForOutputPorts()
+	 * @see #getTypeDescriptorForInputPort(String)
+	 */
+	public abstract TypeDescriptor getTypeDescriptorForOutputPort(
+			String portName) throws UnknownOperationException, IOException;
+
+	/**
+	 * Return TypeDescriptor for a all output ports.
+	 * <p>
+	 * This TypeDescriptor represents the Type defined in the schema for this Activities
+	 * WSDL.
+	 *
+	 * @param portName
+	 * @return A {@link Map} from portname to {@link TypeDescriptor}
+	 * @throws UnknownOperationException if the operation this Activity is associated with doesn't exist.
+	 * @throws IOException If the WSDL or some of its dependencies could not be read
+	 *
+	 * @see TypeDescriptor
+	 * @see #getTypeDescriptorForOutputPort(String)
+	 * @see #getTypeDescriptorsForInputPorts()
+	 */
+	public abstract Map<String, TypeDescriptor> getTypeDescriptorsForOutputPorts()
+			throws UnknownOperationException, IOException;
+
+}
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/T2WSDLSOAPInvoker.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/T2WSDLSOAPInvoker.java
new file mode 100644
index 0000000..1e9d1a5
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/T2WSDLSOAPInvoker.java
@@ -0,0 +1,282 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+
+package net.sf.taverna.t2.activities.wsdl;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.t2.activities.wsdl.security.SecurityProfiles;
+import net.sf.taverna.t2.security.credentialmanager.CMException;
+import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
+import net.sf.taverna.t2.security.credentialmanager.UsernamePassword;
+import net.sf.taverna.wsdl.parser.WSDLParser;
+import net.sf.taverna.wsdl.soap.WSDLSOAPInvoker;
+
+import org.apache.axis.AxisProperties;
+import org.apache.axis.EngineConfiguration;
+import org.apache.axis.MessageContext;
+import org.apache.axis.client.Call;
+import org.apache.axis.configuration.XMLStringProvider;
+import org.apache.axis.message.SOAPHeaderElement;
+import org.apache.log4j.Logger;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.Namespace;
+import org.jdom.input.SAXBuilder;
+import org.jdom.output.DOMOutputter;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+/**
+ * Invokes SOAP based Web Services from T2.
+ *
+ * Subclasses WSDLSOAPInvoker used for invoking Web Services from Taverna 1.x
+ * and extends it to provide support for invoking secure Web services.
+ *
+ * @author Stuart Owen
+ * @author Alex Nenadic
+ * @author Stian Soiland-Reyes
+ *
+ */
+public class T2WSDLSOAPInvoker extends WSDLSOAPInvoker {
+
+	private static final String REFERENCE_PROPERTIES = "ReferenceProperties";
+	private static final String ENDPOINT_REFERENCE = "EndpointReference";
+	private static Logger logger = Logger.getLogger(T2WSDLSOAPInvoker.class);
+	private static final Namespace wsaNS = Namespace.getNamespace("wsa",
+			"http://schemas.xmlsoap.org/ws/2004/03/addressing");
+
+	private String wsrfEndpointReference = null;
+
+	private CredentialManager credentialManager;
+
+	public T2WSDLSOAPInvoker(WSDLParser parser, String operationName,
+			List<String> outputNames, CredentialManager credentialManager) {
+		super(parser, operationName, outputNames);
+		this.credentialManager = credentialManager;
+	}
+
+	public T2WSDLSOAPInvoker(WSDLParser parser, String operationName,
+			List<String> outputNames, String wsrfEndpointReference, CredentialManager credentialManager) {
+		this(parser, operationName, outputNames, credentialManager);
+		this.wsrfEndpointReference = wsrfEndpointReference;
+	}
+
+	@SuppressWarnings("unchecked")
+	protected void addEndpointReferenceHeaders(
+			List<SOAPHeaderElement> soapHeaders) {
+		// Extract elements
+		// Add WSA-stuff
+		// Add elements
+
+		Document wsrfDoc;
+		try {
+			wsrfDoc = parseWsrfEndpointReference(wsrfEndpointReference);
+		} catch (JDOMException e) {
+			logger.warn("Could not parse endpoint reference, ignoring:\n"
+					+ wsrfEndpointReference, e);
+			return;
+		} catch (IOException e) {
+			logger.error("Could not read endpoint reference, ignoring:\n"
+					+ wsrfEndpointReference, e);
+			return;
+		}
+
+		Element endpointRefElem = null;
+		Element wsrfRoot = wsrfDoc.getRootElement();
+		if (wsrfRoot.getNamespace().equals(wsaNS)
+				&& wsrfRoot.getName().equals(ENDPOINT_REFERENCE)) {
+			endpointRefElem = wsrfRoot;
+		} else {
+			// Only look for child if the parent is not an EPR
+			Element childEndpoint = wsrfRoot
+					.getChild(ENDPOINT_REFERENCE, wsaNS);
+			if (childEndpoint != null) {
+				// Support wrapped endpoint reference for backward compatibility
+				// and convenience (T2-677)
+				endpointRefElem = childEndpoint;
+			} else {
+				logger
+						.warn("Unexpected element name for endpoint reference, but inserting anyway: "
+								+ wsrfRoot.getQualifiedName());
+				endpointRefElem = wsrfRoot;
+			}
+		}
+
+		Element refPropsElem = endpointRefElem.getChild(REFERENCE_PROPERTIES,
+				wsaNS);
+		if (refPropsElem == null) {
+			logger.warn("Could not find " + REFERENCE_PROPERTIES);
+			return;
+		}
+
+		List<Element> refProps = refPropsElem.getChildren();
+		// Make a copy of the list as it would be modified by
+		// prop.detach();
+		for (Element prop : new ArrayList<Element>(refProps)) {
+			DOMOutputter domOutputter = new DOMOutputter();
+			SOAPHeaderElement soapElem;
+			prop.detach();
+			try {
+				org.w3c.dom.Document domDoc = domOutputter.output(new Document(
+						prop));
+				soapElem = new SOAPHeaderElement(domDoc.getDocumentElement());
+			} catch (JDOMException e) {
+				logger.warn(
+						"Could not translate wsrf element to DOM:\n" + prop, e);
+				continue;
+			}
+			soapElem.setMustUnderstand(false);
+			soapElem.setActor(null);
+			soapHeaders.add(soapElem);
+		}
+
+		// soapHeaders.add(new SOAPHeaderElement((Element) wsrfDoc
+		// .getDocumentElement()));
+	}
+
+	protected void configureSecurity(Call call, JsonNode bean) throws Exception {
+
+		// If security settings require WS-Security - configure the axis call
+		// with appropriate properties
+		URI securityProfile = new URI(bean.get("securityProfile").textValue());
+		if (securityProfile
+				.equals(SecurityProfiles.WSSECURITY_USERNAMETOKEN_PLAINTEXTPASSWORD)
+				|| securityProfile
+						.equals(SecurityProfiles.WSSECURITY_USERNAMETOKEN_DIGESTPASSWORD)
+				|| securityProfile
+						.equals(SecurityProfiles.WSSECURITY_TIMESTAMP_USERNAMETOKEN_PLAINTEXTPASSWORD)
+				|| securityProfile
+						.equals(SecurityProfiles.WSSECURITY_TIMESTAMP_USERNAMETOKEN_DIGESTPASSWORD)) {
+			
+			UsernamePassword usernamePassword = getUsernameAndPasswordForService(bean, false);
+			call.setProperty(Call.USERNAME_PROPERTY, usernamePassword.getUsername());
+			call.setProperty(Call.PASSWORD_PROPERTY, usernamePassword.getPasswordAsString());
+			usernamePassword.resetPassword();
+		} else if (securityProfile.equals(SecurityProfiles.HTTP_BASIC_AUTHN)){
+			// Basic HTTP AuthN - set HTTP headers
+			// pathrecursion allowed
+			UsernamePassword usernamePassword = getUsernameAndPasswordForService(bean, true);
+			MessageContext context = call.getMessageContext();
+			context.setUsername(usernamePassword.getUsername());
+			context.setPassword(usernamePassword.getPasswordAsString());
+			usernamePassword.resetPassword();
+		} else {
+			logger.error("Unknown security profile " + securityProfile);
+		}
+	}
+
+	/**
+	 * Get username and password from Credential Manager or ask user to supply
+	 * one. Username is the first element of the returned array, and the
+	 * password is the second.
+	 */
+	protected UsernamePassword getUsernameAndPasswordForService(
+			JsonNode bean, boolean usePathRecursion) throws CMException {
+
+		// Try to get username and password for this service from Credential
+		// Manager (which should pop up UI if needed)
+		URI serviceUri = URI.create(bean.get("operation").get("wsdl").textValue());
+		UsernamePassword username_password = credentialManager.getUsernameAndPasswordForService(serviceUri, usePathRecursion, null);
+		if (username_password == null) {
+			throw new CMException("No username/password provided for service " + serviceUri);
+		}
+		return username_password;
+	}
+
+	@Override
+	protected List<SOAPHeaderElement> makeSoapHeaders() {
+		List<SOAPHeaderElement> soapHeaders = new ArrayList<SOAPHeaderElement>(
+				super.makeSoapHeaders());
+		if (wsrfEndpointReference != null && getParser().isWsrfService()) {
+			addEndpointReferenceHeaders(soapHeaders);
+		}
+		return soapHeaders;
+	}
+
+	protected org.jdom.Document parseWsrfEndpointReference(
+			String wsrfEndpointReference) throws JDOMException, IOException {
+		SAXBuilder builder = new SAXBuilder();
+		return builder.build(new StringReader(wsrfEndpointReference));
+	}
+
+	public Map<String, Object> invoke(Map<String, Object> inputMap,
+			JsonNode bean) throws Exception {
+
+		EngineConfiguration wssEngineConfiguration = null;
+		if (bean.has("securityProfile")) {
+			URI securityProfile = new URI(bean.get("securityProfile").textValue());
+
+			// If security settings require WS-Security and not just e.g. Basic HTTP
+			// AuthN - configure the axis engine from the appropriate config strings
+			if (securityProfile
+					.equals(SecurityProfiles.WSSECURITY_USERNAMETOKEN_PLAINTEXTPASSWORD)) {
+				wssEngineConfiguration = new XMLStringProvider(
+						SecurityProfiles.WSSECURITY_USERNAMETOKEN_PLAINTEXTPASSWORD_CONFIG);
+			} else if (securityProfile
+					.equals(SecurityProfiles.WSSECURITY_USERNAMETOKEN_DIGESTPASSWORD)) {
+				wssEngineConfiguration = new XMLStringProvider(
+						SecurityProfiles.WSSECURITY_USERNAMETOKEN_DIGESTPASSWORD_CONFIG);
+			} else if (securityProfile
+					.equals(SecurityProfiles.WSSECURITY_TIMESTAMP_USERNAMETOKEN_PLAINTEXTPASSWORD)) {
+				wssEngineConfiguration = new XMLStringProvider(
+						SecurityProfiles.WSSECURITY_TIMESTAMP_USERNAMETOKEN_PLAINTETPASSWORD_CONFIG);
+			} else if (securityProfile
+					.equals(SecurityProfiles.WSSECURITY_TIMESTAMP_USERNAMETOKEN_DIGESTPASSWORD)) {
+				wssEngineConfiguration = new XMLStringProvider(
+						SecurityProfiles.WSSECURITY_TIMESTAMP_USERNAMETOKEN_DIGESTPASSWORD_CONFIG);
+			}
+		}
+
+		// This does not work
+//		ClassUtils.setClassLoader("net.sf.taverna.t2.activities.wsdl.security.TavernaAxisCustomSSLSocketFactory",TavernaAxisCustomSSLSocketFactory.class.getClassLoader());
+
+		// Setting Axis property only works when we also set the Thread's classloader as below
+		// (we do it from the net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke.requestRun())
+//		Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
+		if (AxisProperties.getProperty("axis.socketSecureFactory")== null || !AxisProperties.getProperty("axis.socketSecureFactory").equals("net.sf.taverna.t2.activities.wsdl.security.TavernaAxisCustomSSLSocketFactory")){
+			AxisProperties.setProperty("axis.socketSecureFactory", "net.sf.taverna.t2.activities.wsdl.security.TavernaAxisCustomSSLSocketFactory");
+			logger.info("Setting axis.socketSecureFactory property to " + AxisProperties.getProperty("axis.socketSecureFactory"));
+		}
+
+		// This also does not work
+		//AxisProperties.setClassDefault(SecureSocketFactory.class, "net.sf.taverna.t2.activities.wsdl.security.TavernaAxisCustomSSLSocketFactory");
+
+		Call call = super.getCall(wssEngineConfiguration);
+		
+		// Now that we have an axis Call object, configure any additional
+		// security properties on it (or its message context or its Transport
+		// handler),
+		// such as WS-Security UsernameToken or HTTP Basic AuthN
+		if (bean.has("securityProfile")) {
+			configureSecurity(call, bean);
+		}
+
+		return invoke(inputMap, call);
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLActivity.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLActivity.java
new file mode 100644
index 0000000..763cbee
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLActivity.java
@@ -0,0 +1,328 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.SocketTimeoutException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.wsdl.WSDLException;
+import javax.xml.parsers.ParserConfigurationException;
+
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.ReferenceServiceException;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
+import net.sf.taverna.t2.workflowmodel.OutputPort;
+import net.sf.taverna.t2.workflowmodel.health.RemoteHealthChecker;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AbstractAsynchronousActivity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.parser.UnknownOperationException;
+import net.sf.taverna.wsdl.parser.WSDLParser;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.SAXException;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+/**
+ * An asynchronous Activity that is concerned with WSDL based web-services.
+ * <p>
+ * The activity is configured according to the WSDL location and the operation.<br>
+ * The ports are defined dynamically according to the WSDL specification, and in
+ * addition an output<br>
+ * port <em>attachmentList</em> is added to represent any attachements that are
+ * returned by the webservice.
+ * </p>
+ *
+ * @author Stuart Owen
+ * @author Stian Soiland-Reyes
+ */
+public class WSDLActivity extends
+		AbstractAsynchronousActivity<JsonNode> implements
+		InputPortTypeDescriptorActivity, OutputPortTypeDescriptorActivity {
+
+	public static final String URI = "http://ns.taverna.org.uk/2010/activity/wsdl";
+
+	public static final String ENDPOINT_REFERENCE = "EndpointReference";
+	private JsonNode configurationBean;
+	private WSDLParser parser;
+//	private Map<String, Integer> outputDepth = new HashMap<String, Integer>();
+	private boolean isWsrfService = false;
+//	private String endpointReferenceInputPortName;
+	private CredentialManager credentialManager;
+
+	public WSDLActivity(CredentialManager credentialManager) {
+		this.credentialManager = credentialManager;
+	}
+
+	public boolean isWsrfService() {
+		return isWsrfService;
+	}
+
+	private static Logger logger = Logger.getLogger(WSDLActivity.class);
+
+	/**
+	 * Configures the activity according to the information passed by the
+	 * configuration bean.<br>
+	 * During this process the WSDL is parsed to determine the input and output
+	 * ports.
+	 *
+	 * @param bean
+	 *            the {@link WSDLActivityConfigurationBean} configuration bean
+	 */
+	@Override
+	public void configure(JsonNode bean)
+			throws ActivityConfigurationException {
+		this.configurationBean = bean;
+		try {
+			parseWSDL();
+		} catch (Exception ex) {
+			throw new ActivityConfigurationException(
+					"Unable to parse the WSDL " + bean.get("operation").get("wsdl").textValue(), ex);
+		}
+	}
+
+	@Override
+	public JsonNode getConfiguration() {
+		return configurationBean;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @seenet.sf.taverna.t2.activities.wsdl.InputPortTypeDescriptorActivity#
+	 * getTypeDescriptorForInputPort(java.lang.String)
+	 */
+	public TypeDescriptor getTypeDescriptorForInputPort(String portName)
+			throws UnknownOperationException, IOException {
+		List<TypeDescriptor> inputDescriptors = parser
+				.getOperationInputParameters(configurationBean.get("operation").get("name").textValue());
+		TypeDescriptor result = null;
+		for (TypeDescriptor descriptor : inputDescriptors) {
+			if (descriptor.getName().equals(portName)) {
+				result = descriptor;
+				break;
+			}
+		}
+		return result;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @seenet.sf.taverna.t2.activities.wsdl.InputPortTypeDescriptorActivity#
+	 * getTypeDescriptorsForInputPorts()
+	 */
+	public Map<String, TypeDescriptor> getTypeDescriptorsForInputPorts()
+			throws UnknownOperationException, IOException {
+		Map<String, TypeDescriptor> descriptors = new HashMap<String, TypeDescriptor>();
+		List<TypeDescriptor> inputDescriptors = parser
+				.getOperationInputParameters(configurationBean.get("operation").get("name").textValue());
+		for (TypeDescriptor descriptor : inputDescriptors) {
+			descriptors.put(descriptor.getName(), descriptor);
+		}
+		return descriptors;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @seenet.sf.taverna.t2.activities.wsdl.OutputPortTypeDescriptorActivity#
+	 * getTypeDescriptorForOutputPort(java.lang.String)
+	 */
+	public TypeDescriptor getTypeDescriptorForOutputPort(String portName)
+			throws UnknownOperationException, IOException {
+		TypeDescriptor result = null;
+		List<TypeDescriptor> outputDescriptors = parser
+				.getOperationOutputParameters(configurationBean.get("operation").get("name").textValue());
+		for (TypeDescriptor descriptor : outputDescriptors) {
+			if (descriptor.getName().equals(portName)) {
+				result = descriptor;
+				break;
+			}
+		}
+		return result;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @seenet.sf.taverna.t2.activities.wsdl.OutputPortTypeDescriptorActivity#
+	 * getTypeDescriptorsForOutputPorts()
+	 */
+	public Map<String, TypeDescriptor> getTypeDescriptorsForOutputPorts()
+			throws UnknownOperationException, IOException {
+		Map<String, TypeDescriptor> descriptors = new HashMap<String, TypeDescriptor>();
+		List<TypeDescriptor> inputDescriptors = parser
+				.getOperationOutputParameters(configurationBean.get("operation").get("name").textValue());
+		for (TypeDescriptor descriptor : inputDescriptors) {
+			descriptors.put(descriptor.getName(), descriptor);
+		}
+		return descriptors;
+	}
+
+	private void parseWSDL() throws ParserConfigurationException,
+			WSDLException, IOException, SAXException, UnknownOperationException {
+		String wsdlLocation = configurationBean.get("operation").get("wsdl").textValue();
+		URLConnection connection = null;
+		try {
+			URL wsdlURL = new URL(wsdlLocation);
+			connection = wsdlURL.openConnection();
+			connection.setConnectTimeout(RemoteHealthChecker.getTimeoutInSeconds() * 1000);
+			connection.connect();
+		} catch (MalformedURLException e) {
+			throw new IOException("Malformed URL", e);
+		} catch (SocketTimeoutException e) {
+			throw new IOException("Timeout", e);
+		} catch (IOException e) {
+			throw e;
+		} finally {
+			if ((connection != null) && (connection.getInputStream() != null)) {
+				connection.getInputStream().close();
+			}
+		}
+		parser = new WSDLParser(wsdlLocation);
+		isWsrfService = parser.isWsrfService();
+	}
+
+	@Override
+	public void executeAsynch(final Map<String, T2Reference> data,
+			final AsynchronousActivityCallback callback) {
+
+		callback.requestRun(new Runnable() {
+
+			public void run() {
+
+				ReferenceService referenceService = callback.getContext()
+						.getReferenceService();
+
+				Map<String, T2Reference> outputData = new HashMap<String, T2Reference>();
+				Map<String, Object> invokerInputMap = new HashMap<String, Object>();
+				String endpointReferenceInputPortName = getEndpointReferenceInputPortName();
+
+				try {
+					String endpointReference = null;
+					for (String key : data.keySet()) {
+						Object renderIdentifier = referenceService
+								.renderIdentifier(data.get(key), String.class,
+										callback.getContext());
+						if (isWsrfService()
+								&& key.equals(endpointReferenceInputPortName)) {
+							endpointReference = (String) renderIdentifier;
+						} else {
+							invokerInputMap.put(key, renderIdentifier);
+						}
+					}
+					List<String> outputNames = new ArrayList<String>();
+					for (OutputPort port : getOutputPorts()) {
+						outputNames.add(port.getName());
+					}
+
+					T2WSDLSOAPInvoker invoker = new T2WSDLSOAPInvoker(parser,
+							configurationBean.get("operation").get("name").textValue(), outputNames,
+							endpointReference, credentialManager);
+
+					Map<String, Object> invokerOutputMap = invoker.invoke(
+							invokerInputMap, configurationBean);
+					
+					for (String outputName : invokerOutputMap.keySet()) {
+					    Object value = invokerOutputMap.get(outputName);
+						
+						if (value != null) {
+							Integer depth = getOutputPortDepth(outputName);
+							if (depth != null) {
+								outputData.put(outputName, referenceService
+										.register(value, depth, true, callback
+												.getContext()));
+							} else {
+								logger.info("Skipping unknown output port :"
+												+ outputName);
+//								// TODO what should the depth be in this case?
+//								outputData.put(outputName, referenceService
+//										.register(value, 0, true, callback
+//												.getContext()));
+							}
+						}
+					}
+					callback.receiveResult(outputData, new int[0]);
+				} catch (ReferenceServiceException e) {
+					logger.error("Error finding the input data for "
+							+ getConfiguration().get("operation"), e);
+					callback.fail("Unable to find input data", e);
+					return;
+				} catch (Exception e) {
+					logger.error("Error invoking WSDL service "
+							+ getConfiguration().get("operation"), e);
+					callback.fail(
+							"An error occurred invoking the WSDL service", e);
+					return;
+				}
+
+			}
+
+		});
+
+	}
+
+	private Integer getOutputPortDepth(String portName) {
+		for (ActivityOutputPort outputPort : getOutputPorts()) {
+			if (outputPort.getName().equals(portName)) {
+				return outputPort.getDepth();
+			}
+		}
+		return null;
+	}
+
+	private String getEndpointReferenceInputPortName() {
+		String endpointReferenceInputPortName = null;
+		if (parser.isWsrfService()) {
+			Set<String> inputPorts = new HashSet<>();
+			try {
+				List<TypeDescriptor> inputDescriptors = parser.getOperationInputParameters(configurationBean
+						.get("operation").get("name").textValue());
+				for (TypeDescriptor descriptor : inputDescriptors) {
+					inputPorts.add(descriptor.getName());
+				}
+			} catch (UnknownOperationException | IOException e) {
+			}
+			// Make sure the port name is unique
+			endpointReferenceInputPortName = WSDLActivity.ENDPOINT_REFERENCE;
+			int counter = 0;
+			while (inputPorts.contains(endpointReferenceInputPortName)) {
+				endpointReferenceInputPortName = WSDLActivity.ENDPOINT_REFERENCE + counter++;
+			}
+		}
+		return endpointReferenceInputPortName;
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityConfigurationBean.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityConfigurationBean.java
new file mode 100644
index 0000000..80b0bd5
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityConfigurationBean.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl;
+
+import java.net.URI;
+
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+
+/**
+ * A standard Java Bean that provides the details required to configure a WSDLActivity.
+ * <p>
+ * This contains details about the WSDL and the Operation that the WSDLActivity is intended to invoke.
+ * </p>
+ * @author Stuart Owen
+ */
+@ConfigurationBean(uri = WSDLActivity.URI + "#Config")
+public class WSDLActivityConfigurationBean {
+    private WSDLOperationConfigurationBean operation;
+    private URI securityProfile;
+
+    // In the case service requires username and password for authentication,
+    // but do not serialise these variables to file
+    //transient private String username;
+    //transient private String password;
+
+    /** Creates a new instance of WSDLActivityConfigurationBean */
+    public WSDLActivityConfigurationBean() {
+    }
+
+    public WSDLOperationConfigurationBean getOperation() {
+        return operation;
+    }
+
+	@ConfigurationProperty(name = "operation", label = "WSDL Operation", description = "The WSDL operation")
+    public void setOperation(WSDLOperationConfigurationBean operation) {
+        this.operation = operation;
+    }
+
+	public URI getSecurityProfile() {
+		return securityProfile;
+	}
+
+	@ConfigurationProperty(name = "securityProfile", label = "Security Profile", description = "WS-Security settings required by the web service", required = false)
+	public void setSecurityProfile(URI securityProfile) {
+		this.securityProfile = securityProfile;
+	}
+
+//	public void setUsername(String username) {
+//		this.username = username;
+//	}
+//
+//	public String getUsername() {
+//		return username;
+//	}
+//
+//	public void setPassword(String password) {
+//		this.password = password;
+//	}
+//
+//	public String getPassword() {
+//		return password;
+//	}
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityDescriptorChecker.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityDescriptorChecker.java
new file mode 100644
index 0000000..5a41cde
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityDescriptorChecker.java
@@ -0,0 +1,147 @@
+/**
+ *
+ */
+package net.sf.taverna.t2.activities.wsdl;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import net.sf.taverna.t2.visit.VisitReport;
+import net.sf.taverna.t2.visit.VisitReport.Status;
+import net.sf.taverna.t2.workflowmodel.Dataflow;
+import net.sf.taverna.t2.workflowmodel.Datalink;
+import net.sf.taverna.t2.workflowmodel.Merge;
+import net.sf.taverna.t2.workflowmodel.MergeInputPort;
+import net.sf.taverna.t2.workflowmodel.MergeOutputPort;
+import net.sf.taverna.t2.workflowmodel.MergePort;
+import net.sf.taverna.t2.workflowmodel.Port;
+import net.sf.taverna.t2.workflowmodel.Processor;
+import net.sf.taverna.t2.workflowmodel.ProcessorInputPort;
+import net.sf.taverna.t2.workflowmodel.ProcessorPort;
+import net.sf.taverna.t2.workflowmodel.health.HealthCheck;
+import net.sf.taverna.t2.workflowmodel.health.HealthChecker;
+import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.utils.Tools;
+import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
+import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.parser.UnknownOperationException;
+
+import org.apache.log4j.Logger;
+
+/**
+ * @author alanrw
+ *
+ */
+public final class WSDLActivityDescriptorChecker implements HealthChecker<InputPortTypeDescriptorActivity> {
+
+	private static Logger logger = Logger.getLogger(WSDLActivityDescriptorChecker.class);
+
+	public boolean canVisit(Object o) {
+		return ((o != null) && (o instanceof InputPortTypeDescriptorActivity));
+	}
+
+	public boolean isTimeConsuming() {
+		return false;
+	}
+
+	public VisitReport visit(InputPortTypeDescriptorActivity o,
+			List<Object> ancestry) {
+		List<VisitReport> reports = new ArrayList<VisitReport>();
+		try {
+			Map<String, TypeDescriptor> typeMap = o.getTypeDescriptorsForInputPorts();
+			Processor p = (Processor) VisitReport.findAncestor(ancestry, Processor.class);
+			Dataflow d = (Dataflow) VisitReport.findAncestor(ancestry, Dataflow.class);
+
+
+			for (Entry<String, TypeDescriptor> entry : typeMap.entrySet()) {
+				TypeDescriptor descriptor = entry.getValue();
+				if (!descriptor.getMimeType().contains("'text/xml'")) {
+					continue;
+				}
+				if (!((descriptor instanceof ArrayTypeDescriptor) || (descriptor instanceof ComplexTypeDescriptor))) {
+					continue;
+				}
+				// Find the processor port, if any that corresponds to the activity port
+				ActivityInputPort aip = Tools.getActivityInputPort((Activity<?>) o, entry.getKey());
+				if (aip == null) {
+					continue;
+				}
+				ProcessorInputPort pip = Tools.getProcessorInputPort(p, (Activity<?>) o, aip);
+
+				if (pip == null) {
+					continue;
+				}
+
+				for (Datalink dl : d.getLinks()) {
+
+					if (dl.getSink().equals(pip)) {
+						Port source = dl.getSource();
+						Set<VisitReport> subReports = checkSource(source, d, (Activity<?>) o, aip);
+						for (VisitReport vr : subReports) {
+						    vr.setProperty("activity", o);
+						    vr.setProperty("sinkPort", pip);
+						}
+						reports.addAll(subReports);
+					}
+				}
+
+			}
+		} catch (UnknownOperationException e) {
+			logger.error("Problem getting type descriptors for activity", e);
+		} catch (IOException e) {
+			logger.error("Problem getting type descriptors for activity", e);
+		} catch (NullPointerException e) {
+			logger.error("Problem getting type desciptors for activity", e);
+		}
+		if (reports.isEmpty()) {
+			return null;
+		}
+		if (reports.size() == 1) {
+			return reports.get(0);
+		}
+		else {
+			return new VisitReport(HealthCheck.getInstance(), o, "Collation", HealthCheck.DEFAULT_VALUE, reports);
+		}
+	}
+
+	private Set<VisitReport> checkSource(Port source, Dataflow d, Activity<?> o, ActivityInputPort aip) {
+		Set<VisitReport> reports = new HashSet<VisitReport>();
+		if (source instanceof ProcessorPort) {
+			ProcessorPort processorPort = (ProcessorPort) source;
+			Processor sourceProcessor = processorPort.getProcessor();
+			Activity<?> sourceActivity = sourceProcessor.getActivityList().get(0);
+			if (!(sourceActivity instanceof InputPortTypeDescriptorActivity)) {
+				VisitReport newReport = new VisitReport(HealthCheck.getInstance(), o, "Source of " + aip.getName(), HealthCheck.DATATYPE_SOURCE, Status.WARNING);
+				newReport.setProperty("sinkPortName", aip.getName());
+				newReport.setProperty("sourceName", sourceProcessor.getLocalName());
+				newReport.setProperty("isProcessorSource", "true");
+				reports.add(newReport);
+			}
+		} else if (source instanceof MergeOutputPort) {
+			Merge merge = ((MergePort) source).getMerge();
+			for (MergeInputPort mip : merge.getInputPorts()) {
+				for (Datalink dl : d.getLinks()) {
+					if (dl.getSink().equals(mip)) {
+						reports.addAll(checkSource(dl.getSource(), d, o, aip));
+					}
+				}
+
+			}
+		} else /* if (source instanceof DataflowInputPort) */  {
+			VisitReport newReport = new VisitReport(HealthCheck.getInstance(), o, "Source of " + aip.getName(), HealthCheck.DATATYPE_SOURCE, Status.WARNING);
+			newReport.setProperty("sinkPortName", aip.getName());
+			newReport.setProperty("sourceName", source.getName());
+			newReport.setProperty("isProcessorSource", "false");
+			reports.add(newReport);
+		}
+		return reports;
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityFactory.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityFactory.java
new file mode 100644
index 0000000..eeb7c5a
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityFactory.java
@@ -0,0 +1,141 @@
+/*******************************************************************************
+ * Copyright (C) 2010 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.wsdl.WSDLException;
+import javax.xml.parsers.ParserConfigurationException;
+
+import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
+import net.sf.taverna.t2.workflowmodel.Edits;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.parser.UnknownOperationException;
+import net.sf.taverna.wsdl.parser.WSDLParser;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.SAXException;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+/**
+ * An {@link ActivityFactory} for creating <code>WSDLActivity</code>.
+ *
+ * @author David Withers
+ */
+public class WSDLActivityFactory implements ActivityFactory {
+
+	private static Logger logger = Logger.getLogger(WSDLActivityFactory.class);
+
+	private CredentialManager credentialManager;
+	private Edits edits;
+
+	@Override
+	public WSDLActivity createActivity() {
+		return new WSDLActivity(credentialManager);
+	}
+
+	@Override
+	public URI getActivityType() {
+		return URI.create(WSDLActivity.URI);
+	}
+
+	@Override
+	public JsonNode getActivityConfigurationSchema() {
+		ObjectMapper objectMapper = new ObjectMapper();
+		try {
+			return objectMapper.readTree(getClass().getResource("/schema.json"));
+		} catch (IOException e) {
+			return objectMapper.createObjectNode();
+		}
+	}
+
+	public void setCredentialManager(CredentialManager credentialManager) {
+		this.credentialManager = credentialManager;
+	}
+
+	@Override
+	public Set<ActivityInputPort> getInputPorts(JsonNode configuration) {
+		Map<String, ActivityInputPort> inputPorts = new HashMap<>();
+		try {
+			WSDLParser parser = new WSDLParser(configuration.get("operation").get("wsdl").textValue());
+			List<TypeDescriptor> inputDescriptors = parser.getOperationInputParameters(configuration
+					.get("operation").get("name").textValue());
+			for (TypeDescriptor descriptor : inputDescriptors) {
+				inputPorts.put(descriptor.getName(), edits.createActivityInputPort(
+						descriptor.getName(), descriptor.getDepth(), true, null, String.class));
+			}
+			if (parser.isWsrfService()) {
+				// Make sure the port name is unique
+				String endpointReferenceInputPortName = WSDLActivity.ENDPOINT_REFERENCE;
+				int counter = 0;
+				while (inputPorts.containsKey(endpointReferenceInputPortName)) {
+					endpointReferenceInputPortName = WSDLActivity.ENDPOINT_REFERENCE + counter++;
+				}
+				inputPorts.put(endpointReferenceInputPortName, edits.createActivityInputPort(
+						endpointReferenceInputPortName, 0, true, null, String.class));
+			}
+		} catch (ParserConfigurationException | WSDLException | IOException | SAXException | UnknownOperationException e) {
+			logger.warn(
+					"Unable to parse the WSDL " + configuration.get("operation").get("wsdl").textValue(), e);
+		}
+
+		return new HashSet<>(inputPorts.values());
+	}
+
+	@Override
+	public Set<ActivityOutputPort> getOutputPorts(JsonNode configuration) {
+		Set<ActivityOutputPort> outputPorts = new HashSet<>();
+		try {
+			WSDLParser parser = new WSDLParser(configuration.get("operation").get("wsdl")
+					.textValue());
+			List<TypeDescriptor> outputDescriptors = parser
+					.getOperationOutputParameters(configuration.get("operation").get("name")
+							.textValue());
+			for (TypeDescriptor descriptor : outputDescriptors) {
+				outputPorts.add(edits.createActivityOutputPort(descriptor.getName(),
+						descriptor.getDepth(), descriptor.getDepth()));
+			}
+			// add output for attachment list
+			outputPorts.add(edits.createActivityOutputPort("attachmentList", 1, 1));
+		} catch (ParserConfigurationException | WSDLException | IOException | SAXException | UnknownOperationException e) {
+			logger.warn(
+					"Unable to parse the WSDL " + configuration.get("operation").get("wsdl").textValue(), e);
+		}
+
+		return outputPorts;
+	}
+
+	public void setEdits(Edits edits) {
+		this.edits = edits;
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityHealthChecker.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityHealthChecker.java
new file mode 100644
index 0000000..0437ff6
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityHealthChecker.java
@@ -0,0 +1,170 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.wsdl.WSDLException;
+import javax.xml.parsers.ParserConfigurationException;
+
+import net.sf.taverna.t2.visit.VisitReport;
+import net.sf.taverna.t2.visit.VisitReport.Status;
+import net.sf.taverna.t2.workflowmodel.health.HealthCheck;
+import net.sf.taverna.t2.workflowmodel.health.RemoteHealthChecker;
+import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.DisabledActivity;
+import net.sf.taverna.wsdl.parser.UnknownOperationException;
+import net.sf.taverna.wsdl.parser.WSDLParser;
+
+import org.xml.sax.SAXException;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+public class WSDLActivityHealthChecker extends RemoteHealthChecker {
+
+	private Activity<?> activity;
+
+	public boolean canVisit(Object subject) {
+		if (subject == null) {
+			return false;
+		}
+		if (subject instanceof WSDLActivity) {
+			return true;
+		}
+		if (subject instanceof DisabledActivity) {
+			return (((DisabledActivity) subject).getActivity() instanceof WSDLActivity);
+		}
+		return false;
+	}
+
+	public VisitReport visit(Object o, List<Object> ancestors) {
+		List<VisitReport> reports = new ArrayList<VisitReport>();
+		activity = (Activity<?>) o;
+		String endpoint = null;
+
+		WSDLParser parser;
+		try {
+			JsonNode configuration = null;
+			if (activity instanceof WSDLActivity) {
+				configuration = ((WSDLActivity)activity).getConfiguration();
+			} else if (activity instanceof DisabledActivity) {
+				configuration = (JsonNode) ((DisabledActivity) activity).getActivityConfiguration();
+			}
+			endpoint = configuration.get("operation").get("wsdl").asText();
+			VisitReport wsdlEndpointReport = RemoteHealthChecker.contactEndpoint(activity, endpoint);
+			reports.add(wsdlEndpointReport);
+			if (!wsdlEndpointReport.getStatus().equals(Status.SEVERE)) {
+			    parser = new WSDLParser(endpoint);
+
+			    String operationName = configuration.get("operation").get("name").asText();
+			    try {
+                reports.add(testStyleAndUse(endpoint,
+							    parser,
+							    operationName));
+				reports.add(testEndpoint(parser, operationName));
+			    } catch (UnknownOperationException e) {
+				VisitReport vr = new VisitReport(HealthCheck.getInstance(), activity,
+							 "Operation not found", HealthCheck.UNKNOWN_OPERATION,
+							 Status.SEVERE);
+				vr.setProperty("operationName", operationName);
+				vr.setProperty("endpoint", endpoint);
+				reports.add(vr);
+			    }
+			}
+
+		} catch (ParserConfigurationException e) {
+			VisitReport vr = new VisitReport(HealthCheck.getInstance(), activity, "Invalid WSDL", HealthCheck.BAD_WSDL, Status.SEVERE);
+			vr.setProperty("exception", e);
+			vr.setProperty("endpoint", endpoint);
+			reports.add(vr);
+		} catch (WSDLException e) {
+			VisitReport vr = new VisitReport(HealthCheck.getInstance(), activity, "Invalid WSDL", HealthCheck.BAD_WSDL, Status.SEVERE);
+			vr.setProperty("exception", e);
+			vr.setProperty("endpoint", endpoint);
+			reports.add(vr);
+		} catch (IOException e) {
+			VisitReport vr = new VisitReport(HealthCheck.getInstance(), activity, "Read problem", HealthCheck.IO_PROBLEM, Status.SEVERE);
+			vr.setProperty("exception", e);
+			vr.setProperty("endpoint", endpoint);
+			reports.add(vr);
+		} catch (SAXException e) {
+			VisitReport vr = new VisitReport(HealthCheck.getInstance(), activity, "Invalid WSDL", HealthCheck.BAD_WSDL, Status.SEVERE);
+			vr.setProperty("exception", e);
+			vr.setProperty("endpoint", endpoint);
+			reports.add(vr);
+		}
+
+		Status status = VisitReport.getWorstStatus(reports);
+		VisitReport report = new VisitReport(HealthCheck.getInstance(), activity, "WSDL Activity report", HealthCheck.NO_PROBLEM,
+				status, reports);
+
+		return report;
+	}
+	
+	public static boolean checkStyleAndUse(String style, String use) {
+		return !(style.equalsIgnoreCase("rpc") && use.equalsIgnoreCase("literal"));
+	}
+
+	private VisitReport testStyleAndUse(String endpoint, WSDLParser parser, String operationName) throws
+                UnknownOperationException {
+		VisitReport report;
+		String style = parser.getStyle().toLowerCase();
+		String use = "?";
+		use = parser.getUse(operationName).toLowerCase();
+		if (!checkStyleAndUse(style, use)) {
+		    report = new VisitReport(HealthCheck.getInstance(), activity,
+					     "Unsupported style", HealthCheck.UNSUPPORTED_STYLE,
+					     Status.SEVERE);
+		    report.setProperty("use", use);
+		    report.setProperty("style", style);
+		    report.setProperty("endpoint", endpoint);
+		} else {
+		    report = new VisitReport(HealthCheck.getInstance(), activity, style + "/"
+					     + use + " is OK", HealthCheck.NO_PROBLEM, Status.OK);
+		}
+		return report;
+	}
+
+	private VisitReport testEndpoint(WSDLParser parser, String operationName) {
+		List<VisitReport> reports = new ArrayList<VisitReport>();
+		List<String> endpoints = parser
+				.getOperationEndpointLocations(operationName);
+		for (String endpoint : endpoints) {
+			reports.add(RemoteHealthChecker.contactEndpoint(activity, endpoint));
+		}
+
+		Status status = VisitReport.getWorstStatus(reports);
+		if (reports.size()==1) {
+			return reports.get(0);
+		}
+		else if (reports.size()==0) {
+		    VisitReport report = new VisitReport(HealthCheck.getInstance(), activity, "Service could not be located.", HealthCheck.NO_ENDPOINTS, Status.SEVERE);
+		    report.setProperty("operationName", operationName);
+		    return report;
+		}
+		else {
+			return new VisitReport(HealthCheck.getInstance(), activity, "Endpoint tests",  HealthCheck.NO_PROBLEM, status, reports);
+		}
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLOperationConfigurationBean.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLOperationConfigurationBean.java
new file mode 100644
index 0000000..ac012ae
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/WSDLOperationConfigurationBean.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (C) 2011 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl;
+
+import java.net.URI;
+
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+
+/**
+ * Configuration for a WSDL operation.
+ *
+ * @author David Withers
+ */
+@ConfigurationBean(uri = WSDLActivity.URI + "/operation")
+public class WSDLOperationConfigurationBean {
+
+	private URI wsdl;
+	private String operationName;
+
+	public URI getWsdl() {
+		return wsdl;
+	}
+
+	@ConfigurationProperty(name = "wsdl", label = "WSDL URL", description = "The location of the WSDL definition for the web service")
+	public void setWsdl(URI wsdl) {
+		this.wsdl = wsdl;
+	}
+
+	public String getOperationName() {
+		return operationName;
+	}
+
+	@ConfigurationProperty(name = "name", label = "Operation Name", description = "The name of the WSDL operation")
+	public void setOperationName(String operationName) {
+		this.operationName = operationName;
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/package.html b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/package.html
new file mode 100644
index 0000000..e38a14e
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/package.html
@@ -0,0 +1,3 @@
+<body>
+Contains the activity classes required to interact with a WSDL based web-service.
+</body>
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/security/SSLUtilities.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/security/SSLUtilities.java
new file mode 100644
index 0000000..69033bb
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/security/SSLUtilities.java
@@ -0,0 +1,151 @@
+package net.sf.taverna.t2.activities.wsdl.security;
+
+import java.security.GeneralSecurityException;
+import java.security.SecureRandom;
+import java.security.cert.X509Certificate;
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+/**
+ * This class provide various static methods that relax X509 certificate and 
+ * hostname verification while using the SSL over the HTTP protocol.
+ * <p>
+ * Call:
+ * SSLUtilities.trustAllHostnames() to turn off the default hostname verification on HTTPS connection;
+ * SSLUtilities.trustAllHttpsCertificates() to turn off the default certificate validation on HTTPS connection.
+ * SSLUtilities.stopTrustingAllHttpsCertificates() to stop trusting all hosts' certificates and go back to default Java settings.
+ *
+ * @author    Francis Labrie
+ */
+public final class SSLUtilities {
+
+  /**
+   * Hostname verifier.
+   */
+  private static HostnameVerifier hostnameVerifier;
+  /**
+   * Thrust managers.
+   */
+  private static TrustManager[] trustManagers;
+
+  /**
+   * Set the default Hostname Verifier to an instance of a fake class that 
+   * trust all hostnames.
+   */
+  public static void trustAllHostnames() {
+      // Create a trust manager that does not validate certificate chains
+      if(hostnameVerifier == null) {
+          hostnameVerifier = new FakeHostnameVerifier();
+      } // if
+        // Install the all-trusting host name verifier:
+      HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
+  } // _trustAllHttpsCertificates
+  
+  /**
+   * Set the default X509 Trust Manager to an instance of a fake class that 
+   * trust all certificates, even the self-signed ones.
+   */
+  public static void trustAllHttpsCertificates() {
+      SSLContext context;
+      
+      // Create a trust manager that does not validate certificate chains
+      if(trustManagers == null) {
+          trustManagers = new TrustManager[] {new FakeX509TrustManager()};
+      } // if
+      // Install the all-trusting trust manager:
+      try {
+      context = SSLContext.getInstance("SSL");
+      context.init(null, trustManagers, new SecureRandom());
+      } catch(GeneralSecurityException gse) {
+          throw new IllegalStateException(gse.getMessage());
+      } // catch
+      HttpsURLConnection.setDefaultSSLSocketFactory(context.
+          getSocketFactory());
+  } // _trustAllHttpsCertificates
+  
+  /**
+   * This class implements a fake hostname verificator, trusting any host 
+   * name.
+   *
+   * @author    Francis Labrie
+   */
+  public static class FakeHostnameVerifier implements HostnameVerifier {
+      
+      /**
+       * Always return true, indicating that the host name is 
+       * an acceptable match with the server's authentication scheme.
+       *
+       * @param hostname        the host name.
+       * @param session         the SSL session used on the connection to 
+       * host.
+       * @return                the true boolean value 
+       * indicating the host name is trusted.
+       */
+      public boolean verify(String hostname, 
+          javax.net.ssl.SSLSession session) {
+          return(true);
+      } // verify
+  } // FakeHostnameVerifier
+
+  /**
+   * This class allow any X509 certificates to be used to authenticate the 
+   * remote side of a secure socket, including self-signed certificates.
+   *
+   * @author    Francis Labrie
+   */
+  public static class FakeX509TrustManager implements X509TrustManager {
+
+      /**
+       * Empty array of certificate authority certificates.
+       */
+      private static final X509Certificate[] _AcceptedIssuers = 
+          new X509Certificate[] {};
+
+      /**
+       * Always trust for client SSL chain peer certificate 
+       * chain with any authType authentication types.
+       *
+       * @param chain           the peer certificate chain.
+       * @param authType        the authentication type based on the client 
+       * certificate.
+       */
+      public void checkClientTrusted(X509Certificate[] chain, 
+          String authType) {
+      } // checkClientTrusted
+      
+      /**
+       * Always trust for server SSL chain peer certificate 
+       * chain with any authType exchange algorithm types.
+       *
+       * @param chain           the peer certificate chain.
+       * @param authType        the key exchange algorithm used.
+       */
+      public void checkServerTrusted(X509Certificate[] chain, 
+          String authType) {
+      } // checkServerTrusted
+      
+      /**
+       * Return an empty array of certificate authority certificates which 
+       * are trusted for authenticating peers.
+       *
+       * @return                a empty array of issuer certificates.
+       */
+      public X509Certificate[] getAcceptedIssuers() {
+          return(_AcceptedIssuers);
+      } // getAcceptedIssuers
+  } // FakeX509TrustManager
+  
+  /**
+   * Stop trusting all certificates and go back to the default settings.
+   * 
+   * @author Alex Nenadic
+   */
+  public static void stopTrustingAllHttpsCertificates(){
+      HttpsURLConnection.setDefaultSSLSocketFactory((SSLSocketFactory) SSLSocketFactory.getDefault());
+  }
+} // SSLUtilities
+
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/security/SecurityProfiles.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/security/SecurityProfiles.java
new file mode 100644
index 0000000..aa8084b
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/security/SecurityProfiles.java
@@ -0,0 +1,130 @@
+package net.sf.taverna.t2.activities.wsdl.security;
+
+import java.net.URI;
+
+import net.sf.taverna.t2.activities.wsdl.WSDLActivity;
+
+/**
+ * Various security profiles for Web services.
+ *
+ * @author Alex Nenadic
+ *
+ */
+public class SecurityProfiles {
+
+	public static URI SECURITY = URI.create(WSDLActivity.URI).resolve("wsdl/security");
+
+	/**
+	  * Security profile for Web services that require
+	 * UsernameToken authentication with plaintext password.
+	 * Such services should typically be invoked over HTTPS.
+	 */
+	public static final URI WSSECURITY_USERNAMETOKEN_PLAINTEXTPASSWORD = SECURITY.resolve("#WSSecurityUsernameTokenPlainTextPassword");
+	/**
+	 * XML string for configuring Axis engine with wss4j handlers to handle setting security
+	 * headers on the SOAP message for profile WSSECURITY_USERNAMETOKEN_PLAINTEXTPASSWORD.
+	 */
+	public static final String WSSECURITY_USERNAMETOKEN_PLAINTEXTPASSWORD_CONFIG = "<deployment xmlns=\"http://xml.apache.org/axis/wsdd/\" xmlns:java=\"http://xml.apache.org/axis/wsdd/providers/java\">" +
+	"<globalConfiguration>" +
+	"<requestFlow>" +
+	"<handler type=\"java:org.apache.ws.axis.security.WSDoAllSender\">" +
+	"<parameter name=\"action\" value=\"UsernameToken\"/>" +
+	"<parameter name=\"passwordType\" value=\"PasswordText\"/>" +
+	"</handler>"+
+	"</requestFlow>" +
+	"</globalConfiguration>" +
+	"<transport name=\"http\" pivot=\"java:org.apache.axis.transport.http.HTTPSender\"/>"+
+	"</deployment>";
+
+	 /**
+	  * Security profile for Web services that require
+	 * UsernameToken authentication with digest password.
+	 * Such services would typically be invoked over HTTPS.
+	 */
+	public static final URI WSSECURITY_USERNAMETOKEN_DIGESTPASSWORD = SECURITY.resolve("#WSSecurityUsernameTokenDigestPassword");
+	/**
+	 * XML string for configuring Axis engine with wss4j handlers to handle setting security
+	 * headers on the SOAP message for profile WSSECURITY_USERNAMETOKEN_DIGESTPASSWORD.
+	 */
+	public static final String WSSECURITY_USERNAMETOKEN_DIGESTPASSWORD_CONFIG = "<deployment xmlns=\"http://xml.apache.org/axis/wsdd/\" xmlns:java=\"http://xml.apache.org/axis/wsdd/providers/java\">" +
+	"<globalConfiguration>" +
+	"<requestFlow>" +
+	"<handler type=\"java:org.apache.ws.axis.security.WSDoAllSender\">" +
+	"<parameter name=\"action\" value=\"UsernameToken\"/>" +
+	"<parameter name=\"passwordType\" value=\"PasswordDigest\"/>" +
+	"</handler>"+
+	"</requestFlow>" +
+	"</globalConfiguration>" +
+	"<transport name=\"http\" pivot=\"java:org.apache.axis.transport.http.HTTPSender\"/>"+
+	"</deployment>";
+
+	 /**
+	  * Security profile for Web services that require a timestamp SOAP header
+	  * to be sent in addition to UsernameToken authentication with plaintext password.
+	 * Such services should typically be invoked over HTTPS.
+	 */
+	public static final URI WSSECURITY_TIMESTAMP_USERNAMETOKEN_PLAINTEXTPASSWORD = SECURITY.resolve("#WSSecurityTimestampUsernameTokenPlainTextPassword");
+	/**
+	 * XML string for configuring Axis engine with wss4j handlers to handle setting security
+	 * headers on the SOAP message for profile WSSECURITY_TIMESTAMP_USERNAMETOKEN_DIGESTPASSWORD.
+	 */
+	public static final String WSSECURITY_TIMESTAMP_USERNAMETOKEN_PLAINTETPASSWORD_CONFIG = "<deployment xmlns=\"http://xml.apache.org/axis/wsdd/\" xmlns:java=\"http://xml.apache.org/axis/wsdd/providers/java\">" +
+	"<globalConfiguration>" +
+	"<requestFlow>" +
+	"<handler type=\"java:org.apache.ws.axis.security.WSDoAllSender\">" +
+	"<parameter name=\"action\" value=\"Timestamp UsernameToken\"/>" +
+	"<parameter name=\"passwordType\" value=\"PasswordText\"/>" +
+	"</handler>"+
+	"</requestFlow>" +
+	"<responseFlow>" +
+	"<handler type=\"java:org.apache.ws.axis.security.WSDoAllReceiver\">" +
+	"<parameter name=\"action\" value=\"Timestamp\"/>" +
+	"</handler>"+
+	"</responseFlow>" +
+	"</globalConfiguration>" +
+	"<transport name=\"http\" pivot=\"java:org.apache.axis.transport.http.HTTPSender\"/>"+
+	"</deployment>";
+
+	 /**
+	  * Security profile for Web services that require a timestamp SOAP header
+	  * to be sent in addition to UsernameToken authentication with digest password.
+	 * Such services would typically be invoked over HTTPS.
+	 */
+	public static final URI WSSECURITY_TIMESTAMP_USERNAMETOKEN_DIGESTPASSWORD = SECURITY.resolve("#WSSecurityTimestampUsernameTokenDigestPassword");
+	/**
+	 * XML string for configuring Axis engine with wss4j handlers to handle setting security
+	 * headers on the SOAP message for profile WSSECURITY_TIMESTAMP_USERNAMETOKEN_DIGESTPASSWORD.
+	 */
+	public static final String WSSECURITY_TIMESTAMP_USERNAMETOKEN_DIGESTPASSWORD_CONFIG = "<deployment xmlns=\"http://xml.apache.org/axis/wsdd/\" xmlns:java=\"http://xml.apache.org/axis/wsdd/providers/java\">" +
+	"<globalConfiguration>" +
+	"<requestFlow>" +
+	"<handler type=\"java:org.apache.ws.axis.security.WSDoAllSender\">" +
+	"<parameter name=\"action\" value=\"Timestamp UsernameToken\"/>" +
+	"<parameter name=\"passwordType\" value=\"PasswordDigest\"/>" +
+	"</handler>"+
+	"</requestFlow>" +
+	"<responseFlow>" +
+	"<handler type=\"java:org.apache.ws.axis.security.WSDoAllReceiver\">" +
+	"<parameter name=\"action\" value=\"Timestamp\"/>" +
+	"</handler>"+
+	"</responseFlow>" +
+	"</globalConfiguration>" +
+	"<transport name=\"http\" pivot=\"java:org.apache.axis.transport.http.HTTPSender\"/>"+
+	"</deployment>";
+
+	/**
+	 * Security profile for Web services that require HTTP Basic Authentication.
+	 * There is no WS-Security involved.
+	 * Such services should typically be invoked over HTTPS.
+	 */
+	public static final URI HTTP_BASIC_AUTHN = SECURITY.resolve("#HTTPBasicAuthNPlainTextPassword");
+
+	/**
+	 * Security profile for Web services that require HTTP Digest Authentication.
+	 * There is no WS-Security involved.
+	 * Such services would typically be invoked over HTTPS.
+	 */
+	public static final URI HTTP_DIGEST_AUTHN = SECURITY.resolve("#HTTPDigestAuthN");
+
+
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/security/TavernaAxisCustomSSLSocketFactory.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/security/TavernaAxisCustomSSLSocketFactory.java
new file mode 100644
index 0000000..19ecb14
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/security/TavernaAxisCustomSSLSocketFactory.java
@@ -0,0 +1,40 @@
+package net.sf.taverna.t2.activities.wsdl.security;
+
+import java.io.IOException;
+import java.net.Socket;
+import java.util.Hashtable;
+
+import javax.net.ssl.SSLContext;
+
+import org.apache.axis.components.net.BooleanHolder;
+import org.apache.axis.components.net.JSSESocketFactory;
+
+public class TavernaAxisCustomSSLSocketFactory extends JSSESocketFactory {
+
+
+	public TavernaAxisCustomSSLSocketFactory(Hashtable attributes) {
+		super(attributes);
+	}
+
+	@Override
+	public Socket create(String host, int port, StringBuffer otherHeaders,
+			BooleanHolder useFullURL) throws Exception {
+		// Make sure we always pick up the default socket factory from SSLContext, which is based on 
+		// Taverna's Keystore and Truststore and gets updated when they get updated (it may have
+		// been updated in the menatime so just refresh it here just in case).
+		initFactory();
+		return super.create(host, port, otherHeaders, useFullURL);
+	}
+	
+	@Override
+	protected void initFactory() throws IOException {
+		try{
+			// Set it to the default one from the SSLContext which is set to use Taverna's Keystore and Truststore
+			sslFactory = SSLContext.getDefault().getSocketFactory();
+		}
+		catch (Exception e) {
+			throw new IOException("Could not get the Taverna's default SSLSocketFactory from SSLContext",e);
+		}
+	}
+	
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/security/ThreadLocalSSLSocketFactory.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/security/ThreadLocalSSLSocketFactory.java
new file mode 100644
index 0000000..5660cbe
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/security/ThreadLocalSSLSocketFactory.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl.security;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.net.UnknownHostException;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+import org.apache.log4j.Logger;
+
+/**
+ * An implementation of SSLSocketFactory which delegates to one of two internal
+ * SSLSocketFactory implementations. The implementation delegated to is
+ * determined by a thread local property and is either the default SSL socket or
+ * a customized one with a trust manager that allows the use of unsigned server
+ * certificates.
+ * <p>
+ * To set this as the default call install() prior to making any HTTPS
+ * connections, then bracket code which needs to trust unsigned certificates in
+ * the startTrustingEverything() and stopTrustingEverything() methods.
+ * 
+ * @author Tom Oinn
+ * 
+ */
+public class ThreadLocalSSLSocketFactory extends SSLSocketFactory {
+
+	private static Logger logger = Logger
+	.getLogger(ThreadLocalSSLSocketFactory.class);
+
+	/**
+	 * Calls to open HTTPS connections will trust unsigned certificates afer
+	 * this call is made, this is scoped to the current thread only.
+	 */
+	public static void startTrustingEverything() {
+		threadLocalFactory.set(createAlwaysTrustingFactory());
+	}
+
+	/**
+	 * Stop trusting unsigned certificates, reverting to the default behaviour
+	 * for the current thread.
+	 */
+	public static void stopTrustingEverything() {
+		threadLocalFactory.set(null);
+	}
+
+	/**
+	 * Set this as the default global socket factory for HTTPS connections
+	 */
+	public static void install() {
+		HttpsURLConnection
+				.setDefaultSSLSocketFactory(new ThreadLocalSSLSocketFactory());
+	}
+
+	/**
+	 * Determine whether the current thread will trust unsigned certificates
+	 */
+	public static boolean isTrustingEverything() {
+		return (threadLocalFactory.get() != null);
+	}
+
+	/**
+	 * Never construct manually
+	 */
+	private ThreadLocalSSLSocketFactory() {
+		super();
+	}
+
+	private static ThreadLocal<SSLSocketFactory> threadLocalFactory = new ThreadLocal<SSLSocketFactory>();
+
+	private static SSLSocketFactory createAlwaysTrustingFactory() {
+		SSLContext sc = null;
+		try {
+			sc = SSLContext.getInstance("SSL");
+		} catch (NoSuchAlgorithmException e1) {
+
+			logger.error("No SSL algorithm", e1);
+		}
+		TrustManager overlyTrusting = new X509TrustManager() {
+
+			public void checkClientTrusted(X509Certificate[] arg0, String arg1)
+					throws CertificateException {
+
+			}
+
+			public void checkServerTrusted(X509Certificate[] arg0, String arg1)
+					throws CertificateException {
+
+			}
+
+			public X509Certificate[] getAcceptedIssuers() {
+				return null;
+			}
+
+		};
+		try {
+			sc.init(null, new TrustManager[] { overlyTrusting },
+					new SecureRandom());
+		} catch (KeyManagementException e) {
+			logger.error("Unable to initialize SSLContext", e);
+		}
+		return sc.getSocketFactory();
+
+	}
+
+	private SSLSocketFactory getFactory() {
+		if (threadLocalFactory.get() == null) {
+			return (SSLSocketFactory) SSLSocketFactory.getDefault();
+		} else {
+			return threadLocalFactory.get();
+		}
+	}
+
+	@Override
+	public Socket createSocket(Socket arg0, String arg1, int arg2, boolean arg3)
+			throws IOException {
+		return getFactory().createSocket(arg0, arg1, arg2, arg3);
+	}
+
+	@Override
+	public String[] getDefaultCipherSuites() {
+		return getFactory().getDefaultCipherSuites();
+	}
+
+	@Override
+	public String[] getSupportedCipherSuites() {
+		return getFactory().getSupportedCipherSuites();
+	}
+
+	@Override
+	public Socket createSocket() throws IOException {
+		return getFactory().createSocket();
+	}
+
+	@Override
+	public Socket createSocket(String arg0, int arg1) throws IOException,
+			UnknownHostException {
+		return getFactory().createSocket(arg0, arg1);
+	}
+
+	@Override
+	public Socket createSocket(InetAddress arg0, int arg1) throws IOException {
+		return getFactory().createSocket(arg0, arg1);
+	}
+
+	@Override
+	public Socket createSocket(String arg0, int arg1, InetAddress arg2, int arg3)
+			throws IOException, UnknownHostException {
+		return getFactory().createSocket(arg0, arg1, arg2, arg3);
+	}
+
+	@Override
+	public Socket createSocket(InetAddress arg0, int arg1, InetAddress arg2,
+			int arg3) throws IOException {
+		return getFactory().createSocket(arg0, arg1, arg2, arg3);
+	}
+}
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/wss4j/T2WSDoAllSender.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/wss4j/T2WSDoAllSender.java
new file mode 100644
index 0000000..7e9f909
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/wss4j/T2WSDoAllSender.java
@@ -0,0 +1,231 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+
+package net.sf.taverna.t2.activities.wsdl.wss4j;
+
+import java.util.Vector;
+
+//import net.sf.taverna.t2.security.agents.SAException;
+//import net.sf.taverna.t2.security.agents.WSSecurityAgent;
+
+//import org.apache.commons.logging.Log;
+//import org.apache.commons.logging.LogFactory;
+//import org.apache.log4j.Logger;
+import org.apache.ws.axis.security.WSDoAllSender;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSEncryptionPart;
+import org.apache.ws.security.WSSConfig;
+import org.apache.ws.security.WSSecurityException;
+import org.apache.ws.security.handler.RequestData;
+import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.message.WSSecHeader;
+import org.apache.ws.security.util.WSSecurityUtil;
+import org.w3c.dom.Document;
+
+public class T2WSDoAllSender extends WSDoAllSender{
+	
+    /**
+	 * This is a security handler for wss4j that invokes security agents
+	 * whenever access to the user's credentials (passwords, private keys) 
+	 * or secret keys is required. The security agent performs the necessary
+	 * security operations on the message to be sent and returns the message. 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	//private static Log log = LogFactory.getLog(T2WSDoAllSender.class.getName());
+
+   // private boolean doDebug = log.isDebugEnabled();
+    
+   // private static Logger logger = Logger.getLogger(T2WSDoAllSender.class);
+    
+    /**                                                             
+     * Performs all defined security actions to set-up the SOAP request.
+     * 
+     * This method overrides the doSenderAction() method of WSHandler class
+     * by setting the actions to be executed to use T2 security agents.
+     * 
+     * 
+     * @param doAction a set defining the actions to do 
+     * @param doc   the request as DOM document 
+     * @param reqData a data storage to pass values around bewteen methods
+     * @param actions a vector holding the actions to do in the order defined
+     *                in the deployment file or property
+     * @throws WSSecurityException
+     */
+    @Override
+    protected void doSenderAction(int doAction, Document doc,
+                                  RequestData reqData, Vector actions, 
+				  boolean isRequest)
+            throws WSSecurityException {
+    	
+
+        boolean mu = decodeMustUnderstand(reqData);
+
+        WSSConfig wssConfig = WSSConfig.getNewInstance();
+        
+        wssConfig
+	    .setEnableSignatureConfirmation(decodeEnableSignatureConfirmation(reqData));
+        
+        wssConfig
+	    .setPrecisionInMilliSeconds(decodeTimestampPrecision(reqData));
+        reqData.setWssConfig(wssConfig);
+
+        Object mc = reqData.getMsgContext();
+        String actor = getString(WSHandlerConstants.ACTOR, mc);
+        reqData.setActor(actor);
+
+        WSSecHeader secHeader = new WSSecHeader(actor, mu);
+        secHeader.insertSecurityHeader(doc);
+        
+        reqData.setSecHeader(secHeader);
+        reqData.setSoapConstants(WSSecurityUtil.getSOAPConstants(doc
+                .getDocumentElement()));
+        /*
+         * Here we have action, username, password, and actor, mustUnderstand.
+         * Now get the action specific parameters.
+         */
+        if ((doAction & WSConstants.UT) == WSConstants.UT) {
+            decodeUTParameter(reqData);
+        }
+        /*
+         * Here we have action, username, password, and actor, mustUnderstand.
+         * Now get the action specific parameters.
+         */
+        if ((doAction & WSConstants.UT_SIGN) == WSConstants.UT_SIGN) {
+            decodeUTParameter(reqData);
+            decodeSignatureParameter(reqData);
+        }
+        /*
+         * Get and check the Signature specific parameters first because they
+         * may be used for encryption too.
+         */
+        if ((doAction & WSConstants.SIGN) == WSConstants.SIGN) {
+            reqData.setSigCrypto(loadSignatureCrypto(reqData));
+            decodeSignatureParameter(reqData);
+        }
+        /*
+         * If we need to handle signed SAML token then we need may of the
+         * Signature parameters. The handle procedure loads the signature crypto
+         * file on demand, thus don't do it here.
+         */
+        if ((doAction & WSConstants.ST_SIGNED) == WSConstants.ST_SIGNED) {
+            decodeSignatureParameter(reqData);
+        }
+        /*
+         * Set and check the encryption specific parameters, if necessary take
+         * over signature parameters username and crypto instance.
+         */
+        if ((doAction & WSConstants.ENCR) == WSConstants.ENCR) {
+            reqData.setEncCrypto(loadEncryptionCrypto(reqData));
+            decodeEncryptionParameter(reqData);
+        }
+        /*
+         * If after all the parsing no Signature parts defined, set here a
+         * default set. This is necessary because we add SignatureConfirmation
+         * and therefore the default (Body) must be set here. The default setting
+         * in WSSignEnvelope doesn't work because the vector is not empty anymore.
+         */
+        if (reqData.getSignatureParts().isEmpty()) {
+            WSEncryptionPart encP = new WSEncryptionPart(reqData.getSoapConstants()
+                    .getBodyQName().getLocalPart(), reqData.getSoapConstants()
+                    .getEnvelopeURI(), "Content");
+            reqData.getSignatureParts().add(encP);
+        }
+        /*
+         * If SignatureConfirmation is enabled and this is a reqsponse then
+         * insert SignatureCOnfrmation elements, note their wsu:id in the signature
+         * parts. They will be signed automatically during a (probably) defined
+         * SIGN action.
+         */
+        if (wssConfig.isEnableSignatureConfirmation() && !isRequest) {
+            String done;
+            if ((done = (String) getProperty(reqData.getMsgContext(),
+                    WSHandlerConstants.SIG_CONF_DONE)) == null
+                    || !DONE.equals(done)) {
+                Vector results = null;
+                if ((results = (Vector) getProperty(reqData.getMsgContext(),
+                        WSHandlerConstants.RECV_RESULTS)) != null) {
+                    wssConfig.getAction(WSConstants.SC).execute(this, WSConstants.SC, doc, reqData);
+                }
+            }
+        }
+        /*
+         * Here we have all necessary information to perform the requested
+         * action(s).
+         */
+        
+        // Get the security agent
+       /* WSSecurityAgent sa = (WSSecurityAgent) ((MessageContext)reqData.getMsgContext()).getProperty("security_agent");
+   
+        // Perform security actions
+        for (int i = 0; i < actions.size(); i++) {
+
+            int actionToDo = ((Integer) actions.get(i)).intValue();
+            if (doDebug) {
+                log.debug("Performing Action: " + actionToDo);
+            }
+
+            switch (actionToDo) {
+                case WSConstants.UT:{
+                	try {
+    					sa.wssUsernameToken(doc, reqData);
+    				} catch (SAException e) {
+    					logger.error("", e);
+    				} break;
+				}
+                case WSConstants.ENCR:
+                case WSConstants.SIGN:{//sa.wssSign(doc, reqData); break;}
+                case WSConstants.ST_SIGNED:
+                case WSConstants.ST_UNSIGNED:
+                case WSConstants.TS:
+                case WSConstants.UT_SIGN:
+                    wssConfig.getAction(actionToDo).execute(this, actionToDo, doc, reqData);
+                    break;
+                case WSConstants.NO_SERIALIZE:
+                    reqData.setNoSerialization(true);
+                    break;
+            }
+        } */
+
+        /*
+         * If this is a request then store all signature values. Add ours to
+         * already gathered values because of chained handlers, e.g. for
+         * other actors.
+         */
+
+        if (wssConfig.isEnableSignatureConfirmation() && isRequest) {
+            if (reqData.getSignatureValues().size() > 0) {
+                Vector sigv = null;
+                if ((sigv = (Vector) getProperty(reqData.getMsgContext(),
+                        WSHandlerConstants.SEND_SIGV)) == null) {
+                    sigv = new Vector();
+                    setProperty(reqData.getMsgContext(),
+                            WSHandlerConstants.SEND_SIGV, sigv);
+                }
+                // sigv.add(reqData.getSignatureValues());
+                sigv.addAll(reqData.getSignatureValues());
+            }
+        }
+    }
+
+}
+
+
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/AddXMLSplitterEdit.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/AddXMLSplitterEdit.java
new file mode 100644
index 0000000..a30c6a2
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/AddXMLSplitterEdit.java
@@ -0,0 +1,290 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl.xmlsplitter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.taverna.t2.activities.wsdl.WSDLActivity;
+import net.sf.taverna.t2.workflowmodel.CompoundEdit;
+import net.sf.taverna.t2.workflowmodel.Dataflow;
+import net.sf.taverna.t2.workflowmodel.Edit;
+import net.sf.taverna.t2.workflowmodel.EditException;
+import net.sf.taverna.t2.workflowmodel.Edits;
+import net.sf.taverna.t2.workflowmodel.EventForwardingOutputPort;
+import net.sf.taverna.t2.workflowmodel.EventHandlingInputPort;
+import net.sf.taverna.t2.workflowmodel.InputPort;
+import net.sf.taverna.t2.workflowmodel.OutputPort;
+import net.sf.taverna.t2.workflowmodel.Processor;
+import net.sf.taverna.t2.workflowmodel.ProcessorInputPort;
+import net.sf.taverna.t2.workflowmodel.ProcessorOutputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
+import net.sf.taverna.t2.workflowmodel.utils.Tools;
+import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+public class AddXMLSplitterEdit implements Edit<Dataflow> {
+
+	private final Edits edits;
+	private final Activity<?> activity;
+	private final String portName;
+	private final boolean isInput;
+	private CompoundEdit compoundEdit1 = null;
+	private Edit<?> linkUpEdit;
+	private final Dataflow dataflow;
+	private boolean applied = false;
+
+	public AddXMLSplitterEdit(Dataflow dataflow, Activity<?> activity,
+			String portName, boolean isInput, Edits edits) {
+		this.dataflow = dataflow;
+		this.activity = activity;
+		this.portName = portName;
+		this.isInput = isInput;
+		this.edits = edits;
+	}
+
+	@Override
+	public Dataflow doEdit() throws EditException {
+		if (applied) throw new EditException("Edit has already been applied!");
+		List<Edit<?>> editList = new ArrayList<Edit<?>>();
+
+		Activity<JsonNode> splitter = null;
+		String sourcePortName = "";
+		Processor sourceProcessor = null;
+		Activity<?> sourceActivity = null;
+
+		String sinkPortName = "";
+		Processor sinkProcessor = null;
+		Activity<?> sinkActivity = null;
+
+
+		Processor activityProcessor = findProcessorForActivity(dataflow,
+				activity);
+		if (activityProcessor == null) {
+			throw new EditException(
+					"Cannot find the processor that the activity belongs to");
+		}
+
+
+		String displayName = portName;
+		if (portName.equals("parameters")) {
+			displayName = isInput ? "input" : "output";
+		}
+		String processorName = activityProcessor.getLocalName();
+		String candidateName;
+		if (displayName.startsWith(processorName)) {
+			// No need to make GetRequest_GetRequestResponse
+			candidateName = displayName;
+		} else {
+			// Combine with processor name
+			String displayProcessorName;
+			if (activity instanceof XMLOutputSplitterActivity || activity instanceof XMLInputSplitterActivity) {
+				// For splitters on splitters - avoid adding up blah_bluh_blih_more_stuff
+				String[] processorNameSplit = processorName.replace("_input", "").replace("_output", "").split("_");
+				displayProcessorName = processorNameSplit[processorNameSplit.length-1];
+			} else {
+				displayProcessorName = activityProcessor.getLocalName();
+			}
+			candidateName = displayProcessorName + "_" + displayName;
+		}
+		String name = Tools.uniqueProcessorName(candidateName, dataflow);
+		Processor splitterProcessor = edits.createProcessor(name);
+
+		try {
+			if (activity instanceof XMLInputSplitterActivity) {
+				if (!isInput) {
+					throw new EditException(
+							"Can only add an input splitter to another input splitter");
+				}
+				TypeDescriptor descriptor = ((XMLInputSplitterActivity) activity)
+						.getTypeDescriptorForInputPort(portName);
+				if (descriptor instanceof ArrayTypeDescriptor && !((ArrayTypeDescriptor)descriptor).isWrapped()) {
+					descriptor=((ArrayTypeDescriptor)descriptor).getElementType();
+				}
+
+				JsonNode bean = XMLSplitterConfigurationBeanBuilder
+						.buildBeanForInput(descriptor);
+				splitter = new XMLInputSplitterActivity();
+				editList.add(edits.getConfigureActivityEdit(splitter, bean));
+
+			} else if (activity instanceof XMLOutputSplitterActivity) {
+				if (isInput) {
+					throw new EditException(
+							"Can only add an output splitter to another output splitter");
+				}
+				TypeDescriptor descriptor = ((XMLOutputSplitterActivity) activity)
+						.getTypeDescriptorForOutputPort(portName);
+
+				if (descriptor instanceof ArrayTypeDescriptor && !((ArrayTypeDescriptor)descriptor).isWrapped()) {
+					descriptor=((ArrayTypeDescriptor)descriptor).getElementType();
+				}
+
+				JsonNode bean = XMLSplitterConfigurationBeanBuilder
+						.buildBeanForOutput(descriptor);
+				splitter = new XMLOutputSplitterActivity();
+				editList.add(edits.getConfigureActivityEdit(splitter, bean));
+
+			} else if (activity instanceof WSDLActivity) {
+				if (isInput) {
+					TypeDescriptor descriptor = ((WSDLActivity) activity)
+							.getTypeDescriptorForInputPort(portName);
+					JsonNode bean = XMLSplitterConfigurationBeanBuilder
+							.buildBeanForInput(descriptor);
+					splitter = new XMLInputSplitterActivity();
+					editList
+							.add(edits.getConfigureActivityEdit(splitter, bean));
+				} else {
+					TypeDescriptor descriptor = ((WSDLActivity) activity)
+							.getTypeDescriptorForOutputPort(portName);
+					JsonNode bean = XMLSplitterConfigurationBeanBuilder
+							.buildBeanForOutput(descriptor);
+					splitter = new XMLOutputSplitterActivity();
+					editList
+							.add(edits.getConfigureActivityEdit(splitter, bean));
+				}
+			} else {
+				throw new EditException(
+						"The activity type is not suitable for adding xml processing processors");
+			}
+		} catch (Exception e) {
+			throw new EditException(
+					"An error occured whilst tyring to add an XMLSplitter to the activity:"
+							+ activity, e);
+		}
+
+		if (isInput) {
+			sourcePortName = "output";
+			sinkPortName = portName;
+			sinkProcessor = activityProcessor;
+			sinkActivity = activity;
+			sourceProcessor = splitterProcessor;
+			sourceActivity = splitter;
+		}
+		else {
+			sourcePortName = portName;
+			sinkPortName = "input";
+			sinkProcessor = splitterProcessor;
+			sinkActivity = splitter;
+			sourceProcessor = activityProcessor;
+			sourceActivity = activity;
+		}
+
+		editList.add(edits.getDefaultDispatchStackEdit(splitterProcessor));
+		editList.add(edits.getAddActivityEdit(splitterProcessor, splitter));
+//		editList.add(edits
+//				.getMapProcessorPortsForActivityEdit(splitterProcessor));
+		editList.add(edits.getAddProcessorEdit(dataflow, splitterProcessor));
+
+		compoundEdit1 = new CompoundEdit(editList);
+		compoundEdit1.doEdit();
+
+		List<Edit<?>> linkUpEditList = new ArrayList<Edit<?>>();
+
+		EventForwardingOutputPort source = getSourcePort(sourceProcessor, sourceActivity,
+				sourcePortName, linkUpEditList);
+		EventHandlingInputPort sink = getSinkPort(sinkProcessor, sinkActivity, sinkPortName, linkUpEditList);
+
+		if (source == null)
+			throw new EditException(
+					"Unable to find the source port when linking up "
+							+ sourcePortName + " to " + sinkPortName);
+		if (sink == null)
+			throw new EditException(
+					"Unable to find the sink port when linking up "
+							+ sourcePortName + " to " + sinkPortName);
+
+		linkUpEditList.add(net.sf.taverna.t2.workflowmodel.utils.Tools.getCreateAndConnectDatalinkEdit(dataflow, source, sink, edits));
+
+		linkUpEdit = new CompoundEdit(linkUpEditList);
+		linkUpEdit.doEdit();
+		applied = true;
+		return dataflow;
+	}
+
+	private EventHandlingInputPort getSinkPort(Processor processor, Activity<?> activity,
+			String portName, List<Edit<?>> editList) {
+		InputPort activityPort = net.sf.taverna.t2.workflowmodel.utils.Tools.getActivityInputPort(activity, portName);
+		//check if processor port exists
+		EventHandlingInputPort input = net.sf.taverna.t2.workflowmodel.utils.Tools.getProcessorInputPort(processor, activity, activityPort);
+		if (input == null) {
+			//port doesn't exist so create a processor port and map it
+			ProcessorInputPort processorInputPort =
+				edits.createProcessorInputPort(processor, activityPort.getName(), activityPort.getDepth());
+			editList.add(edits.getAddProcessorInputPortEdit(processor, processorInputPort));
+			editList.add(edits.getAddActivityInputPortMappingEdit(activity, activityPort.getName(), activityPort.getName()));
+			input = processorInputPort;
+		}
+		return input;
+	}
+
+	private EventForwardingOutputPort getSourcePort(Processor processor, Activity<?> activity,
+			String portName, List<Edit<?>> editList) {
+		OutputPort activityPort = net.sf.taverna.t2.workflowmodel.utils.Tools.getActivityOutputPort(activity, portName);
+		//check if processor port exists
+		EventForwardingOutputPort output = net.sf.taverna.t2.workflowmodel.utils.Tools.getProcessorOutputPort(processor, activity, activityPort);
+		if (output == null) {
+			//port doesn't exist so create a processor port and map it
+			ProcessorOutputPort processorOutputPort =
+				edits.createProcessorOutputPort(processor, activityPort.getName(), activityPort.getDepth(), activityPort.getGranularDepth());
+			editList.add(edits.getAddProcessorOutputPortEdit(processor, processorOutputPort));
+			editList.add(edits.getAddActivityOutputPortMappingEdit(activity, activityPort.getName(), activityPort.getName()));
+			output = processorOutputPort;
+		}
+		return output;
+	}
+
+	@Override
+	public void undo() {
+		if (!applied) {
+			throw new RuntimeException(
+					"Attempt to undo edit that was never applied");
+		}
+		if (linkUpEdit.isApplied())
+			linkUpEdit.undo();
+		if (compoundEdit1.isApplied())
+			compoundEdit1.undo();
+		applied = false;
+	}
+
+	@Override
+	public boolean isApplied() {
+		return applied;
+	}
+
+	private Processor findProcessorForActivity(Dataflow dataflow,
+			Activity<?> activity) {
+		for (Processor p : dataflow.getProcessors()) {
+			for (Activity<?> a : p.getActivityList()) {
+				if (a == activity)
+					return p;
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public Object getSubject() {
+		return dataflow;
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLInputSplitterActivity.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLInputSplitterActivity.java
new file mode 100644
index 0000000..3feb6f8
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLInputSplitterActivity.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl.xmlsplitter;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.t2.activities.wsdl.InputPortTypeDescriptorActivity;
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.ReferenceServiceException;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.workflowmodel.OutputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AbstractAsynchronousActivity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
+import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
+import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.parser.UnknownOperationException;
+import net.sf.taverna.wsdl.xmlsplitter.XMLInputSplitter;
+import net.sf.taverna.wsdl.xmlsplitter.XMLSplitterSerialisationHelper;
+
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+/**
+ * An activity that replicates the behaviour of the Taverna 1 XMLInputSplitters.
+ *
+ * @author Stuart Owen
+ *
+ */
+public class XMLInputSplitterActivity extends AbstractAsynchronousActivity<JsonNode> implements InputPortTypeDescriptorActivity {
+
+	public static final String URI = "http://ns.taverna.org.uk/2010/activity/xml-splitter/in";
+
+	JsonNode configBean;
+	TypeDescriptor typeDescriptor;
+
+	@Override
+	public void configure(JsonNode configBean) throws ActivityConfigurationException {
+		this.configBean = configBean;
+
+		try {
+			String wrappedType = configBean.get("wrappedType").textValue();
+			Element element = new SAXBuilder().build(new StringReader(wrappedType)).getRootElement();
+			typeDescriptor = XMLSplitterSerialisationHelper.extensionXMLToTypeDescriptor(element);
+		} catch (JDOMException | IOException e) {
+			throw new ActivityConfigurationException(e);
+		}
+	}
+
+	@Override
+	public void executeAsynch(final Map<String, T2Reference> data,
+			final AsynchronousActivityCallback callback) {
+		callback.requestRun(new Runnable() {
+
+			public void run() {
+				try {
+					ReferenceService referenceService = callback.getContext().getReferenceService();
+					XMLInputSplitter splitter = createSplitter();
+					Map<String,Object> inputMap = buildInputMap(data,referenceService);
+					Map<String,String> outputMap = splitter.execute(inputMap);
+					callback.receiveResult(createOutputData(outputMap,referenceService), new int[0]);
+				}
+				catch(Exception e) {
+					callback.fail("Error in XMLInputSplitterActivity",e);
+				}
+			}
+
+			private Map<String, T2Reference> createOutputData(
+					Map<String, String> outputMap,ReferenceService referenceService) throws ReferenceServiceException {
+				Map<String,T2Reference> result = new HashMap<String, T2Reference>();
+				for (String outputName : outputMap.keySet()) {
+					String xmlOut = outputMap.get(outputName);
+					result.put(outputName, referenceService.register(xmlOut, 0, true, callback.getContext()));
+				}
+				return result;
+			}
+
+			private XMLInputSplitter createSplitter() {
+				List<String> inputNames = new ArrayList<String>();
+				List<String> inputTypes = new ArrayList<String>();
+				List<String> outputNames = new ArrayList<String>();
+
+				//FIXME: need to use the definition beans for now to get the mimetype. Need to use the actual InputPort once the mimetype becomes available again.
+				if (configBean.has("inputPorts")) {
+					for (JsonNode inputPort : configBean.get("inputPorts")) {
+						inputNames.add(inputPort.get("name").textValue());
+						inputTypes.add(inputPort.get("mimeType").textValue());
+					}
+				}
+
+				for (OutputPort outputPorts : getOutputPorts()) {
+					outputNames.add(outputPorts.getName());
+				}
+
+				return new XMLInputSplitter(typeDescriptor,inputNames.toArray(new String[]{}),inputTypes.toArray(new String[]{}),outputNames.toArray(new String[]{}));
+			}
+
+			private Map<String,Object> buildInputMap(Map<String, T2Reference> data,ReferenceService referenceService) throws ReferenceServiceException {
+				Map<String,Object> result = new HashMap<String, Object>();
+				for (String inputName : data.keySet()) {
+					T2Reference id = data.get(inputName);
+					result.put(inputName, referenceService.renderIdentifier(id,String.class, callback.getContext()));
+
+				}
+				return result;
+			}
+		});
+
+	}
+
+	@Override
+	public JsonNode getConfiguration() {
+		return configBean;
+	}
+
+	/**
+	 * Returns a TypeDescriptor for the given port name. If the port cannot be found, or is not based upon a complex type, then null is returned.
+	 * @param portName
+	 * @return
+	 */
+	public TypeDescriptor getTypeDescriptorForInputPort(String portName) {
+		TypeDescriptor result = null;
+		if (typeDescriptor instanceof ComplexTypeDescriptor) {
+			for (TypeDescriptor desc : ((ComplexTypeDescriptor)typeDescriptor).getElements()) {
+				if (desc.getName().equals(portName)) {
+					result = desc;
+					break;
+				}
+			}
+		}
+		else if (typeDescriptor instanceof ArrayTypeDescriptor) {
+			TypeDescriptor desc = ((ArrayTypeDescriptor)typeDescriptor).getElementType();
+
+			if (typeDescriptor.getName().equals(portName)) {
+				result = desc;
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 */
+	public Map<String, TypeDescriptor> getTypeDescriptorsForInputPorts()
+			throws UnknownOperationException, IOException {
+		Map<String, TypeDescriptor> descriptors = new HashMap<String, TypeDescriptor>();
+		if (typeDescriptor instanceof ComplexTypeDescriptor) {
+			for (TypeDescriptor desc : ((ComplexTypeDescriptor)typeDescriptor).getElements()) {
+				descriptors.put(desc.getName(), desc);
+			}
+		}
+		else if (typeDescriptor instanceof ArrayTypeDescriptor) {
+			TypeDescriptor desc = ((ArrayTypeDescriptor)typeDescriptor).getElementType();
+			descriptors.put(typeDescriptor.getName(), desc);
+		}
+		return descriptors;
+	}
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLInputSplitterActivityFactory.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLInputSplitterActivityFactory.java
new file mode 100644
index 0000000..2730637
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLInputSplitterActivityFactory.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (C) 2010 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl.xmlsplitter;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.HashSet;
+import java.util.Set;
+
+import net.sf.taverna.t2.workflowmodel.Edits;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+/**
+ * An {@link ActivityFactory} for creating <code>XMLInputSplitterActivity</code>.
+ *
+ * @author David Withers
+ */
+public class XMLInputSplitterActivityFactory implements ActivityFactory {
+
+	private Edits edits;
+
+	@Override
+	public XMLInputSplitterActivity createActivity() {
+		return new XMLInputSplitterActivity();
+	}
+
+	@Override
+	public URI getActivityType() {
+		return URI.create(XMLInputSplitterActivity.URI);
+	}
+
+	@Override
+	public JsonNode getActivityConfigurationSchema() {
+		ObjectMapper objectMapper = new ObjectMapper();
+		try {
+ 			return objectMapper.readTree(getClass().getResource("/xml-splitter.schema.json"));
+		} catch (IOException e) {
+			return objectMapper.createObjectNode();
+		}
+	}
+
+	public void setEdits(Edits edits) {
+		this.edits = edits;
+	}
+
+	@Override
+	public Set<ActivityInputPort> getInputPorts(JsonNode configuration)
+			throws ActivityConfigurationException {
+		Set<ActivityInputPort> inputPorts = new HashSet<>();
+		if (configuration.has("inputPorts")) {
+			for (JsonNode inputPort : configuration.get("inputPorts")) {
+				inputPorts.add(edits.createActivityInputPort(inputPort.get("name").textValue(),
+						inputPort.get("depth").intValue(), false, null, String.class));
+			}
+		}
+		return inputPorts;
+	}
+
+	@Override
+	public Set<ActivityOutputPort> getOutputPorts(JsonNode configuration)
+			throws ActivityConfigurationException {
+		Set<ActivityOutputPort> outputPorts = new HashSet<>();
+		if (configuration.has("outputPorts")) {
+			for (JsonNode outputPort : configuration.get("outputPorts")) {
+				outputPorts.add(edits.createActivityOutputPort(outputPort.get("name").textValue(),
+						outputPort.get("depth").intValue(), outputPort.get("granularDepth").intValue()));
+			}
+		}
+		return outputPorts;
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLInputSplitterHealthChecker.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLInputSplitterHealthChecker.java
new file mode 100644
index 0000000..57d47d4
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLInputSplitterHealthChecker.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl.xmlsplitter;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.List;
+
+import net.sf.taverna.t2.visit.VisitReport;
+import net.sf.taverna.t2.visit.VisitReport.Status;
+import net.sf.taverna.t2.workflowmodel.health.HealthCheck;
+import net.sf.taverna.t2.workflowmodel.health.HealthChecker;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.xmlsplitter.XMLSplitterSerialisationHelper;
+
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+
+public class XMLInputSplitterHealthChecker implements HealthChecker<XMLInputSplitterActivity> {
+
+	public boolean canVisit(Object subject) {
+		return subject!=null && subject instanceof XMLInputSplitterActivity;
+	}
+
+	public VisitReport visit(XMLInputSplitterActivity activity, List<Object> ancestors) {
+		Element element;
+		try {
+			String wrappedType = activity.getConfiguration().get("wrappedType").textValue();
+			element = new SAXBuilder().build(new StringReader(wrappedType)).getRootElement();
+		} catch (JDOMException | IOException e) {
+			return new VisitReport(HealthCheck.getInstance(), activity, "Error reading wrapped type", HealthCheck.INVALID_CONFIGURATION, Status.SEVERE);
+		}
+		TypeDescriptor typeDescriptor = XMLSplitterSerialisationHelper.extensionXMLToTypeDescriptor(element);
+		if (typeDescriptor==null) {
+			return new VisitReport(HealthCheck.getInstance(), activity, "Unknown datatype for port", HealthCheck.NULL_DATATYPE, Status.SEVERE);
+		}
+		else {
+			return new VisitReport(HealthCheck.getInstance(), activity, "Recognized datatype", HealthCheck.NO_PROBLEM, Status.OK);
+		}
+	}
+
+	public boolean isTimeConsuming() {
+		return false;
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLOutputSplitterActivity.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLOutputSplitterActivity.java
new file mode 100644
index 0000000..8a63681
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLOutputSplitterActivity.java
@@ -0,0 +1,207 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl.xmlsplitter;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.t2.activities.wsdl.OutputPortTypeDescriptorActivity;
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.ReferenceServiceException;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.workflowmodel.InputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AbstractAsynchronousActivity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
+import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
+import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.parser.UnknownOperationException;
+import net.sf.taverna.wsdl.xmlsplitter.XMLOutputSplitter;
+import net.sf.taverna.wsdl.xmlsplitter.XMLSplitterSerialisationHelper;
+
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+/**
+ * An activity that replicates the behaviour of the Taverna 1 XMLOutputSplitter.
+ *
+ * @author Stuart Owen
+ *
+ */
+public class XMLOutputSplitterActivity extends
+		AbstractAsynchronousActivity<JsonNode> implements
+		OutputPortTypeDescriptorActivity {
+
+	public static final String URI = "http://ns.taverna.org.uk/2010/activity/xml-splitter/out";
+
+	JsonNode configBean;
+	TypeDescriptor typeDescriptor;
+
+	@Override
+	public void configure(JsonNode configBean)
+			throws ActivityConfigurationException {
+		this.configBean = configBean;
+
+		try {
+			String wrappedType = configBean.get("wrappedType").textValue();
+			Element element = new SAXBuilder().build(new StringReader(wrappedType)).getRootElement();
+			typeDescriptor = XMLSplitterSerialisationHelper.extensionXMLToTypeDescriptor(element);
+		} catch (JDOMException | IOException e) {
+			throw new ActivityConfigurationException(e);
+		}
+	}
+
+	@Override
+	public void executeAsynch(final Map<String, T2Reference> data,
+			final AsynchronousActivityCallback callback) {
+		callback.requestRun(new Runnable() {
+
+			public void run() {
+				try {
+					ReferenceService referenceService = callback.getContext()
+							.getReferenceService();
+					XMLOutputSplitter splitter = createSplitter();
+					Map<String, String> inputMap = buildInputMap(data,
+							referenceService);
+					Map<String, Object> outputMap = splitter.execute(inputMap);
+					callback.receiveResult(createOutputData(outputMap,
+							referenceService), new int[0]);
+				} catch (Exception e) {
+					callback.fail("Error in XMLInputSplitterActivity", e);
+				}
+			}
+
+			private Map<String, T2Reference> createOutputData(
+					Map<String, Object> outputMap,
+					ReferenceService referenceService)
+					throws ReferenceServiceException {
+				Map<String, T2Reference> result = new HashMap<String, T2Reference>();
+				for (String outputName : outputMap.keySet()) {
+					Object output = outputMap.get(outputName);
+					// TODO check if the output can be anything other than
+					// String or List
+					if (output instanceof List) {
+						result.put(outputName, referenceService.register(
+								output, 1, true, callback.getContext()));
+					} else {
+						result.put(outputName, referenceService.register(
+								output, 0, true, callback.getContext()));
+					}
+				}
+				return result;
+			}
+
+			private XMLOutputSplitter createSplitter() {
+				List<String> inputNames = new ArrayList<String>();
+				List<String> outputTypes = new ArrayList<String>();
+				List<String> outputNames = new ArrayList<String>();
+
+				// FIXME: need to use the definition beans for now to get the
+				// mimetype. Need to use the actual InputPort once the mimetype
+				// becomes available again.
+				if (configBean.has("outputPorts")) {
+					for (JsonNode outputPort : configBean.get("outputPorts")) {
+						outputNames.add(outputPort.get("name").textValue());
+						outputTypes.add(outputPort.get("mimeType").textValue());
+					}
+				}
+
+				for (InputPort outputPorts : getInputPorts()) {
+					inputNames.add(outputPorts.getName());
+				}
+
+				return new XMLOutputSplitter(typeDescriptor, outputNames
+						.toArray(new String[] {}), outputTypes
+						.toArray(new String[] {}), inputNames
+						.toArray(new String[] {}));
+			}
+
+			private Map<String, String> buildInputMap(
+					Map<String, T2Reference> data,
+					ReferenceService referenceService)
+					throws ReferenceServiceException {
+				Map<String, String> result = new HashMap<String, String>();
+				for (String inputName : data.keySet()) {
+					T2Reference id = data.get(inputName);
+					result.put(inputName, (String) referenceService
+							.renderIdentifier(id, String.class, callback
+									.getContext()));
+
+				}
+				return result;
+			}
+		});
+	}
+
+	@Override
+	public JsonNode getConfiguration() {
+		return configBean;
+	}
+
+	public TypeDescriptor getTypeDescriptorForOutputPort(String portName) {
+		TypeDescriptor result = null;
+		if (typeDescriptor instanceof ComplexTypeDescriptor) {
+			for (TypeDescriptor desc : ((ComplexTypeDescriptor) typeDescriptor)
+					.getElements()) {
+				if (desc.getName().equals(portName)) {
+					result = desc;
+					break;
+				}
+			}
+		}
+		else if (typeDescriptor instanceof ArrayTypeDescriptor) {
+			TypeDescriptor desc = ((ArrayTypeDescriptor)typeDescriptor).getElementType();
+
+			if (typeDescriptor.getName().equals(portName)) {
+				result = desc;
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 */
+	public Map<String, TypeDescriptor> getTypeDescriptorsForOutputPorts()
+			throws UnknownOperationException, IOException {
+		Map<String, TypeDescriptor> descriptors = new HashMap<String, TypeDescriptor>();
+		if (typeDescriptor instanceof ComplexTypeDescriptor) {
+			for (TypeDescriptor desc : ((ComplexTypeDescriptor) typeDescriptor)
+					.getElements()) {
+				descriptors.put(desc.getName(), desc);
+			}
+		}
+		else if (typeDescriptor instanceof ArrayTypeDescriptor) {
+			TypeDescriptor desc = ((ArrayTypeDescriptor)typeDescriptor).getElementType();
+			descriptors.put(typeDescriptor.getName(), desc);
+		}
+		return descriptors;
+	}
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLOutputSplitterActivityFactory.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLOutputSplitterActivityFactory.java
new file mode 100644
index 0000000..a4272e1
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLOutputSplitterActivityFactory.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (C) 2010 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl.xmlsplitter;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.HashSet;
+import java.util.Set;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import net.sf.taverna.t2.workflowmodel.Edits;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
+
+/**
+ * An {@link ActivityFactory} for creating <code>XMLOutputSplitterActivity</code>.
+ *
+ * @author David Withers
+ */
+public class XMLOutputSplitterActivityFactory implements ActivityFactory {
+
+	private Edits edits;
+
+	@Override
+	public XMLOutputSplitterActivity createActivity() {
+		return new XMLOutputSplitterActivity();
+	}
+
+	@Override
+	public URI getActivityType() {
+		return URI.create(XMLOutputSplitterActivity.URI);
+	}
+
+	@Override
+	public JsonNode getActivityConfigurationSchema() {
+		ObjectMapper objectMapper = new ObjectMapper();
+		try {
+ 			return objectMapper.readTree(getClass().getResource("/xml-splitter.schema.json"));
+		} catch (IOException e) {
+			return objectMapper.createObjectNode();
+		}
+	}
+
+	@Override
+	public Set<ActivityInputPort> getInputPorts(JsonNode configuration)
+			throws ActivityConfigurationException {
+		Set<ActivityInputPort> inputPorts = new HashSet<>();
+		if (configuration.has("inputPorts")) {
+			for (JsonNode inputPort : configuration.get("inputPorts")) {
+				inputPorts.add(edits.createActivityInputPort(inputPort.get("name").textValue(),
+						inputPort.get("depth").intValue(), false, null, String.class));
+			}
+		}
+		return inputPorts;
+	}
+
+	@Override
+	public Set<ActivityOutputPort> getOutputPorts(JsonNode configuration)
+			throws ActivityConfigurationException {
+		Set<ActivityOutputPort> outputPorts = new HashSet<>();
+		if (configuration.has("outputPorts")) {
+			for (JsonNode outputPort : configuration.get("outputPorts")) {
+				outputPorts.add(edits.createActivityOutputPort(outputPort.get("name").textValue(),
+						outputPort.get("depth").intValue(), outputPort.get("granularDepth").intValue()));
+			}
+		}
+		return outputPorts;
+	}
+
+	public void setEdits(Edits edits) {
+		this.edits = edits;
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLOutputSplitterHealthChecker.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLOutputSplitterHealthChecker.java
new file mode 100644
index 0000000..7634b6d
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLOutputSplitterHealthChecker.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl.xmlsplitter;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.List;
+
+import net.sf.taverna.t2.visit.VisitReport;
+import net.sf.taverna.t2.visit.VisitReport.Status;
+import net.sf.taverna.t2.workflowmodel.health.HealthCheck;
+import net.sf.taverna.t2.workflowmodel.health.HealthChecker;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.xmlsplitter.XMLSplitterSerialisationHelper;
+
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+
+public class XMLOutputSplitterHealthChecker implements HealthChecker<XMLOutputSplitterActivity> {
+
+	public boolean canVisit(Object subject) {
+		return subject!=null && subject instanceof XMLOutputSplitterActivity;
+	}
+
+	public VisitReport visit(XMLOutputSplitterActivity activity, List<Object> ancestors) {
+		Element element;
+		try {
+			String wrappedType = activity.getConfiguration().get("wrappedType").textValue();
+			element = new SAXBuilder().build(new StringReader(wrappedType)).getRootElement();
+		} catch (JDOMException | IOException e) {
+			return new VisitReport(HealthCheck.getInstance(), activity, "Error reading wrapped type", HealthCheck.INVALID_CONFIGURATION, Status.SEVERE);
+		}
+		TypeDescriptor typeDescriptor = XMLSplitterSerialisationHelper.extensionXMLToTypeDescriptor(element);
+		if (typeDescriptor==null) {
+			return new VisitReport(HealthCheck.getInstance(), activity, "Unknown datatype for port", HealthCheck.NULL_DATATYPE, Status.SEVERE);
+		}
+		else {
+			return new VisitReport(HealthCheck.getInstance(), activity, "Recognized datatype", HealthCheck.NO_PROBLEM, Status.OK);
+		}
+	}
+
+	public boolean isTimeConsuming() {
+		return false;
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLSplitterConfigurationBean.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLSplitterConfigurationBean.java
new file mode 100644
index 0000000..2045260
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLSplitterConfigurationBean.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl.xmlsplitter;
+
+import org.jdom.Element;
+
+import net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityPortsDefinitionBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+
+@ConfigurationBean(uri = "http://ns.taverna.org.uk/2010/activity/xml-splitter#Config")
+public class XMLSplitterConfigurationBean extends ActivityPortsDefinitionBean {
+	Element wrappedTypeXML;
+
+	public Element getWrappedTypeXML() {
+		return wrappedTypeXML;
+	}
+
+	@ConfigurationProperty(name = "wrappedType", label = "Wrapped Type XML")
+	public void setWrappedTypeXML(Element wrappedTypeXML) {
+		this.wrappedTypeXML = wrappedTypeXML;
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLSplitterConfigurationBeanBuilder.java b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLSplitterConfigurationBeanBuilder.java
new file mode 100644
index 0000000..e8d7fa8
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLSplitterConfigurationBeanBuilder.java
@@ -0,0 +1,205 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl.xmlsplitter;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+
+import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
+import net.sf.taverna.wsdl.parser.BaseTypeDescriptor;
+import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.xmlsplitter.XMLSplitterSerialisationHelper;
+
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.output.XMLOutputter;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+/**
+ * A helper class to facilitate in building an XMLSplitter configuration bean
+ * from the type descriptor XML, including setting up the ports.
+ *
+ * @author Stuart Owen
+ *
+ */
+public class XMLSplitterConfigurationBeanBuilder {
+
+	private static final JsonNodeFactory JSON_NODE_FACTORY = JsonNodeFactory.instance;
+
+	public static JsonNode buildBeanForInput(TypeDescriptor descriptor) throws JDOMException, IOException {
+		Element element = XMLSplitterSerialisationHelper.typeDescriptorToExtensionXML(descriptor);
+		return buildBeanForInput(element);
+	}
+
+	public static JsonNode buildBeanForOutput(TypeDescriptor descriptor) throws JDOMException, IOException {
+		Element element = XMLSplitterSerialisationHelper.typeDescriptorToExtensionXML(descriptor);
+		return buildBeanForOutput(element);
+	}
+
+	public static JsonNode buildBeanForInput(Element element) throws JDOMException, IOException {
+		ObjectNode bean = JSON_NODE_FACTORY.objectNode();
+		ArrayNode inputDefinitions = bean.arrayNode();
+		bean.put("inputPorts", inputDefinitions);
+		ArrayNode outputDefinitions = bean.arrayNode();
+		bean.put("outputPorts", outputDefinitions);
+
+		TypeDescriptor descriptor = XMLSplitterSerialisationHelper
+				.extensionXMLToTypeDescriptor(element);
+		ObjectNode outBean = outputDefinitions.addObject();
+		outBean.put("name", "output");
+		outBean.put("mimeType", "'text/xml'");
+		outBean.put("depth", 0);
+		outBean.put("granularDepth", 0);
+
+		if (descriptor instanceof ComplexTypeDescriptor) {
+			List<TypeDescriptor> elements = ((ComplexTypeDescriptor) descriptor).getElements();
+			String[] names = new String[elements.size()];
+			Class<?>[] types = new Class<?>[elements.size()];
+			TypeDescriptor.retrieveSignature(elements, names, types);
+			for (int i = 0; i < names.length; i++) {
+				ObjectNode portBean = inputDefinitions.addObject();
+				portBean.put("name", names[i]);
+				portBean.put("mimeType", TypeDescriptor.translateJavaType(types[i]));
+				portBean.put("depth", depthForDescriptor(elements.get(i)));
+			}
+
+			List<TypeDescriptor> attributes = ((ComplexTypeDescriptor) descriptor).getAttributes();
+			String[] elementNames = Arrays.copyOf(names, names.length);
+			Arrays.sort(elementNames);
+			String[] attributeNames = new String[attributes.size()];
+			Class<?>[] attributeTypes = new Class<?>[attributes.size()];
+			TypeDescriptor.retrieveSignature(attributes, attributeNames, attributeTypes);
+			for (int i = 0; i < attributeNames.length; i++) {
+				ObjectNode portBean = inputDefinitions.addObject();
+				if (Arrays.binarySearch(elementNames, attributeNames[i]) < 0) {
+					portBean.put("name", attributeNames[i]);
+				} else {
+					portBean.put("name", "1" + attributeNames[i]);
+				}
+				portBean.put("mimeType", TypeDescriptor.translateJavaType(attributeTypes[i]));
+				portBean.put("depth", depthForDescriptor(attributes.get(i)));
+			}
+			
+		} else if (descriptor instanceof ArrayTypeDescriptor) {
+			ObjectNode portBean = inputDefinitions.addObject();
+			portBean.put("name", descriptor.getName());
+
+			if (((ArrayTypeDescriptor) descriptor).getElementType() instanceof BaseTypeDescriptor) {
+				portBean.put("mimeType", "l('text/plain')");
+			} else {
+				portBean.put("mimeType", "l('text/xml')");
+			}
+			portBean.put("depth", 1);
+		}
+
+		String wrappedType = new XMLOutputter().outputString(element);
+		bean.put("wrappedType", wrappedType);
+
+		return bean;
+	}
+
+
+	private static int depthForDescriptor(TypeDescriptor desc) {
+		if (desc instanceof ArrayTypeDescriptor && (!((ArrayTypeDescriptor)desc).isWrapped() || ((ArrayTypeDescriptor)desc).getElementType() instanceof BaseTypeDescriptor)) {
+			return 1;
+		}
+		else {
+			return 0;
+		}
+	}
+
+	public static JsonNode buildBeanForOutput(Element element)
+			throws JDOMException, IOException {
+		ObjectNode bean = JSON_NODE_FACTORY.objectNode();
+		ArrayNode inputDefinitions = bean.arrayNode();
+		bean.put("inputPorts", inputDefinitions);
+		ArrayNode outputDefinitions = bean.arrayNode();
+		bean.put("outputPorts", outputDefinitions);
+
+		TypeDescriptor descriptor = XMLSplitterSerialisationHelper
+				.extensionXMLToTypeDescriptor(element);
+
+		ObjectNode inBean = inputDefinitions.addObject();
+		inBean.put("name", "input");
+		inBean.put("mimeType", "'text/xml'");
+		inBean.put("depth", 0);
+
+		if (descriptor instanceof ComplexTypeDescriptor) {
+			List<TypeDescriptor> elements = ((ComplexTypeDescriptor) descriptor).getElements();
+			String[] names = new String[elements.size()];
+			Class<?>[] types = new Class<?>[elements.size()];
+			TypeDescriptor.retrieveSignature(elements, names, types);
+			for (int i = 0; i < names.length; i++) {
+				ObjectNode portBean = outputDefinitions.addObject();
+				portBean.put("name", names[i]);
+				portBean.put("mimeType", TypeDescriptor.translateJavaType(types[i]));
+				int depth = depthForDescriptor(elements.get(i));
+				portBean.put("depth", depth);
+				portBean.put("granularDepth", depth);
+			}
+
+			List<TypeDescriptor> attributes = ((ComplexTypeDescriptor) descriptor).getAttributes();
+			String[] elementNames = Arrays.copyOf(names, names.length);
+			Arrays.sort(elementNames);
+			String[] attributeNames = new String[attributes.size()];
+			Class<?>[] attributeTypes = new Class<?>[attributes.size()];
+			TypeDescriptor.retrieveSignature(attributes, attributeNames, attributeTypes);
+			for (int i = 0; i < attributeNames.length; i++) {
+				ObjectNode portBean = outputDefinitions.addObject();
+				if (Arrays.binarySearch(elementNames, attributeNames[i]) < 0) {
+					portBean.put("name", attributeNames[i]);
+				} else {
+					portBean.put("name", "1" + attributeNames[i]);
+				}
+				portBean.put("mimeType", TypeDescriptor
+						.translateJavaType(attributeTypes[i]));
+				int depth = depthForDescriptor(attributes.get(i));
+				portBean.put("depth", depth);
+				portBean.put("granularDepth", depth);
+			}
+			
+		} else if (descriptor instanceof ArrayTypeDescriptor) {
+			ObjectNode portBean = outputDefinitions.addObject();
+			String name=descriptor.getName();
+			portBean.put("name", name);
+			portBean.put("depth", 1);
+			portBean.put("granularDepth", 1);
+			if (((ArrayTypeDescriptor) descriptor).getElementType() instanceof BaseTypeDescriptor) {
+				portBean.put("mimeType", "l('text/plain')");
+			} else {
+				portBean.put("mimeType", "l('text/xml')");
+			}
+		}
+
+
+		String wrappedType = new XMLOutputter().outputString(element);
+		bean.put("wrappedType", wrappedType);
+
+		return bean;
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker b/taverna-wsdl-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
new file mode 100644
index 0000000..fb1c735
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
@@ -0,0 +1,4 @@
+net.sf.taverna.t2.activities.wsdl.WSDLActivityHealthChecker
+net.sf.taverna.t2.activities.wsdl.xmlsplitter.XMLOutputSplitterHealthChecker
+net.sf.taverna.t2.activities.wsdl.xmlsplitter.XMLInputSplitterHealthChecker
+net.sf.taverna.t2.activities.wsdl.WSDLActivityDescriptorChecker
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/main/resources/META-INF/spring/wsdl-activity-context-osgi.xml b/taverna-wsdl-activity/src/main/resources/META-INF/spring/wsdl-activity-context-osgi.xml
new file mode 100644
index 0000000..b8976d5
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/resources/META-INF/spring/wsdl-activity-context-osgi.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans:beans xmlns="http://www.springframework.org/schema/osgi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:beans="http://www.springframework.org/schema/beans"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans
+                                 http://www.springframework.org/schema/beans/spring-beans.xsd
+                                 http://www.springframework.org/schema/osgi
+                                 http://www.springframework.org/schema/osgi/spring-osgi.xsd">
+
+	<service ref="wsdlActivityHealthChecker" interface="net.sf.taverna.t2.workflowmodel.health.HealthChecker" />
+	<service ref="xmlInputSplitterHealthChecker" interface="net.sf.taverna.t2.workflowmodel.health.HealthChecker" />
+	<service ref="xmlOutputSplitterHealthChecker" interface="net.sf.taverna.t2.workflowmodel.health.HealthChecker" />
+
+	<service ref="wsdlActivityFactory" interface="net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory" />
+	<service ref="xmlInputSplitterActivityFactory" interface="net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory" />
+	<service ref="xmlOutputSplitterActivityFactory" interface="net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory" />
+
+	<reference id="credentialManager" interface="net.sf.taverna.t2.security.credentialmanager.CredentialManager" />
+	<reference id="edits" interface="net.sf.taverna.t2.workflowmodel.Edits" />
+
+</beans:beans>
diff --git a/taverna-wsdl-activity/src/main/resources/META-INF/spring/wsdl-activity-context.xml b/taverna-wsdl-activity/src/main/resources/META-INF/spring/wsdl-activity-context.xml
new file mode 100644
index 0000000..fbbdf55
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/resources/META-INF/spring/wsdl-activity-context.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+	<bean id="wsdlActivityHealthChecker" class="net.sf.taverna.t2.activities.wsdl.WSDLActivityHealthChecker" />
+	<bean id="xmlInputSplitterHealthChecker" class="net.sf.taverna.t2.activities.wsdl.xmlsplitter.XMLInputSplitterHealthChecker" />
+	<bean id="xmlOutputSplitterHealthChecker" class="net.sf.taverna.t2.activities.wsdl.xmlsplitter.XMLOutputSplitterHealthChecker" />
+
+	<bean id="wsdlActivityFactory" class="net.sf.taverna.t2.activities.wsdl.WSDLActivityFactory">
+		<property name="credentialManager" ref="credentialManager" />
+		<property name="edits" ref="edits" />
+	</bean>
+	<bean id="xmlInputSplitterActivityFactory" class="net.sf.taverna.t2.activities.wsdl.xmlsplitter.XMLInputSplitterActivityFactory">
+		<property name="edits" ref="edits" />
+	</bean>
+	<bean id="xmlOutputSplitterActivityFactory" class="net.sf.taverna.t2.activities.wsdl.xmlsplitter.XMLOutputSplitterActivityFactory">
+		<property name="edits" ref="edits" />
+	</bean>
+
+</beans>
diff --git a/taverna-wsdl-activity/src/main/resources/schema.json b/taverna-wsdl-activity/src/main/resources/schema.json
new file mode 100644
index 0000000..bcafb67
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/resources/schema.json
@@ -0,0 +1,39 @@
+{
+    "$schema": "http://json-schema.org/draft-03/schema#",
+    "id": "http://ns.taverna.org.uk/2010/activity/wsdl.schema.json",
+    "title": "WSDL activity configuration",
+    "type": "object",
+    "properties": {
+        "@context": {
+            "description": "JSON-LD context for interpreting the configuration as RDF",
+            "required": true,
+            "enum": ["http://ns.taverna.org.uk/2010/activity/wsdl.context.json"]
+        },
+        "operation": {
+            "title": "WSDL Operation",
+            "description": "The WSDL operation",
+            "type": "object",
+            "properties": {
+           		"wsdl": {
+            		"title": "WSDL URL",
+            		"description": "The location of the WSDL definition for the web service",
+            		"type": "string",
+		          	"required": true
+           		},
+           		"name": {
+            		"title": "Operation Name",
+            		"description": "The name of the WSDL operation",
+            		"type": "sting",
+ 		         	"required": true
+            	}
+            },
+            "required": true
+        },
+        "securityProfile": {
+            "title": "Security Profile",
+            "description": "WS-Security settings required by the web service",
+            "type": "string",
+            "required": false
+        }
+    }
+}
diff --git a/taverna-wsdl-activity/src/main/resources/xml-splitter.schema.json b/taverna-wsdl-activity/src/main/resources/xml-splitter.schema.json
new file mode 100644
index 0000000..3dbae7c
--- /dev/null
+++ b/taverna-wsdl-activity/src/main/resources/xml-splitter.schema.json
@@ -0,0 +1,80 @@
+{
+    "$schema": "http://json-schema.org/draft-03/schema#",
+    "id": "http://ns.taverna.org.uk/2010/activity/xml-splitter.schema.json",
+    "title": "XML splitter activity configuration",
+    "type": "object",
+    "properties": {
+        "@context": {
+            "description": "JSON-LD context for interpreting the configuration as RDF",
+            "required": true,
+            "enum": ["http://ns.taverna.org.uk/2010/activity/xml-splitter.context.json"]
+        },
+        "wrappedType": {
+            "title": "Wrapped Type XML",
+            "type": "string",
+            "required": true
+        },
+        "inputPorts": {
+            "title": "Input Ports",
+            "type": "array",
+            "required": false,
+            "items": {
+                "type": "object",
+                "properties": {
+           		    "name": {
+                		"title": "Port Name",
+            			"description": "The name of the port",
+            			"type": "string",
+		          		"required": true
+           			},
+                    "depth": {
+                 		"title": "Port Depth",
+             			"description": "The depth of the port",
+                        "type": "integer",
+                        "required": true
+           			},
+                    "mimeType": {
+                 		"title": "Mime Type",
+             			"description": "The mime type of the port",
+                        "type": "string",
+                        "required": true
+                    }
+                }
+             }
+        },
+        "outputPorts": {
+            "title": "Output Ports",
+            "type": "array",
+            "required": false,
+            "items": {
+                "type": "object",
+                "properties": {
+           		    "name": {
+                		"title": "Port Name",
+            			"description": "The name of the port",
+            			"type": "string",
+		          		"required": true
+           			},
+                    "depth": {
+                 		"title": "Port Depth",
+             			"description": "The depth of the port",
+                        "type": "integer",
+                        "required": true
+                    }
+                    "granularDepth": {
+                 		"title": "Port Granular Depth",
+             			"description": "The granular depth of the port",
+                        "type": "integer",
+                        "required": true
+           			},
+                    "mimeType": {
+                 		"title": "Mime Type",
+             			"description": "The mime type of the port",
+                        "type": "string",
+                        "required": true
+                    }
+                }
+             }
+         }
+    }
+}
diff --git a/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityFactoryTest.java b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityFactoryTest.java
new file mode 100644
index 0000000..9b147cf
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityFactoryTest.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (C) 2010 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.net.URI;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * 
+ * @author David Withers
+ */
+public class WSDLActivityFactoryTest {
+
+	private WSDLActivityFactory factory;
+	
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		factory = new WSDLActivityFactory();
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.beanshell.BeanshellActivityFactory#createActivity()}.
+	 */
+	@Test
+	public void testCreateActivity() {
+		WSDLActivity createActivity = factory.createActivity();
+		assertNotNull(createActivity);
+	}
+
+	/**
+	 * Test method for {@link net.sf.taverna.t2.activities.beanshell.BeanshellActivityFactory#getActivityType()}.
+	 */
+	@Test
+	public void testGetActivityURI() {
+		assertEquals(URI.create(WSDLActivity.URI), factory.getActivityType());
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityTest.java b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityTest.java
new file mode 100644
index 0000000..b1868ac
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/WSDLActivityTest.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.t2.activities.testutils.ActivityInvoker;
+import net.sf.taverna.t2.activities.testutils.LocationConstants;
+import net.sf.taverna.t2.workflowmodel.OutputPort;
+import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+public class WSDLActivityTest implements LocationConstants {
+
+	private static final JsonNodeFactory JSON_NODE_FACTORY = JsonNodeFactory.instance;
+
+	private static WSDLActivity activity;
+	private static ObjectNode configBean;
+	private static ObjectNode operationConfigBean;
+	private static String wsdlLocation = WSDL_TEST_BASE
+			+ "eutils/eutils_lite.wsdl";
+
+	//@BeforeClass
+    @Ignore("Integration test")
+	public static void setUp() throws Exception {
+		activity = new WSDLActivity(null);
+		configBean = JSON_NODE_FACTORY.objectNode();
+		operationConfigBean = configBean.objectNode();
+		configBean.put("operation", operationConfigBean);
+		operationConfigBean.put("name", "run_eInfo");
+		operationConfigBean.put("wsdl", wsdlLocation);
+		activity.configure(configBean);
+	}
+
+	@Test
+    @Ignore("Integration test")
+	public void testConfigureWSDLActivityConfigurationBean() throws Exception {
+		assertEquals("There should be 1 input ports", 1, activity
+				.getInputPorts().size());
+		assertEquals("There should be 2 output ports", 2, activity
+				.getOutputPorts().size());
+
+		assertEquals("parameters", activity.getInputPorts().iterator().next()
+				.getName());
+
+		List<String> expectedOutputNames = new ArrayList<String>();
+		expectedOutputNames.add("parameters");
+		expectedOutputNames.add("attachmentList");
+		for (OutputPort port : activity.getOutputPorts()) {
+			assertTrue("Unexpected output name:" + port.getName(),
+					expectedOutputNames.contains(port.getName()));
+			expectedOutputNames.remove(port.getName());
+		}
+		assertEquals(
+				"Not all of the expected outputs were found, those remainng are:"
+						+ expectedOutputNames.toArray(), 0, expectedOutputNames
+						.size());
+	}
+
+	@Test
+    @Ignore("Integration test")
+	public void testGetConfiguration() throws Exception {
+		assertSame(configBean, activity.getConfiguration());
+	}
+
+	@Test
+	@Ignore("Service is broken")
+	public void testExecuteAsynchMapOfStringEntityIdentifierAsynchronousActivityCallback()
+			throws Exception {
+		Map<String, Object> inputMap = new HashMap<String, Object>();
+		inputMap.put("parameters", "<parameters><db>pubmed</db></parameters>");
+
+		Map<String, Class<?>> expectedOutputs = new HashMap<String, Class<?>>();
+		expectedOutputs.put("parameters", String.class);
+
+		Map<String, Object> outputMap = ActivityInvoker.invokeAsyncActivity(
+				activity, inputMap, expectedOutputs);
+		assertNotNull("there should be an output named parameters", outputMap
+				.get("parameters"));
+		String xml;
+		if (outputMap.get("parameters") instanceof String) {
+			xml = (String) outputMap.get("parameters");
+		} else {
+			byte[] bytes = (byte[]) outputMap.get("parameters");
+			xml = new String(bytes);
+		}
+
+		assertTrue("the xml is not what was expected", xml
+				.contains("<DbName>pubmed</DbName>"));
+	}
+
+    @Ignore("Integration test")
+	@Test
+	public void testGetTypeDescriptorForOutputPort() throws Exception {
+		assertNotNull("The type for the port 'paremeters' could not be found",
+				activity.getTypeDescriptorForOutputPort("parameters"));
+		assertTrue(
+				"The type for the port 'paremeters' shoule be complex",
+				activity.getTypeDescriptorForOutputPort("parameters") instanceof ComplexTypeDescriptor);
+		assertNull("There should be no type descriptor for 'fred' port",
+				activity.getTypeDescriptorForOutputPort("fred"));
+	}
+
+    @Ignore("Integration test")
+	@Test
+	public void testGetTypeDescriptorForInputPort() throws Exception {
+		assertNotNull("The type for the port 'parameters' could not be found",
+				activity.getTypeDescriptorForInputPort("parameters"));
+		assertTrue(
+				"The type for the port 'parameters' shoule be complex",
+				activity.getTypeDescriptorForInputPort("parameters") instanceof ComplexTypeDescriptor);
+		assertNull("There should be no type descriptor for 'fred' port",
+				activity.getTypeDescriptorForInputPort("fred"));
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/WSRFActivityTest.java b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/WSRFActivityTest.java
new file mode 100644
index 0000000..dd144cf
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/WSRFActivityTest.java
@@ -0,0 +1,226 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.StringReader;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Map;
+
+import net.sf.taverna.wsdl.parser.WSDLParser;
+
+import org.apache.axis.client.Call;
+import org.apache.axis.message.SOAPEnvelope;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.Namespace;
+import org.jdom.input.SAXBuilder;
+import org.junit.Before;
+import org.junit.Test;
+
+public class WSRFActivityTest {
+
+	public class DummyInvoker extends T2WSDLSOAPInvoker {
+
+		public DummyInvoker(String wsrfEndpoint) {
+			super(wsdlParser, "add", Arrays.asList("attachmentList"),
+					wsrfEndpoint, null);
+		}
+
+		@Override
+		protected SOAPEnvelope invokeCall(Call call, SOAPEnvelope requestEnv) {
+			requestXML = requestEnv;
+			return null;
+		}
+	}
+
+	private static final Namespace SoapEnvelopeNS = Namespace
+			.getNamespace("http://schemas.xmlsoap.org/soap/envelope/");
+	private static final Namespace CounterNS = Namespace
+			.getNamespace("http://counter.com");
+	private static final Namespace DifficultNS = Namespace
+			.getNamespace("http://difficult.com/");
+
+	private static final Namespace DefaultNS = Namespace
+			.getNamespace("http://default/");
+
+	private URL counterServiceWSDL;
+	private WSDLParser wsdlParser;
+	protected SOAPEnvelope requestXML;
+
+	@Before
+	public void makeWSDLParser() throws Exception {
+		String path = "wsrf/counterService/CounterService_.wsdl";
+		counterServiceWSDL = getClass().getResource(path);
+		assertNotNull("Coult not find test WSDL " + path, counterServiceWSDL);
+		wsdlParser = new WSDLParser(counterServiceWSDL.toExternalForm());
+	}
+
+	public void noHeaders() throws Exception {
+
+	}
+
+	@Test
+	public void insertedEndpoint() throws Exception {
+		// From T2-677 - support wsa:EndpointReference directly as well
+		String wsrfEndpoint = "" +
+				"<wsa:EndpointReference "
+				+ "xmlns:wsa='http://schemas.xmlsoap.org/ws/2004/03/addressing' "
+				+ "xmlns:counter='http://counter.com'>"
+				+ "  <wsa:Address>http://130.88.195.110:8080/wsrf/services/CounterService</wsa:Address>"
+				+ "   <wsa:ReferenceProperties>"
+				+ "     <counter:CounterKey>15063581</counter:CounterKey>"
+				+ "      <difficult:one xmlns:difficult='http://difficult.com/' "
+				+ "             difficult:attrib='something' attrib='else' >"
+				+ "         <difficult:fish><counter:fish /></difficult:fish> "
+				+ "      </difficult:one>" + "      <emptyNamespace>"
+				+ "          <defaultNamespace xmlns='http://default/'>"
+				+ "\n  default  \n " + "</defaultNamespace>"
+				+ "          <stillEmpty />" + "      </emptyNamespace>"
+				+ "  </wsa:ReferenceProperties>"
+				+ "  <wsa:ReferenceParameters/>" + "</wsa:EndpointReference>";
+
+		// Note: We'll subclass to avoid calling service
+		// and request attachmentList to trigger TAV-617-code and avoid
+		// parsing of the (missing) response
+		T2WSDLSOAPInvoker invoker = new DummyInvoker(wsrfEndpoint);
+		Map<String, Object> results = invoker.invoke(Collections.singletonMap(
+				"add", "10"));
+		assertEquals(1, results.size());
+		assertEquals("attachmentList", results.keySet().iterator().next());
+
+		SAXBuilder builder = new SAXBuilder();
+		Document doc = builder.build(new StringReader(requestXML.toString()));
+		Element header = doc.getRootElement()
+				.getChild("Header", SoapEnvelopeNS);
+		assertNotNull("Could not find soapenv:Header", header);
+		assertEquals("Unexpected number of children in header", 3, header
+				.getChildren().size());
+
+		// Check that everything was preserved as much as possible
+
+		Element counterChild = header.getChild("CounterKey", CounterNS);
+		assertEquals("15063581", counterChild.getText());
+		assertEquals("Did not preserve namespace", "counter", counterChild
+				.getNamespacePrefix());
+
+		Element difficultChild = header.getChild("one", DifficultNS);
+		assertNotNull("Could not find difficult:one", difficultChild);
+		assertEquals("Did not preserve namespace", "difficult", difficultChild
+				.getNamespacePrefix());
+		assertEquals("something", difficultChild.getAttribute("attrib",
+				DifficultNS).getValue());
+		assertEquals("else", difficultChild.getAttribute("attrib",
+				Namespace.NO_NAMESPACE).getValue());
+
+		Element counterFish = difficultChild.getChild("fish", DifficultNS)
+				.getChild("fish", CounterNS);
+		assertEquals("counter", counterFish.getNamespacePrefix());
+
+		Element emptyChild = header.getChild("emptyNamespace",
+				Namespace.NO_NAMESPACE);
+		Element defaultNamespace = emptyChild.getChild("defaultNamespace",
+				DefaultNS);
+		assertEquals("\n  default  \n ", defaultNamespace.getText());
+
+		Element stillEmpty = emptyChild.getChild("stillEmpty");
+		assertEquals(Namespace.NO_NAMESPACE, stillEmpty.getNamespace());
+
+	}
+
+
+	@Test
+	public void insertedEndpointWrapped() throws Exception {
+		// From T2-677 - support wsa:EndpointReference wrapped in <*> to avoid
+		// unnecessary XML splitters and to support legacy workflows
+
+		// Example from http://www.mygrid.org.uk/dev/issues/browse/TAV-23
+		String wsrfEndpoint = "" +
+				"<c:createCounterResponse xmlns:c='http://counter.com'>" +
+				"<wsa:EndpointReference "
+				+ "xmlns:wsa='http://schemas.xmlsoap.org/ws/2004/03/addressing' "
+				+ "xmlns:counter='http://counter.com'>"
+				+ "  <wsa:Address>http://130.88.195.110:8080/wsrf/services/CounterService</wsa:Address>"
+				+ "   <wsa:ReferenceProperties>"
+				+ "     <counter:CounterKey>15063581</counter:CounterKey>"
+				+ "      <difficult:one xmlns:difficult='http://difficult.com/' "
+				+ "             difficult:attrib='something' attrib='else' >"
+				+ "         <difficult:fish><counter:fish /></difficult:fish> "
+				+ "      </difficult:one>" + "      <emptyNamespace>"
+				+ "          <defaultNamespace xmlns='http://default/'>"
+				+ "\n  default  \n " + "</defaultNamespace>"
+				+ "          <stillEmpty />" + "      </emptyNamespace>"
+				+ "  </wsa:ReferenceProperties>"
+				+ "  <wsa:ReferenceParameters/>" + "</wsa:EndpointReference>" +
+				"</c:createCounterResponse>";
+
+		// Note: We'll subclass to avoid calling service
+		// and request attachmentList to trigger TAV-617-code and avoid
+		// parsing of the (missing) response
+		T2WSDLSOAPInvoker invoker = new DummyInvoker(wsrfEndpoint);
+		Map<String, Object> results = invoker.invoke(Collections.singletonMap(
+				"add", "10"));
+		assertEquals(1, results.size());
+		assertEquals("attachmentList", results.keySet().iterator().next());
+
+		SAXBuilder builder = new SAXBuilder();
+		Document doc = builder.build(new StringReader(requestXML.toString()));
+		Element header = doc.getRootElement()
+				.getChild("Header", SoapEnvelopeNS);
+		assertNotNull("Could not find soapenv:Header", header);
+		assertEquals("Unexpected number of children in header", 3, header
+				.getChildren().size());
+
+		// Check that everything was preserved as much as possible
+
+		Element counterChild = header.getChild("CounterKey", CounterNS);
+		assertEquals("15063581", counterChild.getText());
+		assertEquals("Did not preserve namespace", "counter", counterChild
+				.getNamespacePrefix());
+
+		Element difficultChild = header.getChild("one", DifficultNS);
+		assertNotNull("Could not find difficult:one", difficultChild);
+		assertEquals("Did not preserve namespace", "difficult", difficultChild
+				.getNamespacePrefix());
+		assertEquals("something", difficultChild.getAttribute("attrib",
+				DifficultNS).getValue());
+		assertEquals("else", difficultChild.getAttribute("attrib",
+				Namespace.NO_NAMESPACE).getValue());
+
+		Element counterFish = difficultChild.getChild("fish", DifficultNS)
+				.getChild("fish", CounterNS);
+		assertEquals("counter", counterFish.getNamespacePrefix());
+
+		Element emptyChild = header.getChild("emptyNamespace",
+				Namespace.NO_NAMESPACE);
+		Element defaultNamespace = emptyChild.getChild("defaultNamespace",
+				DefaultNS);
+		assertEquals("\n  default  \n ", defaultNamespace.getText());
+
+		Element stillEmpty = emptyChild.getChild("stillEmpty");
+		assertEquals(Namespace.NO_NAMESPACE, stillEmpty.getNamespace());
+
+	}
+}
diff --git a/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/security/HTTPSConnectionsTest.java b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/security/HTTPSConnectionsTest.java
new file mode 100644
index 0000000..58d6dd5
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/security/HTTPSConnectionsTest.java
@@ -0,0 +1,50 @@
+package net.sf.taverna.t2.activities.wsdl.security;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.security.cert.Certificate;
+
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLHandshakeException;
+
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class HTTPSConnectionsTest {
+
+	@Test()
+	@Ignore("https://rpc103.cs.man.ac.uk:8443/wsrf/services no available")
+	public void testHTTPSConnections(){
+
+		String serviceURL = "https://rpc103.cs.man.ac.uk:8443/wsrf/services";
+
+			URL url;
+			try {
+				url = new URL(serviceURL);
+				SSLUtilities.trustAllHttpsCertificates();
+				HttpsURLConnection httpsConnection = (HttpsURLConnection) url.openConnection();
+				httpsConnection.connect();
+				Certificate[] certificates = httpsConnection.getServerCertificates();
+				Assert.assertFalse(certificates.length == 0);
+
+				SSLUtilities.stopTrustingAllHttpsCertificates();
+				HttpsURLConnection httpsConnection2 = (HttpsURLConnection) url.openConnection();
+				httpsConnection2.connect(); // This should now throw an SSLHandshakeException which is a subclass of IOException
+
+			} catch (MalformedURLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+
+			} catch(SSLHandshakeException e){
+				// This is what we are expecting
+				e.printStackTrace();
+			}
+			catch (IOException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/security/SecureServicesInvokerTest.java b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/security/SecureServicesInvokerTest.java
new file mode 100644
index 0000000..f0c3265
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/security/SecureServicesInvokerTest.java
@@ -0,0 +1,116 @@
+package net.sf.taverna.t2.activities.wsdl.security;
+
+import static org.junit.Assert.assertEquals;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLSession;
+import javax.xml.namespace.QName;
+
+import org.apache.axis.client.Call;
+import org.apache.axis.client.Service;
+import org.apache.axis.configuration.XMLStringProvider;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class SecureServicesInvokerTest {
+
+	// Broken service
+	@Ignore
+	@Test
+	public void testCreteCallAndInvoke() throws Exception { 
+			
+
+			String endpoint = "http://www.mygrid.org.uk/axis/services/UsernameHelloService"; // test server
+			//endpoint = "http://rpc212.cs.man.ac.uk/taverna/";
+			
+			HostnameVerifier hv = new HostnameVerifier() {
+				public boolean verify(String hostName, SSLSession session) {
+					return true;
+				}
+			};
+			HttpsURLConnection.setDefaultHostnameVerifier(hv);
+			//endpoint = "https://rpc103.cs.man.ac.uk:8443/wsrf/services/cagrid/SecureHelloWorld?wsdl";
+			
+			// Set the system property "javax.net.ssl.Truststore" to use Taverna's truststore 
+			//System.setProperty("javax.net.ssl.trustStore", "/Users/alex/Desktop/t2truststore.jks");
+			//System.setProperty("javax.net.ssl.trustStorePassword", "raehiekooshe0eghiPhi");
+			//System.clearProperty("javax.net.ssl.trustStoreType");
+			//System.clearProperty("javax.net.ssl.trustStoreProvider");
+			
+			//String endpoint = "http://www.mygrid.org.uk/axis/services/UsernameTimestampHelloService"; // test server
+			//String endpoint = "http://www.mygrid.org.uk/axis/services/UsernameDigestHelloService"; // test server
+			//String endpoint = "http://www.mygrid.org.uk/axis/services/UsernameDigestTimestampHelloService"; // test server
+			
+			//String endpoint = "http://localhost:8080/axis/services/UsernameHelloService" ; // local server
+			//String endpoint = "http://localhost:8080/axis/services/UsernameTimestampHelloService" ; 
+			//String endpoint = "http://localhost:8080/axis/services/UsernameDigestHelloService" ; 
+			//String endpoint = "http://localhost:8080/axis/services/UsernameDigestTimestampHelloService" ; 
+			
+			//Service service = new org.apache.axis.client.Service() ; 
+			
+			//String wssEngineConfigurationString = WSSecurityProfiles.wssUTTimestampProfile;
+			//String wssEngineConfigurationString = WSSecurityProfiles.wssUTDigestProfile;
+			//String wssEngineConfigurationString = WSSecurityProfiles.wssUTDigestTimestampProfile;
+		
+			XMLStringProvider wssEngineConfiguration = new XMLStringProvider("<deployment xmlns=\"http://xml.apache.org/axis/wsdd/\" " +
+					"xmlns:java=\"http://xml.apache.org/axis/wsdd/providers/java\">" +
+					"<globalConfiguration>" +
+					"<requestFlow>" +
+					"<handler type=\"java:org.apache.ws.axis.security.WSDoAllSender\">" + 
+					"<parameter name=\"action\" value=\"UsernameToken\"/>" +
+					"<parameter name=\"passwordType\" value=\"PasswordDigest\"/>" +
+					"</handler>"+
+					"</requestFlow>" + 
+					"</globalConfiguration>" + 
+					"<transport name=\"http\" pivot=\"java:org.apache.axis.transport.http.HTTPSender\"/>"+
+					"</deployment>");
+			
+			Service service = new Service(wssEngineConfiguration);
+		
+			Call call = new Call(service);			
+			
+			//call.setTransport(new HTTPTransport());
+			call.setTargetEndpointAddress(endpoint) ; 
+			call.setOperationName(new QName("hello")) ;
+			
+			String username = "testuser";
+			String password = "testpasswd";
+			
+			//WSS4J WSDoAllSender's invoke() method expects username not to be empty before the agent takes over 
+			// to set it so we set it to the WSDL location here (that is used as keystore alias) and later on overwrite it 
+			call.setProperty(Call.USERNAME_PROPERTY, "testuser");
+			call.setProperty(Call.PASSWORD_PROPERTY, "testpasswd");
+					
+			
+			// Set HTTP Basic AuthN
+//			MessageContext context = call.getMessageContext();
+//			Hashtable headers = (Hashtable) context
+//					.getProperty(HTTPConstants.REQUEST_HEADERS);
+//			if (headers == null) {
+//				headers = new Hashtable();
+//				context.setProperty(HTTPConstants.REQUEST_HEADERS, headers);
+//			}
+////			String authorization = Base64.encode(("hudsonadmin" + ":"
+////					+ "ch33se").getBytes());
+//			String authorization = Base64.encode((username + ":"
+//					+ password).getBytes());
+//			headers.put("Authorization", "Basic " + authorization);
+//			System.out.println("HTTP Authorization header: "
+//					+ headers.get("Authorization"));
+//			HTTPSender http = new HTTPSender();
+//			
+//			Transport transport = call.getTransportForProtocol("https");
+//			System.out.println(transport.getClass());
+//			
+			
+			
+		
+			String nickName = "Beauty" ; 
+			System.out.println("Sent: '" + nickName + "'") ; 
+			String ret = (String) call.invoke(new Object[] {nickName}) ;
+			System.out.println("Got: '" + ret + "'") ; 
+			assertEquals(ret, "Hello Beauty!");
+	} 
+
+}
diff --git a/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/AddXMLSplitterEditTest.java b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/AddXMLSplitterEditTest.java
new file mode 100644
index 0000000..4e31fcd
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/AddXMLSplitterEditTest.java
@@ -0,0 +1,136 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl.xmlsplitter;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import net.sf.taverna.t2.activities.testutils.LocationConstants;
+import net.sf.taverna.t2.activities.wsdl.WSDLActivity;
+import net.sf.taverna.t2.workflowmodel.Edits;
+import net.sf.taverna.t2.workflowmodel.Processor;
+import net.sf.taverna.t2.workflowmodel.impl.DataflowImpl;
+import net.sf.taverna.t2.workflowmodel.impl.EditsImpl;
+import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
+
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+public class AddXMLSplitterEditTest implements LocationConstants {
+
+	private static final JsonNodeFactory JSON_NODE_FACTORY = JsonNodeFactory.instance;
+
+	private WSDLActivity activity;
+	private DataflowImpl dataflow;
+	private ObjectNode configBean;
+	private static ObjectNode operationConfigBean;
+	private String wsdlLocation = WSDL_TEST_BASE
+	+ "eutils/eutils_lite.wsdl";
+	private Edits edits;
+
+	@Ignore("Integration test")
+	@Before
+	public void setUp() throws Exception {
+		activity = new WSDLActivity(null);
+		configBean = JSON_NODE_FACTORY.objectNode();
+		operationConfigBean = configBean.objectNode();
+		configBean.put("operation", operationConfigBean);
+		operationConfigBean.put("name", "run_eInfo");
+		operationConfigBean.put("wsdl", wsdlLocation);
+		activity.configure(configBean);
+		edits = new EditsImpl();
+
+		dataflow = (DataflowImpl)edits.createDataflow();
+		Processor p=edits.createProcessor("run_eInfo");
+		edits.getDefaultDispatchStackEdit(p).doEdit();
+		edits.getAddActivityEdit(p, activity).doEdit();
+		edits.getMapProcessorPortsForActivityEdit(p).doEdit();
+		edits.getAddProcessorEdit(dataflow, p).doEdit();
+
+	}
+
+	@Ignore("Integration test")
+	@Test
+	public void testAddOutputSplitterToWSDLActivity() throws Exception {
+		AddXMLSplitterEdit edit = new AddXMLSplitterEdit(dataflow,activity,"parameters",false, new EditsImpl());
+		edit.doEdit();
+		assertEquals("The workflow should now contain 2 services",2,dataflow.getProcessors().size());
+		Processor processor=null;
+		for (Processor p : dataflow.getProcessors()) {
+			if (p.getLocalName().equals("parametersXML")) {
+				processor = p;
+				break;
+			}
+		}
+		assertNotNull("There should be a processor named parametersXML",processor);
+		assertEquals("There should be 1 activity",1,processor.getActivityList().size());
+
+		assertEquals("The processor should have 3 output ports",3,processor.getOutputPorts().size());
+		assertEquals("The processor should have 1 input port",1,processor.getInputPorts().size());
+
+		Activity<?>a = processor.getActivityList().get(0);
+		assertEquals("The activity should have 3 output ports",3,a.getOutputPorts().size());
+		assertEquals("The activity should have 1 input port",1,a.getInputPorts().size());
+
+		assertEquals("There should be 1 datalink",1,dataflow.getLinks().size());
+	}
+
+	@Ignore("Integration test")
+	@Test
+	public void testUndo() throws Exception {
+		AddXMLSplitterEdit edit = new AddXMLSplitterEdit(dataflow,activity,"parameters",false, new EditsImpl());
+		edit.doEdit();
+		edit.undo();
+		assertEquals("There should be only 1 processor",1,dataflow.getProcessors().size());
+		assertEquals("The processor should be called run_eInfo","run_eInfo",dataflow.getProcessors().get(0).getLocalName());
+		assertEquals("There should be no datalinks",0,dataflow.getLinks().size());
+	}
+
+	@Ignore("Integration test")
+	@Test
+	public void testAddInputSplitterToWSDLActivity() throws Exception {
+		AddXMLSplitterEdit edit = new AddXMLSplitterEdit(dataflow,activity,"parameters",true, new EditsImpl());
+		edit.doEdit();
+		assertEquals("The workflow should now contain 2 services",2,dataflow.getProcessors().size());
+		Processor processor=null;
+		for (Processor p : dataflow.getProcessors()) {
+			if (p.getLocalName().equals("parametersXML")) {
+				processor = p;
+				break;
+			}
+		}
+		assertNotNull("There should be a processor named parametersXML",processor);
+		assertEquals("There should be 1 activity",1,processor.getActivityList().size());
+		assertEquals("THe processor should have 3 input ports",3,processor.getInputPorts().size());
+		assertEquals("THe processor should have 1 output port",1,processor.getOutputPorts().size());
+
+		Activity<?>a = processor.getActivityList().get(0);
+
+		assertEquals("The activity should have 3 input ports",3,a.getInputPorts().size());
+		assertEquals("The activity 1 output port",1,a.getOutputPorts().size());
+
+		assertEquals("There should be 1 datalink",1,dataflow.getLinks().size());
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLInputSplitterActivityTest.java b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLInputSplitterActivityTest.java
new file mode 100644
index 0000000..9a73adf
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLInputSplitterActivityTest.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl.xmlsplitter;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.StringReader;
+
+import net.sf.taverna.t2.workflowmodel.impl.EditsImpl;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.wsdl.parser.BaseTypeDescriptor;
+import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
+
+import org.jdom.Element;
+import org.jdom.input.SAXBuilder;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+public class XMLInputSplitterActivityTest {
+
+	@Test
+	public void testGetTypeDescriptorForInputPort() throws Exception {
+		String xml = "<s:extensions xmlns:s=\"http://org.embl.ebi.escience/xscufl/0.1alpha\"><s:complextype optional=\"false\" unbounded=\"false\" typename=\"personToString\" name=\"parameters\" qname=\"{http://xfire.codehaus.org/BookService}personToString\"><s:elements><s:complextype optional=\"false\" unbounded=\"false\" typename=\"Person\" name=\"person\" qname=\"{http://xfire.codehaus.org/BookService}&gt;personToString&gt;person\"><s:elements><s:complextype optional=\"true\" unbounded=\"false\" typename=\"Address\" name=\"address\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;address\"><s:elements><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"city\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Address&gt;city\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"road\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Address&gt;road\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"int\" name=\"roadNumber\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Address&gt;roadNumber\" /></s:elements></s:complextype><s:basetype optional=\"true\" unbounded=\"false\" typename=\"int\" name=\"age\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;age\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"firstName\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;firstName\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"lastName\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;lastName\" /></s:elements></s:complextype></s:elements></s:complextype></s:extensions>";
+		Element element = new SAXBuilder().build(new StringReader(xml)).getRootElement();
+		JsonNode bean = XMLSplitterConfigurationBeanBuilder.buildBeanForInput(element);
+		XMLInputSplitterActivity a = new XMLInputSplitterActivity();
+		a.configure(bean);
+		XMLInputSplitterActivityFactory af = new XMLInputSplitterActivityFactory();
+		af.setEdits(new EditsImpl());
+
+		boolean exists = false;
+		for (ActivityInputPort p : af.getInputPorts(bean)) {
+			if (p.getName().equals("person")) {
+				exists=true;
+				break;
+			}
+		}
+
+		assertTrue("The input port named person should have been found",exists);
+
+		assertNotNull("There should be a type descriptor for person",a.getTypeDescriptorForInputPort("person"));
+		assertTrue("The descriptor should be complex",a.getTypeDescriptorForInputPort("person") instanceof ComplexTypeDescriptor);
+	}
+
+	@Test
+	public void testGetTypeDescriptorForInputPort2() throws Exception {
+		String xml = "<s:extensions xmlns:s=\"http://org.embl.ebi.escience/xscufl/0.1alpha\"><s:complextype optional=\"false\" unbounded=\"false\" typename=\"Person\" name=\"person\" qname=\"{http://xfire.codehaus.org/BookService}&gt;personToString&gt;person\"><s:elements><s:complextype optional=\"true\" unbounded=\"false\" typename=\"Address\" name=\"address\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;address\"><s:elements><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"city\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Address&gt;city\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"road\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Address&gt;road\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"int\" name=\"roadNumber\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Address&gt;roadNumber\" /></s:elements></s:complextype><s:basetype optional=\"true\" unbounded=\"false\" typename=\"int\" name=\"age\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;age\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"firstName\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;firstName\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"lastName\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;lastName\" /></s:elements></s:complextype></s:extensions>";
+		Element element = new SAXBuilder().build(new StringReader(xml)).getRootElement();
+		JsonNode bean = XMLSplitterConfigurationBeanBuilder.buildBeanForInput(element);
+		XMLInputSplitterActivity a = new XMLInputSplitterActivity();
+		a.configure(bean);
+		XMLInputSplitterActivityFactory af = new XMLInputSplitterActivityFactory();
+		af.setEdits(new EditsImpl());
+
+		boolean exists = false;
+		for (ActivityInputPort p : af.getInputPorts(bean)) {
+			if (p.getName().equals("firstName")) {
+				exists=true;
+				break;
+			}
+		}
+
+		assertTrue("The input port named firstName should have been found",exists);
+
+		assertNotNull("There should be a type descriptor for person",a.getTypeDescriptorForInputPort("firstName"));
+		assertTrue("The descriptor should be base type",a.getTypeDescriptorForInputPort("firstName") instanceof BaseTypeDescriptor);
+	}
+}
diff --git a/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLOutputSplitterActivityTest.java b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLOutputSplitterActivityTest.java
new file mode 100644
index 0000000..b98e243
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLOutputSplitterActivityTest.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl.xmlsplitter;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.StringReader;
+
+import net.sf.taverna.t2.workflowmodel.impl.EditsImpl;
+import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
+
+import org.jdom.Element;
+import org.jdom.input.SAXBuilder;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+public class XMLOutputSplitterActivityTest {
+
+	@Test
+	public void testGetTypeDescriptorForOutputPort() throws Exception {
+
+		String xml = "<s:extensions xmlns:s=\"http://org.embl.ebi.escience/xscufl/0.1alpha\"><s:complextype optional=\"false\" unbounded=\"false\" typename=\"getPersonResponse\" name=\"parameters\" qname=\"{http://testing.org}getPersonResponse\"><s:elements><s:complextype optional=\"false\" unbounded=\"false\" typename=\"Person\" name=\"getPersonReturn\" qname=\"{http://testing.org}&gt;getPersonResponse&gt;getPersonReturn\"><s:elements><s:complextype optional=\"false\" unbounded=\"false\" typename=\"Address\" name=\"address\" qname=\"{http://testing.org}Person&gt;address\"><s:elements><s:basetype optional=\"false\" unbounded=\"false\" typename=\"string\" name=\"city\" qname=\"{http://testing.org}Address&gt;city\" /><s:basetype optional=\"false\" unbounded=\"false\" typename=\"int\" name=\"number\" qname=\"{http://testing.org}Address&gt;number\" /><s:basetype optional=\"false\" unbounded=\"false\" typename=\"string\" name=\"road\" qname=\"{http://testing.org}Address&gt;road\" /></s:elements></s:complextype><s:basetype optional=\"false\" unbounded=\"false\" typename=\"int\" name=\"age\" qname=\"{http://testing.org}Person&gt;age\" /><s:basetype optional=\"false\" unbounded=\"false\" typename=\"string\" name=\"name\" qname=\"{http://testing.org}Person&gt;name\" /></s:elements></s:complextype></s:elements></s:complextype></s:extensions>";
+		Element element = new SAXBuilder().build(new StringReader(xml)).getRootElement();
+		JsonNode bean = XMLSplitterConfigurationBeanBuilder.buildBeanForOutput(element);
+		XMLOutputSplitterActivity a = new XMLOutputSplitterActivity();
+		a.setEdits(new EditsImpl());
+		a.configure(bean);
+
+		assertNotNull("There should be a descriptor for the port getPersonReturn",a.getTypeDescriptorForOutputPort("getPersonReturn"));
+		assertTrue("The descriptor should be complex",a.getTypeDescriptorForOutputPort("getPersonReturn") instanceof ComplexTypeDescriptor);
+
+	}
+}
diff --git a/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLSplitterConfigurationBeanBuilderTest.java b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLSplitterConfigurationBeanBuilderTest.java
new file mode 100644
index 0000000..a3d2f3b
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/java/net/sf/taverna/t2/activities/wsdl/xmlsplitter/XMLSplitterConfigurationBeanBuilderTest.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.wsdl.xmlsplitter;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.StringReader;
+
+import org.jdom.Element;
+import org.jdom.input.SAXBuilder;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+public class XMLSplitterConfigurationBeanBuilderTest {
+
+	@Test
+	public void testBuildBeanForInput() throws Exception  {
+		String xml = "<s:extensions xmlns:s=\"http://org.embl.ebi.escience/xscufl/0.1alpha\"><s:complextype optional=\"false\" unbounded=\"false\" typename=\"personToString\" name=\"parameters\" qname=\"{http://xfire.codehaus.org/BookService}personToString\"><s:elements><s:complextype optional=\"false\" unbounded=\"false\" typename=\"Person\" name=\"person\" qname=\"{http://xfire.codehaus.org/BookService}&gt;personToString&gt;person\"><s:elements><s:complextype optional=\"true\" unbounded=\"false\" typename=\"Address\" name=\"address\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;address\"><s:elements><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"city\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Address&gt;city\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"road\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Address&gt;road\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"int\" name=\"roadNumber\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Address&gt;roadNumber\" /></s:elements></s:complextype><s:basetype optional=\"true\" unbounded=\"false\" typename=\"int\" name=\"age\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;age\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"firstName\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;firstName\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"lastName\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;lastName\" /></s:elements></s:complextype></s:elements></s:complextype></s:extensions>";
+		Element element = new SAXBuilder().build(new StringReader(xml)).getRootElement();
+		JsonNode bean = XMLSplitterConfigurationBeanBuilder.buildBeanForInput(element);
+		assertNotNull("The bean should not be null",bean);
+
+		assertEquals("There should be 1 input",1,bean.get("inputPorts").size());
+		assertEquals("There should be 1 output",1,bean.get("outputPorts").size());
+
+		assertEquals("The input should be named person","person",bean.get("inputPorts").get(0).get("name").textValue());
+		assertEquals("The output should be named output","output",bean.get("outputPorts").get(0).get("name").textValue());
+
+		assertEquals("The type xml definition should match",xml,bean.get("wrappedType").textValue());
+	}
+
+	@Test
+	public void testBuildBeanForInput2() throws Exception {
+		String xml = "<s:extensions xmlns:s=\"http://org.embl.ebi.escience/xscufl/0.1alpha\"><s:complextype optional=\"false\" unbounded=\"false\" typename=\"Person\" name=\"person\" qname=\"{http://xfire.codehaus.org/BookService}&gt;personToString&gt;person\"><s:elements><s:complextype optional=\"true\" unbounded=\"false\" typename=\"Address\" name=\"address\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;address\"><s:elements><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"city\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Address&gt;city\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"road\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Address&gt;road\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"int\" name=\"roadNumber\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Address&gt;roadNumber\" /></s:elements></s:complextype><s:basetype optional=\"true\" unbounded=\"false\" typename=\"int\" name=\"age\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;age\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"firstName\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;firstName\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"lastName\" qname=\"{http://complex.pojo.axis2.menagerie.googlecode}Person&gt;lastName\" /></s:elements></s:complextype></s:extensions>";
+		Element element = new SAXBuilder().build(new StringReader(xml)).getRootElement();
+
+		JsonNode bean = XMLSplitterConfigurationBeanBuilder.buildBeanForInput(element);
+		assertNotNull("The bean should not be null",bean);
+
+		assertEquals("There should be 4 inputs",4,bean.get("inputPorts").size());
+		assertEquals("There should be 1 output",1,bean.get("outputPorts").size());
+
+		assertEquals("The first input should be named address","address",bean.get("inputPorts").get(0).get("name").textValue());
+		assertEquals("The output should be named output","output",bean.get("outputPorts").get(0).get("name").textValue());
+
+		assertEquals("The type xml definition should match",xml,bean.get("wrappedType").textValue());
+	}
+
+	@Test
+	public void testBuildBeanForOutput() throws Exception {
+		String xml = "<s:extensions xmlns:s=\"http://org.embl.ebi.escience/xscufl/0.1alpha\"><s:complextype optional=\"false\" unbounded=\"false\" typename=\"getPersonResponse\" name=\"parameters\" qname=\"{http://testing.org}getPersonResponse\"><s:elements><s:complextype optional=\"false\" unbounded=\"false\" typename=\"Person\" name=\"getPersonReturn\" qname=\"{http://testing.org}&gt;getPersonResponse&gt;getPersonReturn\"><s:elements><s:complextype optional=\"false\" unbounded=\"false\" typename=\"Address\" name=\"address\" qname=\"{http://testing.org}Person&gt;address\"><s:elements><s:basetype optional=\"false\" unbounded=\"false\" typename=\"string\" name=\"city\" qname=\"{http://testing.org}Address&gt;city\" /><s:basetype optional=\"false\" unbounded=\"false\" typename=\"int\" name=\"number\" qname=\"{http://testing.org}Address&gt;number\" /><s:basetype optional=\"false\" unbounded=\"false\" typename=\"string\" name=\"road\" qname=\"{http://testing.org}Address&gt;road\" /></s:elements></s:complextype><s:basetype optional=\"false\" unbounded=\"false\" typename=\"int\" name=\"age\" qname=\"{http://testing.org}Person&gt;age\" /><s:basetype optional=\"false\" unbounded=\"false\" typename=\"string\" name=\"name\" qname=\"{http://testing.org}Person&gt;name\" /></s:elements></s:complextype></s:elements></s:complextype></s:extensions>";
+		Element element = new SAXBuilder().build(new StringReader(xml)).getRootElement();
+		JsonNode bean = XMLSplitterConfigurationBeanBuilder.buildBeanForOutput(element);
+
+		assertNotNull("The bean should not be null",bean);
+
+		assertEquals("There should be 1 input",1,bean.get("inputPorts").size());
+		assertEquals("There should be 1 output",1,bean.get("outputPorts").size());
+
+		assertEquals("The input should be named input","input",bean.get("inputPorts").get(0).get("name").textValue());
+		assertEquals("The output shouldbe named getPersonResponse","getPersonReturn",bean.get("outputPorts").get(0).get("name").textValue());
+
+		assertEquals("The type xml definition should match",xml,bean.get("wrappedType").textValue());
+	}
+
+}
diff --git a/taverna-wsdl-activity/src/test/resources/log4j.properties b/taverna-wsdl-activity/src/test/resources/log4j.properties
new file mode 100644
index 0000000..e8980e5
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/resources/log4j.properties
@@ -0,0 +1,8 @@
+log4j.rootLogger=WARN, CONSOLE
+
+# Default output to console
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%-5p %d{ISO8601} (%c:%L) - %m%n
+
+log4j.logger.net.sf.taverna.t2.activities.wsdl=INFO
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/CounterService_.wsdl b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/CounterService_.wsdl
new file mode 100644
index 0000000..7e628e0
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/CounterService_.wsdl
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions name="Counter" targetNamespace="http://counter.com/service" xmlns:binding="http://counter.com/bindings" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:import location="counter_bindings.wsdl" namespace="http://counter.com/bindings"/>
+  <wsdl:service name="CounterService">
+    <wsdl:port binding="binding:CounterPortTypeSOAPBinding" name="CounterPortTypePort">
+      <soap:address location="http://localhost:8080/wsrf/services/CounterService"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
diff --git a/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-Addressing.xsd b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-Addressing.xsd
new file mode 100644
index 0000000..008c65e
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-Addressing.xsd
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Legal Disclaimer
+
+The presentation, distribution or other dissemination of the information 
+contained in this document is not a license, either expressly or impliedly, 
+to any intellectual property owned or controlled by BEA or IBM or Microsoft
+and\or any other third party.  BEA and IBM and Microsoft and\or any other
+third party may have patents, patent applications, trademarks, copyrights, 
+or other intellectual property rights covering subject matter in this 
+document.  The furnishing of this document does not give you any license 
+to BEA's and IBM's and Microsoft's or any other third party's patents, 
+trademarks, copyrights, or other intellectual property.
+
+This document and the information contained herein is provided on an "AS IS"
+basis and to the maximum extent permitted by applicable law, BEA and IBM 
+and Microsoft provide the document AS IS AND WITH ALL FAULTS, and hereby 
+disclaims all other warranties and conditions, either express, implied or 
+statutory, including, but not limited to, any (if any) implied warranties, 
+duties or conditions of merchantability, of fitness for a particular 
+purpose, of accuracy or completeness of responses, of results, of 
+workmanlike effort, of lack of viruses, and of lack of negligence, all with
+regard to the document. ALSO, THERE IS NO WARRANTY OR CONDITION OF 
+TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO DESCRIPTION OR 
+NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE 
+DOCUMENT.
+
+IN NO EVENT WILL BEA or IBM or MICROSOFT BE LIABLE TO ANY OTHER PARTY FOR THE
+COST OF PROCURING SUBSTITUTE GOODS OR SERVICES, LOST PROFITS, LOSS OF USE, 
+LOSS OF DATA, OR ANY INCIDENTAL, CONSEQUENTIAL, DIRECT, INDIRECT, OR SPECIAL 
+DAMAGES WHETHER UNDER CONTRACT, TORT, WARRANTY, OR OTHERWISE, ARISING IN ANY 
+WAY OUT OF THIS OR ANY OTHER AGREEMENT RELATING TO THIS DOCUMENT, WHETHER OR 
+NOT SUCH PARTY HAD ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.
+
+Copyright Notice
+
+Copyright 2003,2004 BEA Systems Inc. and IBM Corporation and Microsoft Corporation. All rights reserved.--><xs:schema targetNamespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" elementFormDefault="qualified" blockDefault="#all" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
+  <!--//////////////////// WS-Addressing ////////////////////-->
+  <!--Endpoint reference-->
+  <xs:element name="EndpointReference" type="wsa:EndpointReferenceType"/>
+  <xs:complexType name="EndpointReferenceType">
+    <xs:sequence>
+      <xs:element name="Address" type="wsa:AttributedURI"/>
+      <xs:element name="ReferenceProperties" type="wsa:ReferencePropertiesType" minOccurs="0"/>
+      <xs:element name="PortType" type="wsa:AttributedQName" minOccurs="0"/>
+      <xs:element name="ServiceName" type="wsa:ServiceNameType" minOccurs="0"/>
+      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>If "Policy" elements from namespace "http://schemas.xmlsoap.org/ws/2002/12/policy#policy" are used, they must appear first (before any extensibility elements).</xs:documentation>
+        </xs:annotation>
+      </xs:any>
+    </xs:sequence>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+  </xs:complexType>
+  <xs:complexType name="ReferencePropertiesType">
+    <xs:sequence>
+      <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="ServiceNameType">
+    <xs:simpleContent>
+      <xs:extension base="xs:QName">
+        <xs:attribute name="PortName" type="xs:NCName"/>
+        <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <!--Message information header blocks-->
+  <xs:element name="MessageID" type="wsa:AttributedURI"/>
+  <xs:element name="RelatesTo" type="wsa:Relationship"/>
+  <xs:element name="To" type="wsa:AttributedURI"/>
+  <xs:element name="Action" type="wsa:AttributedURI"/>
+  <xs:element name="From" type="wsa:EndpointReferenceType"/>
+  <xs:element name="ReplyTo" type="wsa:EndpointReferenceType"/>
+  <xs:element name="FaultTo" type="wsa:EndpointReferenceType"/>
+  <xs:complexType name="Relationship">
+    <xs:simpleContent>
+      <xs:extension base="xs:anyURI">
+        <xs:attribute name="RelationshipType" type="xs:QName" use="optional"/>
+        <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:simpleType name="RelationshipTypeValues">
+    <xs:restriction base="xs:QName">
+      <xs:enumeration value="wsa:Reply"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="ReplyAfter"/>
+  <xs:complexType name="ReplyAfterType">
+    <xs:simpleContent>
+      <xs:extension base="xs:nonNegativeInteger">
+        <xs:anyAttribute namespace="##other"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:simpleType name="FaultSubcodeValues">
+    <xs:restriction base="xs:QName">
+      <xs:enumeration value="wsa:InvalidMessageInformationHeader"/>
+      <xs:enumeration value="wsa:MessageInformationHeaderRequired"/>
+      <xs:enumeration value="wsa:DestinationUnreachable"/>
+      <xs:enumeration value="wsa:ActionNotSupported"/>
+      <xs:enumeration value="wsa:EndpointUnavailable"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:attribute name="Action" type="xs:anyURI"/>
+  <!--Common declarations and definitions-->
+  <xs:complexType name="AttributedQName">
+    <xs:simpleContent>
+      <xs:extension base="xs:QName">
+        <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="AttributedURI">
+    <xs:simpleContent>
+      <xs:extension base="xs:anyURI">
+        <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-BaseFaults.xsd b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-BaseFaults.xsd
new file mode 100644
index 0000000..87d3798
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-BaseFaults.xsd
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director. 
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director. 
+
+Copyright (C) OASIS Open (2004). All Rights Reserved. 
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd">
+  <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+  <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd">
+    <xsd:annotation>
+      <xsd:documentation>Get access to the xml: attribute groups for xml:lang as declared on 'schema'
+        and 'documentation' below</xsd:documentation>
+    </xsd:annotation>
+  </xsd:import>
+  <!--====================== BaseFault Types =======================-->
+  <xsd:element name="BaseFault" type="wsbf:BaseFaultType"/>
+  <xsd:complexType name="BaseFaultType">
+    <xsd:sequence>
+      <xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="1" maxOccurs="1"/>
+      <xsd:element name="Originator" type="wsa:EndpointReferenceType" minOccurs="0" maxOccurs="1"/>
+      <xsd:element name="ErrorCode" minOccurs="0" maxOccurs="1">
+        <xsd:complexType>
+          <xsd:complexContent mixed="true">
+            <xsd:extension base="xsd:anyType">
+              <xsd:attribute name="dialect" type="xsd:anyURI" use="required"/>
+            </xsd:extension>
+          </xsd:complexContent>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="Description" minOccurs="0" maxOccurs="unbounded">
+        <xsd:complexType>
+          <xsd:simpleContent>
+            <xsd:extension base="xsd:string">
+              <xsd:attribute ref="xml:lang" use="optional"/>
+            </xsd:extension>
+          </xsd:simpleContent>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="FaultCause" type="wsbf:BaseFaultType" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+</xsd:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-BaseN.wsdl b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-BaseN.wsdl
new file mode 100644
index 0000000..418e66c
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-BaseN.wsdl
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><wsdl:definitions name="WS-BaseNotification" targetNamespace="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy" xmlns:wsnt="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" xmlns:wsntw="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.wsdl" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:wsrpw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" xmlns:wsrl="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" xmlns:wsrlw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl">
+  <!--========================== Imports ===========================-->
+  <wsdl:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" location="WS-ResourceProperties.wsdl"/>
+  <wsdl:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" location="WS-ResourceLifetime.wsdl"/>
+  <!--===================== Types Definitions ======================-->
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified">
+      <xsd:include schemaLocation="WS-BaseN.xsd"/>
+      <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" schemaLocation="WS-BaseFaults.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" schemaLocation="WS-ResourceProperties.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" schemaLocation="WS-ResourceLifetime.xsd"/>
+      <!--=============== Resource Property Related  ===================-->
+      <!--======== Resource Properties for NotificationProducer ========-->
+      <xsd:element name="NotificationProducerRP">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element ref="wsnt:Topic" minOccurs="1" maxOccurs="unbounded"/>
+            <xsd:element ref="wsnt:FixedTopicSet" minOccurs="1" maxOccurs="1"/>
+            <xsd:element ref="wsnt:TopicExpressionDialects" minOccurs="1" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!--======== Resource Properties for SubscriptionManager =========-->
+      <xsd:element name="SubscriptionManagerRP">
+        <xsd:complexType>
+          <xsd:sequence>
+            <!--From WS-ResourceLifetime ScheduledResourceTermination-->
+            <xsd:element ref="wsrl:CurrentTime" minOccurs="1" maxOccurs="1"/>
+            <xsd:element ref="wsrl:TerminationTime" minOccurs="1" maxOccurs="1"/>
+            <!--SubscriptionManager specific-->
+            <xsd:element ref="wsnt:ConsumerReference" minOccurs="1" maxOccurs="1"/>
+            <xsd:element ref="wsnt:TopicExpression" minOccurs="1" maxOccurs="1"/>
+            <xsd:element ref="wsnt:UseNotify" minOccurs="1" maxOccurs="1"/>
+            <xsd:element ref="wsnt:Precondition" minOccurs="0" maxOccurs="1"/>
+            <xsd:element ref="wsnt:Selector" minOccurs="0" maxOccurs="1"/>
+            <xsd:element ref="wsnt:SubscriptionPolicy" minOccurs="0" maxOccurs="1"/>
+            <xsd:element ref="wsnt:CreationTime" minOccurs="0" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!--================== Message Helper Types  =====================-->
+      <xsd:complexType name="NotificationMessageHolderType">
+        <xsd:sequence>
+          <xsd:element name="Topic" type="wsnt:TopicExpressionType" minOccurs="1" maxOccurs="1"/>
+          <xsd:element name="ProducerReference" type="wsa:EndpointReferenceType" minOccurs="0" maxOccurs="1"/>
+          <xsd:element name="Message" type="xsd:anyType" minOccurs="1" maxOccurs="1"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <!--========== Message Types for NotificationConsumer  ===========-->
+      <xsd:element name="Notify">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="NotificationMessage" type="wsnt:NotificationMessageHolderType" minOccurs="1" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!--========== Message Types for NotificationProducer  ===========-->
+      <xsd:element name="SubscribeResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="SubscriptionReference" type="wsa:EndpointReferenceType" minOccurs="0" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="GetCurrentMessage">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="Topic" type="wsnt:TopicExpressionType"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="GetCurrentMessageResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:complexType name="ResourceUnknownFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="ResourceUnknownFault" type="wsnt:ResourceUnknownFaultType"/>
+      <xsd:complexType name="SubscribeCreationFailedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="SubscribeCreationFailedFault" type="wsnt:SubscribeCreationFailedFaultType"/>
+      <xsd:complexType name="TopicPathDialectUnknownFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="TopicPathDialectUnknownFault" type="wsnt:TopicPathDialectUnknownFaultType"/>
+      <xsd:complexType name="InvalidTopicExpressionFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="InvalidTopicExpressionFault" type="wsnt:InvalidTopicExpressionFaultType"/>
+      <xsd:complexType name="TopicNotSupportedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="TopicNotSupportedFault" type="wsnt:TopicNotSupportedFaultType"/>
+      <xsd:complexType name="NoCurrentMessageOnTopicFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="NoCurrentMessageOnTopicFault" type="wsnt:NoCurrentMessageOnTopicFaultType"/>
+      <!--========== Message Types for SubscriptionManager  ===========-->
+      <xsd:element name="PauseSubscription">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:element name="PauseSubscriptionResponse">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:element name="ResumeSubscription">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:element name="ResumeSubscriptionResponse">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:complexType name="PauseFailedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="PauseFailedFault" type="wsnt:PauseFailedFaultType"/>
+      <xsd:complexType name="ResumeFailedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="ResumeFailedFault" type="wsnt:ResumeFailedFaultType"/>
+    </xsd:schema>
+  </wsdl:types>
+  <!--================ NotificationConsumer::Notify ================ 
+  Notify(
+    NotificationMessage
+      (TopicExpression, ProducerReference, Message)*
+  returns: n/a (one way)-->
+  <wsdl:message name="Notify">
+    <wsdl:part name="Notify" element="wsnt:Notify"/>
+  </wsdl:message>
+  <!--============== NotificationProducer::Subscribe =============== 
+  Subscribe(
+   (ConsumerEndpointReference, TopicExpression, [UseNotify],
+   [Precondition], [Selector], [SubscriptionPolicy], 
+   [InitialTerminationTime])   
+  returns: WS-Resource qualified EPR to a Subscription-->
+  <wsdl:message name="SubscribeRequest">
+    <wsdl:part name="SubscribeRequest" element="wsnt:Subscribe"/>
+  </wsdl:message>
+  <wsdl:message name="SubscribeResponse">
+    <wsdl:part name="SubscribeResponse" element="wsnt:SubscribeResponse"/>
+  </wsdl:message>
+  <wsdl:message name="ResourceUnknownFault">
+    <part name="ResourceUnknownFault" element="wsnt:ResourceUnknownFault"/>
+  </wsdl:message>
+  <wsdl:message name="SubscribeCreationFailedFault">
+    <part name="SubscribeCreationFailedFault" element="wsnt:SubscribeCreationFailedFault"/>
+  </wsdl:message>
+  <wsdl:message name="TopicPathDialectUnknownFault">
+    <part name="TopicPathDialectUnknownFault" element="wsnt:TopicPathDialectUnknownFault"/>
+  </wsdl:message>
+  <!--========== NotificationProducer::GetCurrentMessage =========== 
+  GetCurrentMessage(topicExpression)
+  returns: a NotificationMessage (xsd:any)-->
+  <wsdl:message name="GetCurrentMessageRequest">
+    <wsdl:part name="GetCurrentMessageRequest" element="wsnt:GetCurrentMessage"/>
+  </wsdl:message>
+  <wsdl:message name="GetCurrentMessageResponse">
+    <wsdl:part name="GetCurrentMessageResponse" element="wsnt:GetCurrentMessageResponse"/>
+  </wsdl:message>
+  <wsdl:message name="InvalidTopicExpressionFault">
+    <part name="InvalidTopicExpressionFault" element="wsnt:InvalidTopicExpressionFault"/>
+  </wsdl:message>
+  <wsdl:message name="TopicNotSupportedFault">
+    <part name="TopicNotSupportedFault" element="wsnt:TopicNotSupportedFault"/>
+  </wsdl:message>
+  <wsdl:message name="NoCurrentMessageOnTopicFault">
+    <part name="NoCurrentMessageOnTopicFault" element="wsnt:NoCurrentMessageOnTopicFault"/>
+  </wsdl:message>
+  <!--========== SubscriptionManager::PauseSubscription ============
+   PauseSubscription()
+   returns: empty-->
+  <wsdl:message name="PauseSubscriptionRequest">
+    <wsdl:part name="PauseSubscriptionRequest" element="wsnt:PauseSubscription"/>
+  </wsdl:message>
+  <wsdl:message name="PauseSubscriptionResponse">
+    <wsdl:part name="PauseSubscriptionResponse" element="wsnt:PauseSubscriptionResponse"/>
+  </wsdl:message>
+  <wsdl:message name="PauseFailedFault">
+    <part name="PauseFailedFault" element="wsnt:PauseFailedFault"/>
+  </wsdl:message>
+  <!--========= SubscriptionManager::ResumeSubscription ============
+   ResumeSubscription()
+   returns: empty-->
+  <wsdl:message name="ResumeSubscriptionRequest">
+    <wsdl:part name="ResumeSubscriptionRequest" element="wsnt:ResumeSubscription"/>
+  </wsdl:message>
+  <wsdl:message name="ResumeSubscriptionResponse">
+    <wsdl:part name="ResumeSubscriptionResponse" element="wsnt:ResumeSubscriptionResponse"/>
+  </wsdl:message>
+  <wsdl:message name="ResumeFailedFault">
+    <part name="ResumeFailedFault" element="wsnt:ResumeFailedFault"/>
+  </wsdl:message>
+  <!--=================== PortType Definitions =====================-->
+  <!--========= NotificationConsumer PortType Definition ===========-->
+  <wsdl:portType name="NotificationConsumer">
+    <wsdl:operation name="Notify">
+      <wsdl:input message="wsntw:Notify" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/Notify"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <!--========= NotificationProducer PortType Definition ===========-->
+  <wsdl:portType name="NotificationProducer" wsrp:ResourceProperties="wsnt:NotificationProducerRP">
+    <!--========== extends wsrpw:ResourceProperties =============-->
+    <wsdl:operation name="GetResourceProperty">
+      <wsdl:input name="GetResourcePropertyRequest" message="wsrpw:GetResourcePropertyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <wsdl:output name="GetResourcePropertyResponse" message="wsrpw:GetResourcePropertyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourcePropertyResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+    </wsdl:operation>
+    <!--=========== NotificationProducer Specific ==============-->
+    <wsdl:operation name="Subscribe">
+      <wsdl:input message="wsntw:SubscribeRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/Subscribe"/>
+      <wsdl:output message="wsntw:SubscribeResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/SubscribeResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+      <wsdl:fault name="SubscribeCreationFailedFault" message="wsntw:SubscribeCreationFailedFault"/>
+      <wsdl:fault name="TopicPathDialectUnknownFault" message="wsntw:TopicPathDialectUnknownFault"/>
+      <wsdl:fault name="InvalidTopicExpressionFault" message="wsntw:InvalidTopicExpressionFault"/>
+      <wsdl:fault name="TopicNotSupportedFault" message="wsntw:TopicNotSupportedFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="GetCurrentMessage">
+      <wsdl:input message="wsntw:GetCurrentMessageRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/GetCurrentMessage"/>
+      <wsdl:output message="wsntw:GetCurrentMessageResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/GetCurrentMessageResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidTopicExpressionFault" message="wsntw:InvalidTopicExpressionFault"/>
+      <wsdl:fault name="TopicNotSupportedFault" message="wsntw:TopicNotSupportedFault"/>
+      <wsdl:fault name="NoCurrentMessageOnTopicFault" message="wsntw:NoCurrentMessageOnTopicFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <!--========== SubscriptionManager PortType Definition ===========-->
+  <wsdl:portType name="SubscriptionManager" wsrp:ResourceProperties="wsnt:SubscriptionManagerRP">
+    <!--========== extends wsrpw:ResourceProperties =============-->
+    <wsdl:operation name="GetResourceProperty">
+      <wsdl:input name="GetResourcePropertyRequest" message="wsrpw:GetResourcePropertyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <wsdl:output name="GetResourcePropertyResponse" message="wsrpw:GetResourcePropertyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourcePropertyResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+    </wsdl:operation>
+    <!--=== extends wsrlw:ImmediateResourceTermination ==========-->
+    <wsdl:operation name="Destroy">
+      <wsdl:input message="wsrlw:DestroyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/Destroy"/>
+      <wsdl:output message="wsrlw:DestroyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/DestroyResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrlw:ResourceUnknownFault"/>
+      <wsdl:fault name="ResourceNotDestroyedFault" message="wsrlw:ResourceNotDestroyedFault"/>
+    </wsdl:operation>
+    <!--=== extends wsrl:ScheduledResourceTermination ==========-->
+    <wsdl:operation name="SetTerminationTime">
+      <wsdl:input message="wsrlw:SetTerminationTimeRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTime"/>
+      <wsdl:output message="wsrlw:SetTerminationTimeResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTimeResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrlw:ResourceUnknownFault"/>
+      <wsdl:fault name="UnableToSetTerminationTimeFault" message="wsrlw:UnableToSetTerminationTimeFault"/>
+      <wsdl:fault name="TerminationTimeChangeRejectedFault" message="wsrlw:TerminationTimeChangeRejectedFault"/>
+    </wsdl:operation>
+    <!--========= SubscriptionManager specific operations ======-->
+    <wsdl:operation name="PauseSubscription">
+      <wsdl:input message="wsntw:PauseSubscriptionRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/PauseSubscription"/>
+      <wsdl:output message="wsntw:PauseSubscriptionResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/PauseSubscriptionResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+      <wsdl:fault name="PauseFailedFault" message="wsntw:PauseFailedFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="ResumeSubscription">
+      <wsdl:input message="wsntw:ResumeSubscriptionRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/ResumeSubscription"/>
+      <wsdl:output message="wsntw:ResumeSubscriptionResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/ResumeSubscriptionResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+      <wsdl:fault name="ResumeFailedFault" message="wsntw:ResumeFailedFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-BaseN.xsd b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-BaseN.xsd
new file mode 100644
index 0000000..9bdf6ae
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-BaseN.xsd
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><xsd:schema targetNamespace="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsnt="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd">
+  <!--======================== Imports  ============================-->
+  <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+  <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" schemaLocation="WS-ResourceProperties.xsd"/>
+  <!--========== Message Types for NotificationProducer  ===========-->
+  <xsd:element name="Subscribe">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element name="ConsumerReference" type="wsa:EndpointReferenceType" minOccurs="1" maxOccurs="1"/>
+        <xsd:element name="TopicExpression" type="wsnt:TopicExpressionType" minOccurs="1" maxOccurs="1"/>
+        <xsd:element name="UseNotify" type="xsd:boolean" default="true" minOccurs="0" maxOccurs="1"/>
+        <xsd:element name="Precondition" type="wsrp:QueryExpressionType" minOccurs="0" maxOccurs="1"/>
+        <xsd:element name="Selector" type="wsrp:QueryExpressionType" minOccurs="0" maxOccurs="1"/>
+        <xsd:element name="SubscriptionPolicy" type="xsd:anyType" minOccurs="0" maxOccurs="1"/>
+        <xsd:element name="InitialTerminationTime" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+  <!--================= Topic Expression Container =================-->
+  <xsd:complexType name="TopicExpressionType" mixed="true">
+    <xsd:sequence>
+      <xsd:any minOccurs="0" maxOccurs="1" processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="Dialect" type="xsd:anyURI"/>
+  </xsd:complexType>
+  <xsd:element name="TopicExpression" type="wsnt:TopicExpressionType"/>
+  <!--=============== Resource Property Related  ===================-->
+  <!--======== Resource Properties for NotificationProducer ========-->
+  <xsd:element name="Topic" type="wsnt:TopicExpressionType"/>
+  <xsd:element name="FixedTopicSet" type="xsd:boolean"/>
+  <xsd:element name="TopicExpressionDialects" type="xsd:anyURI"/>
+  <!--======== Resource Properties for SubscriptionManager =========-->
+  <xsd:element name="ConsumerReference" type="wsa:EndpointReferenceType"/>
+  <xsd:element name="UseNotify" type="xsd:boolean"/>
+  <xsd:element name="Precondition" type="wsrp:QueryExpressionType"/>
+  <xsd:element name="Selector" type="wsrp:QueryExpressionType"/>
+  <xsd:element name="SubscriptionPolicy" type="xsd:anyType"/>
+  <xsd:element name="CreationTime" type="xsd:dateTime"/>
+</xsd:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-ResourceLifetime.wsdl b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-ResourceLifetime.wsdl
new file mode 100644
index 0000000..3d81ce5
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-ResourceLifetime.wsdl
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><wsdl:definitions name="WS-ResourceLifetime" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsrl="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" xmlns:wsrlw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema">
+      <xsd:include schemaLocation="WS-ResourceLifetime.xsd"/>
+      <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" schemaLocation="WS-BaseFaults.xsd"/>
+      <!--==== Resource Properties for ScheduledResourceTermination ====-->
+      <xsd:element name="ScheduledResourceTerminationRP">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element maxOccurs="1" minOccurs="1" ref="wsrl:CurrentTime"/>
+            <xsd:element maxOccurs="1" minOccurs="1" ref="wsrl:TerminationTime"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!--====== Message Types for ImmediateResourceTermination  =======-->
+      <xsd:element name="Destroy">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:element name="DestroyResponse">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:complexType name="ResourceUnknownFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="ResourceUnknownFault" type="wsrl:ResourceUnknownFaultType"/>
+      <xsd:complexType name="ResourceNotDestroyedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="ResourceNotDestroyedFault" type="wsrl:ResourceNotDestroyedFaultType"/>
+      <!--====== Message Types for ScheduledResourceTermination  =======-->
+      <xsd:element name="SetTerminationTime">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="RequestedTerminationTime" nillable="true" type="xsd:dateTime"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="SetTerminationTimeResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="NewTerminationTime" nillable="true" type="xsd:dateTime"/>
+            <xsd:element name="CurrentTime" type="xsd:dateTime"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:complexType name="UnableToSetTerminationTimeFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="UnableToSetTerminationTimeFault" type="wsrl:UnableToSetTerminationTimeFaultType"/>
+      <xsd:complexType name="TerminationTimeChangeRejectedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="TerminationTimeChangeRejectedFault" type="wsrl:TerminationTimeChangeRejectedFaultType"/>
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="DestroyResponse">
+    <wsdl:part element="wsrl:DestroyResponse" name="DestroyResponse"/>
+  </wsdl:message>
+  <wsdl:message name="SetTerminationTimeRequest">
+    <wsdl:part element="wsrl:SetTerminationTime" name="SetTerminationTimeRequest"/>
+  </wsdl:message>
+  <wsdl:message name="ResourceUnknownFault">
+    <wsdl:part element="wsrl:ResourceUnknownFault" name="ResourceUnknownFault"/>
+  </wsdl:message>
+  <wsdl:message name="DestroyRequest">
+    <wsdl:part element="wsrl:Destroy" name="DestroyRequest"/>
+  </wsdl:message>
+  <wsdl:message name="UnableToSetTerminationTimeFault">
+    <wsdl:part element="wsrl:UnableToSetTerminationTimeFault" name="UnableToSetTerminationTimeFault"/>
+  </wsdl:message>
+  <wsdl:message name="SetTerminationTimeResponse">
+    <wsdl:part element="wsrl:SetTerminationTimeResponse" name="SetTerminationTimeResponse"/>
+  </wsdl:message>
+  <wsdl:message name="ResourceNotDestroyedFault">
+    <wsdl:part element="wsrl:ResourceNotDestroyedFault" name="ResourceNotDestroyedFault"/>
+  </wsdl:message>
+  <wsdl:message name="TerminationTimeChangeRejectedFault">
+    <wsdl:part element="wsrl:TerminationTimeChangeRejectedFault" name="TerminationTimeChangeRejectedFault"/>
+  </wsdl:message>
+  <wsdl:portType name="ScheduledResourceTermination" wsrp:ResourceProperties="wsrl:ScheduledResourceTerminationRP">
+    <wsdl:operation name="SetTerminationTime">
+      <wsdl:input message="wsrlw:SetTerminationTimeRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTime"/>
+      <wsdl:output message="wsrlw:SetTerminationTimeResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTimeResponse"/>
+      <wsdl:fault message="wsrlw:UnableToSetTerminationTimeFault" name="UnableToSetTerminationTimeFault"/>
+      <wsdl:fault message="wsrlw:ResourceUnknownFault" name="ResourceUnknownFault"/>
+      <wsdl:fault message="wsrlw:TerminationTimeChangeRejectedFault" name="TerminationTimeChangeRejectedFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="ImmediateResourceTermination">
+    <wsdl:operation name="Destroy">
+      <wsdl:input message="wsrlw:DestroyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/Destroy"/>
+      <wsdl:output message="wsrlw:DestroyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/DestroyResponse"/>
+      <wsdl:fault message="wsrlw:ResourceNotDestroyedFault" name="ResourceNotDestroyedFault"/>
+      <wsdl:fault message="wsrlw:ResourceUnknownFault" name="ResourceUnknownFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-ResourceLifetime.xsd b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-ResourceLifetime.xsd
new file mode 100644
index 0000000..a6dbef7
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-ResourceLifetime.xsd
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsrl="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd">
+  <!--=============== Resource Property Related  ===================-->
+  <!--==== Resource Properties for ScheduledResourceTermination ====-->
+  <xsd:element name="CurrentTime" type="xsd:dateTime"/>
+  <xsd:element name="TerminationTime" nillable="true" type="xsd:dateTime"/>
+  <!--============= Notification Message Related  ==================-->
+  <xsd:element name="TerminationNotification">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element name="TerminationTime" type="xsd:dateTime" minOccurs="1" maxOccurs="1"/>
+        <xsd:element name="TerminationReason" type="xsd:anyType" minOccurs="0" maxOccurs="1"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+</xsd:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-ResourceProperties.wsdl b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-ResourceProperties.wsdl
new file mode 100644
index 0000000..267066a
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-ResourceProperties.wsdl
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><wsdl:definitions name="WS-ResourceProperties" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:wsrpw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl">
+  <!--===================== Types Definitions ======================-->
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified">
+      <xsd:include schemaLocation="WS-ResourceProperties.xsd"/>
+      <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" schemaLocation="WS-BaseFaults.xsd"/>
+      <!--========== Message Types for GetResourceProperty  ============-->
+      <xsd:element name="GetResourceProperty" type="xsd:QName"/>
+      <xsd:element name="GetResourcePropertyResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:complexType name="ResourceUnknownFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="ResourceUnknownFault" type="wsrp:ResourceUnknownFaultType"/>
+      <xsd:complexType name="InvalidResourcePropertyQNameFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="InvalidResourcePropertyQNameFault" type="wsrp:InvalidResourcePropertyQNameFaultType"/>
+      <!--====== Message Types for GetMultipleResourceProperties =======-->
+      <xsd:element name="GetMultipleResourceProperties">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="ResourceProperty" type="xsd:QName" minOccurs="1" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="GetMultipleResourcePropertiesResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!--========= Message Types for SetResourceProperties ===========-->
+      <xsd:complexType name="InsertType">
+        <xsd:sequence>
+          <xsd:any processContents="lax" minOccurs="1" maxOccurs="unbounded"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:element name="Insert" type="wsrp:InsertType"/>
+      <xsd:complexType name="UpdateType">
+        <xsd:sequence>
+          <xsd:any processContents="lax" minOccurs="1" maxOccurs="unbounded"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:element name="Update" type="wsrp:UpdateType"/>
+      <xsd:complexType name="DeleteType">
+        <xsd:attribute name="ResourceProperty" type="xsd:QName" use="required"/>
+      </xsd:complexType>
+      <xsd:element name="Delete" type="wsrp:DeleteType"/>
+      <xsd:element name="SetResourceProperties">
+        <xsd:complexType>
+          <xsd:choice minOccurs="0" maxOccurs="unbounded">
+            <xsd:element ref="wsrp:Insert"/>
+            <xsd:element ref="wsrp:Update"/>
+            <xsd:element ref="wsrp:Delete"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="SetResourcePropertiesResponse">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:complexType name="InvalidSetResourcePropertiesRequestContentFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="InvalidSetResourcePropertiesRequestContentFault" type="wsrp:InvalidSetResourcePropertiesRequestContentFaultType"/>
+      <xsd:complexType name="UnableToModifyResourcePropertyFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="UnableToModifyResourcePropertyFault" type="wsrp:UnableToModifyResourcePropertyFaultType"/>
+      <xsd:complexType name="SetResourcePropertyRequestFailedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="SetResourcePropertyRequestFailedFault" type="wsrp:SetResourcePropertyRequestFailedFaultType"/>
+      <!--========= Message Types for QueryResourceProperties ==========-->
+      <xsd:element name="QueryResourceProperties">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element ref="wsrp:QueryExpression" minOccurs="1" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="QueryResourcePropertiesResponse">
+        <xsd:complexType mixed="true">
+          <xsd:sequence>
+            <xsd:any processContents="lax" minOccurs="1" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:complexType name="UnknownQueryExpressionDialectFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="UnknownQueryExpressionDialectFault" type="wsrp:UnknownQueryExpressionDialectFaultType"/>
+      <xsd:complexType name="InvalidQueryExpressionFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="InvalidQueryExpressionFault" type="wsrp:InvalidQueryExpressionFaultType"/>
+      <xsd:complexType name="QueryEvaluationErrorFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="QueryEvaluationErrorFault" type="wsrp:QueryEvaluationErrorFaultType"/>
+    </xsd:schema>
+  </wsdl:types>
+  <!--===================== GetResourceProperty ==================== 
+  GetResourceProperty(QName)
+  returns: any-->
+  <wsdl:message name="GetResourcePropertyRequest">
+    <wsdl:part name="GetResourcePropertyRequest" element="wsrp:GetResourceProperty"/>
+  </wsdl:message>
+  <wsdl:message name="GetResourcePropertyResponse">
+    <wsdl:part name="GetResourcePropertyResponse" element="wsrp:GetResourcePropertyResponse"/>
+  </wsdl:message>
+  <wsdl:message name="ResourceUnknownFault">
+    <part name="ResourceUnknownFault" element="wsrp:ResourceUnknownFault"/>
+  </wsdl:message>
+  <wsdl:message name="InvalidResourcePropertyQNameFault">
+    <part name="InvalidResourcePropertyQNameFault" element="wsrp:InvalidResourcePropertyQNameFault"/>
+  </wsdl:message>
+  <!--==============GetMultipleResourceProperties ================== 
+  GetMultipleResourceProperties(list of QName)
+  returns: sequence of any-->
+  <wsdl:message name="GetMultipleResourcePropertiesRequest">
+    <wsdl:part name="GetMultipleResourcePropertiesRequest" element="wsrp:GetMultipleResourceProperties"/>
+  </wsdl:message>
+  <wsdl:message name="GetMultipleResourcePropertiesResponse">
+    <wsdl:part name="GetMultipleResourcePropertiesResponse" element="wsrp:GetMultipleResourcePropertiesResponse"/>
+  </wsdl:message>
+  <!--================= SetResourceProperties ====================== 
+  SetResourceProperties(
+  { insert (any)* |
+    update (any)* |
+    delete@QName } + 
+  )
+  returns: empty-->
+  <wsdl:message name="SetResourcePropertiesRequest">
+    <wsdl:part name="SetResourcePropertiesRequest" element="wsrp:SetResourceProperties"/>
+  </wsdl:message>
+  <wsdl:message name="SetResourcePropertiesResponse">
+    <wsdl:part name="SetResourcePropertiesResponse" element="wsrp:SetResourcePropertiesResponse"/>
+  </wsdl:message>
+  <wsdl:message name="InvalidSetResourcePropertiesRequestContentFault">
+    <part name="InvalidSetResourcePropertiesRequestContentFault" element="wsrp:InvalidSetResourcePropertiesRequestContentFault"/>
+  </wsdl:message>
+  <wsdl:message name="UnableToModifyResourcePropertyFault">
+    <part name="UnableToModifyResourcePropertyFault" element="wsrp:UnableToModifyResourcePropertyFault"/>
+  </wsdl:message>
+  <wsdl:message name="SetResourcePropertyRequestFailedFault">
+    <part name="SetResourcePropertyRequestFailedFault" element="wsrp:SetResourcePropertyRequestFailedFault"/>
+  </wsdl:message>
+  <!--================ QueryResourceProperties ===================== 
+  QueryResourceProperties(QueryExpression)
+  returns: any-->
+  <wsdl:message name="QueryResourcePropertiesRequest">
+    <wsdl:part name="QueryResourcePropertiesRequest" element="wsrp:QueryResourceProperties"/>
+  </wsdl:message>
+  <wsdl:message name="QueryResourcePropertiesResponse">
+    <wsdl:part name="QueryResourcePropertiesResponse" element="wsrp:QueryResourcePropertiesResponse"/>
+  </wsdl:message>
+  <wsdl:message name="UnknownQueryExpressionDialectFault">
+    <part name="UnknownQueryExpressionDialectFault" element="wsrp:UnknownQueryExpressionDialectFault"/>
+  </wsdl:message>
+  <wsdl:message name="InvalidQueryExpressionFault">
+    <part name="InvalidQueryExpressionFault" element="wsrp:InvalidQueryExpressionFault"/>
+  </wsdl:message>
+  <wsdl:message name="QueryEvaluationErrorFault">
+    <part name="QueryEvaluationErrorFault" element="wsrp:QueryEvaluationErrorFault"/>
+  </wsdl:message>
+  <!--=================== PortType Definitions =====================-->
+  <wsdl:portType name="GetResourceProperty">
+    <wsdl:operation name="GetResourceProperty">
+      <wsdl:input name="GetResourcePropertyRequest" message="wsrpw:GetResourcePropertyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <wsdl:output name="GetResourcePropertyResponse" message="wsrpw:GetResourcePropertyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourcePropertyResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="GetMultipleResourceProperties">
+    <wsdl:operation name="GetMultipleResourceProperties">
+      <wsdl:input name="GetMultipleResourcePropertiesRequest" message="wsrpw:GetMultipleResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourceProperties"/>
+      <wsdl:output name="GetMultipleResourcePropertiesResponse" message="wsrpw:GetMultipleResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourcePropertiesResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="SetResourceProperties">
+    <wsdl:operation name="SetResourceProperties">
+      <wsdl:input name="SetResourcePropertiesRequest" message="wsrpw:SetResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/SetResourceProperties"/>
+      <wsdl:output name="SetResourcePropertiesResponse" message="wsrpw:SetResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/SetResourcePropertiesResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidSetResourcePropertiesRequestContentFault" message="wsrpw:InvalidSetResourcePropertiesRequestContentFault"/>
+      <wsdl:fault name="UnableToModifyResourcePropertyFault" message="wsrpw:UnableToModifyResourcePropertyFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <wsdl:fault name="SetResourcePropertyRequestFailedFault" message="wsrpw:SetResourcePropertyRequestFailedFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="QueryResourceProperties">
+    <wsdl:operation name="QueryResourceProperties">
+      <wsdl:input name="QueryResourcePropertiesRequest" message="wsrpw:QueryResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourceProperties"/>
+      <wsdl:output name="QueryResourcePropertiesResponse" message="wsrpw:QueryResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourcePropertiesResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <wsdl:fault name="UnknownQueryExpressionDialectFault" message="wsrpw:UnknownQueryExpressionDialectFault"/>
+      <wsdl:fault name="InvalidQueryExpressionFault" message="wsrpw:InvalidQueryExpressionFault"/>
+      <wsdl:fault name="QueryEvaluationErrorFault" message="wsrpw:QueryEvaluationErrorFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-ResourceProperties.xsd b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-ResourceProperties.xsd
new file mode 100644
index 0000000..1527149
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/WS-ResourceProperties.xsd
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <!--======= Global Attribute Declaration for WSDL 1.1 portType====-->
+  <xsd:attribute name="ResourceProperties" type="xsd:QName"/>
+  <!--= Notification Message for ResourceProperties value change ===-->
+  <xsd:complexType name="ResourcePropertyValueChangeNotificationType">
+    <xsd:sequence>
+      <xsd:element name="OldValue" nillable="true" minOccurs="0" maxOccurs="1">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any minOccurs="1" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="NewValue" nillable="true" minOccurs="1" maxOccurs="1">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any minOccurs="1" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+  <xsd:element name="ResourcePropertyValueChangeNotification" type="wsrp:ResourcePropertyValueChangeNotificationType"/>
+  <xsd:complexType name="QueryExpressionType" mixed="true">
+    <xsd:sequence>
+      <xsd:any minOccurs="0" maxOccurs="1" processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="Dialect" type="xsd:anyURI"/>
+  </xsd:complexType>
+  <xsd:element name="QueryExpression" type="wsrp:QueryExpressionType"/>
+</xsd:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/counter_bindings.wsdl b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/counter_bindings.wsdl
new file mode 100644
index 0000000..8acf07f
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/counter_bindings.wsdl
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions name="Counter" targetNamespace="http://counter.com/bindings" xmlns:porttype="http://counter.com" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:import namespace="http://counter.com" location="counter_flattened.wsdl"/>
+  <wsdl:binding name="CounterPortTypeSOAPBinding" type="porttype:CounterPortType">
+    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+    <wsdl:operation name="createCounter">
+      <soap:operation soapAction="http://counter.com/CounterPortType/createCounterRequest"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="add">
+      <soap:operation soapAction="http://counter.com/CounterPortType/addRequest"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="SetTerminationTime">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTime"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="UnableToSetTerminationTimeFault">
+        <soap:fault name="UnableToSetTerminationTimeFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="TerminationTimeChangeRejectedFault">
+        <soap:fault name="TerminationTimeChangeRejectedFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="Destroy">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/Destroy"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="ResourceNotDestroyedFault">
+        <soap:fault name="ResourceNotDestroyedFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="QueryResourceProperties">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourceProperties"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault">
+        <soap:fault name="InvalidResourcePropertyQNameFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="InvalidQueryExpressionFault">
+        <soap:fault name="InvalidQueryExpressionFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="QueryEvaluationErrorFault">
+        <soap:fault name="QueryEvaluationErrorFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="UnknownQueryExpressionDialectFault">
+        <soap:fault name="UnknownQueryExpressionDialectFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="GetMultipleResourceProperties">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourceProperties"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault">
+        <soap:fault name="InvalidResourcePropertyQNameFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="GetResourceProperty">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault">
+        <soap:fault name="InvalidResourcePropertyQNameFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="Subscribe">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/Subscribe"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="TopicNotSupportedFault">
+        <soap:fault name="TopicNotSupportedFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="InvalidTopicExpressionFault">
+        <soap:fault name="InvalidTopicExpressionFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="SubscribeCreationFailedFault">
+        <soap:fault name="SubscribeCreationFailedFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="TopicPathDialectUnknownFault">
+        <soap:fault name="TopicPathDialectUnknownFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="GetCurrentMessage">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/GetCurrentMessage"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="TopicNotSupportedFault">
+        <soap:fault name="TopicNotSupportedFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="InvalidTopicExpressionFault">
+        <soap:fault name="InvalidTopicExpressionFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="NoCurrentMessageOnTopicFault">
+        <soap:fault name="NoCurrentMessageOnTopicFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+  </wsdl:binding>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/counter_flattened.wsdl b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/counter_flattened.wsdl
new file mode 100644
index 0000000..cd5de52
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/counter_flattened.wsdl
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions name="Counter" targetNamespace="http://counter.com" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:tns="http://counter.com" xmlns:wsrpw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" xmlns:wsrlw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" xmlns:wsdlpp="http://www.globus.org/namespaces/2004/10/WSDLPreprocessor" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsntw="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.wsdl" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" location="WS-ResourceLifetime.wsdl"/>
+  <wsdl:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" location="WS-ResourceProperties.wsdl"/>
+  <wsdl:import namespace="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.wsdl" location="WS-BaseN.wsdl"/>
+  <wsdl:types>
+    <xsd:schema elementFormDefault="qualified" targetNamespace="http://counter.com" xmlns:rpns0="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" xmlns:rpns1="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd">
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" schemaLocation="WS-ResourceLifetime.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" schemaLocation="WS-BaseN.xsd"/>
+      <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+      <xsd:element name="createCounter">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:element name="createCounterResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element ref="wsa:EndpointReference"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="add" type="xsd:int"/>
+      <xsd:element name="addResponse" type="xsd:int"/>
+      <xsd:element name="Value" type="xsd:int"/>
+      <xsd:element name="CounterRP">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element maxOccurs="1" minOccurs="1" ref="tns:Value"/>
+            <xsd:element maxOccurs="unbounded" minOccurs="1" ref="rpns0:Topic"/>
+            <xsd:element maxOccurs="unbounded" minOccurs="1" ref="rpns0:TopicExpressionDialects"/>
+            <xsd:element maxOccurs="1" minOccurs="1" ref="rpns1:TerminationTime"/>
+            <xsd:element maxOccurs="1" minOccurs="1" ref="rpns1:CurrentTime"/>
+            <xsd:element maxOccurs="1" minOccurs="1" ref="rpns0:FixedTopicSet"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="AddInputMessage">
+    <wsdl:part name="parameters" element="tns:add"/>
+  </wsdl:message>
+  <wsdl:message name="AddOutputMessage">
+    <wsdl:part name="parameters" element="tns:addResponse"/>
+  </wsdl:message>
+  <wsdl:message name="CreateCounterResponse">
+    <wsdl:part name="response" element="tns:createCounterResponse"/>
+  </wsdl:message>
+  <wsdl:message name="CreateCounterRequest">
+    <wsdl:part name="request" element="tns:createCounter"/>
+  </wsdl:message>
+  <wsdl:portType name="CounterPortType" wsrp:ResourceProperties="tns:CounterRP">
+    <wsdl:operation name="createCounter">
+      <wsdl:input message="tns:CreateCounterRequest"/>
+      <wsdl:output message="tns:CreateCounterResponse"/>
+    </wsdl:operation>
+    <wsdl:operation name="add">
+      <wsdl:input message="tns:AddInputMessage"/>
+      <wsdl:output message="tns:AddOutputMessage"/>
+    </wsdl:operation>
+    <wsdl:operation name="SetTerminationTime">
+      <wsdl:input message="wsrlw:SetTerminationTimeRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTime"/>
+      <wsdl:output message="wsrlw:SetTerminationTimeResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTimeResponse"/>
+      <wsdl:fault name="UnableToSetTerminationTimeFault" message="wsrlw:UnableToSetTerminationTimeFault"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrlw:ResourceUnknownFault"/>
+      <wsdl:fault name="TerminationTimeChangeRejectedFault" message="wsrlw:TerminationTimeChangeRejectedFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="Destroy">
+      <wsdl:input message="wsrlw:DestroyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/Destroy"/>
+      <wsdl:output message="wsrlw:DestroyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/DestroyResponse"/>
+      <wsdl:fault name="ResourceNotDestroyedFault" message="wsrlw:ResourceNotDestroyedFault"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrlw:ResourceUnknownFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="QueryResourceProperties">
+      <wsdl:input name="QueryResourcePropertiesRequest" message="wsrpw:QueryResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourceProperties"/>
+      <wsdl:output name="QueryResourcePropertiesResponse" message="wsrpw:QueryResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourcePropertiesResponse"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <wsdl:fault name="InvalidQueryExpressionFault" message="wsrpw:InvalidQueryExpressionFault"/>
+      <wsdl:fault name="QueryEvaluationErrorFault" message="wsrpw:QueryEvaluationErrorFault"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="UnknownQueryExpressionDialectFault" message="wsrpw:UnknownQueryExpressionDialectFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="GetMultipleResourceProperties">
+      <wsdl:input name="GetMultipleResourcePropertiesRequest" message="wsrpw:GetMultipleResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourceProperties"/>
+      <wsdl:output name="GetMultipleResourcePropertiesResponse" message="wsrpw:GetMultipleResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourcePropertiesResponse"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="GetResourceProperty">
+      <wsdl:input name="GetResourcePropertyRequest" message="wsrpw:GetResourcePropertyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <wsdl:output name="GetResourcePropertyResponse" message="wsrpw:GetResourcePropertyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourcePropertyResponse"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="Subscribe">
+      <wsdl:input message="wsntw:SubscribeRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/Subscribe"/>
+      <wsdl:output message="wsntw:SubscribeResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/SubscribeResponse"/>
+      <wsdl:fault name="TopicNotSupportedFault" message="wsntw:TopicNotSupportedFault"/>
+      <wsdl:fault name="InvalidTopicExpressionFault" message="wsntw:InvalidTopicExpressionFault"/>
+      <wsdl:fault name="SubscribeCreationFailedFault" message="wsntw:SubscribeCreationFailedFault"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+      <wsdl:fault name="TopicPathDialectUnknownFault" message="wsntw:TopicPathDialectUnknownFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="GetCurrentMessage">
+      <wsdl:input message="wsntw:GetCurrentMessageRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/GetCurrentMessage"/>
+      <wsdl:output message="wsntw:GetCurrentMessageResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/GetCurrentMessageResponse"/>
+      <wsdl:fault name="TopicNotSupportedFault" message="wsntw:TopicNotSupportedFault"/>
+      <wsdl:fault name="InvalidTopicExpressionFault" message="wsntw:InvalidTopicExpressionFault"/>
+      <wsdl:fault name="NoCurrentMessageOnTopicFault" message="wsntw:NoCurrentMessageOnTopicFault"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/xml.xsd b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/xml.xsd
new file mode 100644
index 0000000..730b4c9
--- /dev/null
+++ b/taverna-wsdl-activity/src/test/resources/net/sf/taverna/t2/activities/wsdl/wsrf/counterService/xml.xsd
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xml:lang="en" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:annotation>
+    <xs:documentation>See http://www.w3.org/XML/1998/namespace.html and
+   http://www.w3.org/TR/REC-xml for information about this namespace.
+
+    This schema document describes the XML namespace, in a form
+    suitable for import by other schema documents.  
+
+    Note that local names in this namespace are intended to be defined
+    only by the World Wide Web Consortium or its subgroups.  The
+    following names are currently defined in this namespace and should
+    not be used with conflicting semantics by any Working Group,
+    specification, or document instance:
+
+    base (as an attribute name): denotes an attribute whose value
+         provides a URI to be used as the base for interpreting any
+         relative URIs in the scope of the element on which it
+         appears; its value is inherited.  This name is reserved
+         by virtue of its definition in the XML Base specification.
+
+    lang (as an attribute name): denotes an attribute whose value
+         is a language code for the natural language of the content of
+         any element; its value is inherited.  This name is reserved
+         by virtue of its definition in the XML specification.
+  
+    space (as an attribute name): denotes an attribute whose
+         value is a keyword indicating what whitespace processing
+         discipline is intended for the content of the element; its
+         value is inherited.  This name is reserved by virtue of its
+         definition in the XML specification.
+
+    Father (in any context at all): denotes Jon Bosak, the chair of 
+         the original XML Working Group.  This name is reserved by 
+         the following decision of the W3C XML Plenary and 
+         XML Coordination groups:
+
+             In appreciation for his vision, leadership and dedication
+             the W3C XML Plenary on this 10th day of February, 2000
+             reserves for Jon Bosak in perpetuity the XML name
+             xml:Father</xs:documentation>
+  </xs:annotation>
+  <xs:annotation>
+    <xs:documentation>This schema defines attributes and an attribute group
+        suitable for use by
+        schemas wishing to allow xml:base, xml:lang or xml:space attributes
+        on elements they define.
+
+        To enable this, such a schema must import this schema
+        for the XML namespace, e.g. as follows:
+        &lt;schema . . .>
+         . . .
+         &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                    schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
+
+        Subsequently, qualified reference to any of the attributes
+        or the group defined below will have the desired effect, e.g.
+
+        &lt;type . . .>
+         . . .
+         &lt;attributeGroup ref="xml:specialAttrs"/>
+ 
+         will define a type which will schema-validate an instance
+         element with any of those attributes</xs:documentation>
+  </xs:annotation>
+  <xs:annotation>
+    <xs:documentation>In keeping with the XML Schema WG's standard versioning
+   policy, this schema document will persist at
+   http://www.w3.org/2001/03/xml.xsd.
+   At the date of issue it can also be found at
+   http://www.w3.org/2001/xml.xsd.
+   The schema document at that URI may however change in the future,
+   in order to remain compatible with the latest version of XML Schema
+   itself.  In other words, if the XML Schema namespace changes, the version
+   of this document at
+   http://www.w3.org/2001/xml.xsd will change
+   accordingly; the version at
+   http://www.w3.org/2001/03/xml.xsd will not change.</xs:documentation>
+  </xs:annotation>
+  <xs:attribute name="lang" type="xs:language">
+    <xs:annotation>
+      <xs:documentation>In due course, we should install the relevant ISO 2- and 3-letter
+         codes as the enumerated possible values . . .</xs:documentation>
+    </xs:annotation>
+  </xs:attribute>
+  <xs:attribute name="space" default="preserve">
+    <xs:simpleType>
+      <xs:restriction base="xs:NCName">
+        <xs:enumeration value="default"/>
+        <xs:enumeration value="preserve"/>
+      </xs:restriction>
+    </xs:simpleType>
+  </xs:attribute>
+  <xs:attribute name="base" type="xs:anyURI">
+    <xs:annotation>
+      <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+                     information about this attribute.</xs:documentation>
+    </xs:annotation>
+  </xs:attribute>
+  <xs:attributeGroup name="specialAttrs">
+    <xs:attribute ref="xml:base"/>
+    <xs:attribute ref="xml:lang"/>
+    <xs:attribute ref="xml:space"/>
+  </xs:attributeGroup>
+</xs:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/pom.xml b/taverna-wsdl-generic/pom.xml
new file mode 100644
index 0000000..0b7644f
--- /dev/null
+++ b/taverna-wsdl-generic/pom.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.taverna.commonactivities</groupId>
+		<artifactId>taverna-common-activities</artifactId>
+		<version>2.1.0-incubating-SNAPSHOT</version>
+	</parent>
+	<artifactId>taverna-wsdl-generic</artifactId>
+	<packaging>bundle</packaging>
+	<name>Apache Taverna WSDL-generic Library</name>
+	<description>
+        Generic WSDL SOAP handling (parsing, calling)
+    </description>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<version>2.3.7</version>
+				<extensions>true</extensions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<configuration>
+					<excludes>
+						<exclude>**/integration/**</exclude>
+					</excludes>
+				</configuration>
+				<executions>
+					<execution>
+						<id>integration-test</id>
+						<goals>
+							<goal>test</goal>
+						</goals>
+						<phase>integration-test</phase>
+						<configuration>
+							<excludes>
+								<exclude>none</exclude>
+							</excludes>
+							<includes>
+								<include>**/integration/**</include>
+							</includes>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.axis</groupId>
+			<artifactId>com.springsource.org.apache.axis</artifactId>
+			<version>${axis.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+			<version>${log4j.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.jdom</groupId>
+			<artifactId>com.springsource.org.jdom</artifactId>
+			<version>${jdom.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>javax.activation</groupId>
+			<artifactId>com.springsource.javax.activation</artifactId>
+			<version>${activation.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>javax.wsdl</groupId>
+			<artifactId>com.springsource.javax.wsdl</artifactId>
+			<version>${javax.wsdl.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>javax.xml.rpc</groupId>
+			<artifactId>com.springsource.javax.xml.rpc</artifactId>
+			<version>${xml.rpc.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>${junit.version}</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+</project>
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/ArrayTypeDescriptor.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/ArrayTypeDescriptor.java
new file mode 100644
index 0000000..f94d5b8
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/ArrayTypeDescriptor.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.parser;
+
+
+/**
+ * A TypeDescriptor that specifically describes an array type
+ * 
+ */
+public class ArrayTypeDescriptor extends TypeDescriptor {
+	private TypeDescriptor elementType;
+	private boolean wrapped;
+	
+	public boolean isWrapped() {
+		return wrapped;		
+	}
+
+	public void setWrapped(boolean wrapped) {
+		this.wrapped = wrapped;
+	}
+
+	public TypeDescriptor getElementType() {
+		return elementType;
+	}
+
+	public void setElementType(TypeDescriptor elementType) {
+		this.elementType = elementType;
+	}
+
+	@Override
+	public String getName() {
+		String name = super.getName();
+		if (name == null) {
+			return "ArrayOf" + getElementType().getType();
+		}
+		return name;
+	}
+
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/AttributeTypeDescriptor.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/AttributeTypeDescriptor.java
new file mode 100644
index 0000000..a8d0c37
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/AttributeTypeDescriptor.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (C) 2011 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.parser;
+
+/**
+ * A TypeDescriptor specifically for attributes.
+ * 
+ * @author David Withers
+ */
+public class AttributeTypeDescriptor extends TypeDescriptor {
+
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/BaseTypeDescriptor.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/BaseTypeDescriptor.java
new file mode 100644
index 0000000..d911c43
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/BaseTypeDescriptor.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.parser;
+
+
+/**
+ * A TypeDescriptor specifically for basic types (e.g. string, float, int,
+ * base64binary)
+ * 
+ */
+public class BaseTypeDescriptor extends TypeDescriptor {
+
+	
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/ComplexTypeDescriptor.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/ComplexTypeDescriptor.java
new file mode 100644
index 0000000..766c913
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/ComplexTypeDescriptor.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.parser;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A TypeDescriptor that specifically describes a complex type
+ * 
+ */
+public class ComplexTypeDescriptor extends TypeDescriptor {
+	private List<TypeDescriptor> elements = new ArrayList<TypeDescriptor>();
+	private List<TypeDescriptor> attributes = new ArrayList<TypeDescriptor>();
+
+	public List<TypeDescriptor> getElements() {
+		return elements;
+	}
+
+	public void setElements(List<TypeDescriptor> elements) {
+		this.elements = elements;
+	}
+	
+	public TypeDescriptor elementForName(String name) {
+		TypeDescriptor result=null;
+		for (TypeDescriptor desc : getElements()) {
+			if (desc.getName().equals(name)) {
+				result=desc;
+				break;
+			}
+		}
+		return result;
+	}
+
+	public List<TypeDescriptor> getAttributes() {
+		return attributes;
+	}
+
+	public void setAttributes(List<TypeDescriptor> attributes) {
+		this.attributes = attributes;
+	}
+
+	public TypeDescriptor attributeForName(String name) {
+		TypeDescriptor result=null;
+		for (TypeDescriptor desc : getAttributes()) {
+			if (desc.getName().equals(name)) {
+				result=desc;
+				break;
+			}
+		}
+		return result;
+	}
+
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/TypeDescriptor.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/TypeDescriptor.java
new file mode 100644
index 0000000..69344f8
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/TypeDescriptor.java
@@ -0,0 +1,297 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.parser;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+
+/**
+ * Base class for all descriptors for type
+ * 
+ */
+public class TypeDescriptor {
+	private String name;
+
+	private String type;
+
+	private boolean optional;
+
+	private boolean unbounded;
+
+	private QName qname;
+
+	private boolean nillable = false;
+	
+	private String documentation;
+
+	public boolean isNillable() {
+		return nillable;
+	}
+
+	public QName getQname() {
+		if (qname != null)
+			return qname;
+		else {
+			return new QName("", type);
+		}
+	}
+
+	public void setQnameFromString(String qname) {
+		String[] split = qname.split("}");
+		if (split.length == 1) {
+			this.qname = new QName("", qname);
+		} else {
+			String uri = split[0];
+			uri = uri.replaceAll("\\{", "");
+			uri = uri.replaceAll("\\}", "");
+			this.qname = new QName(uri, split[1]);
+		}
+	}
+
+	public String getMimeType() {
+		return translateJavaType(determineClassType(this));
+	}
+	
+	public void setQname(QName qname) {
+		this.qname = qname;
+	}
+
+	public String getNamespaceURI() {
+		return getQname().getNamespaceURI();
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		int i;
+		if ((i = name.lastIndexOf('>')) != -1) {
+			this.name = name.substring(i + 1);
+		} else {
+			this.name = name;
+		}
+	}
+	
+	/**
+     * @return the depth determined from the syntactic mime type of the original
+     *         port. i.e text/plain = 0, l('text/plain') = 1, l(l('text/plain')) =
+     *         2, ... etc.
+     */
+    public int getDepth() {
+    	String syntacticType=getMimeType();
+        if (syntacticType == null) {
+                return 0;
+        } else {
+                return syntacticType.split("l\\(").length - 1;
+        }
+    }
+
+	public boolean isOptional() {
+		return optional;
+	}
+
+	public void setOptional(boolean optional) {
+		this.optional = optional;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public boolean isUnbounded() {
+		return unbounded;
+	}
+
+	public void setUnbounded(boolean unbounded) {
+		this.unbounded = unbounded;
+	}
+
+	@Override
+	public String toString() {
+		return name + ":" + type;
+	}
+
+	/**
+	 * Translate a java type into a taverna type string
+	 */
+	public static String translateJavaType(Class<?> type) {
+		if (type.equals(String[].class)) {
+			return "l('text/plain')";
+		} else if (type.equals(org.w3c.dom.Element.class)) {
+			return "'text/xml'";
+		}
+
+		else if (type.equals(org.w3c.dom.Element[].class)) {
+			return "l('text/xml')";
+		} else if (type.equals(byte[].class)) {
+			return "'application/octet-stream'";
+		} else {
+			return "'text/plain'";
+		}
+	}
+
+	public static void retrieveSignature(List<TypeDescriptor> params, String[] names,
+			Class<?>[] types) {
+		for (int i = 0; i < names.length; i++) {
+			TypeDescriptor descriptor = params.get(i);
+			names[i] = descriptor.getName();
+			
+			types[i]=determineClassType(descriptor);
+		}
+	}
+
+	private static Class<?> determineClassType(TypeDescriptor descriptor) {
+		String s = descriptor.getType().toLowerCase();
+		Class<?> type;
+		if (descriptor instanceof ArrayTypeDescriptor) {
+			if (((ArrayTypeDescriptor) descriptor).getElementType() instanceof BaseTypeDescriptor) {
+				type = String[].class;
+			} else if (((ArrayTypeDescriptor) descriptor).isUnbounded()) {
+				type = org.w3c.dom.Element[].class;
+			}
+			else {
+				type = org.w3c.dom.Element.class;
+			}
+		} else {
+			if ("string".equals(s)) {
+				type = String.class;
+			} else if ("double".equals(s) || "decimal".equals(s)) {
+				type = Double.TYPE;
+			} else if ("float".equals(s)) {
+				type = Float.TYPE;
+			} else if ("int".equals(s) || "integer".equals(s)) {
+				type = Integer.TYPE;
+			} else if ("boolean".equals(s)) {
+				type = Boolean.TYPE;
+			} else if ("base64binary".equals(s)) {
+				type = byte[].class;
+			} else {
+				//treat any other basetype as a String.
+				if (descriptor instanceof BaseTypeDescriptor) {
+					type=String.class;
+				}
+				else {
+					type = org.w3c.dom.Element.class;
+				}
+			}
+		}
+		return type;
+	}
+
+	/**
+	 * Determines whether the descriptor describes a data structure that is
+	 * cyclic, i.e. contains inner elements that contain references to outer
+	 * elements, leading to a state of infinate recursion.
+	 * 
+	 * @param descriptor
+	 * @return
+	 */
+	public static boolean isCyclic(TypeDescriptor descriptor) {
+		boolean result = false;
+		if (!(descriptor instanceof BaseTypeDescriptor)) {
+			if (descriptor instanceof ComplexTypeDescriptor) {
+				result = testForCyclic((ComplexTypeDescriptor) descriptor,
+						new ArrayList<String>());
+			} else {
+				result = testForCyclic((ArrayTypeDescriptor) descriptor,
+						new ArrayList<String>());
+			}
+		}
+		return result;
+	}
+
+	@SuppressWarnings("unchecked")
+	private static boolean testForCyclic(ComplexTypeDescriptor descriptor,
+			List<String> parents) {
+		boolean result = false;
+		String descKey = descriptor.getQname().toString();
+		if (parents.contains(descKey))
+			result = true;
+		else {
+			parents.add(descKey);
+			List elements = descriptor.getElements();
+			for (Iterator iterator = elements.iterator(); iterator.hasNext();) {
+				TypeDescriptor elementDescriptor = (TypeDescriptor) iterator
+						.next();
+				if (elementDescriptor instanceof ComplexTypeDescriptor) {
+					result = testForCyclic(
+							(ComplexTypeDescriptor) elementDescriptor, parents);
+				} else if (elementDescriptor instanceof ArrayTypeDescriptor) {
+					result = testForCyclic(
+							(ArrayTypeDescriptor) elementDescriptor, parents);
+				}
+
+				if (result)
+					break;
+			}
+
+			parents.remove(descKey);
+		}
+		return result;
+	}
+
+	private static boolean testForCyclic(ArrayTypeDescriptor descriptor,
+			List<String> parents) {
+		boolean result = false;
+		String descKey = descriptor.getQname().toString();
+		if (parents.contains(descKey))
+			result = true;
+		else {
+			parents.add(descKey);
+
+			TypeDescriptor elementDescriptor = descriptor
+					.getElementType();
+			if (elementDescriptor instanceof ComplexTypeDescriptor) {
+				result = testForCyclic(
+						(ComplexTypeDescriptor) elementDescriptor, parents);
+			} else if (elementDescriptor instanceof ArrayTypeDescriptor) {
+				result = testForCyclic((ArrayTypeDescriptor) elementDescriptor,
+						parents);
+			}
+
+			parents.remove(descKey);
+		}
+		return result;
+	}
+
+	public void setNillable(boolean nillable) {
+		this.nillable  = nillable;
+		
+		
+	}
+
+	public String getDocumentation() {
+		return documentation;
+	}
+
+	public void setDocumentation(String documentation) {
+		this.documentation = documentation;
+	}
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/UnknownOperationException.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/UnknownOperationException.java
new file mode 100644
index 0000000..049a7a1
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/UnknownOperationException.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.parser;
+
+/**
+ * Exception thrown when a given service operation name cannot be found for that
+ * WSDL
+ * 
+ * @author Stuart Owen
+ * 
+ */
+
+public class UnknownOperationException extends Exception {
+	private static final long serialVersionUID = -9119188266154359132L;
+
+	UnknownOperationException(String val) {
+		super(val);
+	}
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/WSDLParser.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/WSDLParser.java
new file mode 100644
index 0000000..b5b028c
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/WSDLParser.java
@@ -0,0 +1,936 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.parser;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+import javax.wsdl.Binding;
+import javax.wsdl.BindingOperation;
+import javax.wsdl.Definition;
+import javax.wsdl.Import;
+import javax.wsdl.Operation;
+import javax.wsdl.Part;
+import javax.wsdl.Port;
+import javax.wsdl.PortType;
+import javax.wsdl.Service;
+import javax.wsdl.WSDLException;
+import javax.wsdl.extensions.ExtensibilityElement;
+import javax.wsdl.extensions.soap.SOAPAddress;
+import javax.wsdl.extensions.soap.SOAPBinding;
+import javax.wsdl.extensions.soap.SOAPBody;
+import javax.xml.namespace.QName;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.axis.wsdl.gen.NoopFactory;
+import org.apache.axis.wsdl.symbolTable.BindingEntry;
+import org.apache.axis.wsdl.symbolTable.CollectionElement;
+import org.apache.axis.wsdl.symbolTable.CollectionType;
+import org.apache.axis.wsdl.symbolTable.ContainedAttribute;
+import org.apache.axis.wsdl.symbolTable.DefinedElement;
+import org.apache.axis.wsdl.symbolTable.DefinedType;
+import org.apache.axis.wsdl.symbolTable.ElementDecl;
+import org.apache.axis.wsdl.symbolTable.Parameter;
+import org.apache.axis.wsdl.symbolTable.Parameters;
+import org.apache.axis.wsdl.symbolTable.SymbolTable;
+import org.apache.axis.wsdl.symbolTable.TypeEntry;
+import org.apache.log4j.Logger; //import org.apache.wsif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAxis;
+//import org.apache.wsif.util.WSIFPluggableProviders;
+import org.xml.sax.SAXException;
+
+import com.ibm.wsdl.extensions.soap.SOAPBindingImpl;
+import com.ibm.wsdl.extensions.soap.SOAPOperationImpl;
+import org.apache.axis.wsdl.symbolTable.SchemaUtils;
+
+/**
+ * A Parser for processing WSDL files to determine information about available
+ * services and the required types needed to invoke that particular service.
+ * Handles Complex Types and wsdl imports.
+ * 
+ * @author Stuart Owen
+ * @author Stian Soiland-Reyes
+ * @author Asger Askov-Bleking
+ * 
+ */
+
+@SuppressWarnings("unchecked")
+public class WSDLParser {
+
+	private static final String GET_SERVICE_SECURITY_METADATA_REQUEST = "GetServiceSecurityMetadataRequest";
+
+	private static final String GET_SERVICE_SECURITY_METADATA = "getServiceSecurityMetadata";
+
+	private static final String SET_TERMINATION_TIME = "SetTerminationTime";
+
+	private static final String GET_RESOURCE_PROPERTY = "GetResourceProperty";
+
+	private static final String DESTROY = "Destroy";
+
+	private static final String SERVICE_SECURITY_URI = "http://security.introduce.cagrid.nci.nih.gov/ServiceSecurity/";
+
+	private static final String RESOURCE_LIFETIME_URI = "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/";
+
+	private static final String RESOURCE_PROPERTIES_URI = "http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/";
+
+	private static Logger logger = Logger.getLogger(WSDLParser.class);
+
+	private String wsdlLocation;
+
+	/**
+	 * Cache for SymbolTable to remove the need for reprocessing each time.
+	 */
+	private static Map<String, SymbolTable> symbolTableMap = Collections
+			.synchronizedMap(new HashMap<String, SymbolTable>());
+
+	/**
+	 * Cache for operations, to remove the need for reprocessing each time.
+	 */
+	private static Map<String, List<Operation>> operationMap = Collections
+			.synchronizedMap(new HashMap<String, List<Operation>>());
+
+	private static Map<String, Map<String, Binding>> bindingMap = Collections
+			.synchronizedMap(new HashMap<String, Map<String, Binding>>());
+
+	private static Map<String, String> styleMap = Collections
+			.synchronizedMap(new HashMap<String, String>());
+
+	private static Map<String, Map<String, PortType>> portTypeMap = Collections
+			.synchronizedMap(new HashMap<String, Map<String, PortType>>());
+
+	private Map<String, ComplexTypeDescriptor> cachedComplexTypes = Collections
+			.synchronizedMap(new HashMap<String, ComplexTypeDescriptor>());
+
+	private Map<String, BindingOperation> bindingOperations = Collections
+			.synchronizedMap(new HashMap<String, BindingOperation>());
+
+	private boolean isWsrfService;
+
+	public boolean isWsrfService() {
+		return isWsrfService;
+	}
+
+	/**
+	 * Constructor which takes the location of the base wsdl file, and begins to
+	 * process it
+	 * 
+	 * @param wsdlLocation
+	 *            - the location of the wsdl file
+	 * @throws ParserConfigurationException
+	 * @throws WSDLException
+	 * @throws IOException
+	 * @throws SAXException
+	 */
+	public WSDLParser(String wsdlLocation) throws ParserConfigurationException,
+			WSDLException, IOException, SAXException {
+
+		this.wsdlLocation = wsdlLocation;
+
+		// WSIFPluggableProviders.overrideDefaultProvider(
+		// "http://schemas.xmlsoap.org/wsdl/soap/",
+		// new WSIFDynamicProvider_ApacheAxis());
+
+		if (!symbolTableMap.containsKey(wsdlLocation)) {
+			SymbolTable symbolTable = new SymbolTable(new NoopFactory()
+					.getBaseTypeMapping(), true, false, false);
+
+			// Avoid printouts like
+			// {http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl}GetMultipleResourcePropertiesResponse
+			// already exists
+			symbolTable.setQuiet(true);
+
+			symbolTable.populate(wsdlLocation);
+			symbolTableMap.put(wsdlLocation, symbolTable);
+			operationMap.put(wsdlLocation, determineOperations());
+		}
+		checkWSRF();
+	}
+
+	/**
+	 * flushes all the caches of entries associated with provided wsdl location
+	 * 
+	 * @param wsdlLocation
+	 */
+	public synchronized static void flushCache(String wsdlLocation) {
+		operationMap.remove(wsdlLocation);
+		bindingMap.remove(wsdlLocation);
+		styleMap.remove(wsdlLocation);
+		portTypeMap.remove(wsdlLocation);
+		symbolTableMap.remove(wsdlLocation);
+	}
+
+	/**
+	 * @return a list of WSDLOperations for all operations for this service,
+	 */
+	public List<Operation> getOperations() {
+		return operationMap.get(getWSDLLocation());
+	}
+
+	/**
+	 * @return the wsdl location for which this parser was constructed
+	 */
+	public String getWSDLLocation() {
+		return wsdlLocation;
+	}
+
+	/**
+	 * @return the Definition for this service
+	 */
+	public Definition getDefinition() {
+		return getSymbolTable().getDefinition();
+	}
+
+	public List<String> getOperationEndpointLocations(String operationName) {
+		List<String> result = new ArrayList<String>();
+		Collection<Service> services = getDefinition().getServices().values();
+		Binding binding = getBinding(operationName);
+		for (Service service : services) {
+			Collection<Port> ports = service.getPorts().values();
+			for (Port port : ports) {
+				if (port.getBinding().equals(binding)) {
+					for (Object obj : port.getExtensibilityElements()) {
+						if (obj instanceof SOAPAddress) {
+							SOAPAddress address = (SOAPAddress) obj;
+							String endpoint = address.getLocationURI();
+							result.add(endpoint);
+						}
+					}
+				}
+			}
+		}
+		return result;
+	}
+
+	private Binding getBinding(String operationName) {
+		Binding result = null;
+		Map<String, Binding> bindingToOpMap = bindingMap.get(getWSDLLocation());
+		if (bindingToOpMap != null) {
+			result = bindingToOpMap.get(operationName);
+		}
+		return result;
+	}
+
+	/**
+	 * 
+	 * @return the style, i.e. document or rpc
+	 */
+	public String getStyle() {
+		return styleMap.get(getWSDLLocation());
+	}
+
+	/**
+	 * Provides the PortType for a given operation.
+	 * 
+	 * @param operationName
+	 *            the name of the operation the PortType is required for.
+	 * @return the PortType
+	 */
+	public PortType getPortType(String operationName) {
+		PortType result = null;
+		Map<String, PortType> portToOpMap = portTypeMap.get(getWSDLLocation());
+		if (portToOpMap != null) {
+			result = portToOpMap.get(operationName);
+		}
+		return result;
+	}
+
+	/**
+	 * Returns a List of the TypeDescriptors representing the parameters for the
+	 * inputs to the service
+	 * 
+	 * @param operationName
+	 * @return List of TypeDescriptor
+	 * @throws UnknownOperationException
+	 *             if no operation matches the name
+	 * @throws IOException
+	 * 
+	 */
+	public List<TypeDescriptor> getOperationInputParameters(String operationName)
+			throws UnknownOperationException, IOException {
+		Operation operation = getOperation(operationName);
+		List<TypeDescriptor> result = new ArrayList<TypeDescriptor>();
+		if (operation == null) {
+			throw new UnknownOperationException("operation called "
+					+ operationName + " does not exist for this wsdl");
+		}
+
+		Parameters parameters = getSymbolTable().getOperationParameters(
+				operation, "", new BindingEntry(getBinding(operationName)));
+
+		for (Iterator iterator = parameters.list.iterator(); iterator.hasNext();) {
+			Parameter param = (Parameter) iterator.next();
+			if (param.getMode() == Parameter.IN) {
+				TypeDescriptor typeDescriptor = processParameter(param);
+				if (typeDescriptor instanceof ComplexTypeDescriptor
+						&& getStyle().equals("document")) {
+					// for document based, if operation requires no parameters
+					// the param still exists (representing the operation) but
+					// with empty inner elements
+					if (((ComplexTypeDescriptor) typeDescriptor).getElements()
+							.size() > 0) {
+						result.add(typeDescriptor);
+					}
+				} else {
+					result.add(typeDescriptor);
+				}
+			} else if (param.getMode() == Parameter.INOUT) {
+				result.add(processParameter(param));
+			}
+
+		}
+
+		cachedComplexTypes.clear();
+		return result;
+	}
+
+	/**
+	 * Returns a List of the TypeDescriptors representing the parameters for the
+	 * outputs of the service
+	 * 
+	 * @param operationName
+	 * @return List of TypeDescriptor
+	 * @throws UnknownOperationException
+	 *             if no operation matches the name
+	 * @throws IOException
+	 */
+	public List<TypeDescriptor> getOperationOutputParameters(
+			String operationName) throws UnknownOperationException, IOException {
+		Operation operation = getOperation(operationName);
+		List<TypeDescriptor> result = new ArrayList<TypeDescriptor>();
+		if (operation == null) {
+			throw new UnknownOperationException("operation called "
+					+ operationName + " does not exist for this wsdl");
+		}
+
+		Parameters parameters = getSymbolTable().getOperationParameters(
+				operation, "", new BindingEntry(getBinding(operationName)));
+
+		for (Iterator iterator = parameters.list.iterator(); iterator.hasNext();) {
+			Parameter param = (Parameter) iterator.next();
+			if (param.getMode() == Parameter.OUT)
+				result.add(processParameter(param));
+			else if (param.getMode() == Parameter.INOUT) {
+				result.add(processParameter(param));
+			}
+
+		}
+		if (parameters.returnParam != null) {
+			result.add(processParameter(parameters.returnParam));
+		}
+
+		cachedComplexTypes.clear();
+		return result;
+	}
+
+	/**
+	 * returns the namespace uri for the given operation name, throws
+	 * UnknownOperationException if the operationName is not matched to one
+	 * described by the WSDL.
+	 * <p>
+	 * Note that if you need the namespace for constructing the fully qualified
+	 * element name of the operation, you might want to use
+	 * {@link #getOperationQname(String)} instead.
+	 * 
+	 * @see #getOperationQname(String)
+	 * @param operationName
+	 * @return
+	 * @throws UnknownOperationException
+	 */
+	public String getOperationNamespaceURI(String operationName)
+			throws UnknownOperationException {
+
+		String result = null;
+		if (getStyle().equals("document")) {
+			try {
+				// this lovely line of code gets the correct namespace ....
+				result = ((Part) getBindingOperation(operationName)
+						.getOperation().getInput().getMessage()
+						.getOrderedParts(null).get(0)).getElementName()
+						.getNamespaceURI();
+			} catch (Exception e) {
+				// .... but this gets a good approximation if the above fails
+				result = getDefinition().getTargetNamespace();
+			}
+		} else {
+			BindingOperation binding = getBindingOperation(operationName);
+			List extElements = binding.getBindingInput()
+					.getExtensibilityElements();
+			if (extElements != null && extElements.size() > 0) {
+				SOAPBody body = (SOAPBody) extElements.get(0);
+				result = body.getNamespaceURI();
+			} else {
+				extElements = binding.getBindingOutput()
+						.getExtensibilityElements();
+				if (extElements != null && extElements.size() > 0) {
+					SOAPBody body = (SOAPBody) extElements.get(0);
+					result = body.getNamespaceURI();
+				}
+			}
+
+			if (result == null) {
+				// as a fall back, this almost always gives the right namespace
+				result = getDefinition().getTargetNamespace();
+			}
+		}
+
+		return result;
+	}
+
+	public QName getOperationQname(String operationName)
+			throws UnknownOperationException {
+		if (getStyle().equals("document")) {
+			try {
+				// Get the QName of the first element of the input message
+				return ((Part) getBindingOperation(operationName)
+						.getOperation().getInput().getMessage()
+						.getOrderedParts(null).get(0)).getElementName();
+			} catch (RuntimeException e) {
+				logger.warn("Could not find qname of message for operation "
+						+ operationName, e);
+				String ns = getDefinition().getTargetNamespace();
+				return new QName(ns, operationName);
+			}
+		} else {
+			String ns = getOperationNamespaceURI(operationName);
+			return new QName(ns, operationName);
+		}
+	}
+
+	/**
+	 * Returns either literal or encoded, describing the 'use' for this
+	 * operation
+	 * 
+	 * @param operationName
+	 * @return
+	 * @throws UnknownOperationException
+	 */
+	public String getUse(String operationName) throws UnknownOperationException {
+		String result = null;
+
+		BindingOperation binding = getBindingOperation(operationName);
+		List extElements = binding.getBindingInput().getExtensibilityElements();
+		if (extElements != null && extElements.size() > 0) {
+			SOAPBody body = (SOAPBody) extElements.get(0);
+			result = body.getUse();
+		} else {
+			extElements = binding.getBindingOutput().getExtensibilityElements();
+			if (extElements != null && extElements.size() > 0) {
+				SOAPBody body = (SOAPBody) extElements.get(0);
+				result = body.getUse();
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	 * Returns the actionURI for the given operation
+	 * 
+	 * @param operationName
+	 * @return
+	 * @throws UnknownOperationException
+	 */
+	public String getSOAPActionURI(String operationName)
+			throws UnknownOperationException {
+		String result = null;
+		BindingOperation op = getBindingOperation(operationName);
+		List elements = op.getExtensibilityElements();
+		for (Iterator elIterator = elements.iterator(); elIterator.hasNext();) {
+			SOAPOperationImpl extension = (SOAPOperationImpl) elIterator.next();
+			result = extension.getSoapActionURI();
+			break;
+		}
+		return result;
+	}
+
+	/**
+	 * Provides the documentation for the given operation name, or returns an
+	 * empty string if no documentation is provided by the WSDL.
+	 * 
+	 * @param operationName
+	 * @return
+	 * @throws UnknownOperationException
+	 */
+	public String getOperationDocumentation(String operationName)
+			throws UnknownOperationException {
+		String result = "";
+
+		Operation operation = getOperation(operationName);
+		if (operation.getDocumentationElement() != null) {
+			if (operation.getDocumentationElement().getFirstChild() != null) {
+				result = operation.getDocumentationElement().getFirstChild()
+						.getNodeValue();
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	 * Returns a WSDLOperation descriptor for an operation that matches the
+	 * operationName.
+	 * 
+	 * @param operationName
+	 * @return a matching WSDLOperation descriptor
+	 * @throws UnknownOperationException
+	 *             if no operation matches the name
+	 */
+	public Operation getOperation(String operationName)
+			throws UnknownOperationException {
+		Operation result = null;
+
+		for (Iterator iterator = getOperations().iterator(); iterator.hasNext();) {
+			Operation op = (Operation) iterator.next();
+			if (op.getName().equals(operationName)) {
+				result = op;
+				break;
+			}
+		}
+		if (result == null)
+			throw new UnknownOperationException("No operation named: "
+					+ operationName + " exists");
+		return result;
+	}
+
+	/**
+	 * SOAP actions/operations that if present indicates a WSRF service.
+	 * <p>
+	 * Used by {@link #checkWSRF()}
+	 * 
+	 * @return A {@link Map} mapping SOAP operation name to SOAP action URI.
+	 */
+	protected Map<String, String> getWSRFPredictorOperations() {
+		Map<String, String> operations = new HashMap<String, String>();
+
+		operations.put(GET_RESOURCE_PROPERTY, RESOURCE_PROPERTIES_URI
+				+ GET_RESOURCE_PROPERTY);
+		
+		operations.put(DESTROY, RESOURCE_LIFETIME_URI + DESTROY);
+		
+		operations.put(SET_TERMINATION_TIME, RESOURCE_LIFETIME_URI
+				+ SET_TERMINATION_TIME);
+		
+		operations.put(GET_SERVICE_SECURITY_METADATA, SERVICE_SECURITY_URI
+				+ GET_SERVICE_SECURITY_METADATA_REQUEST);
+
+		return operations;
+	}
+
+	/**
+	 * Check if this is a WSRF-resource property supporting binding.
+	 * <p>
+	 * The service is determined to be WSRF-supporting if the WSDL contains at
+	 * least one of the operations specified by
+	 * {@link #getWSRFPredictorOperations()}.
+	 * 
+	 */
+	protected void checkWSRF() {
+		isWsrfService = false;
+		for (Entry<String, String> resourceEntry : getWSRFPredictorOperations()
+				.entrySet()) {
+			String actionURI;
+			try {
+				actionURI = getSOAPActionURI(resourceEntry.getKey());
+			} catch (UnknownOperationException e) {
+				continue;
+			}
+			isWsrfService = resourceEntry.getValue().equals(actionURI);
+			if (isWsrfService) {
+				// Just need to match one of the predictors
+				break;
+			}
+		}
+	}
+
+	private SymbolTable getSymbolTable() {
+		return symbolTableMap.get(getWSDLLocation());
+	}
+
+	private List<Operation> determineOperations() {
+		List<Operation> result = new ArrayList<Operation>();
+
+		Map<String, PortType> portToOperationMap = portTypeToOperationMap();
+		Map<String, Binding> bindingToOperationMap = bindingToOperationMap();
+
+		Map bindings = getSymbolTable().getDefinition().getBindings();
+		for (Iterator iterator = bindings.values().iterator(); iterator
+				.hasNext();) {
+			Binding binding = (Binding) iterator.next();
+			List extensibilityElementList = binding.getExtensibilityElements();
+			for (Iterator k = extensibilityElementList.iterator(); k.hasNext();) {
+				ExtensibilityElement ee = (ExtensibilityElement) k.next();
+				if (ee instanceof SOAPBindingImpl) {
+					SOAPBinding soapBinding = (SOAPBinding) ee;
+					PortType portType = binding.getPortType();
+
+					setStyleForBinding(soapBinding);
+
+					for (Iterator opIterator = portType.getOperations()
+							.iterator(); opIterator.hasNext();) {
+						Operation op = (Operation) opIterator.next();
+						result.add(op);
+						portToOperationMap.put(op.getName(), portType);
+						bindingToOperationMap.put(op.getName(), binding);
+					}
+				}
+			}
+		}
+
+		Map imports = getSymbolTable().getDefinition().getImports();
+		if (imports != null && imports.size() > 0) {
+			result.addAll(processImports(imports));
+		}
+
+		return result;
+	}
+
+	private void setStyleForBinding(SOAPBinding soapBinding) {
+		String style = soapBinding.getStyle();
+		if (style == null)
+			style = "document"; // soap spec specifies to default to document if
+								// missing.
+		styleMap.put(getWSDLLocation(), style);
+	}
+
+	private Map<String, PortType> portTypeToOperationMap() {
+		Map<String, PortType> portToOperationMap = portTypeMap
+				.get(getWSDLLocation());
+		if (portToOperationMap == null) {
+			portToOperationMap = new HashMap<String, PortType>();
+			portTypeMap.put(getWSDLLocation(), portToOperationMap);
+		}
+		return portToOperationMap;
+	}
+
+	private List<Operation> processImports(Map imports) {
+		List<Operation> result = new ArrayList<Operation>();
+
+		Map<String, PortType> portToOperationMap = portTypeToOperationMap();
+		Map<String, Binding> bindingToOperationMap = bindingToOperationMap();
+
+		for (Iterator iterator = imports.values().iterator(); iterator
+				.hasNext();) {
+			List list = (List) iterator.next();
+			for (Iterator importIterator = list.iterator(); importIterator
+					.hasNext();) {
+				Import imp = (Import) importIterator.next();
+				Map bindings = imp.getDefinition().getBindings();
+				for (Iterator bindingsIterator = bindings.values().iterator(); bindingsIterator
+						.hasNext();) {
+					Binding binding = (Binding) bindingsIterator.next();
+					List extensibilityElementList = binding
+							.getExtensibilityElements();
+					for (Iterator k = extensibilityElementList.iterator(); k
+							.hasNext();) {
+						ExtensibilityElement ee = (ExtensibilityElement) k
+								.next();
+						if (ee instanceof SOAPBindingImpl) {
+							SOAPBinding soapBinding = (SOAPBinding) ee;
+							PortType portType = binding.getPortType();
+
+							setStyleForBinding(soapBinding);
+
+							for (Iterator opIterator = portType.getOperations()
+									.iterator(); opIterator.hasNext();) {
+								Operation op = (Operation) opIterator.next();
+								result.add(op);
+								portToOperationMap.put(op.getName(), portType);
+								bindingToOperationMap
+										.put(op.getName(), binding);
+							}
+						}
+					}
+				}
+
+			}
+		}
+
+		return result;
+	}
+
+	private Map<String, Binding> bindingToOperationMap() {
+		Map<String, Binding> bindingToOperationMap = bindingMap
+				.get(getWSDLLocation());
+		if (bindingToOperationMap == null) {
+			bindingToOperationMap = new HashMap<String, Binding>();
+			bindingMap.put(getWSDLLocation(), bindingToOperationMap);
+		}
+		return bindingToOperationMap;
+	}
+
+	private BindingOperation getBindingOperation(String operationName)
+			throws UnknownOperationException {
+		BindingOperation result = bindingOperations.get(operationName);
+		if (result == null) {
+			Binding binding = getBinding(operationName);
+			if (binding != null) {
+				List bindings = binding.getBindingOperations();
+				for (Iterator iterator = bindings.iterator(); iterator
+						.hasNext();) {
+					BindingOperation bindingOperation = (BindingOperation) iterator
+							.next();
+					if (bindingOperation.getOperation().getName().equals(
+							operationName)) {
+						result = bindingOperation;
+						bindingOperations.put(operationName, result);
+						break;
+					}
+				}
+			}
+		}
+		if (result == null)
+			throw new UnknownOperationException(
+					"Can't find binding operation for '" + operationName + "'");
+		return result;
+	}
+
+	private TypeDescriptor processParameter(Parameter param) {
+		TypeDescriptor typeDesc = constructType(param.getType());
+
+		typeDesc.setName(param.getName());
+
+		return typeDesc;
+	}
+
+	private TypeDescriptor constructType(TypeEntry type) {
+		TypeDescriptor result = null;
+		if (type instanceof CollectionType || type instanceof CollectionElement) {
+			result = constructArrayType(type);
+			result.setType(type.getRefType().getQName().getLocalPart());
+		} else if (type instanceof DefinedType
+				|| type instanceof DefinedElement) {
+			if (type.getComponentType() == null) {
+				if (type instanceof DefinedElement) {
+					if (type.isBaseType()) {
+						result = constructBaseType((DefinedElement) type);
+					} else {
+						result = constructComplexType((DefinedElement) type);
+					}
+				} else {
+					if (type.isSimpleType()) {
+						result = constructForSimpleType(type);
+					} else {
+						result = constructComplexType((DefinedType) type);
+					}
+				}
+			} else {
+				result = constructArrayType(type);
+			}
+		} else {
+			if (type.getQName().getLocalPart().equals("Map")) {
+				// axis treats Map as a base type, Taverna doesn't.
+				result = constructMapType(type);
+			} else {
+				result = constructBaseType(type);
+			}
+		}
+
+		return result;
+	}
+
+	private TypeDescriptor constructForSimpleType(TypeEntry type) {
+		Set nested = type.getNestedTypes(getSymbolTable(), true);
+
+		TypeDescriptor result = constructType((TypeEntry) nested.toArray()[0]);
+		result.setQname(type.getQName());
+		result.setName(type.getQName().getLocalPart());
+		return result;
+	}
+
+	private ArrayTypeDescriptor constructMapType(TypeEntry type) {
+		ArrayTypeDescriptor result = new ArrayTypeDescriptor();
+		TypeEntry mapItem = getSymbolTable().getType(type.getItemQName());
+		if (mapItem == null) {
+			mapItem = getSymbolTable().getType(
+					new QName(type.getQName().getNamespaceURI(), "mapItem"));
+		}
+
+		result.setElementType(constructType(mapItem));
+
+		result.setQname(type.getQName());
+		result.setType(type.getQName().getLocalPart());
+
+		return result;
+	}
+
+	private ComplexTypeDescriptor constructComplexType(DefinedElement type) {
+
+		ComplexTypeDescriptor result = new ComplexTypeDescriptor();
+
+		if (cachedComplexTypes.get(type.getQName().toString()) != null) {
+			result = copyFromCache(type.getQName().toString());
+		} else {
+			// caching the type is not really to improve performance, but is
+			// to handle types that contain elements that reference
+			// itself or another parent. Without the caching, this could lead to
+			// infinate
+			// recursion.
+			cachedComplexTypes.put(type.getQName().toString(), result);
+
+			result.setType(type.getQName().getLocalPart());
+			result.setQname(type.getQName());
+			
+			DefinedType refType = (DefinedType) type.getRefType();
+
+			do {
+				List containedElements = refType.getContainedElements();
+				if (containedElements != null) {
+					result.getElements().addAll(
+							constructElements(containedElements));
+				}
+				List containedAttributes = refType.getContainedAttributes();
+				if (containedAttributes != null) {
+					result.getAttributes().addAll(
+							constructAttributes(containedAttributes));
+				}
+			} while ((refType = (DefinedType) refType
+					.getComplexTypeExtensionBase(getSymbolTable())) != null);
+
+		}
+
+		return result;
+	}
+
+	private ComplexTypeDescriptor constructComplexType(DefinedType type) {
+		ComplexTypeDescriptor result = new ComplexTypeDescriptor();
+
+		if (cachedComplexTypes.get(type.getQName().toString()) != null) {
+			result = copyFromCache(type.getQName().toString());
+		} else {
+			TypeEntry baseTypeEntry = type
+					.getComplexTypeExtensionBase(getSymbolTable());
+			if (baseTypeEntry != null) {
+				ComplexTypeDescriptor baseTypeDescriptor = constructComplexType((DefinedType) baseTypeEntry);
+				result.getElements().addAll(baseTypeDescriptor.getElements());
+				result.getAttributes().addAll(
+						baseTypeDescriptor.getAttributes());
+			}
+			result.setType(type.getQName().getLocalPart());
+			cachedComplexTypes.put(type.getQName().toString(), result);
+			List containedElements = type.getContainedElements();
+			if (containedElements != null) {
+				result.getElements().addAll(
+						constructElements(containedElements));
+			}
+			List containedAttributes = type.getContainedAttributes();
+			if (containedAttributes != null) {
+				result.getAttributes().addAll(
+						constructAttributes(containedAttributes));				
+			}
+			result.setQname(type.getQName());
+		}
+		return result;
+	}
+
+	private List constructElements(List elements) {
+		List result = new ArrayList();
+
+		for (Iterator iterator = elements.iterator(); iterator.hasNext();) {
+			ElementDecl el = (ElementDecl) iterator.next();
+			TypeDescriptor elType = constructType(el.getType());
+			elType.setOptional(el.getOptional() || el.getMinOccursIs0());
+			elType.setNillable(el.getNillable());
+			elType.setUnbounded(el.getMaxOccursIsUnbounded());
+			elType.setName(el.getQName().getLocalPart());
+			elType.setQname(el.getQName());
+			if (el.getDocumentation() != null && !el.getDocumentation().isEmpty()) {
+               elType.setDocumentation(el.getDocumentation());
+           }
+
+			result.add(elType);
+		}
+
+		return result;
+	}
+
+	private List constructAttributes(List elements) {
+		List result = new ArrayList();
+
+		for (Iterator iterator = elements.iterator(); iterator.hasNext();) {
+			ContainedAttribute attribute = (ContainedAttribute) iterator.next();
+			AttributeTypeDescriptor attributeType = new AttributeTypeDescriptor();
+			attributeType.setType(attribute.getQName().getLocalPart());
+			attributeType.setOptional(attribute.getOptional());
+			attributeType.setName(attribute.getQName().getLocalPart());
+			attributeType.setQname(attribute.getQName());
+			result.add(attributeType);
+		}
+
+		return result;
+	}
+
+	private ArrayTypeDescriptor constructArrayType(TypeEntry type) {
+		ArrayTypeDescriptor result = new ArrayTypeDescriptor();
+		result.setElementType(constructType(type.getRefType()));
+		result.setType(type.getQName().getLocalPart());
+		result.setQname(type.getQName());
+
+        //this checks for 2 cases to determine for wrapped -
+        // first whether the axis SchemaUtils identifies it as being wrapped by being defined using the xsd:sequence compositor and containing only elements declarations. (see http://cmedia.glos.ac.uk/software/axis/docs/apiDocs/org/apache/axis/wsdl/symbolTable/SchemaUtils.html#getComplexElementRestrictionBase(org.w3c.dom.Node,%20org.apache.axis.wsdl.symbolTable.SymbolTable)
+        // the second case, for which isWrapped will always return false, is for array definitions that restrict the soapenc:Array type.
+        //    - the second case is not WS-I compliant: http://www.ws-i.org/Profiles/BasicProfile-1.1.html
+        //    - but can be treated equivalent to the first case, so also therefore assumed as being wrapped. IBM recommends manuall editing the WSDL to replace the restricted array definition with one defined using xsd:sequence - see http://www.ibm.com/developerworks/lotus/library/domino8-WS-I/
+        boolean wrapped=SchemaUtils.isWrappedType(type.getNode()) || SchemaUtils.getComplexElementRestrictionBase(type.getNode(), getSymbolTable())!=null;
+        
+		result.setWrapped(wrapped);
+        
+		return result;
+	}
+
+	private BaseTypeDescriptor constructBaseType(TypeEntry type) {
+		BaseTypeDescriptor result = new BaseTypeDescriptor();
+		result.setType(type.getQName().getLocalPart());
+		result.setQname(type.getQName());
+		return result;
+	}
+
+	private BaseTypeDescriptor constructBaseType(DefinedElement type) {
+
+		BaseTypeDescriptor result = null;
+		if (type.getRefType() == null) {
+			result = constructBaseType((TypeEntry) type);
+		} else {
+			result = new BaseTypeDescriptor();
+			result.setType(type.getRefType().getQName().getLocalPart());
+			result.setQname(type.getQName());
+		}
+		return result;
+	}
+
+	private ComplexTypeDescriptor copyFromCache(String key) {
+		ComplexTypeDescriptor cached = cachedComplexTypes.get(key);
+		ComplexTypeDescriptor result = new ComplexTypeDescriptor();
+		result.setQname(cached.getQname());
+		result.setElements(cached.getElements());
+		result.setType(cached.getType());
+		result.setDocumentation(cached.getDocumentation());
+
+		return result;
+	}
+
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/package.html b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/package.html
new file mode 100644
index 0000000..8fc2638
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/parser/package.html
@@ -0,0 +1,5 @@
+<body>
+Contains classes required to parse a WSDL to discover and describe the operations and their input and output data structures.<br>
+These classes are derived heavily from the original parsing classes from the Taverna 1 WSDLBasedProcessor and have been refactored<br>
+to remove references to to Taverna 1 
+</body>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/AbstractBodyBuilder.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/AbstractBodyBuilder.java
new file mode 100644
index 0000000..445e158
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/AbstractBodyBuilder.java
@@ -0,0 +1,362 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.wsdl.WSDLException;
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.soap.SOAPException;
+
+import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
+import net.sf.taverna.wsdl.parser.BaseTypeDescriptor;
+import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.parser.UnknownOperationException;
+import net.sf.taverna.wsdl.parser.WSDLParser;
+
+import org.apache.axis.encoding.Base64;
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.log4j.Logger;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+
+@SuppressWarnings("unchecked")
+public abstract class AbstractBodyBuilder implements BodyBuilder {
+	
+	private static Logger logger = Logger.getLogger(AbstractBodyBuilder.class);
+
+	private String style;
+	private WSDLParser parser;
+	private String operationName;
+
+	protected enum Style {
+		DOCUMENT, RPC
+	};
+
+	protected enum Use {
+		LITERAL, ENCODED
+	};
+
+	protected Map<String, String> namespaceMappings;
+	protected List<TypeDescriptor> inputDescriptors;
+
+	public AbstractBodyBuilder(String style, WSDLParser parser,
+			String operationName, List<TypeDescriptor> inputDescriptors) {
+		this.style = style;
+		this.parser = parser;
+		this.operationName = operationName;
+		this.inputDescriptors = inputDescriptors;
+	}
+
+	protected Style getStyle() {
+		Style result = Style.DOCUMENT;
+		if (style.equalsIgnoreCase("rpc")) {
+			result = Style.RPC;
+		} else if (style.equalsIgnoreCase("document")) {
+			result = Style.DOCUMENT;
+		}
+		return result;
+	}
+
+	protected abstract Use getUse();
+
+	/**
+	 * 
+	 * @return the namespace for the operation
+	 */
+	private String getOperationNamespace() throws UnknownOperationException {
+		return parser.getOperationNamespaceURI(operationName);
+	}
+	
+	private QName getOperationQname() throws UnknownOperationException {
+		return parser.getOperationQname(operationName);	
+	}
+
+	public SOAPBodyElement build(Map inputMap) throws WSDLException,
+			ParserConfigurationException, SOAPException, IOException,
+			SAXException, UnknownOperationException {
+
+		List inputs = parser.getOperationInputParameters(operationName);
+
+		namespaceMappings = generateNamespaceMappings(inputs);
+
+		QName operationQname = getOperationQname();
+		
+		SOAPBodyElement body = new SOAPBodyElement(operationQname);
+
+		// its important to preserve the order of the inputs!
+		for (Iterator iterator = inputs.iterator(); iterator.hasNext();) {
+			TypeDescriptor descriptor = (TypeDescriptor) iterator.next();
+			String inputName = descriptor.getName();
+			Object dataValue = inputMap.get(inputName);
+
+			body = createBodyElementForData(operationName, namespaceMappings,
+					operationQname.getNamespaceURI(), body, descriptor, inputName, dataValue);
+		}
+
+		return body;
+	}
+
+
+
+	protected SOAPBodyElement createBodyElementForData(String operationName,
+			Map<String, String> namespaceMappings, String operationNamespace,
+			SOAPBodyElement body, TypeDescriptor descriptor, String inputName,
+			Object dataValue) throws ParserConfigurationException,
+			SAXException, IOException, UnknownOperationException, SOAPException {
+		if (dataValue != null) {
+			String mimeType = getMimeTypeForInputName(inputName);
+			String typeName = descriptor.getType();
+
+			Element el = null;
+
+			if (descriptor instanceof ArrayTypeDescriptor) {
+				el = createElementForArrayType(namespaceMappings, inputName,
+						dataValue, descriptor, mimeType, typeName);
+
+			} else {
+				el = createSkeletonElementForSingleItem(namespaceMappings,
+						descriptor, inputName, typeName);
+				populateElementWithObjectData(mimeType, el, dataValue, descriptor);
+			}
+
+			body = addElementToBody(operationNamespace, body, el);
+		}
+		return body;
+	}
+
+	protected abstract SOAPBodyElement addElementToBody(
+			String operationNamespace, SOAPBodyElement body, Element el)
+			throws SOAPException;
+
+	protected abstract Element createSkeletonElementForSingleItem(
+			Map<String, String> namespaceMappings, TypeDescriptor descriptor,
+			String inputName, String typeName);
+
+	/**
+	 * generates an XML DOM Element for an array
+	 * 
+	 * @param namespaceMappings
+	 * @param inputName
+	 * @param dataValue
+	 * @param descriptor
+	 * @param mimeType
+	 * @param typeName
+	 * @return
+	 * @throws ParserConfigurationException
+	 * @throws SAXException
+	 * @throws IOException
+	 */
+	protected abstract Element createElementForArrayType(
+			Map<String, String> namespaceMappings, String inputName,
+			Object dataValue, TypeDescriptor descriptor, String mimeType,
+			String typeName) throws ParserConfigurationException, SAXException,
+			IOException, UnknownOperationException;
+
+	/**
+	 * Populates a DOM XML Element with the contents of a List of dataValues
+	 * 
+	 * @param mimeType -
+	 *            the mime type of the data
+	 * @param element -
+	 *            the Element to be populated
+	 * @param dataValues -
+	 *            the List of Objects containing the data
+	 * @param elementType -
+	 *            the TypeDescriptor for the element being populated
+	 * @throws ParserConfigurationException
+	 * @throws SAXException
+	 * @throws IOException
+	 */
+	protected void populateElementWithList(String mimeType, Element element,
+			List dataValues, TypeDescriptor elementType)
+			throws ParserConfigurationException, SAXException, IOException {
+		for (Iterator dataIterator = dataValues.iterator(); dataIterator
+				.hasNext();) {
+			Object dataItem = dataIterator.next();
+			String tag;
+			if (elementType instanceof BaseTypeDescriptor) {
+				tag = elementType.getType();
+			} else {
+				tag = elementType.getName();
+			}
+
+			Element item = element.getOwnerDocument().createElement(tag);
+			populateElementWithObjectData(mimeType, item, dataItem, elementType);
+			element.appendChild(item);
+		}
+	}
+
+	/**
+	 * Populates a DOM XML Element with dataValue according to its mimetype
+	 * 
+	 * @param mimeType
+	 * @param element
+	 * @param dataValue
+	 * @param descriptor 
+	 * @throws ParserConfigurationException
+	 * @throws SAXException
+	 * @throws IOException
+	 */
+	protected void populateElementWithObjectData(String mimeType,
+			Element element, Object dataValue, TypeDescriptor descriptor)
+			throws ParserConfigurationException, SAXException, IOException {
+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		factory.setNamespaceAware(true);
+		DocumentBuilder builder = factory.newDocumentBuilder();
+
+		if (mimeType.equals("'text/xml'")) {
+			Document doc = builder.parse(new ByteArrayInputStream(dataValue
+					.toString().getBytes()));
+			Element documentElement = doc.getDocumentElement();
+			
+			if (descriptor instanceof ComplexTypeDescriptor) {
+				ComplexTypeDescriptor complexType = (ComplexTypeDescriptor) descriptor;
+				NamedNodeMap attributes = documentElement.getAttributes();
+				if (attributes != null) {
+					for (int i = 0; i < attributes.getLength(); i++) {
+						Node attributeNode = attributes.item(i);
+						if (attributeNode instanceof Attr) {
+							Attr attribute = (Attr) attributeNode;
+							TypeDescriptor typeDescriptor = complexType.attributeForName(attribute.getName());
+							if (typeDescriptor != null) {
+								element.setAttributeNS(typeDescriptor.getNamespaceURI(), typeDescriptor.getName(), attribute.getValue());
+							}
+						}
+					}
+				}
+			}
+			
+			Node child = documentElement.getFirstChild();
+
+			while (child != null) {
+				element.appendChild(element.getOwnerDocument().importNode(
+						child, true));
+				child = child.getNextSibling();
+			}
+		} else if (mimeType.equals("'application/octet-stream'")
+				&& dataValue instanceof byte[]) {
+			String encoded = Base64.encode((byte[]) dataValue);
+			element.appendChild(element.getOwnerDocument().createTextNode(
+					encoded));
+		} else {
+			element.appendChild(element.getOwnerDocument().createTextNode(
+					dataValue.toString()));
+		}
+	}
+
+	/**
+	 * Provides the mime type for a given input
+	 * 
+	 * @param inputName
+	 * @return
+	 */
+	protected String getMimeTypeForInputName(String inputName) {
+		for (TypeDescriptor desc : inputDescriptors) {
+			if (desc.getName().equals(inputName))
+				return desc.getMimeType();
+		}
+		return "";
+	}
+
+	/**
+	 * Generates a map of all the namespaces for the operation and all of the
+	 * types required to call the operation. Namesspace prefixes (the key) start
+	 * with ns1 representing the operation, and continue incrementally for all
+	 * additional namespaces (ns2, ns3 ... etc).
+	 * 
+	 * @return
+	 * @param inputs -
+	 *            List of input TypeDescriptor's
+	 * @throws UnknownOperationException
+	 * @throws IOException
+	 */
+	protected Map<String, String> generateNamespaceMappings(List inputs)
+			throws UnknownOperationException, IOException {
+		Map<String, String> result = new HashMap<String, String>();
+		int nsCount = 2;
+
+		result.put(getOperationNamespace(), "ns1");
+		result.put("http://www.w3.org/2001/XMLSchema", "xsd");
+		result.put("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+
+		for (Iterator iterator = inputs.iterator(); iterator.hasNext();) {
+			TypeDescriptor descriptor = (TypeDescriptor) iterator.next();
+			nsCount = mapNamespace(descriptor, new ArrayList<TypeDescriptor>(),result, nsCount);
+
+		}
+
+		return result;
+	}
+
+	/**
+	 * creates a namespace prefix and adds the namespace to the namespaceMap for
+	 * a TypeDescriptor. Further recursive calls are made if this type contains
+	 * addition inner elements that are not already mapped.
+	 * 
+	 * @param descriptor
+	 * @param namespaceMap
+	 * @param nsCount
+	 * @return
+	 */
+	protected int mapNamespace(TypeDescriptor descriptor, List<TypeDescriptor> visitedDescriptors,
+			Map<String, String> namespaceMap, int nsCount) {
+		if (!visitedDescriptors.contains(descriptor)) {
+			visitedDescriptors.add(descriptor);
+			String namespace = descriptor.getNamespaceURI();
+			if (namespace != null && namespace.length() > 0
+					&& !namespaceMap.containsKey(namespace)) {
+				namespaceMap.put(namespace, "ns" + nsCount);
+				nsCount++;
+			}
+	
+			if (descriptor instanceof ArrayTypeDescriptor) {
+				nsCount = mapNamespace(((ArrayTypeDescriptor) descriptor)
+						.getElementType(),visitedDescriptors, namespaceMap, nsCount);
+			} else if (descriptor instanceof ComplexTypeDescriptor) {
+				List elements = ((ComplexTypeDescriptor) descriptor).getElements();
+				for (Iterator iterator = elements.iterator(); iterator.hasNext();) {
+					nsCount = mapNamespace((TypeDescriptor) iterator.next(),visitedDescriptors,
+							namespaceMap, nsCount);
+				}
+			}
+		}
+		else {
+			logger.error("The descriptor: "+descriptor+" is appears to be part of a cyclic schema. Bailing out of mapping namespace.");
+		}
+
+		return nsCount;
+	}
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/BodyBuilder.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/BodyBuilder.java
new file mode 100644
index 0000000..7e6c8d0
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/BodyBuilder.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import java.io.IOException;
+import java.util.Map;
+
+import javax.wsdl.WSDLException;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.soap.SOAPException;
+
+import net.sf.taverna.wsdl.parser.UnknownOperationException;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.xml.sax.SAXException;
+
+/**
+ * Interface to a class that is responsible for creating the SOAP body elements from the provided inputs
+ * for invoking a SOAP based Web-service.
+ * 
+ * @author Stuart Owen
+ */
+@SuppressWarnings("unchecked")
+public interface BodyBuilder {
+	
+	public SOAPBodyElement build(Map inputMap)
+			throws WSDLException, ParserConfigurationException, SOAPException,
+			IOException, SAXException, UnknownOperationException;
+	
+}
+
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/BodyBuilderFactory.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/BodyBuilderFactory.java
new file mode 100644
index 0000000..c827770
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/BodyBuilderFactory.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import java.util.List;
+
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.parser.UnknownOperationException;
+import net.sf.taverna.wsdl.parser.WSDLParser;
+
+/**
+ * Factory that creates an appropriate BodyBuilder according to the provided WSDLProcessors style and use.
+ * @author Stuart Owen
+ *
+ */
+public class BodyBuilderFactory {
+	
+	private static BodyBuilderFactory instance = new BodyBuilderFactory();
+	
+	public static BodyBuilderFactory instance() {
+		return instance;
+	}
+	
+	public BodyBuilder create(WSDLParser parser, String operationName, List<TypeDescriptor> inputDescriptors) throws UnknownOperationException {
+		String use = parser.getUse(operationName);
+		String style = parser.getStyle();
+		if (use.equals("encoded")) {
+			return new EncodedBodyBuilder(style, parser,operationName, inputDescriptors);
+		}
+		else if (use.equals("literal")) {
+			return new LiteralBodyBuilder(style,parser,operationName, inputDescriptors);
+		}
+		return new LiteralBodyBuilder(style,parser,operationName, inputDescriptors);
+	}
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/CyclicReferenceException.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/CyclicReferenceException.java
new file mode 100644
index 0000000..027e49b
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/CyclicReferenceException.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2003 The University of Manchester 
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.  Authorship
+ * of the modifications may be determined from the ChangeLog placed at
+ * the end of this file.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ *
+ ****************************************************************
+ * Source code information
+ * -----------------------
+ * Filename           $RCSfile: CyclicReferenceException.java,v $
+ * Revision           $Revision: 1.1 $
+ * Release status     $State: Exp $
+ * Last modified on   $Date: 2007/11/28 16:05:45 $
+ *               by   $Author: sowen70 $
+ * Created on 05-May-2006
+ *****************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+/**
+ * Exception thrown when a MultiRef based xml document is found to have cyclic
+ * references when transforming into a flat XML document, therefore meaning the
+ * xml cannot be transformed.
+ * 
+ * @author sowen
+ * 
+ */
+
+public class CyclicReferenceException extends Exception {
+
+	private static final long serialVersionUID = -4051406646273085676L;
+
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/EncodedBodyBuilder.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/EncodedBodyBuilder.java
new file mode 100644
index 0000000..6f332ff
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/EncodedBodyBuilder.java
@@ -0,0 +1,160 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.wsdl.WSDLException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.soap.SOAPException;
+
+import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
+import net.sf.taverna.wsdl.parser.BaseTypeDescriptor;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.parser.UnknownOperationException;
+import net.sf.taverna.wsdl.parser.WSDLParser;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+@SuppressWarnings("unchecked")
+public class EncodedBodyBuilder extends AbstractBodyBuilder {
+	public EncodedBodyBuilder(String style, WSDLParser parser, String operationName, List<TypeDescriptor> inputDescriptors) {
+		super(style, parser,operationName,inputDescriptors);
+	}
+
+	@Override
+	protected Use getUse() {
+		return Use.ENCODED;
+	}
+
+	@Override
+	public SOAPBodyElement build(Map inputMap) throws WSDLException,
+			ParserConfigurationException, SOAPException, IOException,
+			SAXException, UnknownOperationException {
+
+		SOAPBodyElement result = super.build(inputMap);
+		for (Iterator iterator = namespaceMappings.keySet().iterator(); iterator
+				.hasNext();) {
+			String namespaceURI = (String) iterator.next();
+			String ns = namespaceMappings.get(namespaceURI);
+			result.addNamespaceDeclaration(ns, namespaceURI);
+		}
+		result.setAttribute("soapenv:encodingStyle",
+				"http://schemas.xmlsoap.org/soap/encoding/");
+		return result;
+	}
+
+	@Override
+	protected Element createSkeletonElementForSingleItem(
+			Map<String, String> namespaceMappings, TypeDescriptor descriptor,
+			String inputName, String typeName) {
+		Element el = XMLUtils.StringToElement("", inputName, "");
+
+		String ns = namespaceMappings.get(descriptor.getNamespaceURI());
+		if (ns != null) {
+			el.setAttribute("xsi:type", ns + ":" + descriptor.getType());
+		}
+		return el;
+	}
+
+	@Override
+	protected Element createElementForArrayType(
+			Map<String, String> namespaceMappings, String inputName,
+			Object dataValue, TypeDescriptor descriptor, String mimeType,
+			String typeName) throws ParserConfigurationException, SAXException,
+			IOException, UnknownOperationException {
+		DocumentBuilderFactory builderFactory = DocumentBuilderFactory
+				.newInstance();
+		builderFactory.setNamespaceAware(true);
+		DocumentBuilder docBuilder = builderFactory.newDocumentBuilder();
+
+		Element el;
+		ArrayTypeDescriptor arrayDescriptor = (ArrayTypeDescriptor) descriptor;
+		TypeDescriptor elementType = arrayDescriptor.getElementType();
+		int size = 0;
+
+		el = XMLUtils.StringToElement("", inputName, "");
+
+		if (dataValue instanceof List) {
+			List dataValues = (List) dataValue;
+			size = dataValues.size();
+			populateElementWithList(mimeType, el, dataValues, elementType);
+		} else {
+			// if mime type is text/xml then the data is an array in xml form,
+			// else its just a single primitive element
+			if (mimeType.equals("'text/xml'")) {
+
+				Document doc = docBuilder.parse(new ByteArrayInputStream(
+						dataValue.toString().getBytes()));
+				Node child = doc.getDocumentElement().getFirstChild();
+
+				while (child != null) {
+					size++;
+					el.appendChild(el.getOwnerDocument()
+							.importNode(child, true));
+					child = child.getNextSibling();
+				}
+			} else {
+				String tag = "item";
+				if (elementType instanceof BaseTypeDescriptor) {
+					tag = elementType.getType();
+				} else {
+					tag = elementType.getName();
+				}
+				Element item = el.getOwnerDocument().createElement(tag);
+				populateElementWithObjectData(mimeType, item, dataValue, descriptor);
+				el.appendChild(item);
+			}
+
+		}
+
+		String ns = namespaceMappings.get(elementType.getNamespaceURI());
+		if (ns != null) {
+			String elementNS = ns + ":" + elementType.getType() + "[" + size
+					+ "]";
+			el.setAttribute("soapenc:arrayType", elementNS);
+			el.setAttribute("xmlns:soapenc",
+					"http://schemas.xmlsoap.org/soap/encoding/");
+		}
+
+		el.setAttribute("xsi:type", "soapenc:Array");
+
+		return el;
+	}
+
+	@Override
+	protected SOAPBodyElement addElementToBody(String operationNamespace, SOAPBodyElement body, Element el) throws SOAPException {
+		body.addChildElement(new SOAPBodyElement(el));
+		return body;
+	}
+
+	
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/LiteralBodyBuilder.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/LiteralBodyBuilder.java
new file mode 100644
index 0000000..274aa55
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/LiteralBodyBuilder.java
@@ -0,0 +1,237 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.wsdl.WSDLException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+
+import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
+import net.sf.taverna.wsdl.parser.BaseTypeDescriptor;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.parser.UnknownOperationException;
+import net.sf.taverna.wsdl.parser.WSDLParser;
+
+import org.apache.axis.message.MessageElement;
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.utils.XMLUtils;
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+/**
+ * An implementation of BodyBuilder that supports creating the SOAP body for
+ * Webservices based upon a WSDL with Literal style.
+ * 
+ * @author Stuart Owen
+ * @author Stian Soiland-Reyes
+ * 
+ */
+@SuppressWarnings("unchecked")
+public class LiteralBodyBuilder extends AbstractBodyBuilder {
+
+	private static Logger logger = Logger.getLogger(LiteralBodyBuilder.class);
+
+	private static final String TYPE = "type";
+	private static final String NS_XSI = "http://www.w3.org/2001/XMLSchema-instance";
+
+	public LiteralBodyBuilder(String style, WSDLParser parser, String operationName, List<TypeDescriptor> inputDescriptors) {
+		super(style, parser, operationName,inputDescriptors);
+	}
+
+	@Override
+	protected Use getUse() {
+		return Use.LITERAL;
+	}
+
+	@Override
+	public SOAPBodyElement build(Map inputMap) throws WSDLException,
+			ParserConfigurationException, SOAPException, IOException,
+			SAXException, UnknownOperationException {
+
+		SOAPBodyElement body = super.build(inputMap);
+
+		if (getStyle() == Style.DOCUMENT) {
+			fixTypeAttributes(body);
+		}
+
+		return body;
+	}
+
+	@Override
+	protected Element createSkeletonElementForSingleItem(
+			Map<String, String> namespaceMappings, TypeDescriptor descriptor,
+			String inputName, String typeName) {
+		if (getStyle()==Style.DOCUMENT) {
+			return XMLUtils.StringToElement("", descriptor.getQname().getLocalPart(), "");
+		}
+		else {
+			return XMLUtils.StringToElement("", inputName, "");
+		}
+	}
+	
+		private void fixTypeAttributes(Node parent) {
+		if (parent.getNodeType() == Node.ELEMENT_NODE) {
+			Element el = (Element) parent;
+			if (parent.hasAttributes()) {
+				NamedNodeMap attributes = parent.getAttributes();
+//				List<Node> attributeNodesForRemoval = new ArrayList<Node>();
+				for (int i = 0; i < attributes.getLength(); i++) {
+					Node node = attributes.item(i);
+					
+					if (NS_XSI.equals(node.getNamespaceURI()) && TYPE.equals(node.getLocalName())) {
+						// TAV-712 - don't just strip out xsi:type - let's fix the
+						// name prefixes instead
+						
+						String xsiType = node.getTextContent();
+						// Resolve prefix of xsi type
+						String[] xsiTypeSplitted = xsiType.split(":", 2);
+						String xsiTypePrefix = "";
+						String xsiTypeName;
+						if (xsiTypeSplitted.length == 1) {
+							// No prefix
+							xsiTypeName = xsiTypeSplitted[0];
+						} else {
+							xsiTypePrefix = xsiTypeSplitted[0];
+							xsiTypeName = xsiTypeSplitted[1];
+						}
+						
+						String xsiTypeNS;
+						if (parent instanceof MessageElement) {
+							xsiTypeNS = ((MessageElement)parent).getNamespaceURI(xsiTypePrefix);
+						} else {
+							xsiTypeNS = node
+									.lookupNamespaceURI(xsiTypePrefix);
+						}
+						// Use global namespace prefixes						
+						String newPrefix = namespaceMappings.get(xsiTypeNS);
+						if (newPrefix == null) {
+							logger.warn("Can't find prefix for xsi:type namespace " + xsiTypeNS + " - keeping old " + xsiType);
+						} else {
+							String newXsiType = newPrefix + ":" + xsiTypeName;
+							node.setTextContent(newXsiType);	
+							logger.info("Replacing " + xsiType + " with " + newXsiType);
+						}
+					}
+				}
+//				for (Node node : attributeNodesForRemoval) {
+//					el.removeAttributeNS(node.getNamespaceURI(), node
+//							.getLocalName());
+//				}
+			}
+		}
+		
+		if (parent instanceof SOAPElement) {
+			for (Iterator childIterator = ((SOAPElement) parent).getChildElements(); childIterator.hasNext();) {
+				Node childElement = (Node) childIterator.next();
+				fixTypeAttributes(childElement);
+			}
+		}
+//		final NodeList childNodes = parent.getChildNodes();
+//		for (int i = 0; i < childNodes.getLength(); i++) {
+//			fixTypeAttributes(childNodes.item(i));
+//		}
+	}
+
+	@Override
+	protected Element createElementForArrayType(
+			Map<String, String> namespaceMappings, String inputName,
+			Object dataValue, TypeDescriptor descriptor, String mimeType,
+			String typeName) throws ParserConfigurationException, SAXException,
+			IOException, UnknownOperationException {
+		DocumentBuilderFactory builderFactory = DocumentBuilderFactory
+				.newInstance();
+		builderFactory.setNamespaceAware(true);
+		DocumentBuilder docBuilder = builderFactory.newDocumentBuilder();
+
+		Element el;
+		ArrayTypeDescriptor arrayDescriptor = (ArrayTypeDescriptor) descriptor;
+		TypeDescriptor elementType = arrayDescriptor.getElementType();
+		int size = 0;
+
+		el = XMLUtils.StringToElement("", typeName, "");
+
+		if (dataValue instanceof List) {
+			List dataValues = (List) dataValue;
+			size = dataValues.size();
+			populateElementWithList(mimeType, el, dataValues, elementType);
+		} else {
+			
+			// if mime type is text/xml then the data is an array in xml form,
+			// else its just a single primitive element
+			if (mimeType.equals("'text/xml'")) {
+
+				Document doc = docBuilder.parse(new ByteArrayInputStream(
+						dataValue.toString().getBytes()));
+				Node child = doc.getDocumentElement().getFirstChild();
+
+				while (child != null) {
+					size++;
+					el.appendChild(el.getOwnerDocument()
+							.importNode(child, true));
+					child = child.getNextSibling();
+				}
+			} else {
+				String tag = "item";
+				if (elementType instanceof BaseTypeDescriptor) {
+					tag = elementType.getType();
+				} else {
+					tag = elementType.getName();
+				}
+				Element item = el.getOwnerDocument().createElement(tag);
+				populateElementWithObjectData(mimeType, item, dataValue, descriptor);
+				el.appendChild(item);
+			}
+
+		}
+
+		return el;
+	}
+
+	@Override
+	protected SOAPBodyElement addElementToBody(String operationNamespace, SOAPBodyElement body, Element el) throws SOAPException {
+		if (getStyle()==Style.DOCUMENT) {
+			body = new SOAPBodyElement(el);
+			body.setNamespaceURI(operationNamespace);
+		}
+		else {
+			body.addChildElement(new SOAPBodyElement(el));
+		}
+		return body;
+	}
+	
+	
+
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/ObjectConverter.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/ObjectConverter.java
new file mode 100644
index 0000000..f973157
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/ObjectConverter.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ * This class replicates the behaviour of data conversion when using DataThingFactory.bake in Taverna 1.
+ * </p>
+ * <p>
+ * In particular it deals with the conversion of arrays to ArrayList
+ * </p>
+ * @author Stuart Owen
+ * 
+ *
+ */
+public class ObjectConverter {
+
+	/**
+	 * Converts an Object into an appropriate type, in particular recursively converting [] arrays to List<?>'s.<br>
+	 * 
+	 * This method is a copy of convertObject in DataThingFactory from Taverna 1
+	 * @param theObject
+	 * @return
+	 */
+	public static Object convertObject(Object theObject) {
+
+		if (theObject == null) {
+			return null;
+		}
+		// If an array type...
+		Class<?> theClass = theObject.getClass();
+		if (theClass.isArray()) {
+			// Special case for byte[]
+			if (theObject instanceof byte[]) {
+				// System.out.println("Found a byte[], returning it.");
+				return theObject;
+			} //extra primitive object checks for those fun edge cases!
+			else if (theObject instanceof int[]){
+				List<Object> l = new ArrayList<Object>();
+				for (int i = 0; i<((int[])theObject).length;i++) {
+					Object a = ((int[])theObject)[i];
+					l.add(convertObject(a));
+				}
+				return l;
+			} else if (theObject instanceof short[]){
+				List<Object> l = new ArrayList<Object>();
+				for (int i = 0; i<((short[])theObject).length;i++) {
+					Object a = ((short[])theObject)[i];
+					l.add(convertObject(a));
+				}
+				return l;
+			} else if (theObject instanceof long[]){
+				List<Object> l = new ArrayList<Object>();
+				for (int i = 0; i<((long[])theObject).length;i++) {
+					Object a = ((long[])theObject)[i];
+					l.add(convertObject(a));
+				}
+				return l;
+			} else if (theObject instanceof float[]){
+				List<Object> l = new ArrayList<Object>();
+				for (int i = 0; i<((float[])theObject).length;i++) {
+					Object a = ((float[])theObject)[i];
+					l.add(convertObject(a));
+				}
+				return l;
+			} else if (theObject instanceof double[]){
+				List<Object> l = new ArrayList<Object>();
+				for (int i = 0; i<((double[])theObject).length;i++) {
+					Object a = ((double[])theObject)[i];
+					l.add(convertObject(a));
+				}
+				return l;
+			} else if (theObject instanceof boolean[]){
+				List<Object> l = new ArrayList<Object>();
+				for (int i = 0; i<((boolean[])theObject).length;i++) {
+					Object a = ((boolean[])theObject)[i];
+					l.add(convertObject(a));
+				}
+				return l;
+			} else if (theObject instanceof char[]){
+				List<Object> l = new ArrayList<Object>();
+				for (int i = 0; i<((char[])theObject).length;i++) {
+					Object a = ((char[])theObject)[i];
+					l.add(convertObject(a));
+				}
+				return l;
+			} else {
+				// For all other arrays, create a new
+				// List and iterate over the array,
+				// unpackaging the item and recursively
+				// putting it into the new List after
+				// conversion				
+				
+				// System.out.println("Found an array length
+				// "+theArray.length+", repacking as List...");
+				
+				List<Object> l = new ArrayList<Object>();				
+				Object[] theArray = (Object[]) theObject;
+				for (int i = 0; i < theArray.length; i++) {
+					l.add(convertObject(theArray[i]));
+				}
+				return l;
+			}
+		}
+		// If a collection, iterate over it and copy
+		if (theObject instanceof Collection) {
+			if (theObject instanceof List) {
+				// System.out.println("Re-packing a list...");
+				List<Object> l = new ArrayList<Object>();
+				for (Iterator<?> i = ((List<?>) theObject).iterator(); i.hasNext();) {
+					l.add(convertObject(i.next()));
+				}
+				return l;
+			} else if (theObject instanceof Set) {
+				// System.out.println("Re-packing a set...");
+				Set<Object> s = new HashSet<Object>();
+				for (Iterator<?> i = ((Set<?>) theObject).iterator(); i.hasNext();) {
+					s.add(convertObject(i.next()));
+				}
+				return s;
+			}
+		}
+		// If a number then return the string representation for it
+		if (theObject instanceof Number) {
+			// System.out.println("Found a number, converting it to a
+			// string...");
+			return theObject.toString();
+		}
+		// Otherwise just return the object
+		// System.out.println("Found a "+theObject.getClass().getName()+",
+		// returning it");
+		return theObject;
+	}
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponseEncodedMultiRefParser.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponseEncodedMultiRefParser.java
new file mode 100644
index 0000000..2266e0d
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponseEncodedMultiRefParser.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2003 The University of Manchester 
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.  Authorship
+ * of the modifications may be determined from the ChangeLog placed at
+ * the end of this file.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ *
+ ****************************************************************
+ * Source code information
+ * -----------------------
+ * Filename           $RCSfile: SOAPResponseEncodedMultiRefParser.java,v $
+ * Revision           $Revision: 1.2 $
+ * Release status     $State: Exp $
+ * Last modified on   $Date: 2008/08/08 10:28:09 $
+ *               by   $Author: stain $
+ * Created on 05-May-2006
+ *****************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.utils.XMLUtils;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+/**
+ * A SOAPResponseParser responsible for responses that are fragmented into
+ * seperate referenced blocks of XML - Multiref format. It trys to resolve each
+ * reference to the corresponding multiref element, eventually generating a
+ * single XML document. Cyclic references are not allows, and lead to a
+ * CyclicReferenceException
+ * 
+ * @author sowen
+ * 
+ */
+@SuppressWarnings("unchecked")
+public class SOAPResponseEncodedMultiRefParser extends
+		SOAPResponseEncodedParser {
+
+	private List resolvedReferences = new ArrayList();
+
+	private Map referenceMap;
+
+	public SOAPResponseEncodedMultiRefParser(List<TypeDescriptor> outputDescriptors) {
+		super(outputDescriptors);
+	}
+
+	/**
+	 * Expects a list of XML SOAPBodyElement fragements, with the first being
+	 * the root, and transforms this into a single XML document. Cyclic
+	 * references lead to a CyclicReferenceException being thrown. XML
+	 * namespaces are removed, leading to easier to read XML.
+	 * 
+	 * @param response -
+	 *            List of XML SOAPBodyElement fragments.
+	 */
+	@Override
+	public Map parse(List response) throws Exception, CyclicReferenceException {
+		Map result = new HashMap();
+		generateRefMap(response);
+		expandRefMap();
+		Element mainBody = ((SOAPBodyElement) response.get(0)).getAsDOM();
+
+		for (TypeDescriptor descriptor : outputDescriptors) {
+			String outputName = descriptor.getName();
+
+			Node outputNode = getOutputNode(mainBody, outputName);
+			if (outputNode != null) {
+				expandNode(outputNode, new ArrayList());
+				String xml;
+				if (getStripAttributes()) {
+					stripAttributes(outputNode);
+					outputNode = removeNamespace(outputName,
+							(Element) outputNode);
+				}
+				xml = XMLUtils.ElementToString((Element) outputNode);
+
+				result.put(outputName, xml);
+			} 
+
+		}
+
+		return result;
+	}
+
+	/**
+	 * Generates a map of each multiref element, mapped to its ID.
+	 * 
+	 * @param response
+	 * @throws Exception
+	 */
+	private void generateRefMap(List response) throws Exception {
+		Map result = new HashMap();
+
+		for (Iterator iterator = response.iterator(); iterator.hasNext();) {
+			SOAPBodyElement bodyElement = (SOAPBodyElement) iterator.next();
+			String id = bodyElement.getAttribute("id");
+			if (id != null) {
+				result.put("#" + id, bodyElement.getAsDOM());
+			}
+		}
+
+		referenceMap = result;
+	}
+
+	/**
+	 * Expands any references to other fragments within each multiref fragment,
+	 * resulting in all multiref fragments being fully expanded.
+	 * 
+	 * @throws CyclicReferenceException
+	 */
+	private void expandRefMap() throws CyclicReferenceException {
+		for (Iterator iterator = referenceMap.keySet().iterator(); iterator
+				.hasNext();) {
+			String key = (String) iterator.next();
+			if (!resolvedReferences.contains(key)) {
+				expandMultirefElement(key, new ArrayList());
+			}
+		}
+	}
+
+	private void expandMultirefElement(String key, List parentKeys)
+			throws CyclicReferenceException {
+		if (parentKeys.contains(key))
+			throw new CyclicReferenceException();
+		parentKeys.add(key);
+		Node node = (Node) referenceMap.get(key);
+		expandNode(node, parentKeys);
+		resolvedReferences.add(key);
+		parentKeys.remove(key);
+	}
+
+	private void expandNode(Node node, List parentKeys)
+			throws CyclicReferenceException {
+		String href = getHrefForNode(node);
+		if (href != null) {
+			if (!resolvedReferences.contains(href)) {
+				expandMultirefElement(href, parentKeys);
+			}
+			copyMultirefContentsToParent(node, href);
+		}
+		if (node.hasChildNodes()) {
+			Node child = node.getFirstChild();
+			while (child != null) {
+				expandNode(child, parentKeys);
+				child = child.getNextSibling();
+			}
+		}
+	}
+
+	private void copyMultirefContentsToParent(Node parent, String multirefKey) {
+		Element multiRef = (Element) referenceMap.get(multirefKey);
+		Node child = multiRef.getFirstChild();
+		while (child != null) {
+			parent.appendChild(parent.getOwnerDocument()
+					.importNode(child, true));
+			child = child.getNextSibling();
+		}
+		parent.getAttributes().removeNamedItem("href");
+	}
+
+	private String getHrefForNode(Node node) {
+		String result = null;
+		NamedNodeMap nodemap = node.getAttributes();
+		if (nodemap != null) {
+			Node attrNode = nodemap.getNamedItem("href");
+			if (attrNode != null) {
+				result = attrNode.getNodeValue();
+			}
+		}
+		return result;
+	}
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponseEncodedParser.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponseEncodedParser.java
new file mode 100644
index 0000000..ab45289
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponseEncodedParser.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2003 The University of Manchester 
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.  Authorship
+ * of the modifications may be determined from the ChangeLog placed at
+ * the end of this file.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ *
+ ****************************************************************
+ * Source code information
+ * -----------------------
+ * Filename           $RCSfile: SOAPResponseEncodedParser.java,v $
+ * Revision           $Revision: 1.2 $
+ * Release status     $State: Exp $
+ * Last modified on   $Date: 2008/08/08 10:28:09 $
+ *               by   $Author: stain $
+ * Created on 08-May-2006
+ *****************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+
+/**
+ * SOAPResponseParser responsible for parsing SOAP responses from RPC/encoded
+ * based service, but that are not fragmented to multiref documents.
+ * 
+ * @author sowen
+ * 
+ */
+@SuppressWarnings("unchecked")
+public class SOAPResponseEncodedParser implements SOAPResponseParser {
+
+	protected List<TypeDescriptor> outputDescriptors;
+
+	private boolean stripAttributes = false;
+
+	public SOAPResponseEncodedParser(List<TypeDescriptor> outputDescriptors) {
+		this.outputDescriptors = outputDescriptors;
+	}
+
+	/**
+	 * Parses the response into a single XML document, which is placed in the
+	 * outputMap together with the given output name. Namespaces and other
+	 * attributes are stripped out according to stripAttributes.
+	 * 
+	 * @param List
+	 * @return Map
+	 */
+	public Map parse(List response) throws Exception {
+
+		Map result = new HashMap();
+		Element mainBody = ((SOAPBodyElement) response.get(0)).getAsDOM();
+
+		for (TypeDescriptor descriptor : outputDescriptors) {
+			String outputName = descriptor.getName();
+
+			Node outputNode = getOutputNode(mainBody, outputName);
+			if (outputNode != null) {
+				String xml;				
+				
+				if (stripAttributes) {					
+					stripAttributes(outputNode);
+					outputNode = removeNamespace(outputName,
+							(Element) outputNode);
+				}
+				
+				xml = XMLUtils.ElementToString((Element) outputNode);
+				result.put(outputName, xml);
+			} 
+		}
+
+		return result;
+	}
+
+	protected Node getOutputNode(Element mainBody, String outputName) {
+		// first try using body namespace ...
+		Node outputNode = mainBody.getElementsByTagNameNS(
+				mainBody.getNamespaceURI(), outputName).item(0);
+		// ... and if that doesn't work, try without namespace
+		if (outputNode == null) {
+			outputNode = mainBody.getElementsByTagName(outputName).item(
+					0);
+		}
+		if (outputNode == null) { // if still null, and there is only 1
+			// output, take the first child
+			if (outputDescriptors.size() == 1
+					&& mainBody.getChildNodes().getLength() == 1) {
+				outputNode = mainBody.getFirstChild();
+			}
+		}
+		return outputNode;
+	}
+
+	/**
+	 * Removes the namespace from the surrounding element that represents the
+	 * outputName. E.g. converts <ns1:element xmlns:ns1="http://someurl">...</ns1:element>
+	 * to <element>...</element>
+	 * 
+	 * @param outputName
+	 * @param element
+	 * @return
+	 * @throws ParserConfigurationException
+	 * @throws IOException
+	 * @throws SAXException
+	 */
+	protected Element removeNamespace(String outputName, Element element)
+			throws ParserConfigurationException, SAXException, IOException {
+		String xml;
+		String innerXML = XMLUtils.getInnerXMLString(element);
+		if (innerXML != null) {
+			xml = "<" + outputName + ">" + innerXML + "</" + outputName + ">";
+		} else {
+			xml = "<" + outputName + " />";
+		}
+		DocumentBuilder builder = DocumentBuilderFactory.newInstance()
+				.newDocumentBuilder();
+		Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
+		return doc.getDocumentElement();
+	}
+
+	protected void stripAttributes(Node node) {
+		List names = new ArrayList();
+		if (node.getAttributes() != null) {
+			for (int i = 0; i < node.getAttributes().getLength(); i++) {
+				names.add(node.getAttributes().item(i).getNodeName());
+			}
+		}
+
+		for (Iterator iterator = names.iterator(); iterator.hasNext();) {
+			node.getAttributes().removeNamedItem((String) iterator.next());
+		}
+
+		if (node.hasChildNodes()) {
+			Node child = node.getFirstChild();
+			while (child != null) {
+				stripAttributes(child);
+				child = child.getNextSibling();
+			}
+		}
+
+	}
+
+	/**
+	 * determines whether attributes in the resulting XML should be stripped
+	 * out, including namespace definitions, leading to XML that is much easier
+	 * to read.
+	 * 
+	 * @param stripAttributes
+	 */
+	public void setStripAttributes(boolean stripAttributes) {
+		this.stripAttributes = stripAttributes;
+	}
+
+	public boolean getStripAttributes() {
+		return this.stripAttributes;
+	}
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponseLiteralParser.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponseLiteralParser.java
new file mode 100644
index 0000000..c27af9d
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponseLiteralParser.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2003 The University of Manchester 
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.  Authorship
+ * of the modifications may be determined from the ChangeLog placed at
+ * the end of this file.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ *
+ ****************************************************************
+ * Source code information
+ * -----------------------
+ * Filename           $RCSfile: SOAPResponseLiteralParser.java,v $
+ * Revision           $Revision: 1.1 $
+ * Release status     $State: Exp $
+ * Last modified on   $Date: 2007/11/28 16:05:45 $
+ *               by   $Author: sowen70 $
+ * Created on 05-May-2006
+ *****************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+/**
+ * Responsible for parsing the SOAP response from calling a Literal based
+ * service.
+ * 
+ * @author sowen
+ * 
+ */
+@SuppressWarnings("unchecked")
+public class SOAPResponseLiteralParser implements SOAPResponseParser {
+
+	List<TypeDescriptor>outputDescriptors;
+
+	public SOAPResponseLiteralParser(List<TypeDescriptor> outputDescriptors) {
+		this.outputDescriptors = outputDescriptors;
+	}
+
+	/**
+	 * Expects a list containing a single SOAPBodyElement, the contents of which
+	 * are transferred directly to the output, converted to a String, and placed
+	 * into the outputMaP which is returned
+	 * 
+	 * @return Map of the outputs
+	 */
+	public Map parse(List response) throws Exception {
+		Map result = new HashMap();
+
+		if (response.size()>0) {
+			SOAPBodyElement rpcElement = (SOAPBodyElement) response.get(0);
+	
+			Element dom = rpcElement.getAsDOM();
+	
+			String outputName = getOutputName();
+			String xml = XMLUtils.ElementToString(dom);
+	
+			result.put(outputName, xml);
+		}
+
+		return result;
+	}
+
+	protected String getOutputName() {
+		String result = "";
+		for (TypeDescriptor descriptor : outputDescriptors) {
+			String name=descriptor.getName();
+			if (!name.equals("attachmentList")) {
+				result = name;
+				break;
+			}
+		}
+		return result;
+	}
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponseParser.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponseParser.java
new file mode 100644
index 0000000..a2da0f8
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponseParser.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2003 The University of Manchester 
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.  Authorship
+ * of the modifications may be determined from the ChangeLog placed at
+ * the end of this file.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ *
+ ****************************************************************
+ * Source code information
+ * -----------------------
+ * Filename           $RCSfile: SOAPResponseParser.java,v $
+ * Revision           $Revision: 1.1 $
+ * Release status     $State: Exp $
+ * Last modified on   $Date: 2007/11/28 16:05:45 $
+ *               by   $Author: sowen70 $
+ * Created on 05-May-2006
+ *****************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Inteface that defines all parsers responsible for parsing SOAP responses from
+ * calling SOAP based webservices.
+ * 
+ * @author sowen
+ * 
+ */
+@SuppressWarnings("unchecked")
+public interface SOAPResponseParser {
+
+	/**
+	 * All SOAPResponseParsers take a list of SOAPBodyElement's, resulting from
+	 * invoking the service, and convert these into a suitable map of output
+	 * DataThings.
+	 * 
+	 * @param response -
+	 *            List of SOAPBodyElements
+	 * @return Map of output DataThing's mapped to their output name
+	 * @throws Exception
+	 */
+	public Map parse(List response) throws Exception;
+
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponseParserFactory.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponseParserFactory.java
new file mode 100644
index 0000000..15df731
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponseParserFactory.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2003 The University of Manchester 
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.  Authorship
+ * of the modifications may be determined from the ChangeLog placed at
+ * the end of this file.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ *
+ ****************************************************************
+ * Source code information
+ * -----------------------
+ * Filename           $RCSfile: SOAPResponseParserFactory.java,v $
+ * Revision           $Revision: 1.1 $
+ * Release status     $State: Exp $
+ * Last modified on   $Date: 2007/11/28 16:05:45 $
+ *               by   $Author: sowen70 $
+ * Created on 05-May-2006
+ *****************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import java.util.List;
+
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+
+/**
+ * A factory class that selects the correct type of SOAPResponseParser according
+ * to the service type , the types output of that service, and the response from
+ * invoking that service.
+ * 
+ * @author sowen
+ * 
+ */
+@SuppressWarnings("unchecked")
+public class SOAPResponseParserFactory {
+
+	private static SOAPResponseParserFactory instance = new SOAPResponseParserFactory();
+
+	public static SOAPResponseParserFactory instance() {
+		return instance;
+	}
+
+	/**
+	 * returns an instance of the appropriate type of SOAPResponseParser
+	 * 
+	 * @param response -
+	 *            List of SOAPBodyElement's resulting from the service
+	 *            invokation.
+	 * @param use -
+	 *            the type of the service - 'literal' or 'encoded'
+	 * @param style -
+	 *            the style of the service - 'document' or 'rpc'
+	 * @param outputDescriptors -
+	 *            the List of {@link TypeDescriptor}'s describing the service outputs
+	 * @return
+	 * @see SOAPResponseParser
+	 */
+	public SOAPResponseParser create(List response, String use, String style,
+			List<TypeDescriptor> outputDescriptors) {
+
+		SOAPResponseParser result = null;
+		
+		if (outputIsPrimitive(outputDescriptors)) {
+			if (use.equalsIgnoreCase("literal")) {
+				result = new SOAPResponsePrimitiveLiteralParser(outputDescriptors);
+			}
+			else {
+				result = new SOAPResponsePrimitiveParser(outputDescriptors);
+			}
+		} else if (use.equals("literal")) {
+			result = new SOAPResponseLiteralParser(outputDescriptors);
+		} else {
+			if (response.size() > 1) {
+				result = new SOAPResponseEncodedMultiRefParser(outputDescriptors);
+			} else {
+				result = new SOAPResponseEncodedParser(outputDescriptors);
+			}
+		}
+
+		return result;
+	}
+
+	private boolean outputIsPrimitive(List<TypeDescriptor> outputDescriptors) {
+		boolean result = true;
+		for (TypeDescriptor d : outputDescriptors) {
+			if (d.getMimeType().equals("'text/xml'")) {
+				result = false;
+				break;
+			}
+		}
+		return result;
+	}
+
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponsePrimitiveLiteralParser.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponsePrimitiveLiteralParser.java
new file mode 100644
index 0000000..e26f146
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponsePrimitiveLiteralParser.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import java.io.ByteArrayInputStream;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+/**
+ * A response parser specifically for literal use services that return primative types.
+ * It extends the SOAPReponseLiteralParser, but unwraps the result from the enclosing XML
+ * to expose the primitive result.
+ * 
+ * This is specially designed for unwrapped/literal type services, and RPC/literal services (untested). 
+ * @author Stuart
+ *
+ */
+@SuppressWarnings("unchecked")
+public class SOAPResponsePrimitiveLiteralParser extends
+		SOAPResponseLiteralParser {
+
+	public SOAPResponsePrimitiveLiteralParser(List<TypeDescriptor> outputDescriptors) {
+		super(outputDescriptors);
+	}
+
+	@Override
+	public Map parse(List response) throws Exception {
+		Map result = super.parse(response);
+		Object dataValue = result.get(getOutputName());
+		if (dataValue!=null) {
+			String xml = dataValue.toString();
+			
+			DocumentBuilder builder = DocumentBuilderFactory.newInstance()
+			.newDocumentBuilder();
+			Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
+		
+			Node node = doc.getFirstChild();
+			result.put(getOutputName(), node.getFirstChild().getNodeValue());
+		}
+		return result;
+	}
+	
+	
+}
+
+	
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponsePrimitiveParser.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponsePrimitiveParser.java
new file mode 100644
index 0000000..4bb0af4
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/SOAPResponsePrimitiveParser.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2003 The University of Manchester 
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.  Authorship
+ * of the modifications may be determined from the ChangeLog placed at
+ * the end of this file.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ *
+ ****************************************************************
+ * Source code information
+ * -----------------------
+ * Filename           $RCSfile: SOAPResponsePrimitiveParser.java,v $
+ * Revision           $Revision: 1.1 $
+ * Release status     $State: Exp $
+ * Last modified on   $Date: 2007/11/28 16:05:45 $
+ *               by   $Author: sowen70 $
+ * Created on 05-May-2006
+ *****************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+
+import org.apache.axis.message.RPCElement;
+import org.apache.axis.message.RPCParam;
+
+/**
+ * SOAPResponseParser responsible for parsing soap responses that map to outputs
+ * that can be directly represented with Primitive types (i.e. int, String,
+ * String[]).
+ * 
+ * @author sowen
+ * 
+ */
+@SuppressWarnings("unchecked")
+public class SOAPResponsePrimitiveParser implements SOAPResponseParser {
+
+	private List<String> outputNames;
+
+	public SOAPResponsePrimitiveParser(List<TypeDescriptor> outputDescriptors) {
+		outputNames=new ArrayList<String>();
+		for (TypeDescriptor desc : outputDescriptors) {
+			outputNames.add(desc.getName());
+		}
+	}
+
+	/**
+	 * Parses each SOAPBodyElement for the primitive type, and places it in the
+	 * output Map
+	 */
+	public Map parse(List response) throws Exception {
+		Map result = new HashMap();
+		int c = 0;
+
+		
+		RPCElement responseElement = (RPCElement) response.get(0);
+		List params = responseElement.getParams();
+
+		for (Iterator paramIterator = params.iterator(); paramIterator
+				.hasNext();) {
+			RPCParam param = (RPCParam) paramIterator.next();
+			Object value = param.getObjectValue();
+			// use the param name if it matches the outputname list,
+			// otherwise use the defined output name.
+			// Outputs should come back in the order of the outputNames
+			// as this is specified in the WSDL (only an issue for multiple
+			// outputs which is very rare, and is going to be documented as
+			// unrecommended for Taverna).
+			if (outputNames.contains(param.getName())) {
+				result.put(param.getName(), ObjectConverter.convertObject(value));
+			} else {
+				result.put(outputNames.get(c), value);
+			}
+			c++;
+		}
+
+		return result;
+	}
+
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/WSDLSOAPInvoker.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/WSDLSOAPInvoker.java
new file mode 100644
index 0000000..36c50da
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/WSDLSOAPInvoker.java
@@ -0,0 +1,323 @@
+/*
+ * Copyright (C) 2003 The University of Manchester 
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.  Authorship
+ * of the modifications may be determined from the ChangeLog placed at
+ * the end of this file.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ *
+ ****************************************************************
+ * Source code information
+ * -----------------------
+ * Filename           $RCSfile: WSDLSOAPInvoker.java,v $
+ * Revision           $Revision: 1.7 $
+ * Release status     $State: Exp $
+ * Last modified on   $Date: 2008/08/28 19:39:28 $
+ *               by   $Author: stain $
+ * Created on 07-Apr-2006
+ *****************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.activation.DataHandler;
+import javax.wsdl.WSDLException;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.rpc.ServiceException;
+import javax.xml.soap.SOAPException;
+
+import net.sf.taverna.wsdl.parser.UnknownOperationException;
+import net.sf.taverna.wsdl.parser.WSDLParser;
+
+import org.apache.axis.AxisFault;
+import org.apache.axis.EngineConfiguration;
+import org.apache.axis.attachments.AttachmentPart;
+import org.apache.axis.client.Call;
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.message.SOAPHeaderElement;
+import org.apache.axis.transport.http.HTTPTransport;
+import org.apache.log4j.Logger;
+import org.xml.sax.SAXException;
+
+/**
+ * Invoke SOAP based webservices
+ * 
+ * @author Stuart Owen
+ * 
+ */
+@SuppressWarnings("unchecked")
+public class WSDLSOAPInvoker {
+
+	private static final String ATTACHMENT_LIST = "attachmentList";
+	private BodyBuilderFactory bodyBuilderFactory = BodyBuilderFactory.instance();
+	private WSDLParser parser;
+	private String operationName;
+	private List<String> outputNames;
+	
+	private static Logger logger = Logger.getLogger(WSDLSOAPInvoker.class);
+
+	public WSDLSOAPInvoker(WSDLParser parser, String operationName,
+			List<String> outputNames) {
+		this.parser = parser;
+		this.operationName = operationName;
+		this.outputNames = outputNames;
+	}
+	
+	protected String getOperationName() {
+		return operationName;
+	}
+	
+	protected WSDLParser getParser() {
+		return parser;
+	}
+
+	protected List<String> getOutputNames() {
+		return outputNames;
+	}
+	
+
+	/**
+	 * Invokes the webservice with the supplied input Map, and returns a Map
+	 * containing the outputs, mapped against their output names.
+	 * 
+	 * @param inputMap
+	 * @return
+	 * @throws Exception
+	 */
+	public Map<String, Object> invoke(Map inputMap) throws Exception {
+		return invoke(inputMap, (EngineConfiguration)null);
+	}
+
+	/**
+	 * Invokes the webservice with the supplied input Map and axis engine configuration, 
+	 * and returns a Map containing the outputs, mapped against their output names.
+	 */
+	public Map<String, Object> invoke(Map inputMap, EngineConfiguration config)
+			throws Exception {
+		
+		Call call = getCall(config);
+		return invoke(inputMap, call);
+	}
+	
+	/**
+	 * Invokes the webservice with the supplied input Map and preconfigured axis call, 
+	 * and returns a Map containing the outputs, mapped against their output names.
+	 */
+	public Map<String, Object> invoke(Map inputMap, Call call)
+			throws Exception {
+			
+		call.setTimeout(getTimeout());
+
+		SOAPEnvelope requestEnv = makeRequestEnvelope(inputMap);
+//		logger.info("Invoking service with SOAP envelope:\n"+requestEnv);
+		
+		SOAPEnvelope responseEnv = invokeCall(call, requestEnv);
+		
+//		logger.info("Received SOAP response:\n"+responseEnv);
+
+		Map<String, Object> result;
+		if (responseEnv == null) {
+			if (outputNames.size() == 1
+					&& outputNames.get(0).equals(ATTACHMENT_LIST)) {
+				// Could be axis 2 service with no output (TAV-617)
+				result = new HashMap<String, Object>();
+			} else {
+				throw new IllegalStateException(
+						"Missing expected outputs from service");
+			}
+		} else {
+			List response = responseEnv.getBodyElements();
+//			logger.info("SOAP response was:" + response);
+			SOAPResponseParser parser = SOAPResponseParserFactory
+					.instance()
+					.create(
+							response,
+							getUse(),
+							getStyle(),
+							this.parser
+									.getOperationOutputParameters(operationName));
+			result = parser.parse(response);
+		}
+
+		result.put(ATTACHMENT_LIST, extractAttachments(call));
+
+		return result;
+	}
+
+	protected SOAPEnvelope makeRequestEnvelope(Map inputMap)
+			throws UnknownOperationException, IOException, WSDLException,
+			ParserConfigurationException, SOAPException, SAXException {
+	
+		SOAPEnvelope requestEnv = new SOAPEnvelope();
+		for (SOAPHeaderElement headerElement : makeSoapHeaders()) {
+			requestEnv.addHeader(headerElement);
+		}
+		requestEnv.addBodyElement(makeSoapBody(inputMap));
+		return requestEnv;
+	}
+
+	protected List<SOAPHeaderElement> makeSoapHeaders() {
+		return Collections.emptyList();
+	}
+
+	protected SOAPBodyElement makeSoapBody(Map inputMap)
+			throws UnknownOperationException, IOException, WSDLException,
+			ParserConfigurationException, SOAPException, SAXException {
+		BodyBuilder builder = bodyBuilderFactory.create(parser,
+				operationName,
+				parser.getOperationInputParameters(operationName));
+		return builder.build(inputMap);
+	}
+
+	protected SOAPEnvelope invokeCall(Call call, SOAPEnvelope requestEnv) throws AxisFault {
+		return call.invoke(requestEnv);
+	}
+
+	/**
+	 * Reads the property taverna.wsdl.timeout, default to 5 minutes if missing.
+	 * 
+	 * @return
+	 */
+	protected Integer getTimeout() {
+		int result = 300000;
+		String minutesStr = System.getProperty("taverna.wsdl.timeout");
+
+		if (minutesStr == null) {
+			// using default of 5 minutes
+			return result;
+		}
+		try {
+			int minutes = Integer.parseInt(minutesStr.trim());
+			result = minutes * 1000 * 60;
+		} catch (NumberFormatException e) {
+			logger.error("Non-integer timeout", e);
+			return result;
+		}
+		return result;
+	}
+
+	protected String getStyle() {
+		return parser.getStyle();
+	}
+
+	protected String getUse() throws UnknownOperationException {
+		return parser.getUse(operationName);
+	}
+
+	/**
+	 * Returns an axis based Call, initialised for the operation that needs to
+	 * be invoked
+	 * 
+	 * @return
+	 * @throws ServiceException
+	 * @throws UnknownOperationException
+	 * @throws MalformedURLException 
+	 * @throws WSDLException
+	 * @throws WSIFException
+	 */
+	protected Call getCall(EngineConfiguration config)  throws ServiceException, UnknownOperationException, MalformedURLException {
+		
+		org.apache.axis.client.Service service;
+		if (config==null) {
+			service = new org.apache.axis.client.Service();
+		}
+		else {
+			service = new org.apache.axis.client.Service(config);
+		}
+		
+		Call call = new Call(service);
+		
+		call.setTransport(new HTTPTransport());
+		call.setTargetEndpointAddress(parser.getOperationEndpointLocations(operationName).get(0));
+		//result.setPortName(parser.getPortType(operationName).getQName());
+		//result.setOperation(operationName);
+		
+		String use = parser.getUse(operationName);
+		call.setUseSOAPAction(true);
+		call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR,
+				Boolean.FALSE);
+		call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS,
+				Boolean.FALSE);
+		call
+				.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
+		
+		if (parser.getSOAPActionURI(operationName)!=null) {
+			call.setSOAPActionURI(parser.getSOAPActionURI(operationName));
+		}
+		
+		if (use.equalsIgnoreCase("literal")) {
+			call.setEncodingStyle(null);
+		}
+		return call;
+	}
+	
+
+	/**
+	 * Exctracts any attachments that result from invoking the service, and
+	 * returns them as a List wrapped within a DataThing
+	 * 
+	 * @param axisCall
+	 * @return
+	 * @throws SOAPException
+	 * @throws IOException
+	 */
+	protected List extractAttachments(Call axisCall)
+			throws SOAPException, IOException {
+		List attachmentList = new ArrayList();
+		if (axisCall.getResponseMessage() != null
+				&& axisCall.getResponseMessage().getAttachments() != null) {
+			for (Iterator i = axisCall.getResponseMessage().getAttachments(); i
+					.hasNext();) {
+				AttachmentPart ap = (AttachmentPart) i.next();
+				DataHandler dh = ap.getDataHandler();
+				BufferedInputStream bis = new BufferedInputStream(dh
+						.getInputStream());
+				ByteArrayOutputStream bos = new ByteArrayOutputStream();
+				int c;
+				while ((c = bis.read()) != -1) {
+					bos.write(c);
+				}
+				bis.close();
+				bos.close();
+				String mimeType = dh.getContentType();
+				if (mimeType.matches(".*image.*")
+						|| mimeType.matches(".*octet.*")
+						|| mimeType.matches(".*audio.*")
+						|| mimeType.matches(".*application/zip.*")) {
+					attachmentList.add(bos.toByteArray());
+				} else {
+					attachmentList.add(new String(bos.toByteArray()));
+				}
+			}
+		}
+
+		return attachmentList;
+	}
+
+	
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/package.html b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/package.html
new file mode 100644
index 0000000..5fd36e5
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/soap/package.html
@@ -0,0 +1,5 @@
+<body>
+Contains classes required to invoke an endpoint for a SOAP based web-service described by a WSDL.<br>
+These classes are derived heavily from the original parsing classes from the Taverna 1 WSDLBasedProcessor and have been refactored<br>
+to remove references to to Taverna 1 
+</body>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/xmlsplitter/XMLInputSplitter.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/xmlsplitter/XMLInputSplitter.java
new file mode 100644
index 0000000..031de03
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/xmlsplitter/XMLInputSplitter.java
@@ -0,0 +1,290 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.xmlsplitter;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
+import net.sf.taverna.wsdl.parser.BaseTypeDescriptor;
+import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+
+import org.apache.axis.encoding.Base64;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.Namespace;
+import org.jdom.input.SAXBuilder;
+import org.jdom.output.XMLOutputter;
+
+public class XMLInputSplitter {
+
+	private TypeDescriptor typeDescriptor;
+	private String[] outputNames;
+	private String[] inputNames;
+	private String[] inputTypes;
+
+	public XMLInputSplitter(TypeDescriptor typeDescriptor, String inputNames[],
+			String inputTypes[], String[] outputNames) {
+		this.typeDescriptor = typeDescriptor;
+		this.outputNames = outputNames;
+		this.inputTypes = inputTypes;
+		this.inputNames = inputNames;
+	}
+
+	public Map<String, String> execute(Map<String, Object> inputMap)
+			throws JDOMException, IOException {
+		Map<String, String> result = new HashMap<String, String>();
+		Element outputElement = (this.typeDescriptor.getName().length() > 0 ? new Element(
+				this.typeDescriptor.getName())
+				: new Element(this.typeDescriptor.getType()));
+
+		if (typeDescriptor instanceof ComplexTypeDescriptor) {
+			executeForComplexType(inputMap, result, outputElement);
+
+		} else {
+			for (String key : inputMap.keySet()) {
+				Object dataObject = inputMap.get(key);
+
+				if (dataObject instanceof List) {
+					Element dataElement = buildElementFromObject(key, "");
+					for (Object dataItem : ((List<?>) dataObject)) {
+						Element itemElement = buildElementFromObject(key,
+								dataItem);
+						dataElement.addContent(itemElement);
+					}
+
+					XMLOutputter outputter = new XMLOutputter();
+					String xmlText = outputter.outputString(dataElement);
+
+					result.put(outputNames[0], xmlText);
+				} else {
+					Element dataElement = buildElementFromObject(key,
+							dataObject);
+					outputElement.addContent(dataElement);
+					XMLOutputter outputter = new XMLOutputter();
+					String xmlText = outputter.outputString(outputElement);
+					result.put(outputNames[0], xmlText);
+				}
+
+			}
+		}
+
+		return result;
+
+	}
+
+	private void executeForComplexType(Map<String, Object> inputMap,
+			Map<String, String> result, Element outputElement)
+			throws JDOMException, IOException {
+		ComplexTypeDescriptor complexDescriptor = (ComplexTypeDescriptor) typeDescriptor;
+		for (TypeDescriptor elementType : complexDescriptor.getElements()) {
+			String key = elementType.getName();
+			Object dataObject = inputMap.get(key);			
+			if (dataObject==null) {
+				if (elementType.isOptional()) {
+					continue;
+				} if (elementType.isNillable()) {
+					dataObject = "xsi:nil";
+				} else {
+					dataObject="";
+				}
+			}
+
+			if (dataObject instanceof List) {
+				Element arrayElement = buildElementFromObject(key, "");
+
+				String itemkey = "item";
+				boolean wrapped = false;
+				if (elementType instanceof ArrayTypeDescriptor) {
+					wrapped = ((ArrayTypeDescriptor) elementType).isWrapped();
+					TypeDescriptor arrayElementType = ((ArrayTypeDescriptor) elementType)
+							.getElementType();
+					if (!wrapped) {
+						itemkey = elementType.getName();
+					} else {
+						if (arrayElementType.getName() != null
+								&& arrayElementType.getName().length() > 0) {
+							itemkey = arrayElementType.getName();
+						} else {
+							itemkey = arrayElementType.getType();
+						}
+					}
+
+				}
+
+				for (Object itemObject : ((List<?>)dataObject)) {
+
+					Element dataElement = buildElementFromObject(itemkey,
+							itemObject);
+					dataElement.setNamespace(Namespace.getNamespace(elementType
+							.getNamespaceURI()));
+					if (!wrapped) {
+						dataElement.setName(itemkey);
+						outputElement.addContent(dataElement);
+					} else {
+						arrayElement.addContent(dataElement);
+					}
+				}
+				if (wrapped)
+					outputElement.addContent(arrayElement);
+			} else {
+				Element dataElement = buildElementFromObject(key, dataObject);
+				outputElement.addContent(dataElement);
+			}
+		}
+		for (TypeDescriptor attribute : complexDescriptor.getAttributes()) {
+			String key = attribute.getName();
+			Object dataObject = inputMap.get("1" + key);
+			if (dataObject == null) {
+				dataObject = inputMap.get(key);
+			}
+			if (dataObject != null) {
+				outputElement.setAttribute(key, dataObject.toString(), Namespace
+						.getNamespace(attribute.getNamespaceURI()));
+			}
+		}
+		
+		outputElement.setNamespace(Namespace.getNamespace(typeDescriptor
+				.getNamespaceURI()));
+		XMLOutputter outputter = new XMLOutputter();
+		String xmlText = outputter.outputString(outputElement);
+		result.put(outputNames[0], xmlText);
+	}
+
+	private Element buildElementFromObject(String key, Object dataObject)
+			throws JDOMException, IOException {
+
+		Element dataElement = null;
+
+		if (isXMLInput(key)) {
+			dataElement = createDataElementForXMLInput(dataObject, key);
+		} else {
+			dataElement = new Element(key);
+			setDataElementNamespace(key, dataElement);
+			Namespace xsiNs = org.jdom.Namespace
+				.getNamespace("xsi",
+						"http://www.w3.org/2001/XMLSchema-instance");
+			if (dataObject.toString().equals("xsi:nil")) {
+				dataElement.setAttribute("nil", "true", xsiNs); // changes nil value
+			} else {
+				if (dataObject instanceof byte[]) {
+				
+					dataElement
+							.setAttribute(
+									"type",
+									"xsd:base64Binary",
+									xsiNs);
+					dataObject = Base64
+							.encode(((byte[]) dataObject));
+				}
+				dataElement.setText(dataObject.toString());
+			}
+
+		}
+		return dataElement;
+	}
+
+	private Element createDataElementForXMLInput(Object dataObject, String key)
+			throws JDOMException, IOException {
+		Element dataElement = null;
+		String xml = dataObject.toString();
+		if (xml.length() > 0) {
+			Document doc = new SAXBuilder().build(new StringReader(xml));
+			dataElement = doc.getRootElement();
+			dataElement.detach();
+		} else {
+			dataElement = new Element(key);
+		}
+
+		setDataElementNamespace(key, dataElement);
+		return dataElement;
+	}
+
+	// set the namespace if it can be determined from the element TypeDescriptor
+	// by the key
+	private void setDataElementNamespace(String key, Element dataElement) {
+		if (typeDescriptor instanceof ComplexTypeDescriptor) {
+			TypeDescriptor elementTypeDescriptor = ((ComplexTypeDescriptor) typeDescriptor)
+					.elementForName(key);
+			if (elementTypeDescriptor != null) {
+				String nsURI = null;
+				if (elementTypeDescriptor instanceof BaseTypeDescriptor) {
+					nsURI = elementTypeDescriptor.getNamespaceURI();
+					// this is some protective code against old workflows that
+					// had the base element namespace incorrectly
+					// declared (it was using the type NS, rather than the
+					// element NS.
+					if (nsURI.contains("XMLSchema")
+							&& nsURI.contains("http://www.w3.org")) {
+						nsURI = typeDescriptor.getNamespaceURI();
+					}
+				} else {
+					nsURI = elementTypeDescriptor.getNamespaceURI();
+				}
+				if (nsURI != null && nsURI.length() > 0) {
+					updateElementNamespace(dataElement, nsURI);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Updates the element namespace, and also iterates all descendant elements.
+	 * If these elements have no default namespace, or is blank then it is also
+	 * set to namespaceURI (JDOM by default will not set the child elements to
+	 * the same namespace as the element modified but will override them with
+	 * blank namespaces).
+	 * 
+	 * @param dataElement
+	 * @param namespaceURI
+	 */
+	private void updateElementNamespace(Element dataElement, String namespaceURI) {
+		dataElement.setNamespace(Namespace.getNamespace(namespaceURI));
+		Iterator<?> iterator = dataElement.getDescendants();
+		while (iterator.hasNext()) {
+			Object descendantObject = iterator.next();
+			if (descendantObject instanceof Element) {
+				Element childElement = (Element) descendantObject;
+				if (childElement.getNamespaceURI() == null) {
+					childElement.setNamespace(Namespace
+							.getNamespace(namespaceURI));
+				}
+			}
+		}
+	}
+
+	private boolean isXMLInput(String key) {
+		boolean result = false;
+		for (int i = 0; i < inputNames.length; i++) {
+			if (inputNames[i].equals(key)) {
+				result = inputTypes[i].indexOf("'text/xml'") != -1;
+			}
+		}
+		return result;
+	}
+
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/xmlsplitter/XMLOutputSplitter.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/xmlsplitter/XMLOutputSplitter.java
new file mode 100644
index 0000000..4ad5061
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/xmlsplitter/XMLOutputSplitter.java
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2003 The University of Manchester 
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.  Authorship
+ * of the modifications may be determined from the ChangeLog placed at
+ * the end of this file.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ *
+ ****************************************************************
+ * Source code information
+ * -----------------------
+ * Filename           $RCSfile: XMLOutputSplitter.java,v $
+ * Revision           $Revision: 1.2 $
+ * Release status     $State: Exp $
+ * Last modified on   $Date: 2008/08/08 10:28:07 $
+ *               by   $Author: stain $
+ * Created on 16-May-2006
+ *****************************************************************/
+package net.sf.taverna.wsdl.xmlsplitter;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
+import net.sf.taverna.wsdl.parser.BaseTypeDescriptor;
+import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+
+import org.apache.axis.encoding.Base64;
+import org.jdom.Attribute;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+import org.jdom.output.XMLOutputter;
+
+public class XMLOutputSplitter {
+
+	private TypeDescriptor typeDescriptor;
+	private String[] outputNames;
+	private String[] inputNames;
+	private String[] outputTypes;
+
+	public XMLOutputSplitter(TypeDescriptor typeDescriptor,
+			String[] outputNames, String[] outputTypes,String[] inputNames) {
+		this.typeDescriptor = typeDescriptor;
+		this.outputNames = outputNames;
+		this.inputNames = inputNames;
+		this.outputTypes = outputTypes;
+	}
+
+	@SuppressWarnings("unchecked")
+	public Map<String, Object> execute(Map<String, String> inputMap)
+			throws XMLSplitterExecutionException {
+
+		Map<String, Object> result = new HashMap<String, Object>();
+		List<String> outputNameList = Arrays.asList(outputNames);
+
+		String xml = inputMap.get(inputNames[0]);
+		try {
+			Document doc = new SAXBuilder().build(new StringReader(xml));
+			List<Element> children = doc.getRootElement().getChildren();
+			if (typeDescriptor instanceof ArrayTypeDescriptor) {
+				if (outputNames.length > 1)
+					throw new XMLSplitterExecutionException(
+							"Unexpected, multiple output names for ArrayType");
+				executeForArrayType(result, children);
+			} else {
+				executeForComplexType(result, outputNameList, children, doc.getRootElement().getAttributes());
+			}
+
+			// populate missing outputs with empty strings for basic types,
+			// empty elements for complex/array types.
+			for (int i = 0; i < outputNames.length; i++) {
+				if (result.get(outputNames[i]) == null) {
+					if (outputTypes[i].equals("'text/xml'")) {
+						result
+								.put(outputNames[i], "<" + outputNames[i]
+										+ " />");
+					} else if (outputTypes[i].startsWith("l('")) {
+						result.put(outputNames[i], new ArrayList<Object>());
+					} else {
+						result.put(outputNames[i], "");
+					}
+
+				}
+			}
+		} catch (JDOMException e) {
+			throw new XMLSplitterExecutionException("Unable to parse XML: " + xml, e);
+		} catch (IOException e) {
+			throw new XMLSplitterExecutionException("IOException parsing XML: " + xml,
+					e);
+		}
+
+		return result;
+	}
+
+	private void executeForArrayType(Map<String, Object> result,
+			List<Element> children) {
+		ArrayTypeDescriptor arrayDescriptor = (ArrayTypeDescriptor) typeDescriptor;
+		List<String> values = new ArrayList<String>();
+		XMLOutputter outputter = new XMLOutputter();
+
+		boolean isInnerBaseType = arrayDescriptor.getElementType() instanceof BaseTypeDescriptor;
+		if (isInnerBaseType) {
+			values = extractBaseTypeArrayFromChildren(children);
+		} else {
+			for (Element child : children) {
+				values.add(outputter.outputString(child));
+			}
+		}
+		result.put(outputNames[0], values);
+	}
+
+	@SuppressWarnings({ "unchecked" })
+	private void executeForComplexType(Map<String, Object> result,
+			List<String> outputNameList, List<Element> children, List<Attribute> list)
+			throws IOException {               
+
+		XMLOutputter outputter = new XMLOutputter();
+		for (Element child : children) {
+			
+			if (outputNameList.contains(child.getName())) {
+				int i = outputNameList.indexOf(child.getName());
+				TypeDescriptor descriptorForChild = ((ComplexTypeDescriptor) typeDescriptor)
+						.elementForName(outputNames[i]);
+				if (outputTypes[i].startsWith("l(")
+						&& descriptorForChild instanceof ArrayTypeDescriptor
+						&& !((ArrayTypeDescriptor) descriptorForChild)
+								.isWrapped()) {
+					boolean isXMLContent = outputTypes[i].contains("text/xml");
+					result.put(child.getName(), extractDataListFromChildList(
+							children, isXMLContent));
+                    break;
+				} else {
+					if (outputTypes[i].equals("'text/xml'")
+							|| outputTypes[i].equals("l('text/xml')")) {
+						String xmlText = outputter.outputString(child);
+						result.put(child.getName(), xmlText);
+					} else if (outputTypes[i]
+							.equals("'application/octet-stream'")) { // base64Binary
+						
+						byte[] data = Base64.decode(child
+								.getText());
+						result.put(child.getName(), data);
+					} else if (outputTypes[i].equals("l('text/plain')")) { // an
+																			// inner
+																			// element
+																			// containing
+																			// a
+																			// list
+						result.put(child.getName(),
+								extractBaseTypeArrayFromChildren(child
+										.getChildren()));
+					} else {
+						result.put(child.getName(), child.getText());
+					}
+				}
+			}
+		}
+		for (Attribute attribute : list) {
+			if (outputNameList.contains("1" + attribute.getName())) {
+				result.put("1" + attribute.getName(), attribute.getValue());
+			} else if (outputNameList.contains(attribute.getName())) {
+				result.put(attribute.getName(), attribute.getValue());
+			}
+		}
+	}
+
+	private List<String> extractDataListFromChildList(List<Element> children,
+			boolean isXMLContent) {
+		List<String> result = new ArrayList<String>();
+		XMLOutputter outputter = new XMLOutputter();
+		for (Element child : children) {
+			if (!isXMLContent) {
+				result.add(child.getTextTrim());
+			} else {
+				result.add(outputter.outputString(child));
+			}
+		}
+		return result;
+	}
+
+	private List<String> extractBaseTypeArrayFromChildren(List<Element> children) {
+		List<String> result = new ArrayList<String>();
+		for (Element child : children) {
+			result.add(child.getTextTrim());
+		}
+		return result;
+	}
+
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/xmlsplitter/XMLSplitterExecutionException.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/xmlsplitter/XMLSplitterExecutionException.java
new file mode 100644
index 0000000..6ec1720
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/xmlsplitter/XMLSplitterExecutionException.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.xmlsplitter;
+
+public class XMLSplitterExecutionException extends Exception {
+
+	private static final long serialVersionUID = 5623707293500493612L;
+
+	public XMLSplitterExecutionException(String msg, Throwable cause) {
+		super(msg, cause);
+	}
+
+	public XMLSplitterExecutionException(String msg) {
+		super(msg);
+	}
+}
diff --git a/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/xmlsplitter/XMLSplitterSerialisationHelper.java b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/xmlsplitter/XMLSplitterSerialisationHelper.java
new file mode 100644
index 0000000..e6e0fbb
--- /dev/null
+++ b/taverna-wsdl-generic/src/main/java/net/sf/taverna/wsdl/xmlsplitter/XMLSplitterSerialisationHelper.java
@@ -0,0 +1,359 @@
+/*
+ * Copyright (C) 2003 The University of Manchester 
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.  Authorship
+ * of the modifications may be determined from the ChangeLog placed at
+ * the end of this file.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ *
+ ****************************************************************
+ * Source code information
+ * -----------------------
+ * Filename           $RCSfile: XMLSplitterSerialisationHelper.java,v $
+ * Revision           $Revision: 1.2 $
+ * Release status     $State: Exp $
+ * Last modified on   $Date: 2008/08/08 10:28:08 $
+ *               by   $Author: stain $
+ * Created on 16-May-2006
+ *****************************************************************/
+package net.sf.taverna.wsdl.xmlsplitter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
+import net.sf.taverna.wsdl.parser.AttributeTypeDescriptor;
+import net.sf.taverna.wsdl.parser.BaseTypeDescriptor;
+import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+
+import org.apache.log4j.Logger;
+import org.jdom.Content;
+import org.jdom.Element;
+import org.jdom.Namespace;
+
+/**
+ * A helper class that supports the XMLOutputSplitter and XMLInputSplitter,
+ * providing the ability for each to be serialised/deserialised to and from the
+ * extensions XML for the ScuflModel XML when storing a workflow. This XML
+ * describes the TypeDescriptor tree that the Splitter wraps.
+ * 
+ * @author Stuart Owen
+ * @author Asger Askov-Bleking
+ * 
+ */
+
+public class XMLSplitterSerialisationHelper {
+
+	public final static Namespace XScuflNS = Namespace.getNamespace("s",
+			"http://org.embl.ebi.escience/xscufl/0.1alpha");
+
+	private static Logger logger = Logger
+			.getLogger(XMLSplitterSerialisationHelper.class);
+
+	/**
+	 * Generates the extensions XML that describes the TypeDescriptor to allow
+	 * an XMLInputSplitter or XMLOutputSplitter to be reconstructed using
+	 * consumeXML.
+	 */
+	public static Element typeDescriptorToExtensionXML(TypeDescriptor descriptor) {
+		Element result = new Element("extensions", XScuflNS);
+		Element type = null;
+		if (descriptor instanceof ComplexTypeDescriptor) {
+			type = constructElementForComplexType(
+					(ComplexTypeDescriptor) descriptor, new ArrayList<String>());
+		}
+		else if (descriptor instanceof ArrayTypeDescriptor) {
+			type = constructElementForArrayType(
+					(ArrayTypeDescriptor) descriptor, new ArrayList<String>());
+		}
+		result.addContent(type);
+		return result;
+	}
+
+	/**
+	 * Generates the TypeDescriptor structurefrom the extensions XML element
+	 * provided. This assumes that the root of the structure is <complextype/>.
+	 * This will be the same xml generated by provideXML.
+	 */
+	public static TypeDescriptor extensionXMLToTypeDescriptor(Element element) {
+		Element child = (Element) element.getChildren().get(0);
+		return buildTypeDescriptorFromElement(child,
+				new HashMap<String, TypeDescriptor>());
+	}
+
+	private static Element constructElementForArrayType(
+			ArrayTypeDescriptor descriptor, List<String> existingsTypes) {
+		Element result = new Element("arraytype", XScuflNS);
+		if (existingsTypes.contains(descriptor.getQname().toString())) {
+			result.setAttribute("id", descriptor.getQname().toString());
+			populateElement(result, descriptor);
+			result.removeAttribute("qname");
+		} else {
+			existingsTypes.add(descriptor.getQname().toString());
+			populateElement(result, descriptor);
+			Element elementType = new Element("elementtype", XScuflNS);
+			if (descriptor.getElementType() instanceof ComplexTypeDescriptor) {
+				elementType.addContent(constructElementForComplexType(
+						(ComplexTypeDescriptor) descriptor.getElementType(),
+						existingsTypes));
+			} else if (descriptor.getElementType() instanceof ArrayTypeDescriptor) {
+				elementType.addContent(constructElementForArrayType(
+						(ArrayTypeDescriptor) descriptor.getElementType(),
+						existingsTypes));
+			} else if (descriptor.getElementType() instanceof BaseTypeDescriptor) {
+				Element element = new Element("basetype", XScuflNS);
+				populateElement(element, descriptor.getElementType());
+				elementType.addContent(element);
+			}
+			result.addContent(elementType);
+		}
+		return result;
+	}
+
+	private static Element constructElementForComplexType(
+			ComplexTypeDescriptor descriptor, List<String> existingsTypes) {
+		Element result = new Element("complextype", XScuflNS);
+		if (existingsTypes.contains(descriptor.getQname().toString())) {
+			result.setAttribute("id", descriptor.getQname().toString());
+			populateElement(result, descriptor);
+			result.removeAttribute("qname");
+		} else {
+			existingsTypes.add(descriptor.getQname().toString());
+			populateElement(result, descriptor);
+			Element elements = new Element("elements", XScuflNS);
+			for (TypeDescriptor desc : descriptor.getElements()) {
+				Element element = null;
+				if (desc instanceof ComplexTypeDescriptor) {
+					element = constructElementForComplexType(
+							(ComplexTypeDescriptor) desc, existingsTypes);
+				} else if (desc instanceof ArrayTypeDescriptor) {
+					element = constructElementForArrayType(
+							(ArrayTypeDescriptor) desc, existingsTypes);
+				} else if (desc instanceof BaseTypeDescriptor) {
+					element = new Element("basetype", XScuflNS);
+					populateElement(element, desc);
+				}
+				if (element != null)
+					elements.addContent(element);
+			}
+			result.addContent(elements);
+			List<TypeDescriptor> attributeDescriptors = descriptor.getAttributes();
+			if (attributeDescriptors != null && attributeDescriptors.size() > 0) {
+				Element attributes = new Element("attributes", XScuflNS);
+				for (TypeDescriptor desc : attributeDescriptors) {
+					Element attribute = new Element("attribute", XScuflNS);
+					populateElement(attribute, desc);
+					attributes.addContent(attribute);
+				}
+				result.addContent(attributes);
+			}
+		}
+		return result;
+	}
+
+	private static void populateElement(Element element,
+			TypeDescriptor descriptor) {
+		element.setAttribute("optional", String
+				.valueOf(descriptor.isOptional()));
+		element.setAttribute("unbounded", String.valueOf(descriptor
+				.isUnbounded()));
+		if (descriptor instanceof ArrayTypeDescriptor) {
+			element.setAttribute("wrapped", String
+					.valueOf(((ArrayTypeDescriptor) descriptor).isWrapped()));
+		}
+		element.setAttribute("typename", descriptor.getType());
+		element.setAttribute("name", descriptor.getName() == null ? ""
+				: descriptor.getName());
+		element.setAttribute("qname", descriptor.getQname().toString());
+		if (descriptor.getDocumentation() != null){
+           Element annotationElement =
+                   new Element("annotation", Namespace.getNamespace("xsd", "http://www.w3.org/2001/XMLSchema"));
+           Element documentationElemenet =
+                    new Element("documentation", Namespace.getNamespace("xsd", "http://www.w3.org/2001/XMLSchema"));
+            documentationElemenet.setText(descriptor.getDocumentation());
+            annotationElement.addContent(documentationElemenet);
+            element.addContent(annotationElement);
+		}
+
+	}
+
+	private static TypeDescriptor buildTypeDescriptorFromElement(
+			Element element, HashMap<String, TypeDescriptor> existingsTypes) {
+		TypeDescriptor result = null;
+		if (element.getAttributeValue("id") != null) {
+			TypeDescriptor stored = existingsTypes.get(element
+					.getAttributeValue("id"));
+			if (stored == null)
+				logger.fatal("Missing reference to parent type with id="
+						+ element.getAttributeValue("id"));
+			else {
+				result = createFromCache(stored, element);
+			}
+		}
+
+		if (result == null) {
+			if (element.getName().equalsIgnoreCase("complextype")) {
+				result = new ComplexTypeDescriptor();
+				populateDescriptor(element, result);
+				existingsTypes.put(result.getQname().toString(), result);
+				Element elements = element.getChild("elements", XScuflNS);
+				for (Iterator<?> iterator = elements.getChildren().iterator(); iterator
+						.hasNext();) {
+					Element childElement = (Element) iterator.next();
+					((ComplexTypeDescriptor) result).getElements().add(
+							buildTypeDescriptorFromElement(childElement,
+									existingsTypes));
+				}
+				Element attributes = element.getChild("attributes", XScuflNS);
+				if (attributes != null) {
+					for (Iterator<?> iterator = attributes.getChildren().iterator(); iterator
+					.hasNext();) {
+						Element childElement = (Element) iterator.next();
+						((ComplexTypeDescriptor) result).getAttributes().add(
+								buildTypeDescriptorFromElement(childElement,
+										existingsTypes));
+					}
+				}
+
+			} else if (element.getName().equalsIgnoreCase("arraytype")) {
+
+				result = new ArrayTypeDescriptor();
+				populateDescriptor(element, result);
+				existingsTypes.put(result.getQname().toString(), result);
+				Element elementType = element.getChild("elementtype", XScuflNS);
+				((ArrayTypeDescriptor) result)
+						.setElementType(buildTypeDescriptorFromElement(
+								(Element) elementType.getChildren().get(0),
+								existingsTypes));
+				if (element.getAttribute("wrapped") != null) {
+					((ArrayTypeDescriptor) result).setWrapped(element
+							.getAttributeValue("wrapped").equalsIgnoreCase(
+									"true"));
+				} else {
+					// prior to the addition of the wrapped attribute, in the
+					// majority of cases an array
+					// would not be wrapped if it was flagged as unbounded.
+					((ArrayTypeDescriptor) result).setWrapped(!result
+							.isUnbounded());
+				}
+
+			} else if (element.getName().equalsIgnoreCase("basetype")) {
+				result = new BaseTypeDescriptor();
+				populateDescriptor(element, result);
+			} else if (element.getName().equalsIgnoreCase("attribute")) {
+				result = new AttributeTypeDescriptor();
+				populateDescriptor(element, result);
+			} else if (element.getName().equalsIgnoreCase("attribute")) {
+				result = new AttributeTypeDescriptor();
+				populateDescriptor(element, result);
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	 * Performs a shallow copy of the descriptor stored, but updates its name,
+	 * isbounded and optional This means that descriptors of the same type do
+	 * not need to be repeated throught the stored XML but also takes into
+	 * account parameters of the same type may have different name and
+	 * attributes to that stored
+	 * 
+	 * @param descriptor
+	 * @param element
+	 * @return
+	 */
+	private static TypeDescriptor createFromCache(TypeDescriptor descriptor,
+			Element element) {
+		TypeDescriptor result = null;
+		if (descriptor instanceof ArrayTypeDescriptor) {
+			ArrayTypeDescriptor array = new ArrayTypeDescriptor();
+			array.setQname(descriptor.getQname());
+			array.setElementType(((ArrayTypeDescriptor) descriptor)
+					.getElementType());
+			array.setWrapped(((ArrayTypeDescriptor) descriptor).isWrapped());
+			result = array;
+		} else if (descriptor instanceof ComplexTypeDescriptor) {
+			ComplexTypeDescriptor complex = new ComplexTypeDescriptor();
+			complex.setQname(descriptor.getQname());
+			complex.setElements(((ComplexTypeDescriptor) descriptor)
+					.getElements());
+			result = complex;
+		} else {
+			throw new IllegalArgumentException("Unexpected type descriptor: "
+					+ descriptor);
+		}
+		result.setType(descriptor.getType());
+
+		String name = element.getAttributeValue("name");
+		result.setName(name != null ? name : descriptor.getName());
+
+		String optional = element.getAttributeValue("optional");
+		if (optional != null) {
+			result.setOptional(optional.equalsIgnoreCase("true"));
+		} else {
+			result.setOptional(descriptor.isOptional());
+		}
+
+		String unbounded = element.getAttributeValue("unbounded");
+		if (unbounded != null) {
+			result.setUnbounded(unbounded.equalsIgnoreCase("true"));
+		} else {
+			result.setUnbounded(descriptor.isUnbounded());
+		}
+
+		return result;
+	}
+
+	private static void populateDescriptor(Element element,
+			TypeDescriptor result) {
+		result.setName(element.getAttributeValue("name"));
+		result.setType(element.getAttributeValue("typename"));
+		result.setOptional(element.getAttributeValue("optional")
+				.equalsIgnoreCase("true"));
+		result.setUnbounded(element.getAttributeValue("unbounded")
+				.equalsIgnoreCase("true"));
+
+		Element annotationChild =
+               element.getChild("annotation", Namespace.getNamespace("xsd", "http://www.w3.org/2001/XMLSchema"));
+        if (annotationChild != null){
+           List documentationChildren = annotationChild
+                    .getChildren("documentation", Namespace.getNamespace("xsd", "http://www.w3.org/2001/XMLSchema"));
+			 
+           String documentation = "";
+            for (Object documentationChild : documentationChildren) {
+                documentation += ((Element)documentationChild).getText();
+            }
+            if (!documentation.isEmpty()){
+               result.setDocumentation(documentation);
+            }
+        }
+
+		// qname has been added since 1.3.2-RC1 so need to test if missing for
+		// older workflows
+		// if missing it is resolved to an empty namespace and typename:
+		// {}typename
+		String qname = element.getAttributeValue("qname");
+		if (qname != null)
+			result.setQnameFromString(qname);
+	}
+
+}
diff --git a/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/parser/TypeDescriptorTest.java b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/parser/TypeDescriptorTest.java
new file mode 100644
index 0000000..c7be469
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/parser/TypeDescriptorTest.java
@@ -0,0 +1,240 @@
+/*
+ * Copyright (C) 2003 The University of Manchester 
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.  Authorship
+ * of the modifications may be determined from the ChangeLog placed at
+ * the end of this file.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ *
+ ****************************************************************
+ * Source code information
+ * -----------------------
+ * Filename           $RCSfile: TypeDescriptorTest.java,v $
+ * Revision           $Revision: 1.2 $
+ * Release status     $State: Exp $
+ * Last modified on   $Date: 2007/11/30 12:13:38 $
+ *               by   $Author: sowen70 $
+ * Created on 17-May-2006
+ *****************************************************************/
+package net.sf.taverna.wsdl.parser;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+public class TypeDescriptorTest extends TestCase {
+
+	// array of strings
+	public void testRetrieveSignitureForArrayDescriptor() {
+		ArrayTypeDescriptor desc = new ArrayTypeDescriptor();
+		desc.setName("AnArray");
+		desc.setType("arrayofstring");
+
+		BaseTypeDescriptor base = new BaseTypeDescriptor();
+		base.setName("");
+		base.setType("string");
+
+		desc.setElementType(base);
+
+		String[] names = new String[1];
+		Class<?>[] types = new Class[1];
+
+		List<TypeDescriptor> params = new ArrayList<TypeDescriptor>();
+		params.add(desc);
+		TypeDescriptor.retrieveSignature(params, names, types);
+
+		assertEquals("AnArray", names[0]);
+		assertEquals(String[].class, types[0]);
+	}
+
+	// array of strings, but type for array is defined as string
+	// (which is logically warped, but some wsdl's describe their string arrays
+	// this way).
+	public void testRetrieveSignitureForArrayDescriptor3() {
+		ArrayTypeDescriptor desc = new ArrayTypeDescriptor();
+		desc.setName("AnArray");
+		desc.setType("string");
+
+		BaseTypeDescriptor base = new BaseTypeDescriptor();
+		base.setName("");
+		base.setType("string");
+
+		desc.setElementType(base);
+
+		String[] names = new String[1];
+		Class<?>[] types = new Class[1];
+
+		List<TypeDescriptor> params = new ArrayList<TypeDescriptor>();
+		params.add(desc);
+		TypeDescriptor.retrieveSignature(params, names, types);
+
+		assertEquals("AnArray", names[0]);
+		assertEquals(String[].class, types[0]);
+	}
+
+	// array of complex types
+	public void testRetrieveSignitureForArrayDescriptor2() {
+		ArrayTypeDescriptor desc = new ArrayTypeDescriptor();
+		desc.setName("AnArray");
+		desc.setType("complextype");
+
+		ComplexTypeDescriptor complex = new ComplexTypeDescriptor();
+		complex.setName("complex");
+		complex.setType("complextype");
+
+		desc.setElementType(complex);
+
+		String[] names = new String[1];
+		Class<?>[] types = new Class[1];
+
+		List<TypeDescriptor> params = new ArrayList<TypeDescriptor>();
+		params.add(desc);
+		TypeDescriptor.retrieveSignature(params, names, types);
+
+		assertEquals("AnArray", names[0]);
+		assertEquals(org.w3c.dom.Element.class, types[0]);
+	}
+
+	public void testForCyclicTrue() {
+		ComplexTypeDescriptor a = new ComplexTypeDescriptor();
+		a.setName("a");
+		a.setType("outertype");
+
+		ComplexTypeDescriptor b = new ComplexTypeDescriptor();
+		b.setName("b");
+		b.setType("middletype");
+
+		ComplexTypeDescriptor c = new ComplexTypeDescriptor();
+		c.setName("c");
+		c.setType("innertype");
+
+		a.getElements().add(b);
+		b.getElements().add(c);
+		c.getElements().add(a);
+
+		assertTrue("should be identified as cyclic", TypeDescriptor.isCyclic(a));
+	}
+
+	public void testForCyclicTrueWithArray() {
+		ComplexTypeDescriptor a = new ComplexTypeDescriptor();
+		a.setName("a");
+		a.setType("outertype");
+
+		ArrayTypeDescriptor b = new ArrayTypeDescriptor();
+		b.setName("b");
+		b.setType("arraytype");
+
+		ComplexTypeDescriptor c = new ComplexTypeDescriptor();
+		c.setName("c");
+		c.setType("innertype");
+
+		a.getElements().add(b);
+		b.setElementType(c);
+		c.getElements().add(a);
+
+		assertTrue("should be identified as cyclic", TypeDescriptor.isCyclic(a));
+	}
+
+	public void testForCyclicFalse() {
+		ComplexTypeDescriptor a = new ComplexTypeDescriptor();
+		a.setName("a");
+		a.setType("person");
+
+		ComplexTypeDescriptor b = new ComplexTypeDescriptor();
+		b.setName("b");
+		b.setType("name");
+
+		ComplexTypeDescriptor c = new ComplexTypeDescriptor();
+		c.setName("c");
+		c.setType("age");
+
+		a.getElements().add(b);
+		a.getElements().add(c);
+
+		assertFalse("should be not identified as cyclic", TypeDescriptor
+				.isCyclic(a));
+	}
+
+	public void testQNameAsString() {
+		ComplexTypeDescriptor a = new ComplexTypeDescriptor();
+		a.setQnameFromString("{URI}localPart");
+		assertEquals("URI", a.getQname().getNamespaceURI());
+		assertEquals("localPart", a.getQname().getLocalPart());
+
+		a = new ComplexTypeDescriptor();
+		a.setQnameFromString("{}localPart");
+		assertEquals("", a.getQname().getNamespaceURI());
+		assertEquals("localPart", a.getQname().getLocalPart());
+	}
+	
+	public void testBaseTypeKnownSigniture() {
+		TypeDescriptor decimal=new BaseTypeDescriptor();
+		decimal.setName("adecimal");
+		decimal.setType("decimal");
+		
+		List<TypeDescriptor> params=new ArrayList<TypeDescriptor>();
+		String [] names=new String[1];
+		Class<?> [] types=new Class[1];
+		params.add(decimal);
+		TypeDescriptor.retrieveSignature(params, names, types);
+		
+		assertEquals("should only be 1 type",1,types.length);
+		assertEquals("should only be 1 name",1,names.length);
+		
+		assertEquals("name should be adecimal","adecimal",names[0]);
+		assertEquals("type should be double",Double.TYPE,types[0]);
+	}
+	
+	public void testBaseTypeUnrecognisedSigniture() {
+		TypeDescriptor date=new BaseTypeDescriptor();
+		date.setName("adate");
+		date.setType("date");
+		
+		List<TypeDescriptor> params=new ArrayList<TypeDescriptor>();
+		String [] names=new String[1];
+		Class<?> [] types=new Class[1];
+		params.add(date);
+		TypeDescriptor.retrieveSignature(params, names, types);
+		
+		assertEquals("should only be 1 type",1,types.length);
+		assertEquals("should only be 1 name",1,names.length);
+		
+		assertEquals("name should be adecimal","adate",names[0]);
+		assertEquals("type should be string",String.class,types[0]);
+	}
+	
+	public void testComplex() {
+		TypeDescriptor complex=new ComplexTypeDescriptor();
+		complex.setName("acomplex");
+		complex.setType("complextype");
+		
+		List<TypeDescriptor> params=new ArrayList<TypeDescriptor>();
+		String [] names=new String[1];
+		Class<?> [] types=new Class[1];
+		params.add(complex);
+		TypeDescriptor.retrieveSignature(params, names, types);
+		
+		assertEquals("should only be 1 type",1,types.length);
+		assertEquals("should only be 1 name",1,names.length);
+		
+		assertEquals("name should be adecimal","acomplex",names[0]);
+		assertEquals("type should be string",org.w3c.dom.Element.class,types[0]);
+	}
+
+}
diff --git a/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/parser/WSDLParserTest.java b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/parser/WSDLParserTest.java
new file mode 100644
index 0000000..f111619
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/parser/WSDLParserTest.java
@@ -0,0 +1,295 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.parser;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.net.URL;
+import java.util.List;
+
+import javax.wsdl.Operation;
+import javax.xml.namespace.QName;
+
+import net.sf.taverna.wsdl.testutils.WSDLTestHelper;
+
+import org.junit.Test;
+
+public class WSDLParserTest {
+	
+	@Test
+	public void testGetOperations() throws Exception {
+		WSDLParser parser = new WSDLParser(wsdlResourcePath("eutils/eutils_lite.wsdl"));
+		List<Operation> operations = parser.getOperations();
+		assertEquals(
+				"wrong number of operations found (wsdl may have changed)", 12,
+				operations.size());
+		Operation op = operations.get(0);
+		assertEquals("wrong name for first operation", "run_eGquery", op
+				.getName());
+		assertEquals("wrong style", "document", parser.getStyle());
+	}
+
+	private String wsdlResourcePath(String wsdlName) throws Exception {
+		return WSDLTestHelper.wsdlResourcePath(wsdlName);
+	}
+
+	@Test
+	public void testGetActionURI() throws Exception {
+		WSDLParser parser = new WSDLParser(wsdlResourcePath("eutils/eutils_lite.wsdl"));
+		String actionURI = parser.getSOAPActionURI("run_eInfo");
+		assertEquals("action uri is wrong", "einfo", actionURI);
+	}
+
+	@Test
+	public void testComplexTypeFromImport() throws Exception {
+		WSDLParser parser = new WSDLParser(wsdlResourcePath("eutils/eutils_lite.wsdl"));
+
+		List<TypeDescriptor> inputs = parser
+				.getOperationInputParameters("run_eInfo");
+		List<TypeDescriptor> outputs = parser
+				.getOperationOutputParameters("run_eInfo");
+		assertEquals("wrong number of inputs", 1, inputs.size());
+		assertEquals("wrong number of outputs", 1, outputs.size());
+		assertTrue("input should be complex",
+				inputs.get(0) instanceof ComplexTypeDescriptor);
+		ComplexTypeDescriptor complexTypeDesc = (ComplexTypeDescriptor) inputs
+				.get(0);
+		assertEquals("wrong name", "parameters", complexTypeDesc.getName());
+		assertEquals("wrong number of elements", 3, complexTypeDesc
+				.getElements().size());
+
+		TypeDescriptor typeDesc = complexTypeDesc
+				.getElements().get(0);
+
+		assertEquals("wrong name", "db", typeDesc.getName());
+		assertEquals("wrong type", "string", typeDesc.getType());
+		assertTrue("db should be optional", typeDesc.isOptional());
+		assertFalse("db should not be unbounded", typeDesc.isUnbounded());
+
+		typeDesc = complexTypeDesc.getElements().get(1);
+		assertEquals("wrong name", "tool", typeDesc.getName());
+		assertEquals("wrong type", "string", typeDesc.getType());
+		assertTrue("tool should be optional", typeDesc.isOptional());
+		assertFalse("tool should not be unbounded", typeDesc.isUnbounded());
+
+		typeDesc = complexTypeDesc.getElements().get(2);
+		assertEquals("wrong name", "email", typeDesc.getName());
+		assertEquals("wrong type", "string", typeDesc.getType());
+		assertTrue("email should be optional", typeDesc.isOptional());
+		assertFalse("email should not be unbounded", typeDesc.isUnbounded());
+	}
+
+	@Test
+	public void testNestedComplexTypes() throws Exception {
+		WSDLParser parser = new WSDLParser(wsdlResourcePath("bind.wsdl"));
+
+		List<TypeDescriptor> inputs = parser
+				.getOperationInputParameters("BIVGetComplexRecord");
+		List<TypeDescriptor> outputs = parser
+				.getOperationOutputParameters("BIVGetComplexRecord");
+
+		assertEquals("wrong number of inputs", 1, inputs.size());
+		assertEquals("wrong number of outputs", 1, outputs.size());
+
+		assertEquals("wrong name for input", "bid", (inputs
+				.get(0)).getName());
+		assertEquals("wrong type for input", "int", (inputs
+				.get(0)).getType());
+
+		assertEquals("wrong name for output", "BIVComplex",
+				(outputs.get(0)).getName());
+		assertEquals("wrong type for output", "BIVComplex",
+				(outputs.get(0)).getType());
+		assertTrue("wrong descriptor class for output",
+				outputs.get(0) instanceof ComplexTypeDescriptor);
+
+		ComplexTypeDescriptor typeDesc = (ComplexTypeDescriptor) outputs.get(0);
+		assertEquals("wrong number of inner elements", 3, typeDesc
+				.getElements().size());
+		assertEquals("wrong name for first element", "bid",
+				(typeDesc.getElements().get(0)).getName());
+		assertEquals("wrong name for 2nd element", "spokeModel",
+				(typeDesc.getElements().get(1)).getName());
+		assertEquals("wrong name for 3rd element", "subunit",
+				(typeDesc.getElements().get(2)).getName());
+
+		assertTrue("3rd element should be instance of ArrayTypeDescriptor",
+				typeDesc.getElements().get(2) instanceof ArrayTypeDescriptor);
+		ArrayTypeDescriptor arrayTypeDesc = (ArrayTypeDescriptor) typeDesc
+				.getElements().get(2);
+
+		assertEquals("wrong type for 3rd element", "BIVMolecule", arrayTypeDesc
+				.getType());
+
+		typeDesc = (ComplexTypeDescriptor) arrayTypeDesc.getElementType();
+
+		assertEquals("wrong type for 3rd element", "BIVMolecule", typeDesc
+				.getType());
+
+		assertEquals("wrong number of elements in nested complex type", 7,
+				typeDesc.getElements().size());
+		assertEquals("wrong name for first element", "id",
+				(typeDesc.getElements().get(0)).getName());
+		assertEquals("wrong type for first element", "int",
+				(typeDesc.getElements().get(0)).getType());
+
+		assertEquals("wrong name for last element", "smid-hits",
+				(typeDesc.getElements().get(6)).getName());
+		assertEquals("wrong type for last element", "int",
+				(typeDesc.getElements().get(6)).getType());
+	}
+	
+	@Test
+	public void testMissingStyleInBinding() throws Exception {
+		WSDLParser parser = new WSDLParser(wsdlResourcePath("SBWReader.wsdl"));
+		assertEquals("Style should default to document if missing", "document",
+				parser.getStyle());
+	}
+
+	@Test
+	public void testBaseTypes() throws Exception {
+		WSDLParser parser = new WSDLParser(wsdlResourcePath("bind.wsdl"));
+
+		List<TypeDescriptor> inputs = parser
+				.getOperationInputParameters("BIVGetRecord");
+		assertEquals("wrong number of inputs", 1, inputs.size());
+		assertTrue("should not be base type",
+				inputs.get(0) instanceof BaseTypeDescriptor);
+		assertEquals("wrong name", "bid", (inputs.get(0))
+				.getName());
+		assertEquals("wrong type", "int", (inputs.get(0))
+				.getType());
+	}
+
+	@Test
+	public void testArrayType() throws Exception {
+		WSDLParser parser = new WSDLParser(wsdlResourcePath("bind.wsdl"));
+
+		List<TypeDescriptor> inputs = parser
+				.getOperationInputParameters("BIVGetRecords");
+		List<TypeDescriptor> outputs = parser
+				.getOperationOutputParameters("BIVGetRecords");
+		assertEquals("wrong number of inputs", 1, inputs.size());
+		assertTrue("input should be of AArrayTypeDescriptor",
+				inputs.get(0) instanceof ArrayTypeDescriptor);
+
+		ArrayTypeDescriptor arrayTypeDesc = (ArrayTypeDescriptor) inputs.get(0);
+
+		assertEquals("wrong name", "ids", arrayTypeDesc.getName());
+		assertEquals("wrong type", "ArrayOf_xsd_int", arrayTypeDesc.getType());
+
+		TypeDescriptor typeDesc = arrayTypeDesc.getElementType();
+
+		assertTrue("element should be of type BaseTypeDescriptor",
+				typeDesc instanceof BaseTypeDescriptor);
+		assertEquals("wrong type", "int", typeDesc.getType());
+
+		assertEquals("wrong number of outputs", 1, outputs.size());
+
+		assertTrue("output should be of ArrayTypeDescriptor",
+				outputs.get(0) instanceof ArrayTypeDescriptor);
+
+		arrayTypeDesc = (ArrayTypeDescriptor) outputs.get(0);
+		assertEquals("wrong name", "BIVRecords", arrayTypeDesc.getName());
+		assertEquals("wrong type", "ArrayOfBIVRecord", arrayTypeDesc.getType());
+
+		typeDesc = arrayTypeDesc.getElementType();
+
+		assertEquals("wrong type", "BIVRecord", typeDesc.getType());
+	}
+
+	@Test
+	public void testGoVizNoOutputs() throws Exception {
+		WSDLParser parser = new WSDLParser(wsdlResourcePath("GoViz.wsdl"));
+
+		List<TypeDescriptor> inputs = parser
+				.getOperationInputParameters("destroySession");
+		List<TypeDescriptor> outputs = parser
+				.getOperationOutputParameters("destroySession");
+
+		assertEquals("wrong number of inputs", 1, inputs.size());
+		assertEquals("wrong number of outputs", 0, outputs.size());
+
+		TypeDescriptor typeDesc = inputs.get(0);
+		assertTrue("input should be BaseType",
+				typeDesc instanceof BaseTypeDescriptor);
+		assertEquals("wrong name", "sessionID", typeDesc.getName());
+		assertEquals("wrong type", "string", typeDesc.getType());
+	}
+
+	@Test
+	public void testGetUseEncoded() throws Exception {
+		WSDLParser parser = new WSDLParser(wsdlResourcePath("bind.wsdl"));
+		String use = parser.getUse("BIVGetRecords");
+		assertEquals("use should be encoded", "encoded", use);
+	}
+
+	@Test
+	public void testGetUseLiteral() throws Exception {
+		WSDLParser parser = new WSDLParser(wsdlResourcePath("eutils/eutils_lite.wsdl"));
+		String use = parser.getUse("run_eInfo");
+		assertEquals("use should be literal", "literal", use);
+	}
+
+	@Test
+	public void testGetOperationNamespace() throws Exception {
+		WSDLParser parser = new WSDLParser(wsdlResourcePath("CurrencyExchangeService.wsdl"));
+		String operationNamespace = parser.getOperationNamespaceURI("getRate");
+		assertEquals("operation namespace is wrong",
+				"urn:xmethods-CurrencyExchange", operationNamespace);
+	}
+	
+	@Test
+	public void testGetOperationNamespace2() throws Exception {
+		WSDLParser parser = new WSDLParser(wsdlResourcePath("eutils/eutils_lite.wsdl"));
+		String operationNamespace = parser
+				.getOperationNamespaceURI("run_eInfo");
+		assertEquals("operation namespace is wrong",
+				"http://www.ncbi.nlm.nih.gov/soap/eutils/einfo",
+				operationNamespace);
+	}
+
+	@Test
+	public void testGetOperationElementQName() throws Exception {
+		WSDLParser parser = new WSDLParser(wsdlResourcePath("eutils/eutils_lite.wsdl"));
+		QName operationQName = parser.getOperationQname("run_eInfo");
+		assertEquals("element name is wrong", "eInfoRequest", operationQName
+				.getLocalPart());
+		assertEquals("operation namespace is wrong",
+				"http://www.ncbi.nlm.nih.gov/soap/eutils/einfo", operationQName
+						.getNamespaceURI());
+	}
+
+	@Test
+	public void testGetOperationElementQName2() throws Exception {
+		URL tav744Url = getClass().getResource(
+				"/net/sf/taverna/wsdl/parser/TAV-744/InstrumentService__.wsdl");
+		WSDLParser parser = new WSDLParser(tav744Url.toExternalForm());
+		QName operationQName = parser.getOperationQname("getList");
+		assertEquals("operation element name is wrong", "GetListRequest",
+				operationQName.getLocalPart());
+		assertEquals("operation namespace is wrong",
+				"http://InstrumentService.uniparthenope.it/InstrumentService",
+				operationQName.getNamespaceURI());
+	}
+}
diff --git a/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/parser/WSRFParserTest.java b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/parser/WSRFParserTest.java
new file mode 100644
index 0000000..8c6cede
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/parser/WSRFParserTest.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.parser;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.net.URL;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Check that WSDLParser can detect WSRF.
+ * Tests {@link WSDLParser#checkWSRF()}
+ * 
+ * @author Stian Soiland-Reyes
+ *
+ */
+public class WSRFParserTest {
+	
+	private URL counterServiceWSDL;
+	private WSDLParser wsdlParser;
+
+	@Before
+	public void findWSDL() {
+		String path = "wsrf/counterService/CounterService_.wsdl";
+		counterServiceWSDL = getClass().getResource(path);	
+		assertNotNull("Coult not find test WSDL " + path, counterServiceWSDL);
+	}
+	
+	@Test
+	public void isWSRF() throws Exception {
+		wsdlParser = new WSDLParser(counterServiceWSDL.toExternalForm());
+		assertTrue("Not recognized as WSRF service", wsdlParser.isWsrfService());
+	}
+
+	
+}
diff --git a/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/EncodedBodyBuilderTest.java b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/EncodedBodyBuilderTest.java
new file mode 100644
index 0000000..141305b
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/EncodedBodyBuilderTest.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.wsdl.parser.WSDLParser;
+import net.sf.taverna.wsdl.testutils.LocationConstants;
+import net.sf.taverna.wsdl.testutils.WSDLTestHelper;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.junit.Test;
+
+
+public class EncodedBodyBuilderTest implements LocationConstants {
+	
+	private String wsdlResourcePath(String wsdlName) throws Exception {
+		return WSDLTestHelper.wsdlResourcePath(wsdlName);
+	}
+
+	@Test
+	public void testSimpleCase() throws Exception {
+		Map<String,Object> inputMap = new HashMap<String, Object>();
+		
+		BodyBuilder builder = createBuilder(wsdlResourcePath("TestServices-rpcencoded.wsdl"), "countString");
+		
+		assertTrue("Wrong type of builder created",builder instanceof EncodedBodyBuilder);
+		
+		inputMap.put("str", "Roger Ramjet");
+		SOAPBodyElement body = builder.build(inputMap);
+		
+		String xml = body.getAsString();
+		
+		assertTrue("Contents of body are not as expected: actual body:"+xml,xml.contains("<str xsi:type=\"xsd:string\">Roger Ramjet</str>"));
+	}
+	
+	@Test
+	public void testStringArray() throws Exception {
+		Map<String,Object> inputMap = new HashMap<String, Object>();
+		
+		BodyBuilder builder = createBuilder(wsdlResourcePath("TestServices-rpcencoded.wsdl"), "countStringArray");
+		
+		assertTrue("Wrong type of builder created",builder instanceof EncodedBodyBuilder);
+		List<String> array=new ArrayList<String>();
+		array.add("one");
+		array.add("two");
+		array.add("three");
+		inputMap.put("array", array);
+		SOAPBodyElement body = builder.build(inputMap);
+		
+		String xml = body.getAsString();
+		
+		assertTrue("Contents of body are not as expected: actual body:"+xml,xml.contains("<string>one</string><string>two</string><string>three</string>"));
+	}
+	
+	@Test
+	public void testComplexType() throws Exception {
+		BodyBuilder builder = createBuilder(wsdlResourcePath("TestServices-rpcencoded.wsdl"), "personToString");
+		
+		assertTrue("Wrong type of builder created",builder instanceof EncodedBodyBuilder);
+		
+		String p = "<Person xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><name xsi:type=\"xsd:string\">bob</name><age xsi:type=\"xsd:int\">12</age></Person>";
+		
+		Map<String,Object> inputMap = new HashMap<String, Object>();
+		
+		inputMap.put("p",p);
+		SOAPBodyElement body = builder.build(inputMap);
+		
+		String xml = body.getAsString();
+		
+		System.out.println(xml);
+		
+		assertTrue("Type definition of Person is missing",xml.contains("<p xsi:type=\"ns1:Person\">"));
+		assertFalse("There shouldn't be ns2 declaration",xml.contains("xmlns:ns2"));
+		assertTrue("Missing data content",xml.contains("<name xsi:type=\"xsd:string\">bob</name><age xsi:type=\"xsd:int\">12</age>"));
+		
+	}
+	
+	protected BodyBuilder createBuilder(String wsdl, String operation) throws Exception {
+		WSDLParser parser = new WSDLParser(wsdl);
+		
+		return BodyBuilderFactory.instance().create(parser, operation, parser.getOperationInputParameters(operation));
+	}
+}
diff --git a/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/LiteralBodyBuilderTest.java b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/LiteralBodyBuilderTest.java
new file mode 100644
index 0000000..340f885
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/LiteralBodyBuilderTest.java
@@ -0,0 +1,170 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import net.sf.taverna.wsdl.parser.WSDLParser;
+import net.sf.taverna.wsdl.testutils.LocationConstants;
+import net.sf.taverna.wsdl.testutils.WSDLTestHelper;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.w3c.dom.Node;
+
+public class LiteralBodyBuilderTest implements LocationConstants{
+	
+	private String wsdlResourcePath(String wsdlName) throws Exception {
+		return WSDLTestHelper.wsdlResourcePath(wsdlName);
+	}
+
+	@Test
+	public void testUnqualifiedNamespaces() throws Exception {
+		BodyBuilder builder = createBuilder(wsdlResourcePath("whatizit.wsdl"), "queryPmid");
+		
+		assertTrue("Is is the wrong type, it should be LiteralBodyBuilder",builder instanceof LiteralBodyBuilder);
+		
+		String parameters = "<parameters xmlns=\"http://www.ebi.ac.uk/webservices/whatizit/ws\"><pipelineName xmlns=\"\">swissProt</pipelineName><pmid xmlns=\"\">1234</pmid></parameters>";
+		Map<String,Object> inputMap = new HashMap<String, Object>();
+		inputMap.put("parameters", parameters);
+		
+		SOAPBodyElement body = builder.build(inputMap);
+		
+		String xml = body.getAsString();
+		
+		assertTrue("Content of body is incorrect in the definition of the pipelineName and pmid:"+xml,xml.contains("<pipelineName xmlns=\"\">swissProt</pipelineName><pmid xmlns=\"\">1234</pmid>"));
+		assertTrue("Wrapping element should have its namespace declared",xml.contains("<ns1:queryPmid"));
+	}
+	
+	@Test
+	public void testQualifiedUnwrapped() throws Exception {
+		BodyBuilder builder = createBuilder(wsdlResourcePath("TestServices-unwrapped.wsdl"), "countString");
+		
+		assertTrue("Is is the wrong type, it should be LiteralBodyBuilder",builder instanceof LiteralBodyBuilder);
+		Map<String,Object>inputMap = new HashMap<String, Object>();
+		inputMap.put("str", "bob");
+		
+		String xml = builder.build(inputMap).getAsString();
+		
+		assertEquals("XML should containe qualifed namespace for str",xml,"<ns1:str xmlns:ns1=\"http://testing.org\">bob</ns1:str>");
+	}
+	
+	@Test
+	public void testUnwrappedSimple() throws Exception {
+		BodyBuilder builder = createBuilder(wsdlResourcePath("TestServices-unwrapped.wsdl"), "countString");
+		
+		assertTrue("Wrong type of builder, it should be Literal based",builder instanceof LiteralBodyBuilder);
+		
+		Map<String,Object> inputMap = new HashMap<String, Object>();
+		inputMap.put("str", "12345");
+		
+		SOAPBodyElement body = builder.build(inputMap);
+		
+		assertEquals("Input element should be named str:","str",body.getNodeName());
+		assertEquals("Value should be 12345:","12345",body.getFirstChild().getNextSibling().getNodeValue());
+	}
+	
+	@Test
+	public void testUnwrappedArray() throws Exception {
+		BodyBuilder builder = createBuilder(wsdlResourcePath("TestServices-unwrapped.wsdl"), "countStringArray");
+		
+		assertTrue("Wrong type of builder, it should be Literal based",builder instanceof LiteralBodyBuilder);
+		
+		Map<String,Object> inputMap = new HashMap<String, Object>();
+		inputMap.put("array", "<array><item>1</item><item>2</item><item>3</item></array>");
+		
+		SOAPBodyElement body = builder.build(inputMap);
+		
+		String xml = body.getAsString();
+		assertEquals("Outer element should be named array. xml = "+xml,"array",body.getNodeName());
+		
+		Node itemElement = body.getFirstChild().getNextSibling();
+		assertEquals("Array element should be named item. xml = "+xml,"item",itemElement.getNodeName());
+		assertEquals("First Array element should have the value '1'. xml = "+xml,"1",itemElement.getFirstChild().getNodeValue());
+	}
+	
+	@Test 
+	public void testOperationElementNameEUtils() throws Exception {
+		BodyBuilder builder = createBuilder(wsdlResourcePath("eutils/eutils_lite.wsdl"), "run_eInfo");
+
+		assertTrue("Wrong type of builder, it should be Literal based",builder instanceof LiteralBodyBuilder);
+		Map<String,Object> inputMap = new HashMap<String, Object>();
+		inputMap.put("parameters",
+		// Note: Don't use xmlns="" as it would also affect <parameters>
+				// - which should not affect the namespace of the soap body
+				// element. The element qname of the SOAPBodyElement should be
+				// determined by the schema only
+				"<parameters xmlns:e='http://www.ncbi.nlm.nih.gov/soap/eutils/einfo'>"
+						+ "<e:db>database</e:db>" + "<e:tool>myTool</e:tool>"
+						+ "<e:email>nobody@nowhere.net</e:email>"
+						+ "</parameters>");
+		SOAPBodyElement body = builder.build(inputMap);
+		assertEquals("QName of SOAP body's element did not match expected qname ", 
+				new QName("http://www.ncbi.nlm.nih.gov/soap/eutils/einfo", "eInfoRequest"), 
+				body.getQName());
+	}
+	
+	@Test 
+	public void testOperationElementNameTAV744() throws Exception {
+		URL tav744Url = getClass().getResource(
+				"/net/sf/taverna/wsdl/parser/TAV-744/InstrumentService__.wsdl");
+		
+		BodyBuilder builder = createBuilder(tav744Url.toExternalForm(), "getList");
+
+		assertTrue("Wrong type of builder, it should be Literal based",builder instanceof LiteralBodyBuilder);
+		Map<String,Object> inputMap = new HashMap<String, Object>();
+		// No inputs
+		SOAPBodyElement body = builder.build(inputMap);
+		assertEquals("QName of SOAP body's element did not match expected qname ", 
+				new QName("http://InstrumentService.uniparthenope.it/InstrumentService", "GetListRequest"), 
+				body.getQName());
+	}
+	
+	@Test
+	public void testRPCLiteral() throws Exception {
+		BodyBuilder builder = createBuilder(wsdlResourcePath("MyService-rpc-literal.wsdl"), "countString");
+		
+		assertTrue("Wrong type of builder, it should be Literal based",builder instanceof LiteralBodyBuilder);
+		
+		Map<String,Object> inputMap = new HashMap<String, Object>();
+		inputMap.put("str", "abcdef");
+		
+		SOAPBodyElement body = builder.build(inputMap);
+		
+		assertEquals("Outer element should be named countString","countString",body.getNodeName());
+		Node strNode = body.getFirstChild();
+		assertEquals("Inner element should be called 'str'","str",strNode.getNodeName());
+		assertEquals("str content should be abcdef","abcdef",strNode.getFirstChild().getNextSibling().getNodeValue());
+	}
+	
+	protected BodyBuilder createBuilder(String wsdl, String operation) throws Exception {
+		WSDLParser parser = new WSDLParser(wsdl);
+		return BodyBuilderFactory.instance().create(parser, operation, parser.getOperationInputParameters(operation));
+	}
+}
diff --git a/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/SOAPResponseEncodedTest.java b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/SOAPResponseEncodedTest.java
new file mode 100644
index 0000000..ab5e7a2
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/SOAPResponseEncodedTest.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2003 The University of Manchester 
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.  Authorship
+ * of the modifications may be determined from the ChangeLog placed at
+ * the end of this file.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ *
+ ****************************************************************
+ * Source code information
+ * -----------------------
+ * Filename           $RCSfile: SOAPResponseEncodedTest.java,v $
+ * Revision           $Revision: 1.4 $
+ * Release status     $State: Exp $
+ * Last modified on   $Date: 2008/08/29 16:15:54 $
+ *               by   $Author: sowen70 $
+ * Created on 08-May-2006
+ *****************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import net.sf.taverna.wsdl.parser.WSDLParser;
+import net.sf.taverna.wsdl.testutils.LocationConstants;
+import net.sf.taverna.wsdl.testutils.WSDLTestHelper;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.junit.Test;
+import org.w3c.dom.Document;
+
+public class SOAPResponseEncodedTest  implements LocationConstants {
+	private String wsdlResourcePath(String wsdlName) throws Exception {
+		return WSDLTestHelper.wsdlResourcePath(wsdlName);
+	}
+	
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testSimpleRPC() throws Exception {
+		
+		WSDLParser wsdlParser = new WSDLParser(wsdlResourcePath("ma.wsdl"));
+
+		String xml1 = "<ns1:whatGeneInStageResponse soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:ns1=\"urn:hgu.webservice.services\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><whatGeneInStageReturn soapenc:arrayType=\"ns2:GeneExpressedQueryShortDetails[0]\" xsi:type=\"soapenc:Array\" xmlns:ns2=\"http://SubmissionQuery.WSDLGenerated.hgu\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><agene xsi:type=\"string\">a gene</agene></whatGeneInStageReturn></ns1:whatGeneInStageResponse>";
+
+		List<SOAPBodyElement> response = new ArrayList<SOAPBodyElement>();
+
+		DocumentBuilder builder = DocumentBuilderFactory.newInstance()
+				.newDocumentBuilder();
+		Document doc = builder.parse(new ByteArrayInputStream(xml1.getBytes()));
+		response.add(new SOAPBodyElement(doc.getDocumentElement()));
+
+		SOAPResponseEncodedParser parser = new SOAPResponseEncodedParser(wsdlParser.getOperationOutputParameters("whatGeneInStage"));
+		parser.setStripAttributes(true);
+
+		Map outputMap = parser.parse(response);
+
+		assertNotNull("no output map returned", outputMap);
+
+		assertEquals("map should contain 1 element", 1, outputMap.size());
+
+		Object result = outputMap.get("whatGeneInStageReturn");
+
+		assertNotNull(
+				"output map should have contained entry for 'whatGeneInStageReturn'",
+				result);
+
+		assertEquals("output data should be a string", String.class, result.getClass());
+
+		assertEquals(
+				"incorrect xml content in output",
+				"<whatGeneInStageReturn><agene>a gene</agene></whatGeneInStageReturn>",
+				result.toString());
+	}
+}
diff --git a/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/SOAPResponseLiteralTest.java b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/SOAPResponseLiteralTest.java
new file mode 100644
index 0000000..f756371
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/SOAPResponseLiteralTest.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2003 The University of Manchester 
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.  Authorship
+ * of the modifications may be determined from the ChangeLog placed at
+ * the end of this file.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ *
+ ****************************************************************
+ * Source code information
+ * -----------------------
+ * Filename           $RCSfile: SOAPResponseLiteralTest.java,v $
+ * Revision           $Revision: 1.2 $
+ * Release status     $State: Exp $
+ * Last modified on   $Date: 2007/11/30 12:13:37 $
+ *               by   $Author: sowen70 $
+ * Created on 11-May-2006
+ *****************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import net.sf.taverna.wsdl.parser.BaseTypeDescriptor;
+import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.junit.Test;
+import org.w3c.dom.Document;
+
+public class SOAPResponseLiteralTest{
+
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testLiteralParserResultInTextBlock() throws Exception {
+		List response = new ArrayList();
+		String xml = "<testResponse><out>&lt;data name=&quot;a&quot;&gt;some data&lt;/data&gt;&lt;data name=&quot;b&quot;&gt;some more data&lt;/data&gt;</out></testResponse>";
+		DocumentBuilder builder = DocumentBuilderFactory.newInstance()
+				.newDocumentBuilder();
+		Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
+
+		response.add(new SOAPBodyElement(doc.getDocumentElement()));
+
+		TypeDescriptor descriptor = new ComplexTypeDescriptor();
+		descriptor.setName("testResponse");
+
+		SOAPResponseLiteralParser parser = new SOAPResponseLiteralParser(
+				Collections.singletonList(descriptor));
+
+		Map outputMap = parser.parse(response);
+
+		assertNotNull("no output map returned", outputMap);
+		assertEquals("map should contain 1 element", 1, outputMap.size());
+
+		Object testResponse = outputMap.get("testResponse");
+
+		assertNotNull("there should be an output named 'testReponse'",
+				testResponse);
+		assertEquals("output data should be a string", String.class,
+				testResponse.getClass());
+
+		assertEquals(
+				"xml is wrong",
+				"<testResponse><out>&lt;data name=&quot;a&quot;&gt;some data&lt;/data&gt;&lt;data name=&quot;b&quot;&gt;some more data&lt;/data&gt;</out></testResponse>",
+				testResponse.toString());
+	}
+
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testLiteralParser() throws Exception {
+		List response = new ArrayList();
+		String xml = "<testResponse><out><data name=\"a\">some data</data><data name=\"b\">some more data</data></out></testResponse>";
+		DocumentBuilder builder = DocumentBuilderFactory.newInstance()
+				.newDocumentBuilder();
+		Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
+
+		response.add(new SOAPBodyElement(doc.getDocumentElement()));
+
+		TypeDescriptor descriptor = new ComplexTypeDescriptor();
+		descriptor.setName("testResponse");
+
+		SOAPResponseLiteralParser parser = new SOAPResponseLiteralParser(
+				Collections.singletonList(descriptor));
+
+		Map outputMap = parser.parse(response);
+
+		assertNotNull("no output map returned", outputMap);
+		assertEquals("map should contain 1 element", 1, outputMap.size());
+
+		Object testResponse = outputMap.get("testResponse");
+
+		assertNotNull("there should be an output named 'testReponse'",
+				testResponse);
+		assertEquals("output data should be a string", String.class,
+				testResponse.getClass());
+
+		assertEquals(
+				"xml is wrong",
+				"<testResponse><out><data name=\"a\">some data</data><data name=\"b\">some more data</data></out></testResponse>",
+				testResponse.toString());
+	}
+	
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testUnwrappedLiteralResponseParsing() throws Exception {
+		List response = new ArrayList();
+		
+		String xml = "<getStringReturn xmlns=\"http://testing.org\">a string</getStringReturn>";
+		DocumentBuilder builder = DocumentBuilderFactory.newInstance()
+		.newDocumentBuilder();
+		Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
+
+		response.add(new SOAPBodyElement(doc.getDocumentElement()));
+
+		TypeDescriptor descriptor = new BaseTypeDescriptor();
+		descriptor.setName("getStringReturn");
+		
+		SOAPResponseLiteralParser parser = new SOAPResponsePrimitiveLiteralParser(
+				Collections.singletonList(descriptor));
+
+		Map outputMap = parser.parse(response);
+
+		assertNotNull("no output map returned", outputMap);
+		assertEquals("map should contain 1 element", 1, outputMap.size());
+
+		Object stringReturn = outputMap.get("getStringReturn");
+		
+		assertEquals("value of data returned is wrong","a string",stringReturn.toString());
+	}
+	
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testEmptyResponse() throws Exception {
+		List response = new ArrayList();
+		
+		TypeDescriptor descriptor = new BaseTypeDescriptor();
+		descriptor.setName("getStringReturn");
+		
+		SOAPResponseLiteralParser parser = new SOAPResponseLiteralParser(
+				Collections.singletonList(descriptor));
+
+		Map outputMap = parser.parse(response);
+
+		assertNotNull("no output map returned", outputMap);
+		assertEquals("map should contain 1 element", 0, outputMap.size());
+	}
+
+}
+
diff --git a/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/SOAPResponseMultiRefTest.java b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/SOAPResponseMultiRefTest.java
new file mode 100644
index 0000000..87390c3
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/SOAPResponseMultiRefTest.java
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2003 The University of Manchester 
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.  Authorship
+ * of the modifications may be determined from the ChangeLog placed at
+ * the end of this file.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ *
+ ****************************************************************
+ * Source code information
+ * -----------------------
+ * Filename           $RCSfile: SOAPResponseMultiRefTest.java,v $
+ * Revision           $Revision: 1.4 $
+ * Release status     $State: Exp $
+ * Last modified on   $Date: 2008/08/29 16:15:54 $
+ *               by   $Author: sowen70 $
+ * Created on 08-May-2006
+ *****************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.parser.WSDLParser;
+import net.sf.taverna.wsdl.testutils.LocationConstants;
+import net.sf.taverna.wsdl.testutils.WSDLTestHelper;
+
+import org.apache.axis.message.SOAPBodyElement;
+import org.junit.Test;
+import org.w3c.dom.Document;
+
+public class SOAPResponseMultiRefTest  implements LocationConstants {
+	
+	private String wsdlResourcePath(String wsdlName) throws Exception {
+		return WSDLTestHelper.wsdlResourcePath(wsdlName);
+	}
+
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testMultiRef() throws Exception {
+		WSDLParser wsdlParser = new WSDLParser(wsdlResourcePath("TestServices-rpcencoded.wsdl"));
+
+		List response = new ArrayList();
+
+		String xml1 = "<ns1:getPersonResponse soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:ns1=\"urn:testing\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><getPersonReturn href=\"#id0\"/></ns1:getPersonResponse>";
+		String xml2 = "<multiRef id=\"id0\" soapenc:root=\"0\" soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><age xsi:type=\"soapenc:string\">5</age><name xsi:type=\"soapenc:string\">bob</name></multiRef>";
+
+		DocumentBuilder builder = DocumentBuilderFactory.newInstance()
+				.newDocumentBuilder();
+		Document doc = builder.parse(new ByteArrayInputStream(xml1.getBytes()));
+
+		response.add(new SOAPBodyElement(doc.getDocumentElement()));
+
+		doc = builder.parse(new ByteArrayInputStream(xml2.getBytes()));
+		response.add(new SOAPBodyElement(doc.getDocumentElement()));
+
+		SOAPResponseEncodedMultiRefParser parser = new SOAPResponseEncodedMultiRefParser(
+				wsdlParser.getOperationOutputParameters("getPerson"));
+		parser.setStripAttributes(true);
+		Map outputMap = parser.parse(response);
+
+		assertNotNull("no output map returned", outputMap);
+
+		assertEquals("map should contain 1 element", 1, outputMap.size());
+
+		Object getPersonReturn =  outputMap
+				.get("getPersonReturn");
+
+		assertNotNull(
+				"output map should have contained entry for 'getPersonReturn'",
+				getPersonReturn);
+
+		assertEquals("output data should be a string", String.class,
+				getPersonReturn.getClass());
+
+		assertEquals(
+				"unexpected xml content in output",
+				"<getPersonReturn><age>5</age><name>bob</name></getPersonReturn>",
+				getPersonReturn.toString());
+
+	}
+
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testMultiRefReturnNamespaced() throws Exception {
+		WSDLParser wsdlParser = new WSDLParser(wsdlResourcePath("TestServices-rpcencoded.wsdl"));
+
+		List response = new ArrayList();
+
+		String xml1 = "<ns1:getPersonResponse soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:ns1=\"urn:testing\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><ns1:getPersonReturn xmlns:ns1=\"urn:testing\" href=\"#id0\"/></ns1:getPersonResponse>";
+		String xml2 = "<multiRef id=\"id0\" soapenc:root=\"0\" soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><age xsi:type=\"soapenc:string\">5</age><name xsi:type=\"soapenc:string\">bob</name></multiRef>";
+
+		DocumentBuilder builder = DocumentBuilderFactory.newInstance()
+				.newDocumentBuilder();
+		Document doc = builder.parse(new ByteArrayInputStream(xml1.getBytes()));
+
+		response.add(new SOAPBodyElement(doc.getDocumentElement()));
+
+		doc = builder.parse(new ByteArrayInputStream(xml2.getBytes()));
+		response.add(new SOAPBodyElement(doc.getDocumentElement()));
+
+		SOAPResponseEncodedMultiRefParser parser = new SOAPResponseEncodedMultiRefParser(
+				wsdlParser.getOperationOutputParameters("getPerson"));
+		parser.setStripAttributes(true);
+		Map outputMap = parser.parse(response);
+
+		assertNotNull("no output map returned", outputMap);
+
+		assertEquals("map should contain 1 element", 1, outputMap.size());
+
+		Object getPersonReturn = outputMap
+				.get("getPersonReturn");
+
+		assertNotNull(
+				"output map should have contained entry for 'getPersonReturn'",
+				getPersonReturn);
+
+		assertEquals("output data should be a string", String.class,
+				getPersonReturn.getClass());
+
+		assertEquals(
+				"unexpected xml content in output",
+				"<getPersonReturn><age>5</age><name>bob</name></getPersonReturn>",
+				getPersonReturn.toString());
+	}
+
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testNestedReferences() throws Exception {
+	
+		//only the name is important.
+		TypeDescriptor descriptor = new ComplexTypeDescriptor();
+		descriptor.setName("result");
+		SOAPResponseEncodedMultiRefParser parser = new SOAPResponseEncodedMultiRefParser(
+				Collections.singletonList(descriptor));
+	
+
+		String xml1 = "<response><result><creatures href=\"#id0\"/></result></response>";
+		String xml2 = "<multiref id=\"id0\"><item href=\"#id1\"/><item href=\"#id2\"/></multiref>";
+		String xml3 = "<multiref id=\"id1\"><creature>monkey</creature></multiref>";
+		String xml4 = "<multiref id=\"id2\"><creature>frog</creature></multiref>";
+
+		List response = new ArrayList();
+
+		DocumentBuilder builder = DocumentBuilderFactory.newInstance()
+				.newDocumentBuilder();
+		Document doc = builder.parse(new ByteArrayInputStream(xml1.getBytes()));
+		response.add(new SOAPBodyElement(doc.getDocumentElement()));
+
+		doc = builder.parse(new ByteArrayInputStream(xml2.getBytes()));
+		response.add(new SOAPBodyElement(doc.getDocumentElement()));
+
+		doc = builder.parse(new ByteArrayInputStream(xml3.getBytes()));
+		response.add(new SOAPBodyElement(doc.getDocumentElement()));
+
+		doc = builder.parse(new ByteArrayInputStream(xml4.getBytes()));
+		response.add(new SOAPBodyElement(doc.getDocumentElement()));
+
+		
+		parser.setStripAttributes(true);
+
+		Map outputMap = parser.parse(response);
+
+		assertNotNull("no output map returned", outputMap);
+
+		assertEquals("map should contain 1 element", 1, outputMap.size());
+
+		Object result = outputMap.get("result");
+
+		assertNotNull("output map should have contained entry for 'result'",
+				result);
+
+		assertEquals("output data should be a string", String.class, result
+				.getClass());
+
+		assertEquals(
+				"incorrect xml content in output",
+				"<result><creatures><item><creature>monkey</creature></item><item><creature>frog</creature></item></creatures></result>",
+				result.toString());
+
+	}
+
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testFailOnCyclic() throws Exception {
+		List outputNames = new ArrayList();
+		outputNames.add("attachmentList");
+		outputNames.add("result");
+
+		String xml1 = "<response><result><item href=\"#id0\"/></result></response>";
+		String xml2 = "<multiref id=\"id0\"><item href=\"#id1\"/></multiref>";
+		String xml3 = "<multiref id=\"id1\"><item href=\"#id0\"/></multiref>";
+
+		List response = new ArrayList();
+
+		DocumentBuilder builder = DocumentBuilderFactory.newInstance()
+				.newDocumentBuilder();
+		Document doc = builder.parse(new ByteArrayInputStream(xml1.getBytes()));
+		response.add(new SOAPBodyElement(doc.getDocumentElement()));
+
+		doc = builder.parse(new ByteArrayInputStream(xml2.getBytes()));
+		response.add(new SOAPBodyElement(doc.getDocumentElement()));
+
+		doc = builder.parse(new ByteArrayInputStream(xml3.getBytes()));
+		response.add(new SOAPBodyElement(doc.getDocumentElement()));
+
+		SOAPResponseEncodedMultiRefParser parser = new SOAPResponseEncodedMultiRefParser(
+				outputNames);
+		parser.setStripAttributes(true);
+
+		try {
+			parser.parse(response);
+			fail("CyclicReferenceException should have been thrown");
+		} catch (CyclicReferenceException e) {
+
+		}
+	}
+
+}
diff --git a/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/SOAPResponseParserFactoryTest.java b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/SOAPResponseParserFactoryTest.java
new file mode 100644
index 0000000..2faf887
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/soap/SOAPResponseParserFactoryTest.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.soap;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.taverna.wsdl.parser.WSDLParser;
+import net.sf.taverna.wsdl.testutils.LocationConstants;
+import net.sf.taverna.wsdl.testutils.WSDLTestHelper;
+
+import org.junit.Test;
+
+public class SOAPResponseParserFactoryTest  implements LocationConstants {
+	
+	private String wsdlResourcePath(String wsdlName) throws Exception {
+		return WSDLTestHelper.wsdlResourcePath(wsdlName);
+	}
+
+	//tests that the factory always returns a SOAPResponseLiteralParser regardless of the 
+	//output mime type, if the use is set to 'literal' (unwrapped/literal)
+	@Test
+	public void testLiteralUnwrappedParserForNonXMLOutput() throws Exception {
+		SOAPResponseParserFactory factory = SOAPResponseParserFactory.instance();
+		List<String> response = new ArrayList<String>();
+		WSDLParser wsdlParser = new WSDLParser(wsdlResourcePath("TestServices-unwrapped.wsdl"));
+		
+		SOAPResponseParser parser = factory.create(response, "literal", "document", wsdlParser.getOperationOutputParameters("getString"));
+		
+		assertTrue("The parser is the wrong type, it was:"+parser.getClass().getSimpleName(),parser instanceof SOAPResponsePrimitiveLiteralParser);
+	}
+	
+	//an additional test using another unwrapped/literal wsdl that returns a primative type
+	@Test
+	public void testLiteralUnwrappedAlternativeWSDL() throws Exception {
+		SOAPResponseParserFactory factory = SOAPResponseParserFactory.instance();
+		List<String> response = new ArrayList<String>();
+		WSDLParser wsdlParser = new WSDLParser(wsdlResourcePath("prodoric.wsdl"));
+		
+		SOAPResponseParser parser = factory.create(response, "literal", "document", wsdlParser.getOperationOutputParameters("hello"));
+		
+		assertTrue("The parser is the wrong type, it was:"+parser.getClass().getSimpleName(),parser instanceof SOAPResponsePrimitiveLiteralParser);
+	}
+}
diff --git a/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/testutils/LocationConstants.java b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/testutils/LocationConstants.java
new file mode 100644
index 0000000..437820f
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/testutils/LocationConstants.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.testutils;
+
+/**
+ * A definition of constants for base locations of external resources used for testing.
+ * 
+ * @author Stuart Owen
+ *
+ */
+public interface LocationConstants {
+	
+	public static final String WSDL_RESOURCE_BASE="/testwsdls/";
+}
diff --git a/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/testutils/WSDLTestHelper.java b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/testutils/WSDLTestHelper.java
new file mode 100644
index 0000000..66c91ff
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/testutils/WSDLTestHelper.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.testutils;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import net.sf.taverna.wsdl.parser.WSDLParserTest;
+
+public class WSDLTestHelper implements LocationConstants {
+	
+	public static String wsdlResourcePath(String resourceName) throws Exception {
+		return WSDLParserTest.class.getResource(WSDL_RESOURCE_BASE+resourceName).toExternalForm();
+	}
+
+    public String getResourceContentsString(String resourceName) throws Exception {
+		InputStream stream = WSDLTestHelper.class.getResourceAsStream("/"+resourceName);
+		BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
+		String content="";
+		String line="";
+		while( (line = reader.readLine()) != null) {
+			content+=line;
+		}
+
+		reader.close();
+
+		return content;
+
+	}
+
+    
+
+}
diff --git a/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/xmlsplitter/XMLInputSplitterTest.java b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/xmlsplitter/XMLInputSplitterTest.java
new file mode 100644
index 0000000..9be24c4
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/xmlsplitter/XMLInputSplitterTest.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.xmlsplitter;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.parser.WSDLParser;
+import net.sf.taverna.wsdl.testutils.LocationConstants;
+import net.sf.taverna.wsdl.testutils.WSDLTestHelper;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class XMLInputSplitterTest implements LocationConstants {
+
+	@Test
+	public void testExecute() throws Exception {
+		WSDLParser parser = new WSDLParser(WSDLTestHelper.wsdlResourcePath("eutils/eutils_lite.wsdl"));
+		TypeDescriptor descriptor = parser.getOperationInputParameters("run_eInfo").get(0);
+		XMLInputSplitter splitter = new XMLInputSplitter(descriptor,new String[]{"db","tool","email"},new String[]{"text/plain","text/plain","text/plain"},new String[]{"output"});
+		Map<String,Object> inputMap = new HashMap<String, Object>();
+		inputMap.put("db", "pubmed");
+		inputMap.put("email", "bob.monkhouse@itv.com");
+		Map<String,String> outputMap = splitter.execute(inputMap);
+		assertNotNull("there should be an output named 'output'",outputMap.containsKey("output"));
+		String xml = outputMap.get("output");
+		assertTrue(xml.startsWith("<parameters xmlns=\"http://www.ncbi.nlm.nih.gov/soap/eutils/einfo\">"));
+		assertTrue(xml.contains("<db>pubmed</db>"));
+		assertTrue(! xml.contains("<tool"));
+		assertTrue(xml.contains("<email>bob.monkhouse@itv.com</email>"));
+	} 
+	
+	
+	@Test
+	public void testOptional() throws Exception {
+		WSDLParser parser = new WSDLParser(WSDLTestHelper.wsdlResourcePath("VSOi.wsdl"));
+		TypeDescriptor descriptor = parser.getOperationInputParameters("Query").get(0);
+		XMLInputSplitter splitter = new XMLInputSplitter(descriptor,new String[]{"version","block"},new String[]{"text/plain","text/plain"},new String[]{"output"});
+		Map<String,Object> inputMap = new HashMap<String, Object>();
+		// connect none of the inputs
+		Map<String,String> outputMap = splitter.execute(inputMap);
+		assertNotNull("there should be an output named 'output'",outputMap.containsKey("output"));
+		String xml = outputMap.get("output");
+		// empty string as <block> as it is not nillable
+		assertTrue(xml.contains("<block xmlns=\"\"></block>"));
+		// minOccurs=0 - so it should not be there
+		assertTrue(! xml.contains("<version>"));
+	} 
+	
+	
+	@Test
+	public void testNillable() throws Exception {
+		WSDLParser parser = new WSDLParser(WSDLTestHelper.wsdlResourcePath("VSOi.wsdl"));
+		TypeDescriptor descriptor = parser.getOperationInputParameters("Query").get(0);
+		XMLInputSplitter splitter = new XMLInputSplitter(descriptor,new String[]{"version","block"},new String[]{"text/plain","text/plain"},new String[]{"output"});
+		Map<String,Object> inputMap = new HashMap<String, Object>();
+		// Magic string meaning insert xsi:nil=true
+		inputMap.put("version", "xsi:nil");
+		Map<String,String> outputMap = splitter.execute(inputMap);
+		assertNotNull("there should be an output named 'output'",outputMap.containsKey("output"));
+		String xml = outputMap.get("output");
+		System.out.println(xml);
+		// empty string as <block> as it is not nillable
+		assertTrue(xml.contains("<block xmlns=\"\"></block>"));
+		// FIXME: Should not really allow nil=true here, as version is not nillable! 
+		assertTrue(xml.contains("<version xmlns=\"\" " +
+				"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
+				"xsi:nil=\"true\" />"));
+	} 
+	
+	
+}
diff --git a/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/xmlsplitter/XMLOutputSplitterTest.java b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/xmlsplitter/XMLOutputSplitterTest.java
new file mode 100644
index 0000000..1a3dd1c
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/xmlsplitter/XMLOutputSplitterTest.java
@@ -0,0 +1,79 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package net.sf.taverna.wsdl.xmlsplitter;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+import net.sf.taverna.wsdl.parser.WSDLParser;
+import net.sf.taverna.wsdl.testutils.WSDLTestHelper;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author sowen
+ */
+public class XMLOutputSplitterTest extends WSDLTestHelper {
+
+    @Test
+	public void testRPCComplexWithInternalList() throws Exception {
+            
+        WSDLParser parser = new WSDLParser(WSDLTestHelper.wsdlResourcePath("menagerie-complex-rpc.wsdl"));
+		TypeDescriptor descriptor = parser.getOperationOutputParameters("getComplexWithInternalList").get(0);
+        XMLOutputSplitter splitter = new XMLOutputSplitter(descriptor, new String [] {"length","innerArray","innerList"}, new String [] {"text/plain","l('text/plain')","l('text/plain')"}, new String[] {"input"});
+        String inputXML=getResourceContentsString("getComplexWithInternalListResponse.xml");
+        Map<String,String> inputMap = new HashMap<String,String>();
+        inputMap.put("input", inputXML);
+        Map<String,Object> outputMap = splitter.execute(inputMap);
+        assertNotNull(outputMap.get("length"));
+        assertNotNull(outputMap.get("innerList"));
+        assertNotNull(outputMap.get("innerArray"));
+
+        assertEquals("4",outputMap.get("length"));
+
+        List<String> array = ( List<String> )outputMap.get("innerArray");
+		assertEquals(4,array.size());
+		assertEquals("String A",array.get(0));
+		assertEquals("String B",array.get(1));
+		assertEquals("String C",array.get(2));
+		assertEquals("String D",array.get(3));
+
+        array = ( List<String> )outputMap.get("innerList");
+		assertEquals(4,array.size());
+		assertEquals("String A",array.get(0));
+		assertEquals("String B",array.get(1));
+		assertEquals("String C",array.get(2));
+		assertEquals("String D",array.get(3));
+    }
+
+    @Test
+    public void testWrappedArrayDefinedWithRestriction() throws Exception {
+        WSDLParser parser = new WSDLParser(WSDLTestHelper.wsdlResourcePath("jws-online.wsdl"));
+		TypeDescriptor descriptor = parser.getOperationOutputParameters("getSteadyStateTable").get(0);
+        XMLOutputSplitter splitter = new XMLOutputSplitter(descriptor, new String [] {"model","fluxNames","fluxVals"}, new String [] {"text/plain","l('text/plain')","l('text/plain')"}, new String[] {"input"});
+        String inputXML=getResourceContentsString("jws-splitter-input.xml");
+
+        Map<String,String> inputMap = new HashMap<String,String>();
+        inputMap.put("input", inputXML);
+        Map<String,Object> outputMap = splitter.execute(inputMap);
+
+        assertNotNull(outputMap.get("model"));
+        assertNotNull(outputMap.get("fluxNames"));
+        assertNotNull(outputMap.get("fluxVals"));
+
+        assertEquals("teusink",outputMap.get("model"));
+        List<String> array = ( List<String> )outputMap.get("fluxNames");
+        assertEquals(17,array.size());
+        assert(array.contains("v[G3PDH]"));
+
+        array = ( List<String> )outputMap.get("fluxVals");
+        assertEquals(17,array.size());
+        assert(array.contains("88.15049285974906"));
+    }
+
+}
diff --git a/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/xmlsplitter/XMLSplitterSerialisationHelperTest.java b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/xmlsplitter/XMLSplitterSerialisationHelperTest.java
new file mode 100644
index 0000000..8abdf0e
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/java/net/sf/taverna/wsdl/xmlsplitter/XMLSplitterSerialisationHelperTest.java
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester   
+ * 
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ * 
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *    
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *    
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.wsdl.xmlsplitter;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.StringReader;
+import java.util.List;
+
+import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
+import net.sf.taverna.wsdl.parser.TypeDescriptor;
+
+import org.jdom.Element;
+import org.jdom.input.SAXBuilder;
+import org.jdom.output.XMLOutputter;
+import org.junit.Test;
+
+public class XMLSplitterSerialisationHelperTest {
+
+
+    @Test
+	public void testCyclicToElement() throws Exception {
+		ComplexTypeDescriptor a = new ComplexTypeDescriptor();
+		a.setName("a");
+		a.setType("typename");
+		a.setQnameFromString("{namespace}typename");
+
+		ComplexTypeDescriptor b = new ComplexTypeDescriptor();
+		b.setName("b");
+		b.setType("typename2");
+		b.setQnameFromString("{namespace}typename2");
+
+		a.getElements().add(b);
+
+		b.getElements().add(a);
+
+		Element el = XMLSplitterSerialisationHelper
+				.typeDescriptorToExtensionXML(a);
+
+		String xml = new XMLOutputter().outputString(el);
+
+		assertEquals(
+				"unexpected xml",
+				"<s:extensions xmlns:s=\"http://org.embl.ebi.escience/xscufl/0.1alpha\"><s:complextype optional=\"false\" unbounded=\"false\" typename=\"typename\" name=\"a\" qname=\"{namespace}typename\"><s:elements><s:complextype optional=\"false\" unbounded=\"false\" typename=\"typename2\" name=\"b\" qname=\"{namespace}typename2\"><s:elements><s:complextype id=\"{namespace}typename\" optional=\"false\" unbounded=\"false\" typename=\"typename\" name=\"a\" /></s:elements></s:complextype></s:elements></s:complextype></s:extensions>",
+				xml);
+
+	}
+
+    @Test
+	public void testCyclicToElement2() throws Exception {
+		ComplexTypeDescriptor a = new ComplexTypeDescriptor();
+		a.setName("a");
+		a.setType("typename");
+		a.setQnameFromString("{namespace}typename");
+
+		a.getElements().add(a);
+
+		Element el = XMLSplitterSerialisationHelper
+				.typeDescriptorToExtensionXML(a);
+
+		String xml = new XMLOutputter().outputString(el);
+
+		assertEquals(
+				"unexpected xml",
+				"<s:extensions xmlns:s=\"http://org.embl.ebi.escience/xscufl/0.1alpha\"><s:complextype optional=\"false\" unbounded=\"false\" typename=\"typename\" name=\"a\" qname=\"{namespace}typename\"><s:elements><s:complextype id=\"{namespace}typename\" optional=\"false\" unbounded=\"false\" typename=\"typename\" name=\"a\" /></s:elements></s:complextype></s:extensions>",
+				xml);
+	}
+
+    @Test
+	public void testCyclicFromElement() throws Exception {
+		String xml = "<s:extensions xmlns:s=\"http://org.embl.ebi.escience/xscufl/0.1alpha\"><s:complextype optional=\"false\" unbounded=\"false\" typename=\"typename\" name=\"a\" qname=\"{namespace}typename\"><s:elements><s:complextype id=\"{namespace}typename\" /></s:elements></s:complextype></s:extensions>";
+		Element el = new SAXBuilder().build(new StringReader(xml))
+				.getRootElement();
+
+		TypeDescriptor a = XMLSplitterSerialisationHelper
+				.extensionXMLToTypeDescriptor(el);
+
+		assertTrue("wrong type", a instanceof ComplexTypeDescriptor);
+		assertEquals("wrong name", "a", a.getName());
+
+		List<TypeDescriptor> a_elements = ((ComplexTypeDescriptor) a).getElements();
+
+		assertEquals("should be only 1 element", 1, a_elements.size());
+
+		TypeDescriptor b = a_elements.get(0);
+
+		assertTrue("wrong type", b instanceof ComplexTypeDescriptor);
+
+		List<TypeDescriptor> b_elements = ((ComplexTypeDescriptor) b).getElements();
+
+		assertEquals("should be only 1 element", 1, b_elements.size());
+
+		assertEquals("b should contain a reference to a", a.toString(),
+				b_elements.get(0).toString());
+	}
+
+	/**
+	 * Tests the QName is constructed with the correct URI and LocalPart
+	 * 
+	 * @throws Exception
+	 */
+    @Test
+	public void testCorrectQName() throws Exception {
+		TypeDescriptor desc = XMLSplitterSerialisationHelper
+				.extensionXMLToTypeDescriptor(new SAXBuilder().build(
+						new StringReader(eInfoXML())).getRootElement());
+		assertEquals("NamespaceURI is incorrect",
+				"http://www.ncbi.nlm.nih.gov/soap/eutils/espell", desc
+						.getQname().getNamespaceURI());
+		assertEquals("Localpart is incorrect", "eSpellRequest", desc.getQname()
+				.getLocalPart());
+	}
+
+	private String eInfoXML() {
+		return "<s:extensions xmlns:s=\"http://org.embl.ebi.escience/xscufl/0.1alpha\"><s:complextype optional=\"false\" unbounded=\"false\" typename=\"eSpellRequest\" name=\"parameters\" qname=\"{http://www.ncbi.nlm.nih.gov/soap/eutils/espell}eSpellRequest\"><s:elements><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"db\" qname=\"{http://www.w3.org/2001/XMLSchema}string\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"term\" qname=\"{http://www.w3.org/2001/XMLSchema}string\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"tool\" qname=\"{http://www.w3.org/2001/XMLSchema}string\" /><s:basetype optional=\"true\" unbounded=\"false\" typename=\"string\" name=\"email\" qname=\"{http://www.w3.org/2001/XMLSchema}string\" /></s:elements></s:complextype></s:extensions>";
+
+	}
+}
diff --git a/taverna-wsdl-generic/src/test/resources/getComplexWithInternalListResponse.xml b/taverna-wsdl-generic/src/test/resources/getComplexWithInternalListResponse.xml
new file mode 100644
index 0000000..75dd224
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/getComplexWithInternalListResponse.xml
@@ -0,0 +1 @@
+<ns1:out xmlns:ns1="http://xfire.codehaus.org/BookService"><innerArray xmlns="http://complex.pojo.axis2.menagerie.googlecode"><ns1:string>String A</ns1:string><ns1:string>String B</ns1:string><ns1:string>String C</ns1:string><ns1:string>String D</ns1:string></innerArray><innerList xmlns="http://complex.pojo.axis2.menagerie.googlecode"><ns1:string>String A</ns1:string><ns1:string>String B</ns1:string><ns1:string>String C</ns1:string><ns1:string>String D</ns1:string></innerList><length xmlns="http://complex.pojo.axis2.menagerie.googlecode">4</length></ns1:out>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/jws-splitter-input.xml b/taverna-wsdl-generic/src/test/resources/jws-splitter-input.xml
new file mode 100644
index 0000000..36384aa
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/jws-splitter-input.xml
@@ -0,0 +1,76 @@
+
+<getSteadyStateTableReturn>
+    <credits xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Powered by Mathematica, Wolfram Research</credits>
+    <fluxNames soapenc:arrayType="xsd:string[17]" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="soapenc:Array" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+        <fluxNames xsi:type="xsd:string">v[GLT]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[GLK]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[PGI]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[GLYCO]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[Treha]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[PFK]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[ALD]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[G3PDH]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[GAPDH]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[PGK]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[PGM]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[ENO]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[PYK]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[PDC]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[SUC]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[ADH]</fluxNames>
+        <fluxNames xsi:type="xsd:string">v[ATP]</fluxNames>
+    </fluxNames>
+    <fluxVals soapenc:arrayType="xsd:string[17]" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="soapenc:Array" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+        <fluxVals xsi:type="xsd:string">88.15049285974906</fluxVals>
+        <fluxVals xsi:type="xsd:string">88.15049285974904</fluxVals>
+        <fluxVals xsi:type="xsd:string">77.35049285974908</fluxVals>
+        <fluxVals xsi:type="xsd:string">6</fluxVals>
+        <fluxVals xsi:type="xsd:string">2.4</fluxVals>
+        <fluxVals xsi:type="xsd:string">77.3504928597491</fluxVals>
+        <fluxVals xsi:type="xsd:string">77.35049285974904</fluxVals>
+        <fluxVals xsi:type="xsd:string">18.202466703480138</fluxVals>
+        <fluxVals xsi:type="xsd:string">136.49851901601804</fluxVals>
+        <fluxVals xsi:type="xsd:string">136.4985190160183</fluxVals>
+        <fluxVals xsi:type="xsd:string">136.498519016018</fluxVals>
+        <fluxVals xsi:type="xsd:string">136.498519016018</fluxVals>
+        <fluxVals xsi:type="xsd:string">136.49851901601804</fluxVals>
+        <fluxVals xsi:type="xsd:string">136.49851901601798</fluxVals>
+        <fluxVals xsi:type="xsd:string">3.640493340696029</fluxVals>
+        <fluxVals xsi:type="xsd:string">129.21753233462553</fluxVals>
+        <fluxVals xsi:type="xsd:string">99.09605231253782</fluxVals>
+    </fluxVals>
+    <isModelMethodSupported xsi:type="xsd:boolean" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">true</isModelMethodSupported>
+    <metabNames soapenc:arrayType="xsd:string[14]" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="soapenc:Array" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+        <metabNames xsi:type="xsd:string">ACE</metabNames>
+        <metabNames xsi:type="xsd:string">BPG</metabNames>
+        <metabNames xsi:type="xsd:string">F16P</metabNames>
+        <metabNames xsi:type="xsd:string">F6P</metabNames>
+        <metabNames xsi:type="xsd:string">G6P</metabNames>
+        <metabNames xsi:type="xsd:string">GLCi</metabNames>
+        <metabNames xsi:type="xsd:string">NAD</metabNames>
+        <metabNames xsi:type="xsd:string">P2G</metabNames>
+        <metabNames xsi:type="xsd:string">P3G</metabNames>
+        <metabNames xsi:type="xsd:string">PEP</metabNames>
+        <metabNames xsi:type="xsd:string">Prb</metabNames>
+        <metabNames xsi:type="xsd:string">PYR</metabNames>
+        <metabNames xsi:type="xsd:string">TRIO</metabNames>
+        <metabNames xsi:type="xsd:string">NADH</metabNames>
+    </metabNames>
+    <metabVals soapenc:arrayType="xsd:string[14]" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="soapenc:Array" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+        <metabVals xsi:type="xsd:string">0.170116511247478</metabVals>
+        <metabVals xsi:type="xsd:string">0.00032969362849256316</metabVals>
+        <metabVals xsi:type="xsd:string">0.6019547147734713</metabVals>
+        <metabVals xsi:type="xsd:string">0.11284989677951425</metabVals>
+        <metabVals xsi:type="xsd:string">1.0334604569319266</metabVals>
+        <metabVals xsi:type="xsd:string">0.09874371287268408</metabVals>
+        <metabVals xsi:type="xsd:string">1.5455601206148244</metabVals>
+        <metabVals xsi:type="xsd:string">0.04484907064065288</metabVals>
+        <metabVals xsi:type="xsd:string">0.35652004693990313</metabVals>
+        <metabVals xsi:type="xsd:string">0.07363323011128868</metabVals>
+        <metabVals xsi:type="xsd:string">6.309399270731274</metabVals>
+        <metabVals xsi:type="xsd:string">8.523412394422687</metabVals>
+        <metabVals xsi:type="xsd:string">0.7775576104829965</metabVals>
+        <metabVals xsi:type="xsd:string">0.04443987938517546</metabVals>
+    </metabVals>
+    <model xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">teusink</model>
+</getSteadyStateTableReturn>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/log4j.properties b/taverna-wsdl-generic/src/test/resources/log4j.properties
new file mode 100644
index 0000000..3be01eb
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/log4j.properties
@@ -0,0 +1,8 @@
+log4j.rootLogger=WARN, CONSOLE
+
+# Default output to console
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%-5p %d{ISO8601} (%c:%L) - %m%n
+
+log4j.logger.net.sf.taverna.wsdl=INFO
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/InstrumentServiceContextTypes.xsd b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/InstrumentServiceContextTypes.xsd
new file mode 100644
index 0000000..bca9ad9
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/InstrumentServiceContextTypes.xsd
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema targetNamespace="http://InstrumentService.uniparthenope.it/InstrumentService/Context/types" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:tns="http://InstrumentService.uniparthenope.it/InstrumentService/Context/types" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsrbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd">
+  <import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+  <import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" schemaLocation="WS-BaseFaults.xsd"/>
+  <element name="InstrumentServiceContextReference">
+    <complexType>
+      <sequence>
+        <element ref="wsa:EndpointReference"/>
+      </sequence>
+    </complexType>
+  </element>
+</schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/InstrumentServiceTypes.xsd b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/InstrumentServiceTypes.xsd
new file mode 100644
index 0000000..3118190
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/InstrumentServiceTypes.xsd
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema targetNamespace="http://InstrumentService.uniparthenope.it/InstrumentService/types" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:tns="http://InstrumentService.uniparthenope.it/InstrumentService/types" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsrbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd">
+  <import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+  <import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" schemaLocation="WS-BaseFaults.xsd"/>
+  <element name="InstrumentServiceReference">
+    <complexType>
+      <sequence>
+        <element ref="wsa:EndpointReference"/>
+      </sequence>
+    </complexType>
+  </element>
+</schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/InstrumentService_.wsdl b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/InstrumentService_.wsdl
new file mode 100644
index 0000000..f9c35df
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/InstrumentService_.wsdl
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="InstrumentService" targetNamespace="http://InstrumentService.uniparthenope.it/InstrumentService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://InstrumentService.uniparthenope.it/InstrumentService" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:wsrlw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" xmlns:wsdlpp="http://www.globus.org/namespaces/2004/10/WSDLPreprocessor" xmlns:gtwsdl1="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ServiceGroup-1.2-draft-01.wsdl" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsntw="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.wsdl" xmlns:wsrbfw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.wsdl" xmlns:wsrpw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" xmlns:wns1="http://security.introduce.cagrid.nci.nih.gov/ServiceSecurity" xmlns:wns0="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" xmlns:ns0="http://InstrumentService.uniparthenope.it/InstrumentService/types" xmlns:ns1="gme://caGrid.caBIG/1.0/gov.nih.nci.cagrid.metadata.security" xmlns:ns2="http://InstrumentService.uniparthenope.it/InstrumentService/Context/types">
+  <import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" location="WS-ResourceProperties.wsdl"/>
+  <import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.wsdl" location="WS-BaseFaults.wsdl"/>
+  <import namespace="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.wsdl" location="WS-BaseN.wsdl"/>
+  <import namespace="http://security.introduce.cagrid.nci.nih.gov/ServiceSecurity" location="ServiceSecurity.wsdl"/>
+  <import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" location="WS-ResourceProperties.wsdl"/>
+  <!--============================================================
+
+                      T Y P E S
+                      
+  ============================================================-->
+  <types>
+    <schema targetNamespace="http://InstrumentService.uniparthenope.it/InstrumentService" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsrbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd">
+      <import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" schemaLocation="WS-BaseFaults.xsd"/>
+      <import namespace="http://InstrumentService.uniparthenope.it/InstrumentService/types" schemaLocation="InstrumentServiceTypes.xsd"/>
+      <import namespace="gme://caGrid.caBIG/1.0/gov.nih.nci.cagrid.metadata.security" schemaLocation="security.xsd"/>
+      <import namespace="http://InstrumentService.uniparthenope.it/InstrumentService/Context/types" schemaLocation="InstrumentServiceContextTypes.xsd"/>
+      <element name="CreateRequest">
+        <complexType>
+          <sequence>
+            <element name="instrumentName" type="xs:string" minOccurs="1" maxOccurs="1"/>
+          </sequence>
+        </complexType>
+      </element>
+      <element name="CreateResponse">
+        <complexType>
+          <sequence>
+            <element ref="ns2:InstrumentServiceContextReference" minOccurs="1" maxOccurs="1"/>
+          </sequence>
+        </complexType>
+      </element>
+      <element name="GetListRequest">
+        <complexType>
+          <sequence/>
+        </complexType>
+      </element>
+      <element name="GetListResponse">
+        <complexType>
+          <sequence>
+            <element name="response" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
+          </sequence>
+        </complexType>
+      </element>
+      <element name="GetDataRequest">
+        <complexType>
+          <sequence>
+            <element name="instrumentName" type="xs:string" minOccurs="1" maxOccurs="1"/>
+          </sequence>
+        </complexType>
+      </element>
+      <element name="GetDataResponse">
+        <complexType>
+          <sequence>
+            <element name="response" type="xs:string" minOccurs="1" maxOccurs="1"/>
+          </sequence>
+        </complexType>
+      </element>
+      <element name="InstrumentServiceResourceProperties">
+        <complexType>
+          <sequence/>
+        </complexType>
+      </element>
+    </schema>
+  </types>
+  <!--place service messages here-->
+  <message name="CreateRequest">
+    <part name="parameters" element="tns:CreateRequest"/>
+  </message>
+  <message name="CreateResponse">
+    <part name="parameters" element="tns:CreateResponse"/>
+  </message>
+  <message name="GetListRequest">
+    <part name="parameters" element="tns:GetListRequest"/>
+  </message>
+  <message name="GetListResponse">
+    <part name="parameters" element="tns:GetListResponse"/>
+  </message>
+  <message name="GetDataRequest">
+    <part name="parameters" element="tns:GetDataRequest"/>
+  </message>
+  <message name="GetDataResponse">
+    <part name="parameters" element="tns:GetDataResponse"/>
+  </message>
+  <!--============================================================
+
+                       P O R T T Y P E
+                      
+  ============================================================-->
+  <portType name="InstrumentServicePortType" wsrp:ResourceProperties="tns:InstrumentServiceResourceProperties">
+    <operation name="create">
+      <input message="tns:CreateRequest" wsa:Action="http://InstrumentService.uniparthenope.it/InstrumentService/CreateRequest"/>
+      <output message="tns:CreateResponse" wsa:Action="http://InstrumentService.uniparthenope.it/InstrumentService/CreateResponse"/>
+    </operation>
+    <operation name="getList">
+      <input message="tns:GetListRequest" wsa:Action="http://InstrumentService.uniparthenope.it/InstrumentService/GetListRequest"/>
+      <output message="tns:GetListResponse" wsa:Action="http://InstrumentService.uniparthenope.it/InstrumentService/GetListResponse"/>
+    </operation>
+    <operation name="getData">
+      <input message="tns:GetDataRequest" wsa:Action="http://InstrumentService.uniparthenope.it/InstrumentService/GetDataRequest"/>
+      <output message="tns:GetDataResponse" wsa:Action="http://InstrumentService.uniparthenope.it/InstrumentService/GetDataResponse"/>
+    </operation>
+    <wsdl:operation name="GetMultipleResourceProperties" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+      <wsdl:input name="GetMultipleResourcePropertiesRequest" message="wsrpw:GetMultipleResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourceProperties"/>
+      <wsdl:output name="GetMultipleResourcePropertiesResponse" message="wsrpw:GetMultipleResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourcePropertiesResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="GetResourceProperty" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+      <wsdl:input name="GetResourcePropertyRequest" message="wsrpw:GetResourcePropertyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <wsdl:output name="GetResourcePropertyResponse" message="wsrpw:GetResourcePropertyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourcePropertyResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="QueryResourceProperties" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+      <wsdl:input name="QueryResourcePropertiesRequest" message="wsrpw:QueryResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourceProperties"/>
+      <wsdl:output name="QueryResourcePropertiesResponse" message="wsrpw:QueryResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourcePropertiesResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <wsdl:fault name="UnknownQueryExpressionDialectFault" message="wsrpw:UnknownQueryExpressionDialectFault"/>
+      <wsdl:fault name="InvalidQueryExpressionFault" message="wsrpw:InvalidQueryExpressionFault"/>
+      <wsdl:fault name="QueryEvaluationErrorFault" message="wsrpw:QueryEvaluationErrorFault"/>
+    </wsdl:operation>
+    <operation name="getServiceSecurityMetadata">
+      <input message="wns1:GetServiceSecurityMetadataRequest" wsa:Action="http://security.introduce.cagrid.nci.nih.gov/ServiceSecurity/GetServiceSecurityMetadataRequest"/>
+      <output message="wns1:GetServiceSecurityMetadataResponse" wsa:Action="http://security.introduce.cagrid.nci.nih.gov/ServiceSecurity/GetServiceSecurityMetadataResponse"/>
+    </operation>
+  </portType>
+</definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/InstrumentService__.wsdl b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/InstrumentService__.wsdl
new file mode 100644
index 0000000..f4cb43b
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/InstrumentService__.wsdl
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions name="InstrumentService" targetNamespace="http://InstrumentService.uniparthenope.it/InstrumentService/service" xmlns:binding="http://InstrumentService.uniparthenope.it/InstrumentService/bindings" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:import location="InstrumentService_bindings.wsdl" namespace="http://InstrumentService.uniparthenope.it/InstrumentService/bindings"/>
+  <wsdl:service name="InstrumentService">
+    <wsdl:port binding="binding:InstrumentServicePortTypeSOAPBinding" name="InstrumentServicePortTypePort">
+      <soap:address location="http://193.205.230.10:8080/wsrf/services/dsa/InstrumentService"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/InstrumentService_bindings.wsdl b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/InstrumentService_bindings.wsdl
new file mode 100644
index 0000000..cf1c40c
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/InstrumentService_bindings.wsdl
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions name="InstrumentService" targetNamespace="http://InstrumentService.uniparthenope.it/InstrumentService/bindings" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:porttype="http://InstrumentService.uniparthenope.it/InstrumentService" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+  <wsdl:import namespace="http://InstrumentService.uniparthenope.it/InstrumentService" location="InstrumentService_.wsdl"/>
+  <wsdl:binding name="InstrumentServicePortTypeSOAPBinding" type="porttype:InstrumentServicePortType">
+    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+    <wsdl:operation name="create">
+      <soap:operation soapAction="http://InstrumentService.uniparthenope.it/InstrumentService/CreateRequest"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getList">
+      <soap:operation soapAction="http://InstrumentService.uniparthenope.it/InstrumentService/GetListRequest"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getData">
+      <soap:operation soapAction="http://InstrumentService.uniparthenope.it/InstrumentService/GetDataRequest"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetMultipleResourceProperties">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourceProperties"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault">
+        <soap:fault name="InvalidResourcePropertyQNameFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="GetResourceProperty">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault">
+        <soap:fault name="InvalidResourcePropertyQNameFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="QueryResourceProperties">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourceProperties"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="UnknownQueryExpressionDialectFault">
+        <soap:fault name="UnknownQueryExpressionDialectFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault">
+        <soap:fault name="InvalidResourcePropertyQNameFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="InvalidQueryExpressionFault">
+        <soap:fault name="InvalidQueryExpressionFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="QueryEvaluationErrorFault">
+        <soap:fault name="QueryEvaluationErrorFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="getServiceSecurityMetadata">
+      <soap:operation soapAction="http://security.introduce.cagrid.nci.nih.gov/ServiceSecurity/GetServiceSecurityMetadataRequest"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/ServiceSecurity.wsdl b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/ServiceSecurity.wsdl
new file mode 100644
index 0000000..10efd53
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/ServiceSecurity.wsdl
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="ServiceSecurity" targetNamespace="http://security.introduce.cagrid.nci.nih.gov/ServiceSecurity" xmlns:tns="http://security.introduce.cagrid.nci.nih.gov/ServiceSecurity" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:wsrlw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" xmlns:wsdlpp="http://www.globus.org/namespaces/2004/10/WSDLPreprocessor" xmlns:gtwsdl1="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ServiceGroup-1.2-draft-01.wsdl" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsntw="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.wsdl" xmlns:wsrbfw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.wsdl" xmlns:wsrpw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/">
+  <import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" location="WS-ResourceProperties.wsdl"/>
+  <import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.wsdl" location="WS-BaseFaults.wsdl"/>
+  <!--============================================================
+
+                      T Y P E S
+                      
+  ============================================================-->
+  <types>
+    <schema targetNamespace="http://security.introduce.cagrid.nci.nih.gov/ServiceSecurity" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:ns0="gme://caGrid.caBIG/1.0/gov.nih.nci.cagrid.metadata.security" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsrbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd">
+      <import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" schemaLocation="WS-BaseFaults.xsd"/>
+      <import namespace="gme://caGrid.caBIG/1.0/gov.nih.nci.cagrid.metadata.security" schemaLocation="security.xsd"/>
+      <element name="GetServiceSecurityMetadataRequest">
+        <complexType>
+          <sequence/>
+        </complexType>
+      </element>
+      <element name="GetServiceSecurityMetadataResponse">
+        <complexType>
+          <sequence>
+            <element ref="ns0:ServiceSecurityMetadata" minOccurs="1" maxOccurs="1"/>
+          </sequence>
+        </complexType>
+      </element>
+      <element name="ServiceSecurityResourceProperties">
+        <complexType>
+          <sequence/>
+        </complexType>
+      </element>
+    </schema>
+  </types>
+  <!--place service messages here-->
+  <message name="GetServiceSecurityMetadataRequest">
+    <part name="parameters" element="tns:GetServiceSecurityMetadataRequest"/>
+  </message>
+  <message name="GetServiceSecurityMetadataResponse">
+    <part name="parameters" element="tns:GetServiceSecurityMetadataResponse"/>
+  </message>
+  <!--============================================================
+
+                       P O R T T Y P E
+                      
+  ============================================================-->
+  <portType name="ServiceSecurityPortType" wsrp:ResourceProperties="tns:ServiceSecurityResourceProperties">
+    <operation name="getServiceSecurityMetadata">
+      <input message="tns:GetServiceSecurityMetadataRequest" wsa:Action="http://security.introduce.cagrid.nci.nih.gov/ServiceSecurity/GetServiceSecurityMetadataRequest"/>
+      <output message="tns:GetServiceSecurityMetadataResponse" wsa:Action="http://security.introduce.cagrid.nci.nih.gov/ServiceSecurity/GetServiceSecurityMetadataResponse"/>
+    </operation>
+    <operation name="GetResourceProperty">
+      <input name="GetResourcePropertyRequest" message="wsrpw:GetResourcePropertyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <output name="GetResourcePropertyResponse" message="wsrpw:GetResourcePropertyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourcePropertyResponse"/>
+      <fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+    </operation>
+    <operation name="GetMultipleResourceProperties">
+      <input name="GetMultipleResourcePropertiesRequest" message="wsrpw:GetMultipleResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourceProperties"/>
+      <output name="GetMultipleResourcePropertiesResponse" message="wsrpw:GetMultipleResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourceProperties"/>
+      <fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+    </operation>
+    <operation name="QueryResourceProperties">
+      <input name="QueryResourcePropertiesRequest" message="wsrpw:QueryResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourceProperties"/>
+      <output name="QueryResourcePropertiesResponse" message="wsrpw:QueryResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourcePropertiesResponse"/>
+      <fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <fault name="UnknownQueryExpressionDialectFault" message="wsrpw:UnknownQueryExpressionDialectFault"/>
+      <fault name="InvalidQueryExpressionFault" message="wsrpw:InvalidQueryExpressionFault"/>
+      <fault name="QueryEvaluationErrorFault" message="wsrpw:QueryEvaluationErrorFault"/>
+    </operation>
+  </portType>
+</definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-Addressing.xsd b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-Addressing.xsd
new file mode 100644
index 0000000..008c65e
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-Addressing.xsd
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Legal Disclaimer
+
+The presentation, distribution or other dissemination of the information 
+contained in this document is not a license, either expressly or impliedly, 
+to any intellectual property owned or controlled by BEA or IBM or Microsoft
+and\or any other third party.  BEA and IBM and Microsoft and\or any other
+third party may have patents, patent applications, trademarks, copyrights, 
+or other intellectual property rights covering subject matter in this 
+document.  The furnishing of this document does not give you any license 
+to BEA's and IBM's and Microsoft's or any other third party's patents, 
+trademarks, copyrights, or other intellectual property.
+
+This document and the information contained herein is provided on an "AS IS"
+basis and to the maximum extent permitted by applicable law, BEA and IBM 
+and Microsoft provide the document AS IS AND WITH ALL FAULTS, and hereby 
+disclaims all other warranties and conditions, either express, implied or 
+statutory, including, but not limited to, any (if any) implied warranties, 
+duties or conditions of merchantability, of fitness for a particular 
+purpose, of accuracy or completeness of responses, of results, of 
+workmanlike effort, of lack of viruses, and of lack of negligence, all with
+regard to the document. ALSO, THERE IS NO WARRANTY OR CONDITION OF 
+TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO DESCRIPTION OR 
+NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE 
+DOCUMENT.
+
+IN NO EVENT WILL BEA or IBM or MICROSOFT BE LIABLE TO ANY OTHER PARTY FOR THE
+COST OF PROCURING SUBSTITUTE GOODS OR SERVICES, LOST PROFITS, LOSS OF USE, 
+LOSS OF DATA, OR ANY INCIDENTAL, CONSEQUENTIAL, DIRECT, INDIRECT, OR SPECIAL 
+DAMAGES WHETHER UNDER CONTRACT, TORT, WARRANTY, OR OTHERWISE, ARISING IN ANY 
+WAY OUT OF THIS OR ANY OTHER AGREEMENT RELATING TO THIS DOCUMENT, WHETHER OR 
+NOT SUCH PARTY HAD ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.
+
+Copyright Notice
+
+Copyright 2003,2004 BEA Systems Inc. and IBM Corporation and Microsoft Corporation. All rights reserved.--><xs:schema targetNamespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" elementFormDefault="qualified" blockDefault="#all" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
+  <!--//////////////////// WS-Addressing ////////////////////-->
+  <!--Endpoint reference-->
+  <xs:element name="EndpointReference" type="wsa:EndpointReferenceType"/>
+  <xs:complexType name="EndpointReferenceType">
+    <xs:sequence>
+      <xs:element name="Address" type="wsa:AttributedURI"/>
+      <xs:element name="ReferenceProperties" type="wsa:ReferencePropertiesType" minOccurs="0"/>
+      <xs:element name="PortType" type="wsa:AttributedQName" minOccurs="0"/>
+      <xs:element name="ServiceName" type="wsa:ServiceNameType" minOccurs="0"/>
+      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>If "Policy" elements from namespace "http://schemas.xmlsoap.org/ws/2002/12/policy#policy" are used, they must appear first (before any extensibility elements).</xs:documentation>
+        </xs:annotation>
+      </xs:any>
+    </xs:sequence>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+  </xs:complexType>
+  <xs:complexType name="ReferencePropertiesType">
+    <xs:sequence>
+      <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="ServiceNameType">
+    <xs:simpleContent>
+      <xs:extension base="xs:QName">
+        <xs:attribute name="PortName" type="xs:NCName"/>
+        <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <!--Message information header blocks-->
+  <xs:element name="MessageID" type="wsa:AttributedURI"/>
+  <xs:element name="RelatesTo" type="wsa:Relationship"/>
+  <xs:element name="To" type="wsa:AttributedURI"/>
+  <xs:element name="Action" type="wsa:AttributedURI"/>
+  <xs:element name="From" type="wsa:EndpointReferenceType"/>
+  <xs:element name="ReplyTo" type="wsa:EndpointReferenceType"/>
+  <xs:element name="FaultTo" type="wsa:EndpointReferenceType"/>
+  <xs:complexType name="Relationship">
+    <xs:simpleContent>
+      <xs:extension base="xs:anyURI">
+        <xs:attribute name="RelationshipType" type="xs:QName" use="optional"/>
+        <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:simpleType name="RelationshipTypeValues">
+    <xs:restriction base="xs:QName">
+      <xs:enumeration value="wsa:Reply"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="ReplyAfter"/>
+  <xs:complexType name="ReplyAfterType">
+    <xs:simpleContent>
+      <xs:extension base="xs:nonNegativeInteger">
+        <xs:anyAttribute namespace="##other"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:simpleType name="FaultSubcodeValues">
+    <xs:restriction base="xs:QName">
+      <xs:enumeration value="wsa:InvalidMessageInformationHeader"/>
+      <xs:enumeration value="wsa:MessageInformationHeaderRequired"/>
+      <xs:enumeration value="wsa:DestinationUnreachable"/>
+      <xs:enumeration value="wsa:ActionNotSupported"/>
+      <xs:enumeration value="wsa:EndpointUnavailable"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:attribute name="Action" type="xs:anyURI"/>
+  <!--Common declarations and definitions-->
+  <xs:complexType name="AttributedQName">
+    <xs:simpleContent>
+      <xs:extension base="xs:QName">
+        <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="AttributedURI">
+    <xs:simpleContent>
+      <xs:extension base="xs:anyURI">
+        <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-BaseFaults.wsdl b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-BaseFaults.wsdl
new file mode 100644
index 0000000..11f8683
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-BaseFaults.wsdl
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director. 
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director. 
+
+Copyright (C) OASIS Open (2004). All Rights Reserved. 
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><wsdl:definitions name="BaseFaults" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd">
+  <!--===================== Types Definitions ======================-->
+  <wsdl:types>
+    <xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified">
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" schemaLocation="WS-BaseFaults.xsd"/>
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="BaseFaultMessage">
+    <wsdl:part name="Fault" element="wsbf:BaseFault"/>
+  </wsdl:message>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-BaseFaults.xsd b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-BaseFaults.xsd
new file mode 100644
index 0000000..87d3798
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-BaseFaults.xsd
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director. 
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director. 
+
+Copyright (C) OASIS Open (2004). All Rights Reserved. 
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd">
+  <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+  <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd">
+    <xsd:annotation>
+      <xsd:documentation>Get access to the xml: attribute groups for xml:lang as declared on 'schema'
+        and 'documentation' below</xsd:documentation>
+    </xsd:annotation>
+  </xsd:import>
+  <!--====================== BaseFault Types =======================-->
+  <xsd:element name="BaseFault" type="wsbf:BaseFaultType"/>
+  <xsd:complexType name="BaseFaultType">
+    <xsd:sequence>
+      <xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="1" maxOccurs="1"/>
+      <xsd:element name="Originator" type="wsa:EndpointReferenceType" minOccurs="0" maxOccurs="1"/>
+      <xsd:element name="ErrorCode" minOccurs="0" maxOccurs="1">
+        <xsd:complexType>
+          <xsd:complexContent mixed="true">
+            <xsd:extension base="xsd:anyType">
+              <xsd:attribute name="dialect" type="xsd:anyURI" use="required"/>
+            </xsd:extension>
+          </xsd:complexContent>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="Description" minOccurs="0" maxOccurs="unbounded">
+        <xsd:complexType>
+          <xsd:simpleContent>
+            <xsd:extension base="xsd:string">
+              <xsd:attribute ref="xml:lang" use="optional"/>
+            </xsd:extension>
+          </xsd:simpleContent>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="FaultCause" type="wsbf:BaseFaultType" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+</xsd:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-BaseN.wsdl b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-BaseN.wsdl
new file mode 100644
index 0000000..418e66c
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-BaseN.wsdl
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><wsdl:definitions name="WS-BaseNotification" targetNamespace="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy" xmlns:wsnt="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" xmlns:wsntw="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.wsdl" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:wsrpw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" xmlns:wsrl="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" xmlns:wsrlw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl">
+  <!--========================== Imports ===========================-->
+  <wsdl:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" location="WS-ResourceProperties.wsdl"/>
+  <wsdl:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" location="WS-ResourceLifetime.wsdl"/>
+  <!--===================== Types Definitions ======================-->
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified">
+      <xsd:include schemaLocation="WS-BaseN.xsd"/>
+      <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" schemaLocation="WS-BaseFaults.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" schemaLocation="WS-ResourceProperties.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" schemaLocation="WS-ResourceLifetime.xsd"/>
+      <!--=============== Resource Property Related  ===================-->
+      <!--======== Resource Properties for NotificationProducer ========-->
+      <xsd:element name="NotificationProducerRP">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element ref="wsnt:Topic" minOccurs="1" maxOccurs="unbounded"/>
+            <xsd:element ref="wsnt:FixedTopicSet" minOccurs="1" maxOccurs="1"/>
+            <xsd:element ref="wsnt:TopicExpressionDialects" minOccurs="1" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!--======== Resource Properties for SubscriptionManager =========-->
+      <xsd:element name="SubscriptionManagerRP">
+        <xsd:complexType>
+          <xsd:sequence>
+            <!--From WS-ResourceLifetime ScheduledResourceTermination-->
+            <xsd:element ref="wsrl:CurrentTime" minOccurs="1" maxOccurs="1"/>
+            <xsd:element ref="wsrl:TerminationTime" minOccurs="1" maxOccurs="1"/>
+            <!--SubscriptionManager specific-->
+            <xsd:element ref="wsnt:ConsumerReference" minOccurs="1" maxOccurs="1"/>
+            <xsd:element ref="wsnt:TopicExpression" minOccurs="1" maxOccurs="1"/>
+            <xsd:element ref="wsnt:UseNotify" minOccurs="1" maxOccurs="1"/>
+            <xsd:element ref="wsnt:Precondition" minOccurs="0" maxOccurs="1"/>
+            <xsd:element ref="wsnt:Selector" minOccurs="0" maxOccurs="1"/>
+            <xsd:element ref="wsnt:SubscriptionPolicy" minOccurs="0" maxOccurs="1"/>
+            <xsd:element ref="wsnt:CreationTime" minOccurs="0" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!--================== Message Helper Types  =====================-->
+      <xsd:complexType name="NotificationMessageHolderType">
+        <xsd:sequence>
+          <xsd:element name="Topic" type="wsnt:TopicExpressionType" minOccurs="1" maxOccurs="1"/>
+          <xsd:element name="ProducerReference" type="wsa:EndpointReferenceType" minOccurs="0" maxOccurs="1"/>
+          <xsd:element name="Message" type="xsd:anyType" minOccurs="1" maxOccurs="1"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <!--========== Message Types for NotificationConsumer  ===========-->
+      <xsd:element name="Notify">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="NotificationMessage" type="wsnt:NotificationMessageHolderType" minOccurs="1" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!--========== Message Types for NotificationProducer  ===========-->
+      <xsd:element name="SubscribeResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="SubscriptionReference" type="wsa:EndpointReferenceType" minOccurs="0" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="GetCurrentMessage">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="Topic" type="wsnt:TopicExpressionType"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="GetCurrentMessageResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:complexType name="ResourceUnknownFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="ResourceUnknownFault" type="wsnt:ResourceUnknownFaultType"/>
+      <xsd:complexType name="SubscribeCreationFailedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="SubscribeCreationFailedFault" type="wsnt:SubscribeCreationFailedFaultType"/>
+      <xsd:complexType name="TopicPathDialectUnknownFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="TopicPathDialectUnknownFault" type="wsnt:TopicPathDialectUnknownFaultType"/>
+      <xsd:complexType name="InvalidTopicExpressionFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="InvalidTopicExpressionFault" type="wsnt:InvalidTopicExpressionFaultType"/>
+      <xsd:complexType name="TopicNotSupportedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="TopicNotSupportedFault" type="wsnt:TopicNotSupportedFaultType"/>
+      <xsd:complexType name="NoCurrentMessageOnTopicFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="NoCurrentMessageOnTopicFault" type="wsnt:NoCurrentMessageOnTopicFaultType"/>
+      <!--========== Message Types for SubscriptionManager  ===========-->
+      <xsd:element name="PauseSubscription">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:element name="PauseSubscriptionResponse">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:element name="ResumeSubscription">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:element name="ResumeSubscriptionResponse">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:complexType name="PauseFailedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="PauseFailedFault" type="wsnt:PauseFailedFaultType"/>
+      <xsd:complexType name="ResumeFailedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="ResumeFailedFault" type="wsnt:ResumeFailedFaultType"/>
+    </xsd:schema>
+  </wsdl:types>
+  <!--================ NotificationConsumer::Notify ================ 
+  Notify(
+    NotificationMessage
+      (TopicExpression, ProducerReference, Message)*
+  returns: n/a (one way)-->
+  <wsdl:message name="Notify">
+    <wsdl:part name="Notify" element="wsnt:Notify"/>
+  </wsdl:message>
+  <!--============== NotificationProducer::Subscribe =============== 
+  Subscribe(
+   (ConsumerEndpointReference, TopicExpression, [UseNotify],
+   [Precondition], [Selector], [SubscriptionPolicy], 
+   [InitialTerminationTime])   
+  returns: WS-Resource qualified EPR to a Subscription-->
+  <wsdl:message name="SubscribeRequest">
+    <wsdl:part name="SubscribeRequest" element="wsnt:Subscribe"/>
+  </wsdl:message>
+  <wsdl:message name="SubscribeResponse">
+    <wsdl:part name="SubscribeResponse" element="wsnt:SubscribeResponse"/>
+  </wsdl:message>
+  <wsdl:message name="ResourceUnknownFault">
+    <part name="ResourceUnknownFault" element="wsnt:ResourceUnknownFault"/>
+  </wsdl:message>
+  <wsdl:message name="SubscribeCreationFailedFault">
+    <part name="SubscribeCreationFailedFault" element="wsnt:SubscribeCreationFailedFault"/>
+  </wsdl:message>
+  <wsdl:message name="TopicPathDialectUnknownFault">
+    <part name="TopicPathDialectUnknownFault" element="wsnt:TopicPathDialectUnknownFault"/>
+  </wsdl:message>
+  <!--========== NotificationProducer::GetCurrentMessage =========== 
+  GetCurrentMessage(topicExpression)
+  returns: a NotificationMessage (xsd:any)-->
+  <wsdl:message name="GetCurrentMessageRequest">
+    <wsdl:part name="GetCurrentMessageRequest" element="wsnt:GetCurrentMessage"/>
+  </wsdl:message>
+  <wsdl:message name="GetCurrentMessageResponse">
+    <wsdl:part name="GetCurrentMessageResponse" element="wsnt:GetCurrentMessageResponse"/>
+  </wsdl:message>
+  <wsdl:message name="InvalidTopicExpressionFault">
+    <part name="InvalidTopicExpressionFault" element="wsnt:InvalidTopicExpressionFault"/>
+  </wsdl:message>
+  <wsdl:message name="TopicNotSupportedFault">
+    <part name="TopicNotSupportedFault" element="wsnt:TopicNotSupportedFault"/>
+  </wsdl:message>
+  <wsdl:message name="NoCurrentMessageOnTopicFault">
+    <part name="NoCurrentMessageOnTopicFault" element="wsnt:NoCurrentMessageOnTopicFault"/>
+  </wsdl:message>
+  <!--========== SubscriptionManager::PauseSubscription ============
+   PauseSubscription()
+   returns: empty-->
+  <wsdl:message name="PauseSubscriptionRequest">
+    <wsdl:part name="PauseSubscriptionRequest" element="wsnt:PauseSubscription"/>
+  </wsdl:message>
+  <wsdl:message name="PauseSubscriptionResponse">
+    <wsdl:part name="PauseSubscriptionResponse" element="wsnt:PauseSubscriptionResponse"/>
+  </wsdl:message>
+  <wsdl:message name="PauseFailedFault">
+    <part name="PauseFailedFault" element="wsnt:PauseFailedFault"/>
+  </wsdl:message>
+  <!--========= SubscriptionManager::ResumeSubscription ============
+   ResumeSubscription()
+   returns: empty-->
+  <wsdl:message name="ResumeSubscriptionRequest">
+    <wsdl:part name="ResumeSubscriptionRequest" element="wsnt:ResumeSubscription"/>
+  </wsdl:message>
+  <wsdl:message name="ResumeSubscriptionResponse">
+    <wsdl:part name="ResumeSubscriptionResponse" element="wsnt:ResumeSubscriptionResponse"/>
+  </wsdl:message>
+  <wsdl:message name="ResumeFailedFault">
+    <part name="ResumeFailedFault" element="wsnt:ResumeFailedFault"/>
+  </wsdl:message>
+  <!--=================== PortType Definitions =====================-->
+  <!--========= NotificationConsumer PortType Definition ===========-->
+  <wsdl:portType name="NotificationConsumer">
+    <wsdl:operation name="Notify">
+      <wsdl:input message="wsntw:Notify" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/Notify"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <!--========= NotificationProducer PortType Definition ===========-->
+  <wsdl:portType name="NotificationProducer" wsrp:ResourceProperties="wsnt:NotificationProducerRP">
+    <!--========== extends wsrpw:ResourceProperties =============-->
+    <wsdl:operation name="GetResourceProperty">
+      <wsdl:input name="GetResourcePropertyRequest" message="wsrpw:GetResourcePropertyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <wsdl:output name="GetResourcePropertyResponse" message="wsrpw:GetResourcePropertyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourcePropertyResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+    </wsdl:operation>
+    <!--=========== NotificationProducer Specific ==============-->
+    <wsdl:operation name="Subscribe">
+      <wsdl:input message="wsntw:SubscribeRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/Subscribe"/>
+      <wsdl:output message="wsntw:SubscribeResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/SubscribeResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+      <wsdl:fault name="SubscribeCreationFailedFault" message="wsntw:SubscribeCreationFailedFault"/>
+      <wsdl:fault name="TopicPathDialectUnknownFault" message="wsntw:TopicPathDialectUnknownFault"/>
+      <wsdl:fault name="InvalidTopicExpressionFault" message="wsntw:InvalidTopicExpressionFault"/>
+      <wsdl:fault name="TopicNotSupportedFault" message="wsntw:TopicNotSupportedFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="GetCurrentMessage">
+      <wsdl:input message="wsntw:GetCurrentMessageRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/GetCurrentMessage"/>
+      <wsdl:output message="wsntw:GetCurrentMessageResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/GetCurrentMessageResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidTopicExpressionFault" message="wsntw:InvalidTopicExpressionFault"/>
+      <wsdl:fault name="TopicNotSupportedFault" message="wsntw:TopicNotSupportedFault"/>
+      <wsdl:fault name="NoCurrentMessageOnTopicFault" message="wsntw:NoCurrentMessageOnTopicFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <!--========== SubscriptionManager PortType Definition ===========-->
+  <wsdl:portType name="SubscriptionManager" wsrp:ResourceProperties="wsnt:SubscriptionManagerRP">
+    <!--========== extends wsrpw:ResourceProperties =============-->
+    <wsdl:operation name="GetResourceProperty">
+      <wsdl:input name="GetResourcePropertyRequest" message="wsrpw:GetResourcePropertyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <wsdl:output name="GetResourcePropertyResponse" message="wsrpw:GetResourcePropertyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourcePropertyResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+    </wsdl:operation>
+    <!--=== extends wsrlw:ImmediateResourceTermination ==========-->
+    <wsdl:operation name="Destroy">
+      <wsdl:input message="wsrlw:DestroyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/Destroy"/>
+      <wsdl:output message="wsrlw:DestroyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/DestroyResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrlw:ResourceUnknownFault"/>
+      <wsdl:fault name="ResourceNotDestroyedFault" message="wsrlw:ResourceNotDestroyedFault"/>
+    </wsdl:operation>
+    <!--=== extends wsrl:ScheduledResourceTermination ==========-->
+    <wsdl:operation name="SetTerminationTime">
+      <wsdl:input message="wsrlw:SetTerminationTimeRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTime"/>
+      <wsdl:output message="wsrlw:SetTerminationTimeResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTimeResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrlw:ResourceUnknownFault"/>
+      <wsdl:fault name="UnableToSetTerminationTimeFault" message="wsrlw:UnableToSetTerminationTimeFault"/>
+      <wsdl:fault name="TerminationTimeChangeRejectedFault" message="wsrlw:TerminationTimeChangeRejectedFault"/>
+    </wsdl:operation>
+    <!--========= SubscriptionManager specific operations ======-->
+    <wsdl:operation name="PauseSubscription">
+      <wsdl:input message="wsntw:PauseSubscriptionRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/PauseSubscription"/>
+      <wsdl:output message="wsntw:PauseSubscriptionResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/PauseSubscriptionResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+      <wsdl:fault name="PauseFailedFault" message="wsntw:PauseFailedFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="ResumeSubscription">
+      <wsdl:input message="wsntw:ResumeSubscriptionRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/ResumeSubscription"/>
+      <wsdl:output message="wsntw:ResumeSubscriptionResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/ResumeSubscriptionResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+      <wsdl:fault name="ResumeFailedFault" message="wsntw:ResumeFailedFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-BaseN.xsd b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-BaseN.xsd
new file mode 100644
index 0000000..9bdf6ae
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-BaseN.xsd
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><xsd:schema targetNamespace="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsnt="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd">
+  <!--======================== Imports  ============================-->
+  <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+  <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" schemaLocation="WS-ResourceProperties.xsd"/>
+  <!--========== Message Types for NotificationProducer  ===========-->
+  <xsd:element name="Subscribe">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element name="ConsumerReference" type="wsa:EndpointReferenceType" minOccurs="1" maxOccurs="1"/>
+        <xsd:element name="TopicExpression" type="wsnt:TopicExpressionType" minOccurs="1" maxOccurs="1"/>
+        <xsd:element name="UseNotify" type="xsd:boolean" default="true" minOccurs="0" maxOccurs="1"/>
+        <xsd:element name="Precondition" type="wsrp:QueryExpressionType" minOccurs="0" maxOccurs="1"/>
+        <xsd:element name="Selector" type="wsrp:QueryExpressionType" minOccurs="0" maxOccurs="1"/>
+        <xsd:element name="SubscriptionPolicy" type="xsd:anyType" minOccurs="0" maxOccurs="1"/>
+        <xsd:element name="InitialTerminationTime" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+  <!--================= Topic Expression Container =================-->
+  <xsd:complexType name="TopicExpressionType" mixed="true">
+    <xsd:sequence>
+      <xsd:any minOccurs="0" maxOccurs="1" processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="Dialect" type="xsd:anyURI"/>
+  </xsd:complexType>
+  <xsd:element name="TopicExpression" type="wsnt:TopicExpressionType"/>
+  <!--=============== Resource Property Related  ===================-->
+  <!--======== Resource Properties for NotificationProducer ========-->
+  <xsd:element name="Topic" type="wsnt:TopicExpressionType"/>
+  <xsd:element name="FixedTopicSet" type="xsd:boolean"/>
+  <xsd:element name="TopicExpressionDialects" type="xsd:anyURI"/>
+  <!--======== Resource Properties for SubscriptionManager =========-->
+  <xsd:element name="ConsumerReference" type="wsa:EndpointReferenceType"/>
+  <xsd:element name="UseNotify" type="xsd:boolean"/>
+  <xsd:element name="Precondition" type="wsrp:QueryExpressionType"/>
+  <xsd:element name="Selector" type="wsrp:QueryExpressionType"/>
+  <xsd:element name="SubscriptionPolicy" type="xsd:anyType"/>
+  <xsd:element name="CreationTime" type="xsd:dateTime"/>
+</xsd:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-ResourceLifetime.wsdl b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-ResourceLifetime.wsdl
new file mode 100644
index 0000000..3d81ce5
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-ResourceLifetime.wsdl
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><wsdl:definitions name="WS-ResourceLifetime" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsrl="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" xmlns:wsrlw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema">
+      <xsd:include schemaLocation="WS-ResourceLifetime.xsd"/>
+      <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" schemaLocation="WS-BaseFaults.xsd"/>
+      <!--==== Resource Properties for ScheduledResourceTermination ====-->
+      <xsd:element name="ScheduledResourceTerminationRP">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element maxOccurs="1" minOccurs="1" ref="wsrl:CurrentTime"/>
+            <xsd:element maxOccurs="1" minOccurs="1" ref="wsrl:TerminationTime"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!--====== Message Types for ImmediateResourceTermination  =======-->
+      <xsd:element name="Destroy">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:element name="DestroyResponse">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:complexType name="ResourceUnknownFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="ResourceUnknownFault" type="wsrl:ResourceUnknownFaultType"/>
+      <xsd:complexType name="ResourceNotDestroyedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="ResourceNotDestroyedFault" type="wsrl:ResourceNotDestroyedFaultType"/>
+      <!--====== Message Types for ScheduledResourceTermination  =======-->
+      <xsd:element name="SetTerminationTime">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="RequestedTerminationTime" nillable="true" type="xsd:dateTime"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="SetTerminationTimeResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="NewTerminationTime" nillable="true" type="xsd:dateTime"/>
+            <xsd:element name="CurrentTime" type="xsd:dateTime"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:complexType name="UnableToSetTerminationTimeFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="UnableToSetTerminationTimeFault" type="wsrl:UnableToSetTerminationTimeFaultType"/>
+      <xsd:complexType name="TerminationTimeChangeRejectedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="TerminationTimeChangeRejectedFault" type="wsrl:TerminationTimeChangeRejectedFaultType"/>
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="DestroyResponse">
+    <wsdl:part element="wsrl:DestroyResponse" name="DestroyResponse"/>
+  </wsdl:message>
+  <wsdl:message name="SetTerminationTimeRequest">
+    <wsdl:part element="wsrl:SetTerminationTime" name="SetTerminationTimeRequest"/>
+  </wsdl:message>
+  <wsdl:message name="ResourceUnknownFault">
+    <wsdl:part element="wsrl:ResourceUnknownFault" name="ResourceUnknownFault"/>
+  </wsdl:message>
+  <wsdl:message name="DestroyRequest">
+    <wsdl:part element="wsrl:Destroy" name="DestroyRequest"/>
+  </wsdl:message>
+  <wsdl:message name="UnableToSetTerminationTimeFault">
+    <wsdl:part element="wsrl:UnableToSetTerminationTimeFault" name="UnableToSetTerminationTimeFault"/>
+  </wsdl:message>
+  <wsdl:message name="SetTerminationTimeResponse">
+    <wsdl:part element="wsrl:SetTerminationTimeResponse" name="SetTerminationTimeResponse"/>
+  </wsdl:message>
+  <wsdl:message name="ResourceNotDestroyedFault">
+    <wsdl:part element="wsrl:ResourceNotDestroyedFault" name="ResourceNotDestroyedFault"/>
+  </wsdl:message>
+  <wsdl:message name="TerminationTimeChangeRejectedFault">
+    <wsdl:part element="wsrl:TerminationTimeChangeRejectedFault" name="TerminationTimeChangeRejectedFault"/>
+  </wsdl:message>
+  <wsdl:portType name="ScheduledResourceTermination" wsrp:ResourceProperties="wsrl:ScheduledResourceTerminationRP">
+    <wsdl:operation name="SetTerminationTime">
+      <wsdl:input message="wsrlw:SetTerminationTimeRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTime"/>
+      <wsdl:output message="wsrlw:SetTerminationTimeResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTimeResponse"/>
+      <wsdl:fault message="wsrlw:UnableToSetTerminationTimeFault" name="UnableToSetTerminationTimeFault"/>
+      <wsdl:fault message="wsrlw:ResourceUnknownFault" name="ResourceUnknownFault"/>
+      <wsdl:fault message="wsrlw:TerminationTimeChangeRejectedFault" name="TerminationTimeChangeRejectedFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="ImmediateResourceTermination">
+    <wsdl:operation name="Destroy">
+      <wsdl:input message="wsrlw:DestroyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/Destroy"/>
+      <wsdl:output message="wsrlw:DestroyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/DestroyResponse"/>
+      <wsdl:fault message="wsrlw:ResourceNotDestroyedFault" name="ResourceNotDestroyedFault"/>
+      <wsdl:fault message="wsrlw:ResourceUnknownFault" name="ResourceUnknownFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-ResourceLifetime.xsd b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-ResourceLifetime.xsd
new file mode 100644
index 0000000..a6dbef7
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-ResourceLifetime.xsd
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsrl="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd">
+  <!--=============== Resource Property Related  ===================-->
+  <!--==== Resource Properties for ScheduledResourceTermination ====-->
+  <xsd:element name="CurrentTime" type="xsd:dateTime"/>
+  <xsd:element name="TerminationTime" nillable="true" type="xsd:dateTime"/>
+  <!--============= Notification Message Related  ==================-->
+  <xsd:element name="TerminationNotification">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element name="TerminationTime" type="xsd:dateTime" minOccurs="1" maxOccurs="1"/>
+        <xsd:element name="TerminationReason" type="xsd:anyType" minOccurs="0" maxOccurs="1"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+</xsd:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-ResourceProperties.wsdl b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-ResourceProperties.wsdl
new file mode 100644
index 0000000..267066a
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-ResourceProperties.wsdl
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><wsdl:definitions name="WS-ResourceProperties" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:wsrpw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl">
+  <!--===================== Types Definitions ======================-->
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified">
+      <xsd:include schemaLocation="WS-ResourceProperties.xsd"/>
+      <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" schemaLocation="WS-BaseFaults.xsd"/>
+      <!--========== Message Types for GetResourceProperty  ============-->
+      <xsd:element name="GetResourceProperty" type="xsd:QName"/>
+      <xsd:element name="GetResourcePropertyResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:complexType name="ResourceUnknownFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="ResourceUnknownFault" type="wsrp:ResourceUnknownFaultType"/>
+      <xsd:complexType name="InvalidResourcePropertyQNameFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="InvalidResourcePropertyQNameFault" type="wsrp:InvalidResourcePropertyQNameFaultType"/>
+      <!--====== Message Types for GetMultipleResourceProperties =======-->
+      <xsd:element name="GetMultipleResourceProperties">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="ResourceProperty" type="xsd:QName" minOccurs="1" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="GetMultipleResourcePropertiesResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!--========= Message Types for SetResourceProperties ===========-->
+      <xsd:complexType name="InsertType">
+        <xsd:sequence>
+          <xsd:any processContents="lax" minOccurs="1" maxOccurs="unbounded"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:element name="Insert" type="wsrp:InsertType"/>
+      <xsd:complexType name="UpdateType">
+        <xsd:sequence>
+          <xsd:any processContents="lax" minOccurs="1" maxOccurs="unbounded"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:element name="Update" type="wsrp:UpdateType"/>
+      <xsd:complexType name="DeleteType">
+        <xsd:attribute name="ResourceProperty" type="xsd:QName" use="required"/>
+      </xsd:complexType>
+      <xsd:element name="Delete" type="wsrp:DeleteType"/>
+      <xsd:element name="SetResourceProperties">
+        <xsd:complexType>
+          <xsd:choice minOccurs="0" maxOccurs="unbounded">
+            <xsd:element ref="wsrp:Insert"/>
+            <xsd:element ref="wsrp:Update"/>
+            <xsd:element ref="wsrp:Delete"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="SetResourcePropertiesResponse">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:complexType name="InvalidSetResourcePropertiesRequestContentFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="InvalidSetResourcePropertiesRequestContentFault" type="wsrp:InvalidSetResourcePropertiesRequestContentFaultType"/>
+      <xsd:complexType name="UnableToModifyResourcePropertyFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="UnableToModifyResourcePropertyFault" type="wsrp:UnableToModifyResourcePropertyFaultType"/>
+      <xsd:complexType name="SetResourcePropertyRequestFailedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="SetResourcePropertyRequestFailedFault" type="wsrp:SetResourcePropertyRequestFailedFaultType"/>
+      <!--========= Message Types for QueryResourceProperties ==========-->
+      <xsd:element name="QueryResourceProperties">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element ref="wsrp:QueryExpression" minOccurs="1" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="QueryResourcePropertiesResponse">
+        <xsd:complexType mixed="true">
+          <xsd:sequence>
+            <xsd:any processContents="lax" minOccurs="1" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:complexType name="UnknownQueryExpressionDialectFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="UnknownQueryExpressionDialectFault" type="wsrp:UnknownQueryExpressionDialectFaultType"/>
+      <xsd:complexType name="InvalidQueryExpressionFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="InvalidQueryExpressionFault" type="wsrp:InvalidQueryExpressionFaultType"/>
+      <xsd:complexType name="QueryEvaluationErrorFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="QueryEvaluationErrorFault" type="wsrp:QueryEvaluationErrorFaultType"/>
+    </xsd:schema>
+  </wsdl:types>
+  <!--===================== GetResourceProperty ==================== 
+  GetResourceProperty(QName)
+  returns: any-->
+  <wsdl:message name="GetResourcePropertyRequest">
+    <wsdl:part name="GetResourcePropertyRequest" element="wsrp:GetResourceProperty"/>
+  </wsdl:message>
+  <wsdl:message name="GetResourcePropertyResponse">
+    <wsdl:part name="GetResourcePropertyResponse" element="wsrp:GetResourcePropertyResponse"/>
+  </wsdl:message>
+  <wsdl:message name="ResourceUnknownFault">
+    <part name="ResourceUnknownFault" element="wsrp:ResourceUnknownFault"/>
+  </wsdl:message>
+  <wsdl:message name="InvalidResourcePropertyQNameFault">
+    <part name="InvalidResourcePropertyQNameFault" element="wsrp:InvalidResourcePropertyQNameFault"/>
+  </wsdl:message>
+  <!--==============GetMultipleResourceProperties ================== 
+  GetMultipleResourceProperties(list of QName)
+  returns: sequence of any-->
+  <wsdl:message name="GetMultipleResourcePropertiesRequest">
+    <wsdl:part name="GetMultipleResourcePropertiesRequest" element="wsrp:GetMultipleResourceProperties"/>
+  </wsdl:message>
+  <wsdl:message name="GetMultipleResourcePropertiesResponse">
+    <wsdl:part name="GetMultipleResourcePropertiesResponse" element="wsrp:GetMultipleResourcePropertiesResponse"/>
+  </wsdl:message>
+  <!--================= SetResourceProperties ====================== 
+  SetResourceProperties(
+  { insert (any)* |
+    update (any)* |
+    delete@QName } + 
+  )
+  returns: empty-->
+  <wsdl:message name="SetResourcePropertiesRequest">
+    <wsdl:part name="SetResourcePropertiesRequest" element="wsrp:SetResourceProperties"/>
+  </wsdl:message>
+  <wsdl:message name="SetResourcePropertiesResponse">
+    <wsdl:part name="SetResourcePropertiesResponse" element="wsrp:SetResourcePropertiesResponse"/>
+  </wsdl:message>
+  <wsdl:message name="InvalidSetResourcePropertiesRequestContentFault">
+    <part name="InvalidSetResourcePropertiesRequestContentFault" element="wsrp:InvalidSetResourcePropertiesRequestContentFault"/>
+  </wsdl:message>
+  <wsdl:message name="UnableToModifyResourcePropertyFault">
+    <part name="UnableToModifyResourcePropertyFault" element="wsrp:UnableToModifyResourcePropertyFault"/>
+  </wsdl:message>
+  <wsdl:message name="SetResourcePropertyRequestFailedFault">
+    <part name="SetResourcePropertyRequestFailedFault" element="wsrp:SetResourcePropertyRequestFailedFault"/>
+  </wsdl:message>
+  <!--================ QueryResourceProperties ===================== 
+  QueryResourceProperties(QueryExpression)
+  returns: any-->
+  <wsdl:message name="QueryResourcePropertiesRequest">
+    <wsdl:part name="QueryResourcePropertiesRequest" element="wsrp:QueryResourceProperties"/>
+  </wsdl:message>
+  <wsdl:message name="QueryResourcePropertiesResponse">
+    <wsdl:part name="QueryResourcePropertiesResponse" element="wsrp:QueryResourcePropertiesResponse"/>
+  </wsdl:message>
+  <wsdl:message name="UnknownQueryExpressionDialectFault">
+    <part name="UnknownQueryExpressionDialectFault" element="wsrp:UnknownQueryExpressionDialectFault"/>
+  </wsdl:message>
+  <wsdl:message name="InvalidQueryExpressionFault">
+    <part name="InvalidQueryExpressionFault" element="wsrp:InvalidQueryExpressionFault"/>
+  </wsdl:message>
+  <wsdl:message name="QueryEvaluationErrorFault">
+    <part name="QueryEvaluationErrorFault" element="wsrp:QueryEvaluationErrorFault"/>
+  </wsdl:message>
+  <!--=================== PortType Definitions =====================-->
+  <wsdl:portType name="GetResourceProperty">
+    <wsdl:operation name="GetResourceProperty">
+      <wsdl:input name="GetResourcePropertyRequest" message="wsrpw:GetResourcePropertyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <wsdl:output name="GetResourcePropertyResponse" message="wsrpw:GetResourcePropertyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourcePropertyResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="GetMultipleResourceProperties">
+    <wsdl:operation name="GetMultipleResourceProperties">
+      <wsdl:input name="GetMultipleResourcePropertiesRequest" message="wsrpw:GetMultipleResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourceProperties"/>
+      <wsdl:output name="GetMultipleResourcePropertiesResponse" message="wsrpw:GetMultipleResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourcePropertiesResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="SetResourceProperties">
+    <wsdl:operation name="SetResourceProperties">
+      <wsdl:input name="SetResourcePropertiesRequest" message="wsrpw:SetResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/SetResourceProperties"/>
+      <wsdl:output name="SetResourcePropertiesResponse" message="wsrpw:SetResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/SetResourcePropertiesResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidSetResourcePropertiesRequestContentFault" message="wsrpw:InvalidSetResourcePropertiesRequestContentFault"/>
+      <wsdl:fault name="UnableToModifyResourcePropertyFault" message="wsrpw:UnableToModifyResourcePropertyFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <wsdl:fault name="SetResourcePropertyRequestFailedFault" message="wsrpw:SetResourcePropertyRequestFailedFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="QueryResourceProperties">
+    <wsdl:operation name="QueryResourceProperties">
+      <wsdl:input name="QueryResourcePropertiesRequest" message="wsrpw:QueryResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourceProperties"/>
+      <wsdl:output name="QueryResourcePropertiesResponse" message="wsrpw:QueryResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourcePropertiesResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <wsdl:fault name="UnknownQueryExpressionDialectFault" message="wsrpw:UnknownQueryExpressionDialectFault"/>
+      <wsdl:fault name="InvalidQueryExpressionFault" message="wsrpw:InvalidQueryExpressionFault"/>
+      <wsdl:fault name="QueryEvaluationErrorFault" message="wsrpw:QueryEvaluationErrorFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-ResourceProperties.xsd b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-ResourceProperties.xsd
new file mode 100644
index 0000000..1527149
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/WS-ResourceProperties.xsd
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <!--======= Global Attribute Declaration for WSDL 1.1 portType====-->
+  <xsd:attribute name="ResourceProperties" type="xsd:QName"/>
+  <!--= Notification Message for ResourceProperties value change ===-->
+  <xsd:complexType name="ResourcePropertyValueChangeNotificationType">
+    <xsd:sequence>
+      <xsd:element name="OldValue" nillable="true" minOccurs="0" maxOccurs="1">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any minOccurs="1" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="NewValue" nillable="true" minOccurs="1" maxOccurs="1">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any minOccurs="1" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+  <xsd:element name="ResourcePropertyValueChangeNotification" type="wsrp:ResourcePropertyValueChangeNotificationType"/>
+  <xsd:complexType name="QueryExpressionType" mixed="true">
+    <xsd:sequence>
+      <xsd:any minOccurs="0" maxOccurs="1" processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="Dialect" type="xsd:anyURI"/>
+  </xsd:complexType>
+  <xsd:element name="QueryExpression" type="wsrp:QueryExpressionType"/>
+</xsd:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/security.xsd b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/security.xsd
new file mode 100644
index 0000000..3c7d8e8
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/security.xsd
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="gme://caGrid.caBIG/1.0/gov.nih.nci.cagrid.metadata.security" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sec="gme://caGrid.caBIG/1.0/gov.nih.nci.cagrid.metadata.security">
+  <xs:element name="ServiceSecurityMetadata" type="sec:ServiceSecurityMetadata"/>
+  <xs:complexType name="ServiceSecurityMetadata">
+    <xs:sequence>
+      <xs:element name="defaultCommunicationMechanism" type="sec:CommunicationMechanism"/>
+      <xs:element name="operations">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element ref="sec:Operation" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="CommunicationMechanism" type="sec:CommunicationMechanism"/>
+  <xs:complexType name="CommunicationMechanism">
+    <xs:all>
+      <xs:element ref="sec:GSITransport" minOccurs="0"/>
+      <xs:element ref="sec:GSISecureMessage" minOccurs="0"/>
+      <xs:element ref="sec:GSISecureConversation" minOccurs="0"/>
+      <xs:element ref="sec:None" minOccurs="0"/>
+    </xs:all>
+    <xs:attribute name="anonymousPermitted" use="required" type="xs:boolean"/>
+  </xs:complexType>
+  <xs:element name="Operation" type="sec:Operation"/>
+  <xs:complexType name="Operation">
+    <xs:sequence>
+      <xs:element ref="sec:CommunicationMechanism"/>
+    </xs:sequence>
+    <xs:attribute name="name" use="required" type="xs:string"/>
+  </xs:complexType>
+  <xs:element name="CommunicationStyle" type="sec:CommunicationStyle"/>
+  <xs:complexType name="CommunicationStyle">
+    <xs:sequence/>
+    <xs:attribute name="protectionLevel" use="required" type="sec:protectionLevelType">
+      <xs:annotation>
+        <xs:documentation>Describes data protection level (integrity, privacy, either,
+				none)</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:element name="GSISecureMessage" type="sec:GSISecureMessage"/>
+  <xs:complexType name="GSISecureMessage">
+    <xs:complexContent>
+      <xs:extension base="sec:CommunicationStyle">
+        <xs:sequence/>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="GSISecureConversation" type="sec:GSISecureConversation"/>
+  <xs:complexType name="GSISecureConversation">
+    <xs:complexContent>
+      <xs:extension base="sec:CommunicationStyle">
+        <xs:sequence/>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:simpleType name="protectionLevelType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="integrity"/>
+      <xs:enumeration value="privacy"/>
+      <xs:enumeration value="either"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="GSITransport" type="sec:GSITransport"/>
+  <xs:complexType name="GSITransport">
+    <xs:complexContent>
+      <xs:extension base="sec:CommunicationStyle">
+        <xs:sequence/>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="None" type="sec:None"/>
+  <xs:complexType name="None">
+    <xs:sequence/>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/xml.xsd b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/xml.xsd
new file mode 100644
index 0000000..730b4c9
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/TAV-744/xml.xsd
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xml:lang="en" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:annotation>
+    <xs:documentation>See http://www.w3.org/XML/1998/namespace.html and
+   http://www.w3.org/TR/REC-xml for information about this namespace.
+
+    This schema document describes the XML namespace, in a form
+    suitable for import by other schema documents.  
+
+    Note that local names in this namespace are intended to be defined
+    only by the World Wide Web Consortium or its subgroups.  The
+    following names are currently defined in this namespace and should
+    not be used with conflicting semantics by any Working Group,
+    specification, or document instance:
+
+    base (as an attribute name): denotes an attribute whose value
+         provides a URI to be used as the base for interpreting any
+         relative URIs in the scope of the element on which it
+         appears; its value is inherited.  This name is reserved
+         by virtue of its definition in the XML Base specification.
+
+    lang (as an attribute name): denotes an attribute whose value
+         is a language code for the natural language of the content of
+         any element; its value is inherited.  This name is reserved
+         by virtue of its definition in the XML specification.
+  
+    space (as an attribute name): denotes an attribute whose
+         value is a keyword indicating what whitespace processing
+         discipline is intended for the content of the element; its
+         value is inherited.  This name is reserved by virtue of its
+         definition in the XML specification.
+
+    Father (in any context at all): denotes Jon Bosak, the chair of 
+         the original XML Working Group.  This name is reserved by 
+         the following decision of the W3C XML Plenary and 
+         XML Coordination groups:
+
+             In appreciation for his vision, leadership and dedication
+             the W3C XML Plenary on this 10th day of February, 2000
+             reserves for Jon Bosak in perpetuity the XML name
+             xml:Father</xs:documentation>
+  </xs:annotation>
+  <xs:annotation>
+    <xs:documentation>This schema defines attributes and an attribute group
+        suitable for use by
+        schemas wishing to allow xml:base, xml:lang or xml:space attributes
+        on elements they define.
+
+        To enable this, such a schema must import this schema
+        for the XML namespace, e.g. as follows:
+        &lt;schema . . .>
+         . . .
+         &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                    schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
+
+        Subsequently, qualified reference to any of the attributes
+        or the group defined below will have the desired effect, e.g.
+
+        &lt;type . . .>
+         . . .
+         &lt;attributeGroup ref="xml:specialAttrs"/>
+ 
+         will define a type which will schema-validate an instance
+         element with any of those attributes</xs:documentation>
+  </xs:annotation>
+  <xs:annotation>
+    <xs:documentation>In keeping with the XML Schema WG's standard versioning
+   policy, this schema document will persist at
+   http://www.w3.org/2001/03/xml.xsd.
+   At the date of issue it can also be found at
+   http://www.w3.org/2001/xml.xsd.
+   The schema document at that URI may however change in the future,
+   in order to remain compatible with the latest version of XML Schema
+   itself.  In other words, if the XML Schema namespace changes, the version
+   of this document at
+   http://www.w3.org/2001/xml.xsd will change
+   accordingly; the version at
+   http://www.w3.org/2001/03/xml.xsd will not change.</xs:documentation>
+  </xs:annotation>
+  <xs:attribute name="lang" type="xs:language">
+    <xs:annotation>
+      <xs:documentation>In due course, we should install the relevant ISO 2- and 3-letter
+         codes as the enumerated possible values . . .</xs:documentation>
+    </xs:annotation>
+  </xs:attribute>
+  <xs:attribute name="space" default="preserve">
+    <xs:simpleType>
+      <xs:restriction base="xs:NCName">
+        <xs:enumeration value="default"/>
+        <xs:enumeration value="preserve"/>
+      </xs:restriction>
+    </xs:simpleType>
+  </xs:attribute>
+  <xs:attribute name="base" type="xs:anyURI">
+    <xs:annotation>
+      <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+                     information about this attribute.</xs:documentation>
+    </xs:annotation>
+  </xs:attribute>
+  <xs:attributeGroup name="specialAttrs">
+    <xs:attribute ref="xml:base"/>
+    <xs:attribute ref="xml:lang"/>
+    <xs:attribute ref="xml:space"/>
+  </xs:attributeGroup>
+</xs:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/CounterService_.wsdl b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/CounterService_.wsdl
new file mode 100644
index 0000000..7e628e0
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/CounterService_.wsdl
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions name="Counter" targetNamespace="http://counter.com/service" xmlns:binding="http://counter.com/bindings" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:import location="counter_bindings.wsdl" namespace="http://counter.com/bindings"/>
+  <wsdl:service name="CounterService">
+    <wsdl:port binding="binding:CounterPortTypeSOAPBinding" name="CounterPortTypePort">
+      <soap:address location="http://localhost:8080/wsrf/services/CounterService"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-Addressing.xsd b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-Addressing.xsd
new file mode 100644
index 0000000..008c65e
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-Addressing.xsd
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Legal Disclaimer
+
+The presentation, distribution or other dissemination of the information 
+contained in this document is not a license, either expressly or impliedly, 
+to any intellectual property owned or controlled by BEA or IBM or Microsoft
+and\or any other third party.  BEA and IBM and Microsoft and\or any other
+third party may have patents, patent applications, trademarks, copyrights, 
+or other intellectual property rights covering subject matter in this 
+document.  The furnishing of this document does not give you any license 
+to BEA's and IBM's and Microsoft's or any other third party's patents, 
+trademarks, copyrights, or other intellectual property.
+
+This document and the information contained herein is provided on an "AS IS"
+basis and to the maximum extent permitted by applicable law, BEA and IBM 
+and Microsoft provide the document AS IS AND WITH ALL FAULTS, and hereby 
+disclaims all other warranties and conditions, either express, implied or 
+statutory, including, but not limited to, any (if any) implied warranties, 
+duties or conditions of merchantability, of fitness for a particular 
+purpose, of accuracy or completeness of responses, of results, of 
+workmanlike effort, of lack of viruses, and of lack of negligence, all with
+regard to the document. ALSO, THERE IS NO WARRANTY OR CONDITION OF 
+TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO DESCRIPTION OR 
+NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE 
+DOCUMENT.
+
+IN NO EVENT WILL BEA or IBM or MICROSOFT BE LIABLE TO ANY OTHER PARTY FOR THE
+COST OF PROCURING SUBSTITUTE GOODS OR SERVICES, LOST PROFITS, LOSS OF USE, 
+LOSS OF DATA, OR ANY INCIDENTAL, CONSEQUENTIAL, DIRECT, INDIRECT, OR SPECIAL 
+DAMAGES WHETHER UNDER CONTRACT, TORT, WARRANTY, OR OTHERWISE, ARISING IN ANY 
+WAY OUT OF THIS OR ANY OTHER AGREEMENT RELATING TO THIS DOCUMENT, WHETHER OR 
+NOT SUCH PARTY HAD ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.
+
+Copyright Notice
+
+Copyright 2003,2004 BEA Systems Inc. and IBM Corporation and Microsoft Corporation. All rights reserved.--><xs:schema targetNamespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" elementFormDefault="qualified" blockDefault="#all" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
+  <!--//////////////////// WS-Addressing ////////////////////-->
+  <!--Endpoint reference-->
+  <xs:element name="EndpointReference" type="wsa:EndpointReferenceType"/>
+  <xs:complexType name="EndpointReferenceType">
+    <xs:sequence>
+      <xs:element name="Address" type="wsa:AttributedURI"/>
+      <xs:element name="ReferenceProperties" type="wsa:ReferencePropertiesType" minOccurs="0"/>
+      <xs:element name="PortType" type="wsa:AttributedQName" minOccurs="0"/>
+      <xs:element name="ServiceName" type="wsa:ServiceNameType" minOccurs="0"/>
+      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>If "Policy" elements from namespace "http://schemas.xmlsoap.org/ws/2002/12/policy#policy" are used, they must appear first (before any extensibility elements).</xs:documentation>
+        </xs:annotation>
+      </xs:any>
+    </xs:sequence>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+  </xs:complexType>
+  <xs:complexType name="ReferencePropertiesType">
+    <xs:sequence>
+      <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="ServiceNameType">
+    <xs:simpleContent>
+      <xs:extension base="xs:QName">
+        <xs:attribute name="PortName" type="xs:NCName"/>
+        <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <!--Message information header blocks-->
+  <xs:element name="MessageID" type="wsa:AttributedURI"/>
+  <xs:element name="RelatesTo" type="wsa:Relationship"/>
+  <xs:element name="To" type="wsa:AttributedURI"/>
+  <xs:element name="Action" type="wsa:AttributedURI"/>
+  <xs:element name="From" type="wsa:EndpointReferenceType"/>
+  <xs:element name="ReplyTo" type="wsa:EndpointReferenceType"/>
+  <xs:element name="FaultTo" type="wsa:EndpointReferenceType"/>
+  <xs:complexType name="Relationship">
+    <xs:simpleContent>
+      <xs:extension base="xs:anyURI">
+        <xs:attribute name="RelationshipType" type="xs:QName" use="optional"/>
+        <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:simpleType name="RelationshipTypeValues">
+    <xs:restriction base="xs:QName">
+      <xs:enumeration value="wsa:Reply"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="ReplyAfter"/>
+  <xs:complexType name="ReplyAfterType">
+    <xs:simpleContent>
+      <xs:extension base="xs:nonNegativeInteger">
+        <xs:anyAttribute namespace="##other"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:simpleType name="FaultSubcodeValues">
+    <xs:restriction base="xs:QName">
+      <xs:enumeration value="wsa:InvalidMessageInformationHeader"/>
+      <xs:enumeration value="wsa:MessageInformationHeaderRequired"/>
+      <xs:enumeration value="wsa:DestinationUnreachable"/>
+      <xs:enumeration value="wsa:ActionNotSupported"/>
+      <xs:enumeration value="wsa:EndpointUnavailable"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:attribute name="Action" type="xs:anyURI"/>
+  <!--Common declarations and definitions-->
+  <xs:complexType name="AttributedQName">
+    <xs:simpleContent>
+      <xs:extension base="xs:QName">
+        <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="AttributedURI">
+    <xs:simpleContent>
+      <xs:extension base="xs:anyURI">
+        <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-BaseFaults.xsd b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-BaseFaults.xsd
new file mode 100644
index 0000000..87d3798
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-BaseFaults.xsd
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director. 
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director. 
+
+Copyright (C) OASIS Open (2004). All Rights Reserved. 
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd">
+  <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+  <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd">
+    <xsd:annotation>
+      <xsd:documentation>Get access to the xml: attribute groups for xml:lang as declared on 'schema'
+        and 'documentation' below</xsd:documentation>
+    </xsd:annotation>
+  </xsd:import>
+  <!--====================== BaseFault Types =======================-->
+  <xsd:element name="BaseFault" type="wsbf:BaseFaultType"/>
+  <xsd:complexType name="BaseFaultType">
+    <xsd:sequence>
+      <xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="1" maxOccurs="1"/>
+      <xsd:element name="Originator" type="wsa:EndpointReferenceType" minOccurs="0" maxOccurs="1"/>
+      <xsd:element name="ErrorCode" minOccurs="0" maxOccurs="1">
+        <xsd:complexType>
+          <xsd:complexContent mixed="true">
+            <xsd:extension base="xsd:anyType">
+              <xsd:attribute name="dialect" type="xsd:anyURI" use="required"/>
+            </xsd:extension>
+          </xsd:complexContent>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="Description" minOccurs="0" maxOccurs="unbounded">
+        <xsd:complexType>
+          <xsd:simpleContent>
+            <xsd:extension base="xsd:string">
+              <xsd:attribute ref="xml:lang" use="optional"/>
+            </xsd:extension>
+          </xsd:simpleContent>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="FaultCause" type="wsbf:BaseFaultType" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+</xsd:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-BaseN.wsdl b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-BaseN.wsdl
new file mode 100644
index 0000000..418e66c
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-BaseN.wsdl
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><wsdl:definitions name="WS-BaseNotification" targetNamespace="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy" xmlns:wsnt="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" xmlns:wsntw="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.wsdl" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:wsrpw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" xmlns:wsrl="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" xmlns:wsrlw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl">
+  <!--========================== Imports ===========================-->
+  <wsdl:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" location="WS-ResourceProperties.wsdl"/>
+  <wsdl:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" location="WS-ResourceLifetime.wsdl"/>
+  <!--===================== Types Definitions ======================-->
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified">
+      <xsd:include schemaLocation="WS-BaseN.xsd"/>
+      <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" schemaLocation="WS-BaseFaults.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" schemaLocation="WS-ResourceProperties.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" schemaLocation="WS-ResourceLifetime.xsd"/>
+      <!--=============== Resource Property Related  ===================-->
+      <!--======== Resource Properties for NotificationProducer ========-->
+      <xsd:element name="NotificationProducerRP">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element ref="wsnt:Topic" minOccurs="1" maxOccurs="unbounded"/>
+            <xsd:element ref="wsnt:FixedTopicSet" minOccurs="1" maxOccurs="1"/>
+            <xsd:element ref="wsnt:TopicExpressionDialects" minOccurs="1" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!--======== Resource Properties for SubscriptionManager =========-->
+      <xsd:element name="SubscriptionManagerRP">
+        <xsd:complexType>
+          <xsd:sequence>
+            <!--From WS-ResourceLifetime ScheduledResourceTermination-->
+            <xsd:element ref="wsrl:CurrentTime" minOccurs="1" maxOccurs="1"/>
+            <xsd:element ref="wsrl:TerminationTime" minOccurs="1" maxOccurs="1"/>
+            <!--SubscriptionManager specific-->
+            <xsd:element ref="wsnt:ConsumerReference" minOccurs="1" maxOccurs="1"/>
+            <xsd:element ref="wsnt:TopicExpression" minOccurs="1" maxOccurs="1"/>
+            <xsd:element ref="wsnt:UseNotify" minOccurs="1" maxOccurs="1"/>
+            <xsd:element ref="wsnt:Precondition" minOccurs="0" maxOccurs="1"/>
+            <xsd:element ref="wsnt:Selector" minOccurs="0" maxOccurs="1"/>
+            <xsd:element ref="wsnt:SubscriptionPolicy" minOccurs="0" maxOccurs="1"/>
+            <xsd:element ref="wsnt:CreationTime" minOccurs="0" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!--================== Message Helper Types  =====================-->
+      <xsd:complexType name="NotificationMessageHolderType">
+        <xsd:sequence>
+          <xsd:element name="Topic" type="wsnt:TopicExpressionType" minOccurs="1" maxOccurs="1"/>
+          <xsd:element name="ProducerReference" type="wsa:EndpointReferenceType" minOccurs="0" maxOccurs="1"/>
+          <xsd:element name="Message" type="xsd:anyType" minOccurs="1" maxOccurs="1"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <!--========== Message Types for NotificationConsumer  ===========-->
+      <xsd:element name="Notify">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="NotificationMessage" type="wsnt:NotificationMessageHolderType" minOccurs="1" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!--========== Message Types for NotificationProducer  ===========-->
+      <xsd:element name="SubscribeResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="SubscriptionReference" type="wsa:EndpointReferenceType" minOccurs="0" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="GetCurrentMessage">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="Topic" type="wsnt:TopicExpressionType"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="GetCurrentMessageResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:complexType name="ResourceUnknownFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="ResourceUnknownFault" type="wsnt:ResourceUnknownFaultType"/>
+      <xsd:complexType name="SubscribeCreationFailedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="SubscribeCreationFailedFault" type="wsnt:SubscribeCreationFailedFaultType"/>
+      <xsd:complexType name="TopicPathDialectUnknownFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="TopicPathDialectUnknownFault" type="wsnt:TopicPathDialectUnknownFaultType"/>
+      <xsd:complexType name="InvalidTopicExpressionFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="InvalidTopicExpressionFault" type="wsnt:InvalidTopicExpressionFaultType"/>
+      <xsd:complexType name="TopicNotSupportedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="TopicNotSupportedFault" type="wsnt:TopicNotSupportedFaultType"/>
+      <xsd:complexType name="NoCurrentMessageOnTopicFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="NoCurrentMessageOnTopicFault" type="wsnt:NoCurrentMessageOnTopicFaultType"/>
+      <!--========== Message Types for SubscriptionManager  ===========-->
+      <xsd:element name="PauseSubscription">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:element name="PauseSubscriptionResponse">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:element name="ResumeSubscription">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:element name="ResumeSubscriptionResponse">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:complexType name="PauseFailedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="PauseFailedFault" type="wsnt:PauseFailedFaultType"/>
+      <xsd:complexType name="ResumeFailedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="ResumeFailedFault" type="wsnt:ResumeFailedFaultType"/>
+    </xsd:schema>
+  </wsdl:types>
+  <!--================ NotificationConsumer::Notify ================ 
+  Notify(
+    NotificationMessage
+      (TopicExpression, ProducerReference, Message)*
+  returns: n/a (one way)-->
+  <wsdl:message name="Notify">
+    <wsdl:part name="Notify" element="wsnt:Notify"/>
+  </wsdl:message>
+  <!--============== NotificationProducer::Subscribe =============== 
+  Subscribe(
+   (ConsumerEndpointReference, TopicExpression, [UseNotify],
+   [Precondition], [Selector], [SubscriptionPolicy], 
+   [InitialTerminationTime])   
+  returns: WS-Resource qualified EPR to a Subscription-->
+  <wsdl:message name="SubscribeRequest">
+    <wsdl:part name="SubscribeRequest" element="wsnt:Subscribe"/>
+  </wsdl:message>
+  <wsdl:message name="SubscribeResponse">
+    <wsdl:part name="SubscribeResponse" element="wsnt:SubscribeResponse"/>
+  </wsdl:message>
+  <wsdl:message name="ResourceUnknownFault">
+    <part name="ResourceUnknownFault" element="wsnt:ResourceUnknownFault"/>
+  </wsdl:message>
+  <wsdl:message name="SubscribeCreationFailedFault">
+    <part name="SubscribeCreationFailedFault" element="wsnt:SubscribeCreationFailedFault"/>
+  </wsdl:message>
+  <wsdl:message name="TopicPathDialectUnknownFault">
+    <part name="TopicPathDialectUnknownFault" element="wsnt:TopicPathDialectUnknownFault"/>
+  </wsdl:message>
+  <!--========== NotificationProducer::GetCurrentMessage =========== 
+  GetCurrentMessage(topicExpression)
+  returns: a NotificationMessage (xsd:any)-->
+  <wsdl:message name="GetCurrentMessageRequest">
+    <wsdl:part name="GetCurrentMessageRequest" element="wsnt:GetCurrentMessage"/>
+  </wsdl:message>
+  <wsdl:message name="GetCurrentMessageResponse">
+    <wsdl:part name="GetCurrentMessageResponse" element="wsnt:GetCurrentMessageResponse"/>
+  </wsdl:message>
+  <wsdl:message name="InvalidTopicExpressionFault">
+    <part name="InvalidTopicExpressionFault" element="wsnt:InvalidTopicExpressionFault"/>
+  </wsdl:message>
+  <wsdl:message name="TopicNotSupportedFault">
+    <part name="TopicNotSupportedFault" element="wsnt:TopicNotSupportedFault"/>
+  </wsdl:message>
+  <wsdl:message name="NoCurrentMessageOnTopicFault">
+    <part name="NoCurrentMessageOnTopicFault" element="wsnt:NoCurrentMessageOnTopicFault"/>
+  </wsdl:message>
+  <!--========== SubscriptionManager::PauseSubscription ============
+   PauseSubscription()
+   returns: empty-->
+  <wsdl:message name="PauseSubscriptionRequest">
+    <wsdl:part name="PauseSubscriptionRequest" element="wsnt:PauseSubscription"/>
+  </wsdl:message>
+  <wsdl:message name="PauseSubscriptionResponse">
+    <wsdl:part name="PauseSubscriptionResponse" element="wsnt:PauseSubscriptionResponse"/>
+  </wsdl:message>
+  <wsdl:message name="PauseFailedFault">
+    <part name="PauseFailedFault" element="wsnt:PauseFailedFault"/>
+  </wsdl:message>
+  <!--========= SubscriptionManager::ResumeSubscription ============
+   ResumeSubscription()
+   returns: empty-->
+  <wsdl:message name="ResumeSubscriptionRequest">
+    <wsdl:part name="ResumeSubscriptionRequest" element="wsnt:ResumeSubscription"/>
+  </wsdl:message>
+  <wsdl:message name="ResumeSubscriptionResponse">
+    <wsdl:part name="ResumeSubscriptionResponse" element="wsnt:ResumeSubscriptionResponse"/>
+  </wsdl:message>
+  <wsdl:message name="ResumeFailedFault">
+    <part name="ResumeFailedFault" element="wsnt:ResumeFailedFault"/>
+  </wsdl:message>
+  <!--=================== PortType Definitions =====================-->
+  <!--========= NotificationConsumer PortType Definition ===========-->
+  <wsdl:portType name="NotificationConsumer">
+    <wsdl:operation name="Notify">
+      <wsdl:input message="wsntw:Notify" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/Notify"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <!--========= NotificationProducer PortType Definition ===========-->
+  <wsdl:portType name="NotificationProducer" wsrp:ResourceProperties="wsnt:NotificationProducerRP">
+    <!--========== extends wsrpw:ResourceProperties =============-->
+    <wsdl:operation name="GetResourceProperty">
+      <wsdl:input name="GetResourcePropertyRequest" message="wsrpw:GetResourcePropertyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <wsdl:output name="GetResourcePropertyResponse" message="wsrpw:GetResourcePropertyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourcePropertyResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+    </wsdl:operation>
+    <!--=========== NotificationProducer Specific ==============-->
+    <wsdl:operation name="Subscribe">
+      <wsdl:input message="wsntw:SubscribeRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/Subscribe"/>
+      <wsdl:output message="wsntw:SubscribeResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/SubscribeResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+      <wsdl:fault name="SubscribeCreationFailedFault" message="wsntw:SubscribeCreationFailedFault"/>
+      <wsdl:fault name="TopicPathDialectUnknownFault" message="wsntw:TopicPathDialectUnknownFault"/>
+      <wsdl:fault name="InvalidTopicExpressionFault" message="wsntw:InvalidTopicExpressionFault"/>
+      <wsdl:fault name="TopicNotSupportedFault" message="wsntw:TopicNotSupportedFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="GetCurrentMessage">
+      <wsdl:input message="wsntw:GetCurrentMessageRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/GetCurrentMessage"/>
+      <wsdl:output message="wsntw:GetCurrentMessageResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/GetCurrentMessageResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidTopicExpressionFault" message="wsntw:InvalidTopicExpressionFault"/>
+      <wsdl:fault name="TopicNotSupportedFault" message="wsntw:TopicNotSupportedFault"/>
+      <wsdl:fault name="NoCurrentMessageOnTopicFault" message="wsntw:NoCurrentMessageOnTopicFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <!--========== SubscriptionManager PortType Definition ===========-->
+  <wsdl:portType name="SubscriptionManager" wsrp:ResourceProperties="wsnt:SubscriptionManagerRP">
+    <!--========== extends wsrpw:ResourceProperties =============-->
+    <wsdl:operation name="GetResourceProperty">
+      <wsdl:input name="GetResourcePropertyRequest" message="wsrpw:GetResourcePropertyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <wsdl:output name="GetResourcePropertyResponse" message="wsrpw:GetResourcePropertyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourcePropertyResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+    </wsdl:operation>
+    <!--=== extends wsrlw:ImmediateResourceTermination ==========-->
+    <wsdl:operation name="Destroy">
+      <wsdl:input message="wsrlw:DestroyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/Destroy"/>
+      <wsdl:output message="wsrlw:DestroyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/DestroyResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrlw:ResourceUnknownFault"/>
+      <wsdl:fault name="ResourceNotDestroyedFault" message="wsrlw:ResourceNotDestroyedFault"/>
+    </wsdl:operation>
+    <!--=== extends wsrl:ScheduledResourceTermination ==========-->
+    <wsdl:operation name="SetTerminationTime">
+      <wsdl:input message="wsrlw:SetTerminationTimeRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTime"/>
+      <wsdl:output message="wsrlw:SetTerminationTimeResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTimeResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrlw:ResourceUnknownFault"/>
+      <wsdl:fault name="UnableToSetTerminationTimeFault" message="wsrlw:UnableToSetTerminationTimeFault"/>
+      <wsdl:fault name="TerminationTimeChangeRejectedFault" message="wsrlw:TerminationTimeChangeRejectedFault"/>
+    </wsdl:operation>
+    <!--========= SubscriptionManager specific operations ======-->
+    <wsdl:operation name="PauseSubscription">
+      <wsdl:input message="wsntw:PauseSubscriptionRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/PauseSubscription"/>
+      <wsdl:output message="wsntw:PauseSubscriptionResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/PauseSubscriptionResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+      <wsdl:fault name="PauseFailedFault" message="wsntw:PauseFailedFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="ResumeSubscription">
+      <wsdl:input message="wsntw:ResumeSubscriptionRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/ResumeSubscription"/>
+      <wsdl:output message="wsntw:ResumeSubscriptionResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/ResumeSubscriptionResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+      <wsdl:fault name="ResumeFailedFault" message="wsntw:ResumeFailedFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-BaseN.xsd b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-BaseN.xsd
new file mode 100644
index 0000000..9bdf6ae
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-BaseN.xsd
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><xsd:schema targetNamespace="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsnt="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd">
+  <!--======================== Imports  ============================-->
+  <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+  <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" schemaLocation="WS-ResourceProperties.xsd"/>
+  <!--========== Message Types for NotificationProducer  ===========-->
+  <xsd:element name="Subscribe">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element name="ConsumerReference" type="wsa:EndpointReferenceType" minOccurs="1" maxOccurs="1"/>
+        <xsd:element name="TopicExpression" type="wsnt:TopicExpressionType" minOccurs="1" maxOccurs="1"/>
+        <xsd:element name="UseNotify" type="xsd:boolean" default="true" minOccurs="0" maxOccurs="1"/>
+        <xsd:element name="Precondition" type="wsrp:QueryExpressionType" minOccurs="0" maxOccurs="1"/>
+        <xsd:element name="Selector" type="wsrp:QueryExpressionType" minOccurs="0" maxOccurs="1"/>
+        <xsd:element name="SubscriptionPolicy" type="xsd:anyType" minOccurs="0" maxOccurs="1"/>
+        <xsd:element name="InitialTerminationTime" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+  <!--================= Topic Expression Container =================-->
+  <xsd:complexType name="TopicExpressionType" mixed="true">
+    <xsd:sequence>
+      <xsd:any minOccurs="0" maxOccurs="1" processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="Dialect" type="xsd:anyURI"/>
+  </xsd:complexType>
+  <xsd:element name="TopicExpression" type="wsnt:TopicExpressionType"/>
+  <!--=============== Resource Property Related  ===================-->
+  <!--======== Resource Properties for NotificationProducer ========-->
+  <xsd:element name="Topic" type="wsnt:TopicExpressionType"/>
+  <xsd:element name="FixedTopicSet" type="xsd:boolean"/>
+  <xsd:element name="TopicExpressionDialects" type="xsd:anyURI"/>
+  <!--======== Resource Properties for SubscriptionManager =========-->
+  <xsd:element name="ConsumerReference" type="wsa:EndpointReferenceType"/>
+  <xsd:element name="UseNotify" type="xsd:boolean"/>
+  <xsd:element name="Precondition" type="wsrp:QueryExpressionType"/>
+  <xsd:element name="Selector" type="wsrp:QueryExpressionType"/>
+  <xsd:element name="SubscriptionPolicy" type="xsd:anyType"/>
+  <xsd:element name="CreationTime" type="xsd:dateTime"/>
+</xsd:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-ResourceLifetime.wsdl b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-ResourceLifetime.wsdl
new file mode 100644
index 0000000..3d81ce5
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-ResourceLifetime.wsdl
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><wsdl:definitions name="WS-ResourceLifetime" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsrl="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" xmlns:wsrlw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema">
+      <xsd:include schemaLocation="WS-ResourceLifetime.xsd"/>
+      <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" schemaLocation="WS-BaseFaults.xsd"/>
+      <!--==== Resource Properties for ScheduledResourceTermination ====-->
+      <xsd:element name="ScheduledResourceTerminationRP">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element maxOccurs="1" minOccurs="1" ref="wsrl:CurrentTime"/>
+            <xsd:element maxOccurs="1" minOccurs="1" ref="wsrl:TerminationTime"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!--====== Message Types for ImmediateResourceTermination  =======-->
+      <xsd:element name="Destroy">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:element name="DestroyResponse">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:complexType name="ResourceUnknownFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="ResourceUnknownFault" type="wsrl:ResourceUnknownFaultType"/>
+      <xsd:complexType name="ResourceNotDestroyedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="ResourceNotDestroyedFault" type="wsrl:ResourceNotDestroyedFaultType"/>
+      <!--====== Message Types for ScheduledResourceTermination  =======-->
+      <xsd:element name="SetTerminationTime">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="RequestedTerminationTime" nillable="true" type="xsd:dateTime"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="SetTerminationTimeResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="NewTerminationTime" nillable="true" type="xsd:dateTime"/>
+            <xsd:element name="CurrentTime" type="xsd:dateTime"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:complexType name="UnableToSetTerminationTimeFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="UnableToSetTerminationTimeFault" type="wsrl:UnableToSetTerminationTimeFaultType"/>
+      <xsd:complexType name="TerminationTimeChangeRejectedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="TerminationTimeChangeRejectedFault" type="wsrl:TerminationTimeChangeRejectedFaultType"/>
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="DestroyResponse">
+    <wsdl:part element="wsrl:DestroyResponse" name="DestroyResponse"/>
+  </wsdl:message>
+  <wsdl:message name="SetTerminationTimeRequest">
+    <wsdl:part element="wsrl:SetTerminationTime" name="SetTerminationTimeRequest"/>
+  </wsdl:message>
+  <wsdl:message name="ResourceUnknownFault">
+    <wsdl:part element="wsrl:ResourceUnknownFault" name="ResourceUnknownFault"/>
+  </wsdl:message>
+  <wsdl:message name="DestroyRequest">
+    <wsdl:part element="wsrl:Destroy" name="DestroyRequest"/>
+  </wsdl:message>
+  <wsdl:message name="UnableToSetTerminationTimeFault">
+    <wsdl:part element="wsrl:UnableToSetTerminationTimeFault" name="UnableToSetTerminationTimeFault"/>
+  </wsdl:message>
+  <wsdl:message name="SetTerminationTimeResponse">
+    <wsdl:part element="wsrl:SetTerminationTimeResponse" name="SetTerminationTimeResponse"/>
+  </wsdl:message>
+  <wsdl:message name="ResourceNotDestroyedFault">
+    <wsdl:part element="wsrl:ResourceNotDestroyedFault" name="ResourceNotDestroyedFault"/>
+  </wsdl:message>
+  <wsdl:message name="TerminationTimeChangeRejectedFault">
+    <wsdl:part element="wsrl:TerminationTimeChangeRejectedFault" name="TerminationTimeChangeRejectedFault"/>
+  </wsdl:message>
+  <wsdl:portType name="ScheduledResourceTermination" wsrp:ResourceProperties="wsrl:ScheduledResourceTerminationRP">
+    <wsdl:operation name="SetTerminationTime">
+      <wsdl:input message="wsrlw:SetTerminationTimeRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTime"/>
+      <wsdl:output message="wsrlw:SetTerminationTimeResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTimeResponse"/>
+      <wsdl:fault message="wsrlw:UnableToSetTerminationTimeFault" name="UnableToSetTerminationTimeFault"/>
+      <wsdl:fault message="wsrlw:ResourceUnknownFault" name="ResourceUnknownFault"/>
+      <wsdl:fault message="wsrlw:TerminationTimeChangeRejectedFault" name="TerminationTimeChangeRejectedFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="ImmediateResourceTermination">
+    <wsdl:operation name="Destroy">
+      <wsdl:input message="wsrlw:DestroyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/Destroy"/>
+      <wsdl:output message="wsrlw:DestroyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/DestroyResponse"/>
+      <wsdl:fault message="wsrlw:ResourceNotDestroyedFault" name="ResourceNotDestroyedFault"/>
+      <wsdl:fault message="wsrlw:ResourceUnknownFault" name="ResourceUnknownFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-ResourceLifetime.xsd b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-ResourceLifetime.xsd
new file mode 100644
index 0000000..a6dbef7
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-ResourceLifetime.xsd
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsrl="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd">
+  <!--=============== Resource Property Related  ===================-->
+  <!--==== Resource Properties for ScheduledResourceTermination ====-->
+  <xsd:element name="CurrentTime" type="xsd:dateTime"/>
+  <xsd:element name="TerminationTime" nillable="true" type="xsd:dateTime"/>
+  <!--============= Notification Message Related  ==================-->
+  <xsd:element name="TerminationNotification">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element name="TerminationTime" type="xsd:dateTime" minOccurs="1" maxOccurs="1"/>
+        <xsd:element name="TerminationReason" type="xsd:anyType" minOccurs="0" maxOccurs="1"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+</xsd:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-ResourceProperties.wsdl b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-ResourceProperties.wsdl
new file mode 100644
index 0000000..267066a
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-ResourceProperties.wsdl
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><wsdl:definitions name="WS-ResourceProperties" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:wsrpw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl">
+  <!--===================== Types Definitions ======================-->
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified">
+      <xsd:include schemaLocation="WS-ResourceProperties.xsd"/>
+      <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd" schemaLocation="WS-BaseFaults.xsd"/>
+      <!--========== Message Types for GetResourceProperty  ============-->
+      <xsd:element name="GetResourceProperty" type="xsd:QName"/>
+      <xsd:element name="GetResourcePropertyResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:complexType name="ResourceUnknownFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="ResourceUnknownFault" type="wsrp:ResourceUnknownFaultType"/>
+      <xsd:complexType name="InvalidResourcePropertyQNameFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="InvalidResourcePropertyQNameFault" type="wsrp:InvalidResourcePropertyQNameFaultType"/>
+      <!--====== Message Types for GetMultipleResourceProperties =======-->
+      <xsd:element name="GetMultipleResourceProperties">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element name="ResourceProperty" type="xsd:QName" minOccurs="1" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="GetMultipleResourcePropertiesResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!--========= Message Types for SetResourceProperties ===========-->
+      <xsd:complexType name="InsertType">
+        <xsd:sequence>
+          <xsd:any processContents="lax" minOccurs="1" maxOccurs="unbounded"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:element name="Insert" type="wsrp:InsertType"/>
+      <xsd:complexType name="UpdateType">
+        <xsd:sequence>
+          <xsd:any processContents="lax" minOccurs="1" maxOccurs="unbounded"/>
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:element name="Update" type="wsrp:UpdateType"/>
+      <xsd:complexType name="DeleteType">
+        <xsd:attribute name="ResourceProperty" type="xsd:QName" use="required"/>
+      </xsd:complexType>
+      <xsd:element name="Delete" type="wsrp:DeleteType"/>
+      <xsd:element name="SetResourceProperties">
+        <xsd:complexType>
+          <xsd:choice minOccurs="0" maxOccurs="unbounded">
+            <xsd:element ref="wsrp:Insert"/>
+            <xsd:element ref="wsrp:Update"/>
+            <xsd:element ref="wsrp:Delete"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="SetResourcePropertiesResponse">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:complexType name="InvalidSetResourcePropertiesRequestContentFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="InvalidSetResourcePropertiesRequestContentFault" type="wsrp:InvalidSetResourcePropertiesRequestContentFaultType"/>
+      <xsd:complexType name="UnableToModifyResourcePropertyFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="UnableToModifyResourcePropertyFault" type="wsrp:UnableToModifyResourcePropertyFaultType"/>
+      <xsd:complexType name="SetResourcePropertyRequestFailedFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="SetResourcePropertyRequestFailedFault" type="wsrp:SetResourcePropertyRequestFailedFaultType"/>
+      <!--========= Message Types for QueryResourceProperties ==========-->
+      <xsd:element name="QueryResourceProperties">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element ref="wsrp:QueryExpression" minOccurs="1" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="QueryResourcePropertiesResponse">
+        <xsd:complexType mixed="true">
+          <xsd:sequence>
+            <xsd:any processContents="lax" minOccurs="1" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:complexType name="UnknownQueryExpressionDialectFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="UnknownQueryExpressionDialectFault" type="wsrp:UnknownQueryExpressionDialectFaultType"/>
+      <xsd:complexType name="InvalidQueryExpressionFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="InvalidQueryExpressionFault" type="wsrp:InvalidQueryExpressionFaultType"/>
+      <xsd:complexType name="QueryEvaluationErrorFaultType">
+        <xsd:complexContent>
+          <xsd:extension base="wsbf:BaseFaultType"/>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="QueryEvaluationErrorFault" type="wsrp:QueryEvaluationErrorFaultType"/>
+    </xsd:schema>
+  </wsdl:types>
+  <!--===================== GetResourceProperty ==================== 
+  GetResourceProperty(QName)
+  returns: any-->
+  <wsdl:message name="GetResourcePropertyRequest">
+    <wsdl:part name="GetResourcePropertyRequest" element="wsrp:GetResourceProperty"/>
+  </wsdl:message>
+  <wsdl:message name="GetResourcePropertyResponse">
+    <wsdl:part name="GetResourcePropertyResponse" element="wsrp:GetResourcePropertyResponse"/>
+  </wsdl:message>
+  <wsdl:message name="ResourceUnknownFault">
+    <part name="ResourceUnknownFault" element="wsrp:ResourceUnknownFault"/>
+  </wsdl:message>
+  <wsdl:message name="InvalidResourcePropertyQNameFault">
+    <part name="InvalidResourcePropertyQNameFault" element="wsrp:InvalidResourcePropertyQNameFault"/>
+  </wsdl:message>
+  <!--==============GetMultipleResourceProperties ================== 
+  GetMultipleResourceProperties(list of QName)
+  returns: sequence of any-->
+  <wsdl:message name="GetMultipleResourcePropertiesRequest">
+    <wsdl:part name="GetMultipleResourcePropertiesRequest" element="wsrp:GetMultipleResourceProperties"/>
+  </wsdl:message>
+  <wsdl:message name="GetMultipleResourcePropertiesResponse">
+    <wsdl:part name="GetMultipleResourcePropertiesResponse" element="wsrp:GetMultipleResourcePropertiesResponse"/>
+  </wsdl:message>
+  <!--================= SetResourceProperties ====================== 
+  SetResourceProperties(
+  { insert (any)* |
+    update (any)* |
+    delete@QName } + 
+  )
+  returns: empty-->
+  <wsdl:message name="SetResourcePropertiesRequest">
+    <wsdl:part name="SetResourcePropertiesRequest" element="wsrp:SetResourceProperties"/>
+  </wsdl:message>
+  <wsdl:message name="SetResourcePropertiesResponse">
+    <wsdl:part name="SetResourcePropertiesResponse" element="wsrp:SetResourcePropertiesResponse"/>
+  </wsdl:message>
+  <wsdl:message name="InvalidSetResourcePropertiesRequestContentFault">
+    <part name="InvalidSetResourcePropertiesRequestContentFault" element="wsrp:InvalidSetResourcePropertiesRequestContentFault"/>
+  </wsdl:message>
+  <wsdl:message name="UnableToModifyResourcePropertyFault">
+    <part name="UnableToModifyResourcePropertyFault" element="wsrp:UnableToModifyResourcePropertyFault"/>
+  </wsdl:message>
+  <wsdl:message name="SetResourcePropertyRequestFailedFault">
+    <part name="SetResourcePropertyRequestFailedFault" element="wsrp:SetResourcePropertyRequestFailedFault"/>
+  </wsdl:message>
+  <!--================ QueryResourceProperties ===================== 
+  QueryResourceProperties(QueryExpression)
+  returns: any-->
+  <wsdl:message name="QueryResourcePropertiesRequest">
+    <wsdl:part name="QueryResourcePropertiesRequest" element="wsrp:QueryResourceProperties"/>
+  </wsdl:message>
+  <wsdl:message name="QueryResourcePropertiesResponse">
+    <wsdl:part name="QueryResourcePropertiesResponse" element="wsrp:QueryResourcePropertiesResponse"/>
+  </wsdl:message>
+  <wsdl:message name="UnknownQueryExpressionDialectFault">
+    <part name="UnknownQueryExpressionDialectFault" element="wsrp:UnknownQueryExpressionDialectFault"/>
+  </wsdl:message>
+  <wsdl:message name="InvalidQueryExpressionFault">
+    <part name="InvalidQueryExpressionFault" element="wsrp:InvalidQueryExpressionFault"/>
+  </wsdl:message>
+  <wsdl:message name="QueryEvaluationErrorFault">
+    <part name="QueryEvaluationErrorFault" element="wsrp:QueryEvaluationErrorFault"/>
+  </wsdl:message>
+  <!--=================== PortType Definitions =====================-->
+  <wsdl:portType name="GetResourceProperty">
+    <wsdl:operation name="GetResourceProperty">
+      <wsdl:input name="GetResourcePropertyRequest" message="wsrpw:GetResourcePropertyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <wsdl:output name="GetResourcePropertyResponse" message="wsrpw:GetResourcePropertyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourcePropertyResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="GetMultipleResourceProperties">
+    <wsdl:operation name="GetMultipleResourceProperties">
+      <wsdl:input name="GetMultipleResourcePropertiesRequest" message="wsrpw:GetMultipleResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourceProperties"/>
+      <wsdl:output name="GetMultipleResourcePropertiesResponse" message="wsrpw:GetMultipleResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourcePropertiesResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="SetResourceProperties">
+    <wsdl:operation name="SetResourceProperties">
+      <wsdl:input name="SetResourcePropertiesRequest" message="wsrpw:SetResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/SetResourceProperties"/>
+      <wsdl:output name="SetResourcePropertiesResponse" message="wsrpw:SetResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/SetResourcePropertiesResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidSetResourcePropertiesRequestContentFault" message="wsrpw:InvalidSetResourcePropertiesRequestContentFault"/>
+      <wsdl:fault name="UnableToModifyResourcePropertyFault" message="wsrpw:UnableToModifyResourcePropertyFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <wsdl:fault name="SetResourcePropertyRequestFailedFault" message="wsrpw:SetResourcePropertyRequestFailedFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="QueryResourceProperties">
+    <wsdl:operation name="QueryResourceProperties">
+      <wsdl:input name="QueryResourcePropertiesRequest" message="wsrpw:QueryResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourceProperties"/>
+      <wsdl:output name="QueryResourcePropertiesResponse" message="wsrpw:QueryResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourcePropertiesResponse"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <wsdl:fault name="UnknownQueryExpressionDialectFault" message="wsrpw:UnknownQueryExpressionDialectFault"/>
+      <wsdl:fault name="InvalidQueryExpressionFault" message="wsrpw:InvalidQueryExpressionFault"/>
+      <wsdl:fault name="QueryEvaluationErrorFault" message="wsrpw:QueryEvaluationErrorFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-ResourceProperties.xsd b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-ResourceProperties.xsd
new file mode 100644
index 0000000..1527149
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/WS-ResourceProperties.xsd
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
+
+OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
+
+Copyright (C) OASIS Open (2004). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. 
+
+The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. 
+
+This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.--><xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <!--======= Global Attribute Declaration for WSDL 1.1 portType====-->
+  <xsd:attribute name="ResourceProperties" type="xsd:QName"/>
+  <!--= Notification Message for ResourceProperties value change ===-->
+  <xsd:complexType name="ResourcePropertyValueChangeNotificationType">
+    <xsd:sequence>
+      <xsd:element name="OldValue" nillable="true" minOccurs="0" maxOccurs="1">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any minOccurs="1" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="NewValue" nillable="true" minOccurs="1" maxOccurs="1">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any minOccurs="1" maxOccurs="1"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+  <xsd:element name="ResourcePropertyValueChangeNotification" type="wsrp:ResourcePropertyValueChangeNotificationType"/>
+  <xsd:complexType name="QueryExpressionType" mixed="true">
+    <xsd:sequence>
+      <xsd:any minOccurs="0" maxOccurs="1" processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="Dialect" type="xsd:anyURI"/>
+  </xsd:complexType>
+  <xsd:element name="QueryExpression" type="wsrp:QueryExpressionType"/>
+</xsd:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/counter_bindings.wsdl b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/counter_bindings.wsdl
new file mode 100644
index 0000000..8acf07f
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/counter_bindings.wsdl
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions name="Counter" targetNamespace="http://counter.com/bindings" xmlns:porttype="http://counter.com" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:import namespace="http://counter.com" location="counter_flattened.wsdl"/>
+  <wsdl:binding name="CounterPortTypeSOAPBinding" type="porttype:CounterPortType">
+    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+    <wsdl:operation name="createCounter">
+      <soap:operation soapAction="http://counter.com/CounterPortType/createCounterRequest"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="add">
+      <soap:operation soapAction="http://counter.com/CounterPortType/addRequest"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="SetTerminationTime">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTime"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="UnableToSetTerminationTimeFault">
+        <soap:fault name="UnableToSetTerminationTimeFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="TerminationTimeChangeRejectedFault">
+        <soap:fault name="TerminationTimeChangeRejectedFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="Destroy">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/Destroy"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="ResourceNotDestroyedFault">
+        <soap:fault name="ResourceNotDestroyedFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="QueryResourceProperties">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourceProperties"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault">
+        <soap:fault name="InvalidResourcePropertyQNameFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="InvalidQueryExpressionFault">
+        <soap:fault name="InvalidQueryExpressionFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="QueryEvaluationErrorFault">
+        <soap:fault name="QueryEvaluationErrorFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="UnknownQueryExpressionDialectFault">
+        <soap:fault name="UnknownQueryExpressionDialectFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="GetMultipleResourceProperties">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourceProperties"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault">
+        <soap:fault name="InvalidResourcePropertyQNameFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="GetResourceProperty">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault">
+        <soap:fault name="InvalidResourcePropertyQNameFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="Subscribe">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/Subscribe"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="TopicNotSupportedFault">
+        <soap:fault name="TopicNotSupportedFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="InvalidTopicExpressionFault">
+        <soap:fault name="InvalidTopicExpressionFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="SubscribeCreationFailedFault">
+        <soap:fault name="SubscribeCreationFailedFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="TopicPathDialectUnknownFault">
+        <soap:fault name="TopicPathDialectUnknownFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="GetCurrentMessage">
+      <soap:operation soapAction="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/GetCurrentMessage"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="TopicNotSupportedFault">
+        <soap:fault name="TopicNotSupportedFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="InvalidTopicExpressionFault">
+        <soap:fault name="InvalidTopicExpressionFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="NoCurrentMessageOnTopicFault">
+        <soap:fault name="NoCurrentMessageOnTopicFault" use="literal"/>
+      </wsdl:fault>
+      <wsdl:fault name="ResourceUnknownFault">
+        <soap:fault name="ResourceUnknownFault" use="literal"/>
+      </wsdl:fault>
+    </wsdl:operation>
+  </wsdl:binding>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/counter_flattened.wsdl b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/counter_flattened.wsdl
new file mode 100644
index 0000000..cd5de52
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/counter_flattened.wsdl
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions name="Counter" targetNamespace="http://counter.com" xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:tns="http://counter.com" xmlns:wsrpw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" xmlns:wsrlw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" xmlns:wsdlpp="http://www.globus.org/namespaces/2004/10/WSDLPreprocessor" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsntw="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.wsdl" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.wsdl" location="WS-ResourceLifetime.wsdl"/>
+  <wsdl:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" location="WS-ResourceProperties.wsdl"/>
+  <wsdl:import namespace="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.wsdl" location="WS-BaseN.wsdl"/>
+  <wsdl:types>
+    <xsd:schema elementFormDefault="qualified" targetNamespace="http://counter.com" xmlns:rpns0="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" xmlns:rpns1="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd">
+      <xsd:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd" schemaLocation="WS-ResourceLifetime.xsd"/>
+      <xsd:import namespace="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-01.xsd" schemaLocation="WS-BaseN.xsd"/>
+      <xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="WS-Addressing.xsd"/>
+      <xsd:element name="createCounter">
+        <xsd:complexType/>
+      </xsd:element>
+      <xsd:element name="createCounterResponse">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element ref="wsa:EndpointReference"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="add" type="xsd:int"/>
+      <xsd:element name="addResponse" type="xsd:int"/>
+      <xsd:element name="Value" type="xsd:int"/>
+      <xsd:element name="CounterRP">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:element maxOccurs="1" minOccurs="1" ref="tns:Value"/>
+            <xsd:element maxOccurs="unbounded" minOccurs="1" ref="rpns0:Topic"/>
+            <xsd:element maxOccurs="unbounded" minOccurs="1" ref="rpns0:TopicExpressionDialects"/>
+            <xsd:element maxOccurs="1" minOccurs="1" ref="rpns1:TerminationTime"/>
+            <xsd:element maxOccurs="1" minOccurs="1" ref="rpns1:CurrentTime"/>
+            <xsd:element maxOccurs="1" minOccurs="1" ref="rpns0:FixedTopicSet"/>
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="AddInputMessage">
+    <wsdl:part name="parameters" element="tns:add"/>
+  </wsdl:message>
+  <wsdl:message name="AddOutputMessage">
+    <wsdl:part name="parameters" element="tns:addResponse"/>
+  </wsdl:message>
+  <wsdl:message name="CreateCounterResponse">
+    <wsdl:part name="response" element="tns:createCounterResponse"/>
+  </wsdl:message>
+  <wsdl:message name="CreateCounterRequest">
+    <wsdl:part name="request" element="tns:createCounter"/>
+  </wsdl:message>
+  <wsdl:portType name="CounterPortType" wsrp:ResourceProperties="tns:CounterRP">
+    <wsdl:operation name="createCounter">
+      <wsdl:input message="tns:CreateCounterRequest"/>
+      <wsdl:output message="tns:CreateCounterResponse"/>
+    </wsdl:operation>
+    <wsdl:operation name="add">
+      <wsdl:input message="tns:AddInputMessage"/>
+      <wsdl:output message="tns:AddOutputMessage"/>
+    </wsdl:operation>
+    <wsdl:operation name="SetTerminationTime">
+      <wsdl:input message="wsrlw:SetTerminationTimeRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTime"/>
+      <wsdl:output message="wsrlw:SetTerminationTimeResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/SetTerminationTimeResponse"/>
+      <wsdl:fault name="UnableToSetTerminationTimeFault" message="wsrlw:UnableToSetTerminationTimeFault"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrlw:ResourceUnknownFault"/>
+      <wsdl:fault name="TerminationTimeChangeRejectedFault" message="wsrlw:TerminationTimeChangeRejectedFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="Destroy">
+      <wsdl:input message="wsrlw:DestroyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/Destroy"/>
+      <wsdl:output message="wsrlw:DestroyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime/DestroyResponse"/>
+      <wsdl:fault name="ResourceNotDestroyedFault" message="wsrlw:ResourceNotDestroyedFault"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrlw:ResourceUnknownFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="QueryResourceProperties">
+      <wsdl:input name="QueryResourcePropertiesRequest" message="wsrpw:QueryResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourceProperties"/>
+      <wsdl:output name="QueryResourcePropertiesResponse" message="wsrpw:QueryResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/QueryResourcePropertiesResponse"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <wsdl:fault name="InvalidQueryExpressionFault" message="wsrpw:InvalidQueryExpressionFault"/>
+      <wsdl:fault name="QueryEvaluationErrorFault" message="wsrpw:QueryEvaluationErrorFault"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+      <wsdl:fault name="UnknownQueryExpressionDialectFault" message="wsrpw:UnknownQueryExpressionDialectFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="GetMultipleResourceProperties">
+      <wsdl:input name="GetMultipleResourcePropertiesRequest" message="wsrpw:GetMultipleResourcePropertiesRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourceProperties"/>
+      <wsdl:output name="GetMultipleResourcePropertiesResponse" message="wsrpw:GetMultipleResourcePropertiesResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetMultipleResourcePropertiesResponse"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="GetResourceProperty">
+      <wsdl:input name="GetResourcePropertyRequest" message="wsrpw:GetResourcePropertyRequest" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourceProperty"/>
+      <wsdl:output name="GetResourcePropertyResponse" message="wsrpw:GetResourcePropertyResponse" wsa:Action="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties/GetResourcePropertyResponse"/>
+      <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrpw:InvalidResourcePropertyQNameFault"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsrpw:ResourceUnknownFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="Subscribe">
+      <wsdl:input message="wsntw:SubscribeRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/Subscribe"/>
+      <wsdl:output message="wsntw:SubscribeResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/SubscribeResponse"/>
+      <wsdl:fault name="TopicNotSupportedFault" message="wsntw:TopicNotSupportedFault"/>
+      <wsdl:fault name="InvalidTopicExpressionFault" message="wsntw:InvalidTopicExpressionFault"/>
+      <wsdl:fault name="SubscribeCreationFailedFault" message="wsntw:SubscribeCreationFailedFault"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+      <wsdl:fault name="TopicPathDialectUnknownFault" message="wsntw:TopicPathDialectUnknownFault"/>
+    </wsdl:operation>
+    <wsdl:operation name="GetCurrentMessage">
+      <wsdl:input message="wsntw:GetCurrentMessageRequest" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/GetCurrentMessage"/>
+      <wsdl:output message="wsntw:GetCurrentMessageResponse" wsa:Action="http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification/GetCurrentMessageResponse"/>
+      <wsdl:fault name="TopicNotSupportedFault" message="wsntw:TopicNotSupportedFault"/>
+      <wsdl:fault name="InvalidTopicExpressionFault" message="wsntw:InvalidTopicExpressionFault"/>
+      <wsdl:fault name="NoCurrentMessageOnTopicFault" message="wsntw:NoCurrentMessageOnTopicFault"/>
+      <wsdl:fault name="ResourceUnknownFault" message="wsntw:ResourceUnknownFault"/>
+    </wsdl:operation>
+  </wsdl:portType>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/xml.xsd b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/xml.xsd
new file mode 100644
index 0000000..730b4c9
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/net/sf/taverna/wsdl/parser/wsrf/counterService/xml.xsd
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xml:lang="en" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:annotation>
+    <xs:documentation>See http://www.w3.org/XML/1998/namespace.html and
+   http://www.w3.org/TR/REC-xml for information about this namespace.
+
+    This schema document describes the XML namespace, in a form
+    suitable for import by other schema documents.  
+
+    Note that local names in this namespace are intended to be defined
+    only by the World Wide Web Consortium or its subgroups.  The
+    following names are currently defined in this namespace and should
+    not be used with conflicting semantics by any Working Group,
+    specification, or document instance:
+
+    base (as an attribute name): denotes an attribute whose value
+         provides a URI to be used as the base for interpreting any
+         relative URIs in the scope of the element on which it
+         appears; its value is inherited.  This name is reserved
+         by virtue of its definition in the XML Base specification.
+
+    lang (as an attribute name): denotes an attribute whose value
+         is a language code for the natural language of the content of
+         any element; its value is inherited.  This name is reserved
+         by virtue of its definition in the XML specification.
+  
+    space (as an attribute name): denotes an attribute whose
+         value is a keyword indicating what whitespace processing
+         discipline is intended for the content of the element; its
+         value is inherited.  This name is reserved by virtue of its
+         definition in the XML specification.
+
+    Father (in any context at all): denotes Jon Bosak, the chair of 
+         the original XML Working Group.  This name is reserved by 
+         the following decision of the W3C XML Plenary and 
+         XML Coordination groups:
+
+             In appreciation for his vision, leadership and dedication
+             the W3C XML Plenary on this 10th day of February, 2000
+             reserves for Jon Bosak in perpetuity the XML name
+             xml:Father</xs:documentation>
+  </xs:annotation>
+  <xs:annotation>
+    <xs:documentation>This schema defines attributes and an attribute group
+        suitable for use by
+        schemas wishing to allow xml:base, xml:lang or xml:space attributes
+        on elements they define.
+
+        To enable this, such a schema must import this schema
+        for the XML namespace, e.g. as follows:
+        &lt;schema . . .>
+         . . .
+         &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                    schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
+
+        Subsequently, qualified reference to any of the attributes
+        or the group defined below will have the desired effect, e.g.
+
+        &lt;type . . .>
+         . . .
+         &lt;attributeGroup ref="xml:specialAttrs"/>
+ 
+         will define a type which will schema-validate an instance
+         element with any of those attributes</xs:documentation>
+  </xs:annotation>
+  <xs:annotation>
+    <xs:documentation>In keeping with the XML Schema WG's standard versioning
+   policy, this schema document will persist at
+   http://www.w3.org/2001/03/xml.xsd.
+   At the date of issue it can also be found at
+   http://www.w3.org/2001/xml.xsd.
+   The schema document at that URI may however change in the future,
+   in order to remain compatible with the latest version of XML Schema
+   itself.  In other words, if the XML Schema namespace changes, the version
+   of this document at
+   http://www.w3.org/2001/xml.xsd will change
+   accordingly; the version at
+   http://www.w3.org/2001/03/xml.xsd will not change.</xs:documentation>
+  </xs:annotation>
+  <xs:attribute name="lang" type="xs:language">
+    <xs:annotation>
+      <xs:documentation>In due course, we should install the relevant ISO 2- and 3-letter
+         codes as the enumerated possible values . . .</xs:documentation>
+    </xs:annotation>
+  </xs:attribute>
+  <xs:attribute name="space" default="preserve">
+    <xs:simpleType>
+      <xs:restriction base="xs:NCName">
+        <xs:enumeration value="default"/>
+        <xs:enumeration value="preserve"/>
+      </xs:restriction>
+    </xs:simpleType>
+  </xs:attribute>
+  <xs:attribute name="base" type="xs:anyURI">
+    <xs:annotation>
+      <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+                     information about this attribute.</xs:documentation>
+    </xs:annotation>
+  </xs:attribute>
+  <xs:attributeGroup name="specialAttrs">
+    <xs:attribute ref="xml:base"/>
+    <xs:attribute ref="xml:lang"/>
+    <xs:attribute ref="xml:space"/>
+  </xs:attributeGroup>
+</xs:schema>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/CurrencyExchangeService.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/CurrencyExchangeService.wsdl
new file mode 100644
index 0000000..4206474
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/CurrencyExchangeService.wsdl
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<definitions name="CurrencyExchangeService" targetNamespace="http://www.xmethods.net/sd/CurrencyExchangeService.wsdl" xmlns:tns="http://www.xmethods.net/sd/CurrencyExchangeService.wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/">
+	<message name="getRateRequest">
+		<part name="country1" type="xsd:string"/>
+		<part name="country2" type="xsd:string"/>
+	</message>
+	<message name="getRateResponse">
+		<part name="Result" type="xsd:float"/>
+	</message>
+	<portType name="CurrencyExchangePortType">
+
+		<operation name="getRate">
+			<input message="tns:getRateRequest" />
+			<output message="tns:getRateResponse" />
+		</operation>
+	</portType>
+	<binding name="CurrencyExchangeBinding" type="tns:CurrencyExchangePortType">
+		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+		<operation name="getRate">
+			<soap:operation soapAction=""/>
+
+			<input >
+				<soap:body use="encoded" namespace="urn:xmethods-CurrencyExchange" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+			</input>
+			<output >
+				<soap:body use="encoded" namespace="urn:xmethods-CurrencyExchange" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+			</output>
+		</operation>
+	</binding>
+	<service name="CurrencyExchangeService">
+
+		<documentation>Returns the exchange rate between the two currencies</documentation>
+		<port name="CurrencyExchangePort" binding="tns:CurrencyExchangeBinding">
+			<soap:address location="http://services.xmethods.net:80/soap"/>
+		</port>
+	</service>
+</definitions>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/GoViz.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/GoViz.wsdl
new file mode 100644
index 0000000..57e1c06
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/GoViz.wsdl
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://www.ebi.ac.uk/collab/mygrid/service1/goviz/GoViz.jws" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://www.ebi.ac.uk/collab/mygrid/service1/goviz/GoViz.jws" xmlns:intf="http://www.ebi.ac.uk/collab/mygrid/service1/goviz/GoViz.jws" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><wsdl:types><schema targetNamespace="http://www.ebi.ac.uk/collab/mygrid/service1/goviz/GoViz.jws" xmlns="http://www.w3.org/2001/XMLSchema"><import namespace="http://schemas.xmlsoap.org/soap/encoding/"/><complexType name="ArrayOf_xsd_string"><complexContent><restriction base="soapenc:Array"><attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/></restriction></complexContent></complexType></schema></wsdl:types>
+  <wsdl:message name="clearColoursRequest">
+    <wsdl:part name="sessionID" type="xsd:string"/>
+  </wsdl:message>
+  <wsdl:message name="markTermRequest">
+    <wsdl:part name="sessionID" type="xsd:string"/>
+    <wsdl:part name="geneOntologyID" type="xsd:string"/>
+    <wsdl:part name="colour" type="xsd:string"/>
+  </wsdl:message>
+
+  <wsdl:message name="getChildrenResponse">
+    <wsdl:part name="getChildrenReturn" type="impl:ArrayOf_xsd_string"/>
+  </wsdl:message>
+  <wsdl:message name="getDotRequest">
+    <wsdl:part name="sessionID" type="xsd:string"/>
+  </wsdl:message>
+  <wsdl:message name="createSessionRequest">
+  </wsdl:message>
+  <wsdl:message name="getParentsRequest">
+
+    <wsdl:part name="geneOntologyID" type="xsd:string"/>
+  </wsdl:message>
+  <wsdl:message name="addTermRequest">
+    <wsdl:part name="sessionID" type="xsd:string"/>
+    <wsdl:part name="geneOntologyID" type="xsd:string"/>
+  </wsdl:message>
+  <wsdl:message name="clearColoursResponse">
+  </wsdl:message>
+  <wsdl:message name="createSessionResponse">
+
+    <wsdl:part name="createSessionReturn" type="xsd:string"/>
+  </wsdl:message>
+  <wsdl:message name="getAncestorsRequest">
+    <wsdl:part name="geneOntologyID" type="xsd:string"/>
+  </wsdl:message>
+  <wsdl:message name="destroySessionResponse">
+  </wsdl:message>
+  <wsdl:message name="addTermResponse">
+  </wsdl:message>
+
+  <wsdl:message name="getParentsResponse">
+    <wsdl:part name="getParentsReturn" type="impl:ArrayOf_xsd_string"/>
+  </wsdl:message>
+  <wsdl:message name="markTermResponse">
+  </wsdl:message>
+  <wsdl:message name="getDotResponse">
+    <wsdl:part name="getDotReturn" type="xsd:string"/>
+  </wsdl:message>
+  <wsdl:message name="destroySessionRequest">
+
+    <wsdl:part name="sessionID" type="xsd:string"/>
+  </wsdl:message>
+  <wsdl:message name="getChildrenRequest">
+    <wsdl:part name="geneOntologyID" type="xsd:string"/>
+  </wsdl:message>
+  <wsdl:message name="getAncestorsResponse">
+    <wsdl:part name="getAncestorsReturn" type="impl:ArrayOf_xsd_string"/>
+  </wsdl:message>
+  <wsdl:portType name="GoViz">
+
+    <wsdl:operation name="createSession">
+      <wsdl:input message="impl:createSessionRequest" name="createSessionRequest"/>
+      <wsdl:output message="impl:createSessionResponse" name="createSessionResponse"/>
+    </wsdl:operation>
+    <wsdl:operation name="destroySession" parameterOrder="sessionID">
+      <wsdl:input message="impl:destroySessionRequest" name="destroySessionRequest"/>
+      <wsdl:output message="impl:destroySessionResponse" name="destroySessionResponse"/>
+    </wsdl:operation>
+    <wsdl:operation name="getChildren" parameterOrder="geneOntologyID">
+
+      <wsdl:input message="impl:getChildrenRequest" name="getChildrenRequest"/>
+      <wsdl:output message="impl:getChildrenResponse" name="getChildrenResponse"/>
+    </wsdl:operation>
+    <wsdl:operation name="addTerm" parameterOrder="sessionID geneOntologyID">
+      <wsdl:input message="impl:addTermRequest" name="addTermRequest"/>
+      <wsdl:output message="impl:addTermResponse" name="addTermResponse"/>
+    </wsdl:operation>
+    <wsdl:operation name="clearColours" parameterOrder="sessionID">
+      <wsdl:input message="impl:clearColoursRequest" name="clearColoursRequest"/>
+
+      <wsdl:output message="impl:clearColoursResponse" name="clearColoursResponse"/>
+    </wsdl:operation>
+    <wsdl:operation name="getAncestors" parameterOrder="geneOntologyID">
+      <wsdl:input message="impl:getAncestorsRequest" name="getAncestorsRequest"/>
+      <wsdl:output message="impl:getAncestorsResponse" name="getAncestorsResponse"/>
+    </wsdl:operation>
+    <wsdl:operation name="getDot" parameterOrder="sessionID">
+      <wsdl:input message="impl:getDotRequest" name="getDotRequest"/>
+      <wsdl:output message="impl:getDotResponse" name="getDotResponse"/>
+
+    </wsdl:operation>
+    <wsdl:operation name="getParents" parameterOrder="geneOntologyID">
+      <wsdl:input message="impl:getParentsRequest" name="getParentsRequest"/>
+      <wsdl:output message="impl:getParentsResponse" name="getParentsResponse"/>
+    </wsdl:operation>
+    <wsdl:operation name="markTerm" parameterOrder="sessionID geneOntologyID colour">
+      <wsdl:input message="impl:markTermRequest" name="markTermRequest"/>
+      <wsdl:output message="impl:markTermResponse" name="markTermResponse"/>
+    </wsdl:operation>
+
+  </wsdl:portType>
+  <wsdl:binding name="GoVizSoapBinding" type="impl:GoViz">
+    <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+    <wsdl:operation name="createSession">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="createSessionRequest">
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/>
+      </wsdl:input>
+      <wsdl:output name="createSessionResponse">
+
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ebi.ac.uk/collab/mygrid/service1/goviz/GoViz.jws" use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="destroySession">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="destroySessionRequest">
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/>
+      </wsdl:input>
+      <wsdl:output name="destroySessionResponse">
+
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ebi.ac.uk/collab/mygrid/service1/goviz/GoViz.jws" use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getChildren">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="getChildrenRequest">
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/>
+      </wsdl:input>
+      <wsdl:output name="getChildrenResponse">
+
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ebi.ac.uk/collab/mygrid/service1/goviz/GoViz.jws" use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="addTerm">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="addTermRequest">
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/>
+      </wsdl:input>
+      <wsdl:output name="addTermResponse">
+
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ebi.ac.uk/collab/mygrid/service1/goviz/GoViz.jws" use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="clearColours">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="clearColoursRequest">
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/>
+      </wsdl:input>
+      <wsdl:output name="clearColoursResponse">
+
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ebi.ac.uk/collab/mygrid/service1/goviz/GoViz.jws" use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getAncestors">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="getAncestorsRequest">
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/>
+      </wsdl:input>
+      <wsdl:output name="getAncestorsResponse">
+
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ebi.ac.uk/collab/mygrid/service1/goviz/GoViz.jws" use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getDot">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="getDotRequest">
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/>
+      </wsdl:input>
+      <wsdl:output name="getDotResponse">
+
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ebi.ac.uk/collab/mygrid/service1/goviz/GoViz.jws" use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getParents">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="getParentsRequest">
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/>
+      </wsdl:input>
+      <wsdl:output name="getParentsResponse">
+
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ebi.ac.uk/collab/mygrid/service1/goviz/GoViz.jws" use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="markTerm">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="markTermRequest">
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/>
+      </wsdl:input>
+      <wsdl:output name="markTermResponse">
+
+        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.ebi.ac.uk/collab/mygrid/service1/goviz/GoViz.jws" use="encoded"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="GoVizService">
+    <wsdl:port binding="impl:GoVizSoapBinding" name="GoViz">
+      <wsdlsoap:address location="http://www.ebi.ac.uk/collab/mygrid/service1/goviz/GoViz.jws"/>
+    </wsdl:port>
+  </wsdl:service>
+
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/MyService-rpc-literal.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/MyService-rpc-literal.wsdl
new file mode 100644
index 0000000..31fe705
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/MyService-rpc-literal.wsdl
@@ -0,0 +1,392 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://localhost:9090/axis/services/MyService" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost:9090/axis/services/MyService" xmlns:intf="http://localhost:9090/axis/services/MyService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<!--WSDL created by Apache Axis version: 1.4
+Built on Apr 22, 2006 (06:55:48 PDT)-->
+ <wsdl:types>
+  <schema targetNamespace="http://localhost:9090/axis/services/MyService" xmlns="http://www.w3.org/2001/XMLSchema">
+   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+   <complexType name="Address">
+    <sequence>
+     <element name="city" nillable="true" type="xsd:string"/>
+     <element name="number" type="xsd:int"/>
+
+     <element name="road" nillable="true" type="xsd:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="Person">
+    <sequence>
+     <element name="address" nillable="true" type="impl:Address"/>
+     <element name="age" type="xsd:int"/>
+     <element name="name" nillable="true" type="xsd:string"/>
+    </sequence>
+
+   </complexType>
+   <complexType name="ArrayOf_xsd_string">
+    <sequence>
+     <element maxOccurs="unbounded" minOccurs="0" name="item" type="xsd:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="ArrayOfPerson">
+    <sequence>
+     <element maxOccurs="unbounded" minOccurs="0" name="item" type="impl:Person"/>
+
+    </sequence>
+   </complexType>
+  </schema>
+ </wsdl:types>
+
+   <wsdl:message name="personArrayToStringRequest">
+
+      <wsdl:part name="array" type="impl:ArrayOfPerson"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getPersonResponse">
+
+      <wsdl:part name="getPersonReturn" type="impl:Person"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="countStringArrayRequest">
+
+      <wsdl:part name="array" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getBinaryDataRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="countBytesRequest">
+
+      <wsdl:part name="bytes" type="xsd:base64Binary"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="personToStringResponse">
+
+      <wsdl:part name="personToStringReturn" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getStringRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="getStringResponse">
+
+      <wsdl:part name="getStringReturn" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="personArrayToStringResponse">
+
+      <wsdl:part name="personArrayToStringReturn" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="countStringRequest">
+
+      <wsdl:part name="str" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="countStringResponse">
+
+      <wsdl:part name="countStringReturn" type="xsd:int"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getBinaryDataResponse">
+
+      <wsdl:part name="getBinaryDataReturn" type="xsd:base64Binary"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getPersonRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="personToStringRequest">
+
+      <wsdl:part name="p" type="impl:Person"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="countStringArrayResponse">
+
+      <wsdl:part name="countStringArrayReturn" type="xsd:int"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getStringArrayRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="countBytesResponse">
+
+      <wsdl:part name="countBytesReturn" type="xsd:int"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getStringArrayResponse">
+
+      <wsdl:part name="getStringArrayReturn" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:portType name="TestServices">
+
+      <wsdl:operation name="getPerson">
+
+         <wsdl:input message="impl:getPersonRequest" name="getPersonRequest"/>
+
+         <wsdl:output message="impl:getPersonResponse" name="getPersonResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="personToString" parameterOrder="p">
+
+         <wsdl:input message="impl:personToStringRequest" name="personToStringRequest"/>
+
+         <wsdl:output message="impl:personToStringResponse" name="personToStringResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countString" parameterOrder="str">
+
+         <wsdl:input message="impl:countStringRequest" name="countStringRequest"/>
+
+         <wsdl:output message="impl:countStringResponse" name="countStringResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countStringArray" parameterOrder="array">
+
+         <wsdl:input message="impl:countStringArrayRequest" name="countStringArrayRequest"/>
+
+         <wsdl:output message="impl:countStringArrayResponse" name="countStringArrayResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="personArrayToString" parameterOrder="array">
+
+         <wsdl:input message="impl:personArrayToStringRequest" name="personArrayToStringRequest"/>
+
+         <wsdl:output message="impl:personArrayToStringResponse" name="personArrayToStringResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getBinaryData">
+
+         <wsdl:input message="impl:getBinaryDataRequest" name="getBinaryDataRequest"/>
+
+         <wsdl:output message="impl:getBinaryDataResponse" name="getBinaryDataResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countBytes" parameterOrder="bytes">
+
+         <wsdl:input message="impl:countBytesRequest" name="countBytesRequest"/>
+
+         <wsdl:output message="impl:countBytesResponse" name="countBytesResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getString">
+
+         <wsdl:input message="impl:getStringRequest" name="getStringRequest"/>
+
+         <wsdl:output message="impl:getStringResponse" name="getStringResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getStringArray">
+
+         <wsdl:input message="impl:getStringArrayRequest" name="getStringArrayRequest"/>
+
+         <wsdl:output message="impl:getStringArrayResponse" name="getStringArrayResponse"/>
+
+      </wsdl:operation>
+
+   </wsdl:portType>
+
+   <wsdl:binding name="MyServiceSoapBinding" type="impl:TestServices">
+
+      <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+      <wsdl:operation name="getPerson">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getPersonRequest">
+
+            <wsdlsoap:body namespace="http://testing.org" use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getPersonResponse">
+
+            <wsdlsoap:body namespace="http://localhost:9090/axis/services/MyService" use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="personToString">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="personToStringRequest">
+
+            <wsdlsoap:body namespace="http://testing.org" use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="personToStringResponse">
+
+            <wsdlsoap:body namespace="http://localhost:9090/axis/services/MyService" use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countString">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="countStringRequest">
+
+            <wsdlsoap:body namespace="http://testing.org" use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="countStringResponse">
+
+            <wsdlsoap:body namespace="http://localhost:9090/axis/services/MyService" use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countStringArray">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="countStringArrayRequest">
+
+            <wsdlsoap:body namespace="http://testing.org" use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="countStringArrayResponse">
+
+            <wsdlsoap:body namespace="http://localhost:9090/axis/services/MyService" use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="personArrayToString">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="personArrayToStringRequest">
+
+            <wsdlsoap:body namespace="http://testing.org" use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="personArrayToStringResponse">
+
+            <wsdlsoap:body namespace="http://localhost:9090/axis/services/MyService" use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getBinaryData">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getBinaryDataRequest">
+
+            <wsdlsoap:body namespace="http://testing.org" use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getBinaryDataResponse">
+
+            <wsdlsoap:body namespace="http://localhost:9090/axis/services/MyService" use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countBytes">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="countBytesRequest">
+
+            <wsdlsoap:body namespace="http://testing.org" use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="countBytesResponse">
+
+            <wsdlsoap:body namespace="http://localhost:9090/axis/services/MyService" use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getString">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getStringRequest">
+
+            <wsdlsoap:body namespace="http://testing.org" use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getStringResponse">
+
+            <wsdlsoap:body namespace="http://localhost:9090/axis/services/MyService" use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getStringArray">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getStringArrayRequest">
+
+            <wsdlsoap:body namespace="http://testing.org" use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getStringArrayResponse">
+
+            <wsdlsoap:body namespace="http://localhost:9090/axis/services/MyService" use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+   </wsdl:binding>
+
+   <wsdl:service name="TestServicesService">
+
+      <wsdl:port binding="impl:MyServiceSoapBinding" name="MyService">
+
+         <wsdlsoap:address location="http://localhost:9090/axis/services/MyService"/>
+
+      </wsdl:port>
+
+   </wsdl:service>
+
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/SBWReader.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/SBWReader.wsdl
new file mode 100644
index 0000000..adf4582
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/SBWReader.wsdl
@@ -0,0 +1,602 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.sys-bio.org/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://www.sys-bio.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:types>
+    <s:schema elementFormDefault="qualified" targetNamespace="http://www.sys-bio.org/">
+      <s:element name="doAnalysis">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="var0" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+
+      </s:element>
+      <s:element name="doAnalysisResponse">
+        <s:complexType />
+      </s:element>
+      <s:element name="loadSBML">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="var0" type="s:string" />
+          </s:sequence>
+
+        </s:complexType>
+      </s:element>
+      <s:element name="loadSBMLResponse">
+        <s:complexType />
+      </s:element>
+      <s:element name="getErrors">
+        <s:complexType />
+      </s:element>
+      <s:element name="getErrorsResponse">
+
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="getErrorsResult" type="tns:ArrayOfString" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="ArrayOfString">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
+
+        </s:sequence>
+      </s:complexType>
+      <s:element name="getWarnings">
+        <s:complexType />
+      </s:element>
+      <s:element name="getWarningsResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="getWarningsResult" type="tns:ArrayOfString" />
+
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="getFatals">
+        <s:complexType />
+      </s:element>
+      <s:element name="getFatalsResponse">
+        <s:complexType>
+          <s:sequence>
+
+            <s:element minOccurs="0" maxOccurs="1" name="getFatalsResult" type="tns:ArrayOfString" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="getInfo">
+        <s:complexType />
+      </s:element>
+      <s:element name="getInfoResponse">
+        <s:complexType>
+
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="getInfoResult" type="tns:ArrayOfString" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="numErrors">
+        <s:complexType />
+      </s:element>
+      <s:element name="numErrorsResponse">
+
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="numErrorsResult" type="s:int" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="ArrayOfString" nillable="true" type="tns:ArrayOfString" />
+      <s:element name="int" type="s:int" />
+    </s:schema>
+
+  </wsdl:types>
+  <wsdl:message name="doAnalysisSoapIn">
+    <wsdl:part name="parameters" element="tns:doAnalysis" />
+  </wsdl:message>
+  <wsdl:message name="doAnalysisSoapOut">
+    <wsdl:part name="parameters" element="tns:doAnalysisResponse" />
+  </wsdl:message>
+  <wsdl:message name="loadSBMLSoapIn">
+    <wsdl:part name="parameters" element="tns:loadSBML" />
+
+  </wsdl:message>
+  <wsdl:message name="loadSBMLSoapOut">
+    <wsdl:part name="parameters" element="tns:loadSBMLResponse" />
+  </wsdl:message>
+  <wsdl:message name="getErrorsSoapIn">
+    <wsdl:part name="parameters" element="tns:getErrors" />
+  </wsdl:message>
+  <wsdl:message name="getErrorsSoapOut">
+    <wsdl:part name="parameters" element="tns:getErrorsResponse" />
+
+  </wsdl:message>
+  <wsdl:message name="getWarningsSoapIn">
+    <wsdl:part name="parameters" element="tns:getWarnings" />
+  </wsdl:message>
+  <wsdl:message name="getWarningsSoapOut">
+    <wsdl:part name="parameters" element="tns:getWarningsResponse" />
+  </wsdl:message>
+  <wsdl:message name="getFatalsSoapIn">
+    <wsdl:part name="parameters" element="tns:getFatals" />
+
+  </wsdl:message>
+  <wsdl:message name="getFatalsSoapOut">
+    <wsdl:part name="parameters" element="tns:getFatalsResponse" />
+  </wsdl:message>
+  <wsdl:message name="getInfoSoapIn">
+    <wsdl:part name="parameters" element="tns:getInfo" />
+  </wsdl:message>
+  <wsdl:message name="getInfoSoapOut">
+    <wsdl:part name="parameters" element="tns:getInfoResponse" />
+
+  </wsdl:message>
+  <wsdl:message name="numErrorsSoapIn">
+    <wsdl:part name="parameters" element="tns:numErrors" />
+  </wsdl:message>
+  <wsdl:message name="numErrorsSoapOut">
+    <wsdl:part name="parameters" element="tns:numErrorsResponse" />
+  </wsdl:message>
+  <wsdl:message name="doAnalysisHttpGetIn">
+    <wsdl:part name="var0" type="s:string" />
+
+  </wsdl:message>
+  <wsdl:message name="doAnalysisHttpGetOut" />
+  <wsdl:message name="loadSBMLHttpGetIn">
+    <wsdl:part name="var0" type="s:string" />
+  </wsdl:message>
+  <wsdl:message name="loadSBMLHttpGetOut" />
+  <wsdl:message name="getErrorsHttpGetIn" />
+  <wsdl:message name="getErrorsHttpGetOut">
+    <wsdl:part name="Body" element="tns:ArrayOfString" />
+
+  </wsdl:message>
+  <wsdl:message name="getWarningsHttpGetIn" />
+  <wsdl:message name="getWarningsHttpGetOut">
+    <wsdl:part name="Body" element="tns:ArrayOfString" />
+  </wsdl:message>
+  <wsdl:message name="getFatalsHttpGetIn" />
+  <wsdl:message name="getFatalsHttpGetOut">
+    <wsdl:part name="Body" element="tns:ArrayOfString" />
+  </wsdl:message>
+
+  <wsdl:message name="getInfoHttpGetIn" />
+  <wsdl:message name="getInfoHttpGetOut">
+    <wsdl:part name="Body" element="tns:ArrayOfString" />
+  </wsdl:message>
+  <wsdl:message name="numErrorsHttpGetIn" />
+  <wsdl:message name="numErrorsHttpGetOut">
+    <wsdl:part name="Body" element="tns:int" />
+  </wsdl:message>
+  <wsdl:message name="doAnalysisHttpPostIn">
+
+    <wsdl:part name="var0" type="s:string" />
+  </wsdl:message>
+  <wsdl:message name="doAnalysisHttpPostOut" />
+  <wsdl:message name="loadSBMLHttpPostIn">
+    <wsdl:part name="var0" type="s:string" />
+  </wsdl:message>
+  <wsdl:message name="loadSBMLHttpPostOut" />
+  <wsdl:message name="getErrorsHttpPostIn" />
+  <wsdl:message name="getErrorsHttpPostOut">
+
+    <wsdl:part name="Body" element="tns:ArrayOfString" />
+  </wsdl:message>
+  <wsdl:message name="getWarningsHttpPostIn" />
+  <wsdl:message name="getWarningsHttpPostOut">
+    <wsdl:part name="Body" element="tns:ArrayOfString" />
+  </wsdl:message>
+  <wsdl:message name="getFatalsHttpPostIn" />
+  <wsdl:message name="getFatalsHttpPostOut">
+    <wsdl:part name="Body" element="tns:ArrayOfString" />
+
+  </wsdl:message>
+  <wsdl:message name="getInfoHttpPostIn" />
+  <wsdl:message name="getInfoHttpPostOut">
+    <wsdl:part name="Body" element="tns:ArrayOfString" />
+  </wsdl:message>
+  <wsdl:message name="numErrorsHttpPostIn" />
+  <wsdl:message name="numErrorsHttpPostOut">
+    <wsdl:part name="Body" element="tns:int" />
+  </wsdl:message>
+
+  <wsdl:portType name="validateSoap">
+    <wsdl:operation name="doAnalysis">
+      <wsdl:input message="tns:doAnalysisSoapIn" />
+      <wsdl:output message="tns:doAnalysisSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="loadSBML">
+      <wsdl:input message="tns:loadSBMLSoapIn" />
+      <wsdl:output message="tns:loadSBMLSoapOut" />
+    </wsdl:operation>
+
+    <wsdl:operation name="getErrors">
+      <wsdl:input message="tns:getErrorsSoapIn" />
+      <wsdl:output message="tns:getErrorsSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="getWarnings">
+      <wsdl:input message="tns:getWarningsSoapIn" />
+      <wsdl:output message="tns:getWarningsSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="getFatals">
+
+      <wsdl:input message="tns:getFatalsSoapIn" />
+      <wsdl:output message="tns:getFatalsSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="getInfo">
+      <wsdl:input message="tns:getInfoSoapIn" />
+      <wsdl:output message="tns:getInfoSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="numErrors">
+      <wsdl:input message="tns:numErrorsSoapIn" />
+
+      <wsdl:output message="tns:numErrorsSoapOut" />
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="validateHttpGet">
+    <wsdl:operation name="doAnalysis">
+      <wsdl:input message="tns:doAnalysisHttpGetIn" />
+      <wsdl:output message="tns:doAnalysisHttpGetOut" />
+    </wsdl:operation>
+    <wsdl:operation name="loadSBML">
+
+      <wsdl:input message="tns:loadSBMLHttpGetIn" />
+      <wsdl:output message="tns:loadSBMLHttpGetOut" />
+    </wsdl:operation>
+    <wsdl:operation name="getErrors">
+      <wsdl:input message="tns:getErrorsHttpGetIn" />
+      <wsdl:output message="tns:getErrorsHttpGetOut" />
+    </wsdl:operation>
+    <wsdl:operation name="getWarnings">
+      <wsdl:input message="tns:getWarningsHttpGetIn" />
+
+      <wsdl:output message="tns:getWarningsHttpGetOut" />
+    </wsdl:operation>
+    <wsdl:operation name="getFatals">
+      <wsdl:input message="tns:getFatalsHttpGetIn" />
+      <wsdl:output message="tns:getFatalsHttpGetOut" />
+    </wsdl:operation>
+    <wsdl:operation name="getInfo">
+      <wsdl:input message="tns:getInfoHttpGetIn" />
+      <wsdl:output message="tns:getInfoHttpGetOut" />
+
+    </wsdl:operation>
+    <wsdl:operation name="numErrors">
+      <wsdl:input message="tns:numErrorsHttpGetIn" />
+      <wsdl:output message="tns:numErrorsHttpGetOut" />
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:portType name="validateHttpPost">
+    <wsdl:operation name="doAnalysis">
+      <wsdl:input message="tns:doAnalysisHttpPostIn" />
+
+      <wsdl:output message="tns:doAnalysisHttpPostOut" />
+    </wsdl:operation>
+    <wsdl:operation name="loadSBML">
+      <wsdl:input message="tns:loadSBMLHttpPostIn" />
+      <wsdl:output message="tns:loadSBMLHttpPostOut" />
+    </wsdl:operation>
+    <wsdl:operation name="getErrors">
+      <wsdl:input message="tns:getErrorsHttpPostIn" />
+      <wsdl:output message="tns:getErrorsHttpPostOut" />
+
+    </wsdl:operation>
+    <wsdl:operation name="getWarnings">
+      <wsdl:input message="tns:getWarningsHttpPostIn" />
+      <wsdl:output message="tns:getWarningsHttpPostOut" />
+    </wsdl:operation>
+    <wsdl:operation name="getFatals">
+      <wsdl:input message="tns:getFatalsHttpPostIn" />
+      <wsdl:output message="tns:getFatalsHttpPostOut" />
+    </wsdl:operation>
+
+    <wsdl:operation name="getInfo">
+      <wsdl:input message="tns:getInfoHttpPostIn" />
+      <wsdl:output message="tns:getInfoHttpPostOut" />
+    </wsdl:operation>
+    <wsdl:operation name="numErrors">
+      <wsdl:input message="tns:numErrorsHttpPostIn" />
+      <wsdl:output message="tns:numErrorsHttpPostOut" />
+    </wsdl:operation>
+  </wsdl:portType>
+
+  <wsdl:binding name="validateSoap" type="tns:validateSoap">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="doAnalysis">
+      <soap:operation soapAction="http://www.sys-bio.org/doAnalysis" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="loadSBML">
+      <soap:operation soapAction="http://www.sys-bio.org/loadSBML" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getErrors">
+      <soap:operation soapAction="http://www.sys-bio.org/getErrors" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getWarnings">
+      <soap:operation soapAction="http://www.sys-bio.org/getWarnings" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getFatals">
+      <soap:operation soapAction="http://www.sys-bio.org/getFatals" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getInfo">
+      <soap:operation soapAction="http://www.sys-bio.org/getInfo" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="numErrors">
+      <soap:operation soapAction="http://www.sys-bio.org/numErrors" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:binding name="validateSoap12" type="tns:validateSoap">
+    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="doAnalysis">
+      <soap12:operation soapAction="http://www.sys-bio.org/doAnalysis" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="loadSBML">
+      <soap12:operation soapAction="http://www.sys-bio.org/loadSBML" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getErrors">
+      <soap12:operation soapAction="http://www.sys-bio.org/getErrors" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getWarnings">
+      <soap12:operation soapAction="http://www.sys-bio.org/getWarnings" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getFatals">
+      <soap12:operation soapAction="http://www.sys-bio.org/getFatals" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getInfo">
+      <soap12:operation soapAction="http://www.sys-bio.org/getInfo" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="numErrors">
+      <soap12:operation soapAction="http://www.sys-bio.org/numErrors" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:binding name="validateHttpGet" type="tns:validateHttpGet">
+    <http:binding verb="GET" />
+    <wsdl:operation name="doAnalysis">
+
+      <http:operation location="/doAnalysis" />
+      <wsdl:input>
+        <http:urlEncoded />
+      </wsdl:input>
+      <wsdl:output />
+    </wsdl:operation>
+    <wsdl:operation name="loadSBML">
+      <http:operation location="/loadSBML" />
+      <wsdl:input>
+
+        <http:urlEncoded />
+      </wsdl:input>
+      <wsdl:output />
+    </wsdl:operation>
+    <wsdl:operation name="getErrors">
+      <http:operation location="/getErrors" />
+      <wsdl:input>
+        <http:urlEncoded />
+      </wsdl:input>
+
+      <wsdl:output>
+        <mime:mimeXml part="Body" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getWarnings">
+      <http:operation location="/getWarnings" />
+      <wsdl:input>
+        <http:urlEncoded />
+      </wsdl:input>
+
+      <wsdl:output>
+        <mime:mimeXml part="Body" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getFatals">
+      <http:operation location="/getFatals" />
+      <wsdl:input>
+        <http:urlEncoded />
+      </wsdl:input>
+
+      <wsdl:output>
+        <mime:mimeXml part="Body" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getInfo">
+      <http:operation location="/getInfo" />
+      <wsdl:input>
+        <http:urlEncoded />
+      </wsdl:input>
+
+      <wsdl:output>
+        <mime:mimeXml part="Body" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="numErrors">
+      <http:operation location="/numErrors" />
+      <wsdl:input>
+        <http:urlEncoded />
+      </wsdl:input>
+
+      <wsdl:output>
+        <mime:mimeXml part="Body" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:binding name="validateHttpPost" type="tns:validateHttpPost">
+    <http:binding verb="POST" />
+    <wsdl:operation name="doAnalysis">
+      <http:operation location="/doAnalysis" />
+
+      <wsdl:input>
+        <mime:content type="application/x-www-form-urlencoded" />
+      </wsdl:input>
+      <wsdl:output />
+    </wsdl:operation>
+    <wsdl:operation name="loadSBML">
+      <http:operation location="/loadSBML" />
+      <wsdl:input>
+        <mime:content type="application/x-www-form-urlencoded" />
+
+      </wsdl:input>
+      <wsdl:output />
+    </wsdl:operation>
+    <wsdl:operation name="getErrors">
+      <http:operation location="/getErrors" />
+      <wsdl:input>
+        <mime:content type="application/x-www-form-urlencoded" />
+      </wsdl:input>
+      <wsdl:output>
+
+        <mime:mimeXml part="Body" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getWarnings">
+      <http:operation location="/getWarnings" />
+      <wsdl:input>
+        <mime:content type="application/x-www-form-urlencoded" />
+      </wsdl:input>
+      <wsdl:output>
+
+        <mime:mimeXml part="Body" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getFatals">
+      <http:operation location="/getFatals" />
+      <wsdl:input>
+        <mime:content type="application/x-www-form-urlencoded" />
+      </wsdl:input>
+      <wsdl:output>
+
+        <mime:mimeXml part="Body" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getInfo">
+      <http:operation location="/getInfo" />
+      <wsdl:input>
+        <mime:content type="application/x-www-form-urlencoded" />
+      </wsdl:input>
+      <wsdl:output>
+
+        <mime:mimeXml part="Body" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="numErrors">
+      <http:operation location="/numErrors" />
+      <wsdl:input>
+        <mime:content type="application/x-www-form-urlencoded" />
+      </wsdl:input>
+      <wsdl:output>
+
+        <mime:mimeXml part="Body" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="validate">
+    <wsdl:port name="validateSoap" binding="tns:validateSoap">
+      <soap:address location="http://128.208.17.26/generate/SBWReader.asmx" />
+    </wsdl:port>
+    <wsdl:port name="validateSoap12" binding="tns:validateSoap12">
+
+      <soap12:address location="http://128.208.17.26/generate/SBWReader.asmx" />
+    </wsdl:port>
+    <wsdl:port name="validateHttpGet" binding="tns:validateHttpGet">
+      <http:address location="http://128.208.17.26/generate/SBWReader.asmx" />
+    </wsdl:port>
+    <wsdl:port name="validateHttpPost" binding="tns:validateHttpPost">
+      <http:address location="http://128.208.17.26/generate/SBWReader.asmx" />
+    </wsdl:port>
+  </wsdl:service>
+
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/TestServices-rpcencoded.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/TestServices-rpcencoded.wsdl
new file mode 100644
index 0000000..6352bcb
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/TestServices-rpcencoded.wsdl
@@ -0,0 +1,396 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://testing.org" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://testing.org" xmlns:intf="http://testing.org" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<!--WSDL created by Apache Axis version: 1.3
+Built on Oct 05, 2005 (05:23:37 EDT)-->
+ <wsdl:types>
+  <schema targetNamespace="http://testing.org" xmlns="http://www.w3.org/2001/XMLSchema">
+   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+   <complexType name="ArrayOf_xsd_string">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
+
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="Address">
+    <sequence>
+     <element name="city" nillable="true" type="xsd:string"/>
+     <element name="number" type="xsd:int"/>
+     <element name="road" nillable="true" type="xsd:string"/>
+    </sequence>
+
+   </complexType>
+   <complexType name="Person">
+    <sequence>
+     <element name="address" nillable="true" type="impl:Address"/>
+     <element name="age" type="xsd:int"/>
+     <element name="name" nillable="true" type="xsd:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="ArrayOfPerson">
+
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:Person[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+  </schema>
+ </wsdl:types>
+
+   <wsdl:message name="getStringRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="getPersonResponse">
+
+      <wsdl:part name="getPersonReturn" type="impl:Person"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getBinaryDataRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="getPersonRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="countStringArrayResponse">
+
+      <wsdl:part name="countStringArrayReturn" type="xsd:int"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getStringResponse">
+
+      <wsdl:part name="getStringReturn" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="countStringRequest">
+
+      <wsdl:part name="str" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="countStringResponse">
+
+      <wsdl:part name="countStringReturn" type="xsd:int"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="countStringArrayRequest">
+
+      <wsdl:part name="array" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getBinaryDataResponse">
+
+      <wsdl:part name="getBinaryDataReturn" type="xsd:base64Binary"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="personArrayToStringResponse">
+
+      <wsdl:part name="personArrayToStringReturn" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getStringArrayResponse">
+
+      <wsdl:part name="getStringArrayReturn" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="personArrayToStringRequest">
+
+      <wsdl:part name="array" type="impl:ArrayOfPerson"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="personToStringResponse">
+
+      <wsdl:part name="personToStringReturn" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="countBytesResponse">
+
+      <wsdl:part name="countBytesReturn" type="xsd:int"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getStringArrayRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="countBytesRequest">
+
+      <wsdl:part name="bytes" type="xsd:base64Binary"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="personToStringRequest">
+
+      <wsdl:part name="p" type="impl:Person"/>
+
+   </wsdl:message>
+
+   <wsdl:portType name="TestServices">
+
+      <wsdl:operation name="getStringArray">
+
+         <wsdl:input message="impl:getStringArrayRequest" name="getStringArrayRequest"/>
+
+         <wsdl:output message="impl:getStringArrayResponse" name="getStringArrayResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getString">
+
+         <wsdl:input message="impl:getStringRequest" name="getStringRequest"/>
+
+         <wsdl:output message="impl:getStringResponse" name="getStringResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getPerson">
+
+         <wsdl:input message="impl:getPersonRequest" name="getPersonRequest"/>
+
+         <wsdl:output message="impl:getPersonResponse" name="getPersonResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="personToString" parameterOrder="p">
+
+         <wsdl:input message="impl:personToStringRequest" name="personToStringRequest"/>
+
+         <wsdl:output message="impl:personToStringResponse" name="personToStringResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countString" parameterOrder="str">
+
+         <wsdl:input message="impl:countStringRequest" name="countStringRequest"/>
+
+         <wsdl:output message="impl:countStringResponse" name="countStringResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countStringArray" parameterOrder="array">
+
+         <wsdl:input message="impl:countStringArrayRequest" name="countStringArrayRequest"/>
+
+         <wsdl:output message="impl:countStringArrayResponse" name="countStringArrayResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="personArrayToString" parameterOrder="array">
+
+         <wsdl:input message="impl:personArrayToStringRequest" name="personArrayToStringRequest"/>
+
+         <wsdl:output message="impl:personArrayToStringResponse" name="personArrayToStringResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getBinaryData">
+
+         <wsdl:input message="impl:getBinaryDataRequest" name="getBinaryDataRequest"/>
+
+         <wsdl:output message="impl:getBinaryDataResponse" name="getBinaryDataResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countBytes" parameterOrder="bytes">
+
+         <wsdl:input message="impl:countBytesRequest" name="countBytesRequest"/>
+
+         <wsdl:output message="impl:countBytesResponse" name="countBytesResponse"/>
+
+      </wsdl:operation>
+
+   </wsdl:portType>
+
+   <wsdl:binding name="TestServicesSoapBinding" type="impl:TestServices">
+
+      <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+      <wsdl:operation name="getStringArray">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getStringArrayRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getStringArrayResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getString">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getStringRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getStringResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getPerson">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getPersonRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getPersonResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="personToString">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="personToStringRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="personToStringResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countString">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="countStringRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="countStringResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countStringArray">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="countStringArrayRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="countStringArrayResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="personArrayToString">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="personArrayToStringRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="personArrayToStringResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getBinaryData">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getBinaryDataRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getBinaryDataResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countBytes">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="countBytesRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="countBytesResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://testing.org" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+   </wsdl:binding>
+
+   <wsdl:service name="TestServicesService">
+
+      <wsdl:port binding="impl:TestServicesSoapBinding" name="TestServices">
+
+         <wsdlsoap:address location="http://localhost:8080/testservices/services/TestServices"/>
+
+      </wsdl:port>
+
+   </wsdl:service>
+
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/TestServices-unwrapped.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/TestServices-unwrapped.wsdl
new file mode 100644
index 0000000..10dd09d
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/TestServices-unwrapped.wsdl
@@ -0,0 +1,434 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://testing.org" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://testing.org" xmlns:intf="http://testing.org" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<!--WSDL created by Apache Axis version: 1.3
+Built on Oct 05, 2005 (05:23:37 EDT)-->
+ <wsdl:types>
+  <schema elementFormDefault="qualified" targetNamespace="http://testing.org" xmlns="http://www.w3.org/2001/XMLSchema">
+   <element name="getStringArrayReturn">
+    <complexType>
+     <sequence>
+      <element maxOccurs="unbounded" minOccurs="0" name="item" type="xsd:string"/>
+     </sequence>
+
+    </complexType>
+   </element>
+   <element name="getStringReturn" type="xsd:string"/>
+   <complexType name="Address">
+    <sequence>
+     <element name="city" nillable="true" type="xsd:string"/>
+     <element name="number" type="xsd:int"/>
+     <element name="road" nillable="true" type="xsd:string"/>
+    </sequence>
+
+   </complexType>
+   <complexType name="Person">
+    <sequence>
+     <element name="address" nillable="true" type="impl:Address"/>
+     <element name="age" type="xsd:int"/>
+     <element name="name" nillable="true" type="xsd:string"/>
+    </sequence>
+   </complexType>
+   <element name="getPersonReturn" type="impl:Person"/>
+
+   <element name="p" type="impl:Person"/>
+   <element name="personToStringReturn" type="xsd:string"/>
+   <element name="str" type="xsd:string"/>
+   <element name="countStringReturn" type="xsd:int"/>
+   <element name="array">
+    <complexType>
+     <sequence>
+      <element maxOccurs="unbounded" minOccurs="0" name="item" type="xsd:string"/>
+     </sequence>
+
+    </complexType>
+   </element>
+   <element name="countStringArrayReturn" type="xsd:int"/>
+   <complexType name="ArrayOfPerson">
+    <sequence>
+     <element maxOccurs="unbounded" minOccurs="0" name="item" type="impl:Person"/>
+    </sequence>
+   </complexType>
+   <element name="array1">
+
+    <complexType>
+     <sequence>
+      <element maxOccurs="unbounded" minOccurs="0" name="item" type="impl:Person"/>
+     </sequence>
+    </complexType>
+   </element>
+   <element name="personArrayToStringReturn" type="xsd:string"/>
+   <element name="getBinaryDataReturn">
+    <complexType>
+
+     <sequence>
+      <element maxOccurs="unbounded" minOccurs="0" name="item" type="xsd:byte"/>
+     </sequence>
+    </complexType>
+   </element>
+   <element name="bytes">
+    <complexType>
+     <sequence>
+      <element maxOccurs="unbounded" minOccurs="0" name="item" type="xsd:byte"/>
+
+     </sequence>
+    </complexType>
+   </element>
+   <element name="countBytesReturn" type="xsd:int"/>
+  </schema>
+ </wsdl:types>
+
+   <wsdl:message name="getStringRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="getPersonResponse">
+
+      <wsdl:part element="impl:getPersonReturn" name="getPersonReturn"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getBinaryDataRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="getPersonRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="countStringArrayResponse">
+
+      <wsdl:part element="impl:countStringArrayReturn" name="countStringArrayReturn"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getStringResponse">
+
+      <wsdl:part element="impl:getStringReturn" name="getStringReturn"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="countStringRequest">
+
+      <wsdl:part element="impl:str" name="str"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="countStringResponse">
+
+      <wsdl:part element="impl:countStringReturn" name="countStringReturn"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="countStringArrayRequest">
+
+      <wsdl:part element="impl:array" name="array"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getBinaryDataResponse">
+
+      <wsdl:part element="impl:getBinaryDataReturn" name="getBinaryDataReturn"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="personArrayToStringResponse">
+
+      <wsdl:part element="impl:personArrayToStringReturn" name="personArrayToStringReturn"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getStringArrayResponse">
+
+      <wsdl:part element="impl:getStringArrayReturn" name="getStringArrayReturn"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="personArrayToStringRequest">
+
+      <wsdl:part element="impl:array1" name="array"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="personToStringResponse">
+
+      <wsdl:part element="impl:personToStringReturn" name="personToStringReturn"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="countBytesResponse">
+
+      <wsdl:part element="impl:countBytesReturn" name="countBytesReturn"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getStringArrayRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="countBytesRequest">
+
+      <wsdl:part element="impl:bytes" name="bytes"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="personToStringRequest">
+
+      <wsdl:part element="impl:p" name="p"/>
+
+   </wsdl:message>
+
+   <wsdl:portType name="TestServices">
+
+      <wsdl:operation name="getStringArray">
+
+         <wsdl:input message="impl:getStringArrayRequest" name="getStringArrayRequest"/>
+
+         <wsdl:output message="impl:getStringArrayResponse" name="getStringArrayResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getString">
+
+         <wsdl:input message="impl:getStringRequest" name="getStringRequest"/>
+
+         <wsdl:output message="impl:getStringResponse" name="getStringResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getPerson">
+
+         <wsdl:input message="impl:getPersonRequest" name="getPersonRequest"/>
+
+         <wsdl:output message="impl:getPersonResponse" name="getPersonResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="personToString" parameterOrder="p">
+
+         <wsdl:input message="impl:personToStringRequest" name="personToStringRequest"/>
+
+         <wsdl:output message="impl:personToStringResponse" name="personToStringResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countString" parameterOrder="str">
+
+         <wsdl:input message="impl:countStringRequest" name="countStringRequest"/>
+
+         <wsdl:output message="impl:countStringResponse" name="countStringResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countStringArray" parameterOrder="array">
+
+         <wsdl:input message="impl:countStringArrayRequest" name="countStringArrayRequest"/>
+
+         <wsdl:output message="impl:countStringArrayResponse" name="countStringArrayResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="personArrayToString" parameterOrder="array">
+
+         <wsdl:input message="impl:personArrayToStringRequest" name="personArrayToStringRequest"/>
+
+         <wsdl:output message="impl:personArrayToStringResponse" name="personArrayToStringResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getBinaryData">
+
+         <wsdl:input message="impl:getBinaryDataRequest" name="getBinaryDataRequest"/>
+
+         <wsdl:output message="impl:getBinaryDataResponse" name="getBinaryDataResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countBytes" parameterOrder="bytes">
+
+         <wsdl:input message="impl:countBytesRequest" name="countBytesRequest"/>
+
+         <wsdl:output message="impl:countBytesResponse" name="countBytesResponse"/>
+
+      </wsdl:operation>
+
+   </wsdl:portType>
+
+   <wsdl:binding name="TestServicesSoapBinding" type="impl:TestServices">
+
+      <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+      <wsdl:operation name="getStringArray">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getStringArrayRequest">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getStringArrayResponse">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getString">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getStringRequest">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getStringResponse">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getPerson">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getPersonRequest">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getPersonResponse">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="personToString">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="personToStringRequest">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="personToStringResponse">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countString">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="countStringRequest">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="countStringResponse">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countStringArray">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="countStringArrayRequest">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="countStringArrayResponse">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="personArrayToString">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="personArrayToStringRequest">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="personArrayToStringResponse">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getBinaryData">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getBinaryDataRequest">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getBinaryDataResponse">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="countBytes">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="countBytesRequest">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="countBytesResponse">
+
+            <wsdlsoap:body use="literal"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+   </wsdl:binding>
+
+   <wsdl:service name="TestServicesService">
+
+      <wsdl:port binding="impl:TestServicesSoapBinding" name="TestServices">
+
+         <wsdlsoap:address location="http://localhost:8080/testservices/services/TestServices"/>
+
+      </wsdl:port>
+
+   </wsdl:service>
+
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/VSOi.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/VSOi.wsdl
new file mode 100644
index 0000000..5070310
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/VSOi.wsdl
@@ -0,0 +1,305 @@
+<?xml version="1.0"?>
+<!-- VSO Data Types -->
+<!-- 2005/03/21 : updated for java's 'wscompile'; added 'Extra' fields access. -->
+<!-- 2005/06/03 : pointing at production instance -->
+
+<definitions name="VSO"
+	xmlns="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
+	xmlns:vso="http://virtualsolar.org/VSO/VSOi"
+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	targetNamespace="http://virtualsolar.org/VSO/VSOi">
+	<types>
+		<schema xmlns="http://www.w3.org/2001/XMLSchema"
+  	                targetNamespace="http://virtualsolar.org/VSO/VSOi">
+		
+			<complexType name="StringArray">
+				<complexContent>
+					<restriction base="soapenc:Array">
+						<attribute ref="soapenc:arrayType" wsdl:arrayType="string[]" />
+					</restriction>
+				</complexContent>
+			</complexType>
+
+			<complexType name="Time">
+				<all>
+					<element name="start" type="string" />
+					<element name="end"   type="string" />
+				</all>
+			</complexType>
+			<complexType name="Wave">
+				<all>
+					<element name="wavemin" type="float" />
+					<element name="wavemax" type="float" />
+					<element name="waveunit" type="string" />
+					<element name="wavetype" type="string" minOccurs="0" />
+				</all>
+			</complexType>
+			<complexType name="Extent">
+				<all>
+					<element name="x"    type="string" minOccurs="0" />
+					<element name="y"    type="string" minOccurs="0" />
+					<element name="width" type="string" minOccurs="0" />
+					<element name="length" type="string" minOccurs="0" />
+					<element name="type"  type="string" minOccurs="0" />
+				</all>
+			</complexType>
+			<complexType name="Thumbnail">
+				<all>
+					<element name="hires" type="string" minOccurs="0" />
+					<element name="lowres" type="string" minOccurs="0" />
+				</all>
+			</complexType>
+			<complexType name="Extra">
+				<all>
+					<element name="thumbnail" type="vso:Thumbnail" minOccurs="0" />
+				</all>
+			</complexType>
+    
+
+			<!-- for "Query" function -->
+			
+			<complexType name="QueryRequestBlock">
+				<all>
+					<element name="provider" type="string" minOccurs="0" />
+					<element name="source" type="string" minOccurs="0" />
+					<element name="instrument" type="string" minOccurs="0" />
+					<element name="physobs" type="string" minOccurs="0" />
+					<element name="time" type="vso:Time" minOccurs="1" />
+					<element name="wave" type="vso:Wave" minOccurs="0" />
+					<element name="extent" type="vso:Extent" minOccurs="0" />
+					<element name="field" type="vso:StringArray" minOccurs="0" />
+				</all>
+			</complexType>
+			<complexType name="QueryRequest">
+				<all>
+					<element name="version" type="float" minOccurs="0" />
+					<element name="block" type="vso:QueryRequestBlock" />
+				</all>
+			</complexType>
+			<complexType name="QueryResponseBlock">
+				<all>
+					<element name="provider" type="string" />
+					<element name="source" type="string" minOccurs="0" />
+					<element name="instrument" type="string" minOccurs="0" />
+					<element name="physobs" type="string" minOccurs="0" />
+					<element name="time" type="vso:Time" />
+					<element name="wave" type="vso:Wave" minOccurs="0" />
+					<element name="extent" type="vso:Extent" minOccurs="0" />
+					<element name="fileid" type="string" minOccurs="0" />
+					<element name="size" type="float" minOccurs="0" /> 
+					<element name="extra" type="vso:Extra" minOccurs="0"/>
+					<element name="info" type="string" minOccurs="0" />
+				</all>
+			</complexType>
+			
+			<complexType name="QueryResponseBlockArray">
+				<complexContent>
+<!--					<sequence>
+						<element name="record" type="vso:QueryResponseBlock" minOccurs="0" />
+					</sequence> --> 
+					<restriction base="soapenc:Array">
+						<attribute ref="soapenc:arrayType" wsdl:arrayType="vso:QueryResponseBlock[]" />
+					</restriction>
+				</complexContent>
+			</complexType>
+			
+			
+			<!-- provider response block (a bit late to rename it now) -->
+			<complexType name="ProviderQueryResponse">
+				<all>
+					<element name="version" type="float" />
+					<element name="provider" type="string" minOccurs="0" />
+					<element name="no_of_records_found" type="int" minOccurs="0" />
+					<element name="no_of_records_returned" type="int" minOccurs="0" />
+					<element name="record" type="vso:QueryResponseBlockArray" minOccurs="0" />
+					<element name="error" type="string" minOccurs="0" />
+					<element name="debug" type="string" minOccurs="0" />
+					<element name="status" type="string" minOccurs="0" />
+				</all>
+			</complexType>
+                        <complexType name="VSOQueryResponse">
+				<complexContent>
+<!--					<sequence>
+						<element name="vsoqueryresponse" type="vso:ProviderQueryResponse" minOccurs="0" />
+					</sequence> -->
+                                        <restriction base="soapenc:Array">
+                                                <attribute ref="soapenc:arrayType" wsdl:arrayType="vso:ProviderQueryResponse[]"/>
+					</restriction>
+				</complexContent>
+			</complexType>
+
+			
+			<!-- for "GetData" function -->
+			<complexType name="Info">
+			        <all>
+				        <element name="email" type="string" />
+					<element name="host"  type="string" minOccurs="0" />
+   			                <element name="user"  type="string" minOccurs="0" />
+					<element name="directory" type="string" minOccurs="0" />  
+					<element name="password"  type="string" minOcurrs="0" />
+					<element name="address"   type="string" minOccurs="0" />
+					<element name="required" type="string" minOccurs="0" />
+			        </all>
+			</complexType>
+
+			<complexType name="DataRequest">
+				<all>
+					<element name="provider" type="string" />
+					<element name="fileid" type="vso:StringArray" />
+				</all>
+			</complexType>
+
+			<complexType name="DataRequestArray">
+				<complexContent>
+<!--
+					<sequence>
+						<element name="datarequestarray" type="vso:DataRequest" minOccurs='0' />
+					</sequence>
+-->
+					<restriction base="soapenc:Array">
+						<attribute ref="soapenc:arrayType" wsdl:arrayType="vso:DataRequest[]" />
+					</restriction>
+				</complexContent>
+			</complexType>
+			
+			<complexType name="GetDataRequest">
+				<all>
+					<element name="method" type="vso:StringArray" />
+					<element name="info" type="vso:Info" minOccurs="0" />
+					<element name="data" type="vso:DataRequestArray" minOccurs="0"/>
+				</all>
+			</complexType>
+			
+			<complexType name="VSOGetDataRequest">
+				<all>
+					<element name="version" type="float" minOccurs="0" />
+					<element name="request" type="vso:GetDataRequest" />
+				</all>
+			</complexType>
+			
+			
+			<complexType name="Data">
+				<all>
+					<element name="fileid" type="vso:StringArray" minOccurs="0" />
+					<element name="url" type="string" minOccurs="0" />
+					<element name="provider" type="string" minOccurs="0" />
+					<element name="status" type="string" minOccurs="0"  />
+					<element name="details" type="string" minOccurs="0" />
+					<element name="content" type="string" minOccurs="0" />
+				</all>
+			</complexType>
+
+			<complexType name="DataArray">
+				<complexContent>
+<!--
+					<sequence>
+						<element name="dataarray" type="vso:Data" minOccurs='0' />
+					</sequence>
+-->
+					<restriction base="soapenc:Array">
+						<attribute ref="soapenc:arrayType" wsdl:arrayType="vso:Data[]" />
+					</restriction>
+				</complexContent>
+			</complexType>
+
+
+			<complexType name="ProviderGetDataResponse">
+				<all>
+					<element name="version" type="float" />
+					<element name="info" type="vso:StringArray" minOccurs="0" />
+					<element name="provider" type="string" minOccurs="0" />
+					<element name="data" type="vso:DataArray" minOccurs="0" />
+					<element name="status" type="string" minOccurs="0" />
+					<element name="debug" type="string" minOccurs="0" />
+					<element name="method" type="vso:StringArray" minOccurs="0" />
+				</all>
+			</complexType>
+
+			<complexType name="VSOGetDataResponse">
+				<complexContent>
+<!--
+					<sequence>
+						<element name="vsogetdataresponse" type="vso:ProviderGetDataResponse" minOccurs='0' />
+					</sequence>
+-->
+					<restriction base="soapenc:Array">
+						<attribute ref="soapenc:arrayType" wsdl:arrayType="vso:ProviderGetDataResponse[]" />
+					</restriction>
+				</complexContent>
+			</complexType>
+		</schema>
+	</types>
+
+	<message name="QueryInput">
+		<part name="body" type="vso:QueryRequest" />
+	</message>
+	<message name="QueryOutput">
+		<part name="body" type="vso:VSOQueryResponse" />
+	</message>
+	
+	<message name="GetDataInput">
+		<part name="body" type="vso:VSOGetDataRequest" />
+	</message>
+	<message name="GetDataOutput">
+		<part name="body" type="vso:VSOGetDataResponse" />
+	</message>
+	
+	<portType name="VSOiPort">
+		<operation name="Query">
+			<input message="vso:QueryInput" />
+			<output message="vso:QueryOutput" />
+		</operation>
+		<operation name="GetData">
+			<input message="vso:GetDataInput" />
+			<output message="vso:GetDataOutput" />
+		</operation>
+	</portType>
+	
+	<binding name="VSOiBinding" type="vso:VSOiPort">
+		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
+		<operation name="Query">
+			<soap:operation soapAction="http://virtualsolar.org/VSO/VSOi#Query" />
+			<input>
+				<soap:body
+					use="encoded"
+					namespace="http://virtualsolar.org/VSO/VSOi"
+					encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+				/>
+			</input>
+			<output>
+				<soap:body
+					use="encoded"
+					namespace="http://virtualsolar.org/VSO/VSOi"
+					encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+				/>
+			</output>
+		</operation>
+		
+		<operation name="GetData">
+			<soap:operation soapAction="http://virtualsolar.org/VSO/VSOi#GetData" />
+			<input>
+				<soap:body
+					use="encoded"
+					namespace="http://virtualsolar.org/VSO/VSOi"
+					encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+				/>
+			</input>
+			<output>
+				<soap:body
+					use="encoded"
+					namespace="http://virtualsolar.org/VSO/VSOi"
+					encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+				/>
+			</output>
+		</operation>
+	</binding>
+	
+	<service name="VSOiService">
+		<port name="sdacVSOi" binding="vso:VSOiBinding">
+			<soap:address location="http://vso.nascom.nasa.gov/cgi/VSOi_strict" />
+		</port>
+	</service>
+</definitions>
+
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/bind.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/bind.wsdl
new file mode 100644
index 0000000..cd50141
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/bind.wsdl
@@ -0,0 +1,354 @@
+<wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="urn:BINDSOAP" xmlns:intf="urn:BINDSOAP" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:BINDSOAP">
+	<wsdl:types>
+		<schema targetNamespace="urn:BINDSOAP" xmlns="http://www.w3.org/2001/XMLSchema">
+			<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+			<complexType name="BINDSOAPException">
+				<sequence>
+					<element name="message" type="xsd:string" nillable="true"/>
+				</sequence>
+			</complexType>
+			<complexType name="SearchResultBean">
+				<sequence>
+					<element name="totalRecordsFound" type="xsd:int"/>
+					<element name="records" type="xsd:string" nillable="true"/>
+					<element name="query" type="xsd:string" nillable="true"/>
+					<element name="returnType" type="xsd:string" nillable="true"/>
+				</sequence>
+			</complexType>
+			
+			<complexType name="BIVMolecule">
+				<sequence>
+					<element name="id" type="xsd:int"/>
+					<element name="idtype" type="xsd:string" nillable="true"/>
+					<element name="shortlabel" type="xsd:string" nillable="true"/>
+					<element name="taxname" type="xsd:string" nillable="true"/>
+					<element name="aliases" type="xsd:string" nillable="true"/>
+					<element name="redundant-ids" type="xsd:string" nillable="true"/>
+					<element name="smid-hits" type="xsd:int"/>
+				</sequence>
+			</complexType>
+			
+			<complexType name="BIVInteraction">
+				<sequence>
+					<element name="bid" type="xsd:int"/>
+					<element name="molA" type="impl:BIVMolecule" nillable="true"/>
+					<element name="molB" type="impl:BIVMolecule" nillable="true"/>
+				</sequence>
+			</complexType>
+			
+			<complexType name="BIVComplex">
+				<sequence>
+					<element name="bid" type="xsd:int"/>
+					<element name="spokeModel" type="xsd:boolean"/>
+					<element name="subunit" type="impl:BIVMolecule" maxOccurs="unbounded"/>
+				</sequence>
+			</complexType>
+			<complexType name="BIVRecord">
+				<choice>
+					<element name="interaction" type="impl:BIVInteraction" />
+					<element name="complex" type="impl:BIVComplex"/>
+				</choice>
+			</complexType>
+			<complexType name="ArrayOfBIVInteraction">
+				<complexContent>
+					<restriction base="soapenc:Array">
+						<attribute ref="soapenc:arrayType" wsdl:arrayType="impl:BIVInteraction[]" />
+					</restriction>
+				</complexContent>
+			</complexType>
+			<complexType name="ArrayOfBIVRecord">
+				<complexContent>
+					<restriction base="soapenc:Array">
+						<attribute ref="soapenc:arrayType" wsdl:arrayType="impl:BIVRecord[]" />
+					</restriction>
+				</complexContent>
+			</complexType>
+			<complexType name="ArrayOf_xsd_int">
+				<complexContent>
+					<restriction base="soapenc:Array">
+						<attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:int[]" />
+					</restriction>
+				</complexContent>
+			</complexType>
+		</schema>
+	</wsdl:types>
+	<wsdl:message name="BINDSOAPException">
+		<wsdl:part name="BINDSOAPException" type="impl:BINDSOAPException"/>
+	</wsdl:message>
+	<wsdl:message name="isServiceAliveResponse">
+		<wsdl:part name="isServiceAliveReturn" type="xsd:boolean"/>
+	</wsdl:message>
+	<wsdl:message name="idSearchRequest">
+		<wsdl:part name="id" type="xsd:string"/>
+		<wsdl:part name="idType" type="xsd:string"/>
+		<wsdl:part name="returnType" type="xsd:string"/>
+	</wsdl:message>
+	<wsdl:message name="idSearchAttachmentRequest">
+		<wsdl:part name="id" type="xsd:string"/>
+		<wsdl:part name="idType" type="xsd:string"/>
+		<wsdl:part name="returnType" type="xsd:string"/>
+		<wsdl:part name="attachmentFormat" type="xsd:string"/>
+	</wsdl:message>
+	<wsdl:message name="textSearchRequest">
+		<wsdl:part name="luceneQuery" type="xsd:string"/>
+		<wsdl:part name="returnType" type="xsd:string"/>
+	</wsdl:message>
+	<wsdl:message name="textSearchAttachmentRequest">
+		<wsdl:part name="luceneQuery" type="xsd:string"/>
+		<wsdl:part name="returnType" type="xsd:string"/>
+		<wsdl:part name="attachmentFormat" type="xsd:string"/>
+	</wsdl:message>
+	<wsdl:message name="BIVGetInteractionRecordRequest">
+		<wsdl:part name="bid" type="xsd:int"/>
+	</wsdl:message>
+	<wsdl:message name="BIVGetInteractionRecordResponse">
+		<wsdl:part name="BIVInteraction" type="impl:BIVInteraction"/>
+	</wsdl:message>
+	<wsdl:message name="BIVGetComplexRecordRequest">
+		<wsdl:part name="bid" type="xsd:int"/>
+	</wsdl:message>
+	<wsdl:message name="BIVGetComplexRecordResponse">
+		<wsdl:part name="BIVComplex" type="impl:BIVComplex"/>
+	</wsdl:message>
+	<wsdl:message name="BIVGetNeighboursRequest">
+		<wsdl:part name="id" type="xsd:string"/>
+		<wsdl:part name="idType" type="xsd:string"/>
+	</wsdl:message>
+	<wsdl:message name="BIVGetNeighboursResponse">
+		<wsdl:part name="BIVInteraction" type="impl:ArrayOfBIVInteraction"/>
+	</wsdl:message>
+	<wsdl:message name="BIVGetRecordRequest">
+		<wsdl:part name="bid" type="xsd:int"/>
+	</wsdl:message>
+	<wsdl:message name="BIVGetRecordResponse">
+		<wsdl:part name="BIVRecord" type="impl:BIVRecord"/>
+	</wsdl:message>
+	<wsdl:message name="BIVGetRecordsRequest">
+		<wsdl:part name="ids" type="impl:ArrayOf_xsd_int"/>
+	</wsdl:message>
+	<wsdl:message name="BIVGetRecordsResponse">
+		<wsdl:part name="BIVRecords" type="impl:ArrayOfBIVRecord"/>
+	</wsdl:message>
+	<wsdl:message name="getResponse">
+		<wsdl:part name="searchResultBean" type="impl:SearchResultBean"/>
+	</wsdl:message>
+	<wsdl:message name="getVersionResponse">
+		<wsdl:part name="version" type="xsd:string"/>
+	</wsdl:message>
+	<wsdl:message name="emptyRequest"/>
+	<wsdl:portType name="BINDSOAPPort">
+		<wsdl:operation name="isServiceAlive" parameterOrder="">
+			<wsdl:input name="isServiceAliveRequest" message="impl:emptyRequest"/>
+			<wsdl:output name="isServiceAliveResponse" message="impl:isServiceAliveResponse"/>
+			<wsdl:fault name="BINDSOAPException" message="impl:BINDSOAPException"/>
+		</wsdl:operation>
+		<wsdl:operation name="getSoftwareVersion" parameterOrder="">
+			<wsdl:input name="getSoftwareVersionRequest" message="impl:emptyRequest"/>
+			<wsdl:output name="getSoftwareVersionResponse" message="impl:getVersionResponse"/>
+			<wsdl:fault name="BINDSOAPException" message="impl:BINDSOAPException"/>
+		</wsdl:operation>
+		<wsdl:operation name="getSpecVersion" parameterOrder="">
+			<wsdl:input name="getSpecVersionRequest" message="impl:emptyRequest"/>
+			<wsdl:output name="getSpecVersionResponse" message="impl:getVersionResponse"/>
+			<wsdl:fault name="BINDSOAPException" message="impl:BINDSOAPException"/>
+		</wsdl:operation>
+		<wsdl:operation name="idSearch" parameterOrder="id idType returnType">
+			<wsdl:input name="idSearchRequest" message="impl:idSearchRequest"/>
+			<wsdl:output name="idSearchResponse" message="impl:getResponse"/>
+			<wsdl:fault name="BINDSOAPException" message="impl:BINDSOAPException"/>
+		</wsdl:operation>
+		<wsdl:operation name="idSearchAttachment" parameterOrder="id idType returnType attachmentFormat">
+			<wsdl:input name="idSearchAttachmentRequest" message="impl:idSearchAttachmentRequest"/>
+			<wsdl:output name="idSearchAttachmentResponse" message="impl:getResponse"/>
+			<wsdl:fault name="BINDSOAPException" message="impl:BINDSOAPException"/>
+		</wsdl:operation>
+		<wsdl:operation name="textSearch" parameterOrder="luceneQuery returnType">
+			<wsdl:input name="textSearchRequest" message="impl:textSearchRequest"/>
+			<wsdl:output name="textSearchResponse" message="impl:getResponse"/>
+			<wsdl:fault name="BINDSOAPException" message="impl:BINDSOAPException"/>
+		</wsdl:operation>
+		<wsdl:operation name="textSearchAttachment" parameterOrder="luceneQuery returnType attachmentFormat">
+			<wsdl:input name="textSearchAttachmentRequest" message="impl:textSearchAttachmentRequest"/>
+			<wsdl:output name="textSearchAttachmentResponse" message="impl:getResponse"/>
+			<wsdl:fault name="BINDSOAPException" message="impl:BINDSOAPException"/>
+		</wsdl:operation>
+		<wsdl:operation name="BIVGetInteractionRecord" parameterOrder="bid">
+			<wsdl:input name="BIVGetInteractionRecordRequest" message="impl:BIVGetInteractionRecordRequest"/>
+			<wsdl:output name="BIVGetInteractionRecordResponse" message="impl:BIVGetInteractionRecordResponse"/>
+			<wsdl:fault name="BINDSOAPException" message="impl:BINDSOAPException"/>
+		</wsdl:operation>
+		<wsdl:operation name="BIVGetComplexRecord" parameterOrder="bid">
+			<wsdl:input name="BIVGetComplexRecordRequest" message="impl:BIVGetComplexRecordRequest"/>
+			<wsdl:output name="BIVGetComplexRecordResponse" message="impl:BIVGetComplexRecordResponse"/>
+			<wsdl:fault name="BINDSOAPException" message="impl:BINDSOAPException"/>
+		</wsdl:operation>
+		<wsdl:operation name="BIVGetNeighbours" parameterOrder="id idType">
+			<wsdl:input name="BIVGetNeighboursRequest" message="impl:BIVGetNeighboursRequest"/>
+			<wsdl:output name="BIVGetNeighboursResponse" message="impl:BIVGetNeighboursResponse"/>
+			<wsdl:fault name="BINDSOAPException" message="impl:BINDSOAPException"/>
+		</wsdl:operation>
+		<wsdl:operation name="BIVGetRecord" parameterOrder="bid">
+			<wsdl:input name="BIVGetRecordRequest" message="impl:BIVGetRecordRequest"/>
+			<wsdl:output name="BIVGetRecordResponse" message="impl:BIVGetRecordResponse"/>
+			<wsdl:fault name="BINDSOAPException" message="impl:BINDSOAPException"/>
+		</wsdl:operation>
+		<wsdl:operation name="BIVGetRecords" parameterOrder="ids">
+			<wsdl:input name="BIVGetRecordsRequest" message="impl:BIVGetRecordsRequest"/>
+			<wsdl:output name="BIVGetRecordsResponse" message="impl:BIVGetRecordsResponse"/>
+			<wsdl:fault name="BINDSOAPException" message="impl:BINDSOAPException"/>
+		</wsdl:operation>
+	</wsdl:portType>
+	<wsdl:binding name="BINDSOAPBinding" type="impl:BINDSOAPPort">
+		<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+		<wsdl:operation name="isServiceAlive">
+			<wsdlsoap:operation soapAction="urn:#isServiceAlive"/>
+			<wsdl:input>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:input>			
+			<wsdl:output>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:output>
+			<wsdl:fault name="BINDSOAPException">
+				<wsdlsoap:fault name="BINDSOAPException" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="getSoftwareVersion">
+			<wsdlsoap:operation soapAction="urn:#getSoftwareVersion"/>
+			<wsdl:input>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:input>
+			<wsdl:output>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:output>
+			<wsdl:fault name="BINDSOAPException">
+				<wsdlsoap:fault name="BINDSOAPException" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="getSpecVersion">
+			<wsdlsoap:operation soapAction="urn:#getSpecVersion"/>
+			<wsdl:input>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:input>
+			<wsdl:output>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:output>
+			<wsdl:fault name="BINDSOAPException">
+				<wsdlsoap:fault name="BINDSOAPException" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="idSearch">
+			<wsdlsoap:operation soapAction="urn:#idSearch"/>
+			<wsdl:input>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:input>
+			<wsdl:output>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:output>
+			<wsdl:fault name="BINDSOAPException">
+				<wsdlsoap:fault name="BINDSOAPException" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="idSearchAttachment">
+			<wsdlsoap:operation soapAction="urn:#idSearchAttachment"/>
+			<wsdl:input>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:input>
+			<wsdl:output>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:output>
+			<wsdl:fault name="BINDSOAPException">
+				<wsdlsoap:fault name="BINDSOAPException" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="textSearch">
+			<wsdlsoap:operation soapAction="urn:#textSearch"/>
+			<wsdl:input>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:input>
+			<wsdl:output>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:output>
+			<wsdl:fault name="BINDSOAPException">
+				<wsdlsoap:fault name="BINDSOAPException" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="textSearchAttachment">
+			<wsdlsoap:operation soapAction="urn:#textSearchAttachment"/>
+			<wsdl:input>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:input>
+			<wsdl:output>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:output>
+			<wsdl:fault name="BINDSOAPException">
+				<wsdlsoap:fault name="BINDSOAPException" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="BIVGetInteractionRecord">
+			<wsdlsoap:operation soapAction="urn:#BIVGetInteractionRecord"/>
+			<wsdl:input>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:input>
+			<wsdl:output>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:output>
+			<wsdl:fault name="BINDSOAPException">
+				<wsdlsoap:fault name="BINDSOAPException" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="BIVGetComplexRecord">
+			<wsdlsoap:operation soapAction="urn:#BIVGetComplexRecord"/>
+			<wsdl:input>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:input>
+			<wsdl:output>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:output>
+			<wsdl:fault name="BINDSOAPException">
+				<wsdlsoap:fault name="BINDSOAPException" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="BIVGetNeighbours">
+			<wsdlsoap:operation soapAction="urn:#BIVGetNeighbours"/>
+			<wsdl:input>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:input>
+			<wsdl:output>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:output>
+			<wsdl:fault name="BINDSOAPException">
+				<wsdlsoap:fault name="BINDSOAPException" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="BIVGetRecord">
+			<wsdlsoap:operation soapAction="urn:#BIVGetRecord"/>
+			<wsdl:input>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:input>
+			<wsdl:output>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:output>
+			<wsdl:fault name="BINDSOAPException">
+				<wsdlsoap:fault name="BINDSOAPException" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:fault>
+		</wsdl:operation>
+		<wsdl:operation name="BIVGetRecords">
+			<wsdlsoap:operation soapAction="urn:#BIVGetRecords"/>
+			<wsdl:input>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:input>
+			<wsdl:output>
+				<wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:output>
+			<wsdl:fault name="BINDSOAPException">
+				<wsdlsoap:fault name="BINDSOAPException" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:BINDSOAP"/>
+			</wsdl:fault>
+		</wsdl:operation>
+	</wsdl:binding>
+	<wsdl:service name="BINDService">
+		<wsdl:port name="BINDSOAP" binding="impl:BINDSOAPBinding">
+			<wsdlsoap:address location="http://soap.bind.ca/services/BINDSOAP"/>
+		</wsdl:port>
+	</wsdl:service>
+
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch.xsd b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch.xsd
new file mode 100644
index 0000000..e9d522c
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch.xsd
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<s:schema 
+    xmlns:tns="http://www.ncbi.nlm.nih.gov/soap/eutils/efetch"
+    xmlns:s="http://www.w3.org/2001/XMLSchema" 
+    targetNamespace="http://www.ncbi.nlm.nih.gov/soap/eutils/efetch"
+    elementFormDefault="qualified"
+    >
+<!--    version="1.5" -->
+
+<s:include schemaLocation="efetch_taxon.xsd" /> 
+<s:include schemaLocation="efetch_bio.xsd" />
+<s:include schemaLocation="efetch_nlmc.xsd" /> 
+<s:include schemaLocation="efetch_pubmed.xsd" /> 
+<s:include schemaLocation="efetch_pmc.xsd" />  
+
+  <s:complexType name="IdListType">
+    <s:sequence>
+      <s:element minOccurs="0" maxOccurs="unbounded" name="Id" type="s:string" />
+    </s:sequence>
+  </s:complexType>
+
+<!-- Request/Response -->
+
+  <s:element name="eFetchRequest">
+    <s:complexType>
+      <s:sequence>
+        <s:element minOccurs="0" maxOccurs="1" name="db" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="id" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="WebEnv" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="query_key" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="tool" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="email" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="retstart" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="retmax" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="rettype" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="strand" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="seq_start" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="seq_stop" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="complexity" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="report" type="s:string" />
+      </s:sequence>
+    </s:complexType>
+  </s:element>
+
+  <s:element name="eFetchRequestMS">
+    <s:complexType>
+      <s:sequence>
+        <s:element minOccurs="0" maxOccurs="1" name="db" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="id" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="WebEnv" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="query_key" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="tool" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="email" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="retstart" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="retmax" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="rettype" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="strand" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="seq_start" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="seq_stop" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="complexity" type="s:string" />
+        <s:element minOccurs="0" maxOccurs="1" name="report" type="s:string" />
+      </s:sequence>
+    </s:complexType>
+  </s:element>
+
+  
+<!-- All in one -->  
+
+  <s:element name="eFetchResult">
+    <s:complexType>
+      <s:sequence>
+        <s:element minOccurs="0" maxOccurs="1" name="ERROR" type="s:string" />
+
+        <s:element minOccurs="0" maxOccurs="1" name="NLMCatalogRecordSet" type="tns:NLMCatalogRecordSetType" />
+        <s:element minOccurs="0" maxOccurs="1" name="PubmedArticleSet" type="tns:PubmedArticleSetType" />
+        <s:element minOccurs="0" maxOccurs="1" name="pmc-articleset" type="tns:pmc-articlesetType" />
+        <s:element minOccurs="0" maxOccurs="1" ref="tns:Mim-entries" />
+
+        <s:element minOccurs="0" maxOccurs="1" name="TaxaSet" type="tns:TaxaSetType" />
+        <s:element minOccurs="0" maxOccurs="1" ref="tns:TSeqSet"/>
+        <s:element minOccurs="0" maxOccurs="1" ref="tns:GBSet" />
+        <s:element minOccurs="0" maxOccurs="1" name="Bioseq-set" type="tns:Bioseq-setType" />
+        <s:element minOccurs="0" maxOccurs="1" ref="tns:Entrezgene-Set" />
+        <s:element minOccurs="0" maxOccurs="1" ref="tns:ExchangeSet" /> 
+        <s:element minOccurs="0" maxOccurs="1" name="IdList" type="tns:IdListType" />
+      </s:sequence>
+    </s:complexType>
+  </s:element>
+
+    <s:complexType name="eFetchResultType">
+      <s:sequence>
+        <s:element minOccurs="0" maxOccurs="1" name="ERROR" type="s:string" />
+
+        <s:element minOccurs="0" maxOccurs="1" name="NLMCatalogRecordSet" type="tns:NLMCatalogRecordSetType" />
+        <s:element minOccurs="0" maxOccurs="1" name="PubmedArticleSet" type="tns:PubmedArticleSetType" />
+        <s:element minOccurs="0" maxOccurs="1" name="pmc-articleset" type="tns:pmc-articlesetType" />
+        <s:element minOccurs="0" maxOccurs="1" ref="tns:Mim-entries" />
+
+        <s:element minOccurs="0" maxOccurs="1" name="TaxaSet" type="tns:TaxaSetType" />
+        <s:element minOccurs="0" maxOccurs="1" ref="tns:TSeqSet"/>
+        <s:element minOccurs="0" maxOccurs="1" ref="tns:GBSet" />
+        <s:element minOccurs="0" maxOccurs="1" name="Bioseq-set" type="tns:Bioseq-setType" />
+        <s:element minOccurs="0" maxOccurs="1" ref="tns:Entrezgene-Set" />
+        <s:element minOccurs="0" maxOccurs="1" ref="tns:ExchangeSet" /> 
+        <s:element minOccurs="0" maxOccurs="1" name="IdList" type="tns:IdListType" />
+      </s:sequence>
+    </s:complexType>
+
+  <s:element name="eFetchResultMS">
+    <s:complexType>
+      <s:sequence>
+        <s:element minOccurs="0" maxOccurs="1" name="eFetchResult" type="tns:eFetchResultType" />
+      </s:sequence>
+    </s:complexType>
+  </s:element>
+  
+  
+</s:schema>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch_bio.xsd b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch_bio.xsd
new file mode 100644
index 0000000..76b3772
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch_bio.xsd
@@ -0,0 +1,18079 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema 
+    xmlns:tns="http://www.ncbi.nlm.nih.gov/soap/eutils/efetch"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+    targetNamespace="http://www.ncbi.nlm.nih.gov/soap/eutils/efetch"
+    elementFormDefault="qualified"
+    >
+    
+    <!-- version="1.5" -->
+
+    <!-- based on http://www.ncbi.nlm.nih.gov/data_specs/ver/20060517/schema/NCBI_all_20060517.xsd -->
+
+	<xs:complexType name="AffilType">
+		<xs:choice>
+			<xs:element ref="tns:Affil_str"/>
+			<xs:element name="Affil_std" type="tns:Affil_stdType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Affil_stdType">
+		<xs:sequence>
+			<xs:element ref="tns:Affil_std_affil" minOccurs="0"/>
+			<xs:element ref="tns:Affil_std_div" minOccurs="0"/>
+			<xs:element ref="tns:Affil_std_city" minOccurs="0"/>
+			<xs:element ref="tns:Affil_std_sub" minOccurs="0"/>
+			<xs:element ref="tns:Affil_std_country" minOccurs="0"/>
+			<xs:element ref="tns:Affil_std_street" minOccurs="0"/>
+			<xs:element ref="tns:Affil_std_email" minOccurs="0"/>
+			<xs:element ref="tns:Affil_std_fax" minOccurs="0"/>
+			<xs:element ref="tns:Affil_std_phone" minOccurs="0"/>
+			<xs:element ref="tns:Affil_std_postal-code" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Affil_std_affil" type="xs:string"/>
+	<xs:element name="Affil_std_city" type="xs:string"/>
+	<xs:element name="Affil_std_country" type="xs:string"/>
+	<xs:element name="Affil_std_div" type="xs:string"/>
+	<xs:element name="Affil_std_email" type="xs:string"/>
+	<xs:element name="Affil_std_fax" type="xs:string"/>
+	<xs:element name="Affil_std_phone" type="xs:string"/>
+	<xs:element name="Affil_std_postal-code" type="xs:string"/>
+	<xs:element name="Affil_std_street" type="xs:string"/>
+	<xs:element name="Affil_std_sub" type="xs:string"/>
+	<xs:element name="Affil_str" type="xs:string"/>
+	<xs:complexType name="Algorithm-typeType">
+		<xs:sequence>
+			<xs:element name="Algorithm-type_scoring-Scheme" type="tns:Algorithm-type_scoring-SchemeType"/>
+			<xs:element name="Algorithm-type_clustering-Method" type="tns:Algorithm-type_clustering-MethodType"/>
+			<xs:element name="Algorithm-type_score-Matrix" type="tns:Algorithm-type_score-MatrixType" minOccurs="0"/>
+			<xs:element ref="tns:Algorithm-type_gapOpen" minOccurs="0"/>
+			<xs:element ref="tns:Algorithm-type_gapExtend" minOccurs="0"/>
+			<xs:element ref="tns:Algorithm-type_gapScaleFactor" minOccurs="0"/>
+			<xs:element ref="tns:Algorithm-type_nTerminalExt" minOccurs="0"/>
+			<xs:element ref="tns:Algorithm-type_cTerminalExt" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Algorithm-type_cTerminalExt" type="xs:string"/>
+	<xs:complexType name="Algorithm-type_clustering-MethodType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unassigned"/>
+							<xs:enumeration value="single-linkage"/>
+							<xs:enumeration value="neighbor-joining"/>
+							<xs:enumeration value="fast-minimum-evolution"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="Algorithm-type_gapExtend" type="xs:string"/>
+	<xs:element name="Algorithm-type_gapOpen" type="xs:string"/>
+	<xs:element name="Algorithm-type_gapScaleFactor" type="xs:string"/>
+	<xs:element name="Algorithm-type_nTerminalExt" type="xs:string"/>
+	<xs:complexType name="Algorithm-type_score-MatrixType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unassigned"/>
+							<xs:enumeration value="blosum45"/>
+							<xs:enumeration value="blosum62"/>
+							<xs:enumeration value="blosum80"/>
+							<xs:enumeration value="pam30"/>
+							<xs:enumeration value="pam70"/>
+							<xs:enumeration value="pam250"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Algorithm-type_scoring-SchemeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unassigned"/>
+							<xs:enumeration value="percent-id"/>
+							<xs:enumeration value="kimura-corrected"/>
+							<xs:enumeration value="aligned-score"/>
+							<xs:enumeration value="aligned-score-ext"/>
+							<xs:enumeration value="aligned-score-filled"/>
+							<xs:enumeration value="blast-footprint"/>
+							<xs:enumeration value="blast-full"/>
+							<xs:enumeration value="hybrid-aligned-score"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Align-annotType">
+		<xs:sequence>
+			<xs:element name="Align-annot_location" type="tns:Align-annot_locationType"/>
+			<xs:element ref="tns:Align-annot_description" minOccurs="0"/>
+			<xs:element name="Align-annot_evidence" type="tns:Align-annot_evidenceType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Align-annot-setType">
+		<xs:sequence>
+			<xs:element name="Align-annot" type="tns:Align-annotType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Align-annot_description" type="xs:string"/>
+	<xs:complexType name="Align-annot_evidenceType">
+		<xs:sequence>
+			<xs:element name="Feature-evidence" type="tns:Feature-evidenceType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Align-annot_locationType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Align-defType">
+		<xs:sequence>
+			<xs:element name="Align-def_align-type" type="tns:Align-def_align-typeType"/>
+			<xs:element name="Align-def_ids" type="tns:Align-def_idsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Align-def_align-typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="ref"/>
+							<xs:enumeration value="alt"/>
+							<xs:enumeration value="blocks"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Align-def_idsType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Align-statsType">
+		<xs:sequence>
+			<xs:element ref="tns:Align-stats_descr" minOccurs="0"/>
+			<xs:element ref="tns:Align-stats_scale-factor" minOccurs="0"/>
+			<xs:element ref="tns:Align-stats_vast-score" minOccurs="0"/>
+			<xs:element ref="tns:Align-stats_vast-mlogp" minOccurs="0"/>
+			<xs:element ref="tns:Align-stats_align-res" minOccurs="0"/>
+			<xs:element ref="tns:Align-stats_rmsd" minOccurs="0"/>
+			<xs:element ref="tns:Align-stats_blast-score" minOccurs="0"/>
+			<xs:element ref="tns:Align-stats_blast-mlogp" minOccurs="0"/>
+			<xs:element ref="tns:Align-stats_other-score" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Align-stats_align-res" type="xs:string"/>
+	<xs:element name="Align-stats_blast-mlogp" type="xs:string"/>
+	<xs:element name="Align-stats_blast-score" type="xs:string"/>
+	<xs:element name="Align-stats_descr" type="xs:string"/>
+	<xs:element name="Align-stats_other-score" type="xs:string"/>
+	<xs:element name="Align-stats_rmsd" type="xs:string"/>
+	<xs:element name="Align-stats_scale-factor" type="xs:string"/>
+	<xs:element name="Align-stats_vast-mlogp" type="xs:string"/>
+	<xs:element name="Align-stats_vast-score" type="xs:string"/>
+	<xs:element name="Alternate-conformation-id" type="xs:string"/>
+	<xs:complexType name="Alternate-conformation-idsType">
+		<xs:sequence>
+			<xs:element ref="tns:Alternate-conformation-id" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Anisotropic-temperature-factorsType">
+		<xs:sequence>
+			<xs:element ref="tns:Anisotropic-temperature-factors_scale-factor"/>
+			<xs:element name="Anisotropic-temperature-factors_b-11" type="tns:Anisotropic-temperature-factors_b-11Type"/>
+			<xs:element name="Anisotropic-temperature-factors_b-12" type="tns:Anisotropic-temperature-factors_b-12Type"/>
+			<xs:element name="Anisotropic-temperature-factors_b-13" type="tns:Anisotropic-temperature-factors_b-13Type"/>
+			<xs:element name="Anisotropic-temperature-factors_b-22" type="tns:Anisotropic-temperature-factors_b-22Type"/>
+			<xs:element name="Anisotropic-temperature-factors_b-23" type="tns:Anisotropic-temperature-factors_b-23Type"/>
+			<xs:element name="Anisotropic-temperature-factors_b-33" type="tns:Anisotropic-temperature-factors_b-33Type"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Anisotropic-temperature-factors_b-11Type">
+		<xs:sequence>
+			<xs:element ref="tns:Anisotropic-temperature-factors_b-11_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Anisotropic-temperature-factors_b-11_E" type="xs:string"/>
+	<xs:complexType name="Anisotropic-temperature-factors_b-12Type">
+		<xs:sequence>
+			<xs:element ref="tns:Anisotropic-temperature-factors_b-12_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Anisotropic-temperature-factors_b-12_E" type="xs:string"/>
+	<xs:complexType name="Anisotropic-temperature-factors_b-13Type">
+		<xs:sequence>
+			<xs:element ref="tns:Anisotropic-temperature-factors_b-13_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Anisotropic-temperature-factors_b-13_E" type="xs:string"/>
+	<xs:complexType name="Anisotropic-temperature-factors_b-22Type">
+		<xs:sequence>
+			<xs:element ref="tns:Anisotropic-temperature-factors_b-22_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Anisotropic-temperature-factors_b-22_E" type="xs:string"/>
+	<xs:complexType name="Anisotropic-temperature-factors_b-23Type">
+		<xs:sequence>
+			<xs:element ref="tns:Anisotropic-temperature-factors_b-23_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Anisotropic-temperature-factors_b-23_E" type="xs:string"/>
+	<xs:complexType name="Anisotropic-temperature-factors_b-33Type">
+		<xs:sequence>
+			<xs:element ref="tns:Anisotropic-temperature-factors_b-33_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Anisotropic-temperature-factors_b-33_E" type="xs:string"/>
+	<xs:element name="Anisotropic-temperature-factors_scale-factor" type="xs:string"/>
+	<xs:complexType name="Annot-descrType">
+		<xs:sequence>
+			<xs:element name="Annotdesc" type="tns:AnnotdescType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Annot-idType">
+		<xs:choice>
+			<xs:element name="Annot-id_local" type="tns:Annot-id_localType"/>
+			<xs:element ref="tns:Annot-id_ncbi"/>
+			<xs:element name="Annot-id_general" type="tns:Annot-id_generalType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Annot-id_generalType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Annot-id_localType">
+		<xs:sequence>
+			<xs:element name="Object-id" type="tns:Object-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Annot-id_ncbi" type="xs:string"/>
+	<xs:complexType name="AnnotdescType">
+		<xs:choice>
+			<xs:element ref="tns:Annotdesc_name"/>
+			<xs:element ref="tns:Annotdesc_title"/>
+			<xs:element ref="tns:Annotdesc_comment"/>
+			<xs:element name="Annotdesc_pub" type="tns:Annotdesc_pubType"/>
+			<xs:element name="Annotdesc_user" type="tns:Annotdesc_userType"/>
+			<xs:element name="Annotdesc_create-date" type="tns:Annotdesc_create-dateType"/>
+			<xs:element name="Annotdesc_update-date" type="tns:Annotdesc_update-dateType"/>
+			<xs:element name="Annotdesc_src" type="tns:Annotdesc_srcType"/>
+			<xs:element name="Annotdesc_align" type="tns:Annotdesc_alignType"/>
+			<xs:element name="Annotdesc_region" type="tns:Annotdesc_regionType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Annotdesc_alignType">
+		<xs:sequence>
+			<xs:element name="Align-def" type="tns:Align-defType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Annotdesc_comment" type="xs:string"/>
+	<xs:complexType name="Annotdesc_create-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Annotdesc_name" type="xs:string"/>
+	<xs:complexType name="Annotdesc_pubType">
+		<xs:sequence>
+			<xs:element name="Pubdesc" type="tns:PubdescType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Annotdesc_regionType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Annotdesc_srcType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Annotdesc_title" type="xs:string"/>
+	<xs:complexType name="Annotdesc_update-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Annotdesc_userType">
+		<xs:sequence>
+			<xs:element name="User-object" type="tns:User-objectType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ArticleIdType">
+		<xs:choice>
+			<xs:element name="ArticleId_pubmed" type="tns:ArticleId_pubmedType"/>
+			<xs:element name="ArticleId_medline" type="tns:ArticleId_medlineType"/>
+			<xs:element name="ArticleId_doi" type="tns:ArticleId_doiType"/>
+			<xs:element name="ArticleId_pii" type="tns:ArticleId_piiType"/>
+			<xs:element name="ArticleId_pmcid" type="tns:ArticleId_pmcidType"/>
+			<xs:element name="ArticleId_pmcpid" type="tns:ArticleId_pmcpidType"/>
+			<xs:element name="ArticleId_pmpid" type="tns:ArticleId_pmpidType"/>
+			<xs:element name="ArticleId_other" type="tns:ArticleId_otherType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="ArticleIdSetType">
+		<xs:sequence>
+			<xs:element name="ArticleId" type="tns:ArticleIdType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ArticleId_doiType">
+		<xs:sequence>
+			<xs:element ref="tns:DOI"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ArticleId_medlineType">
+		<xs:sequence>
+			<xs:element ref="tns:MedlineUID"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ArticleId_otherType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ArticleId_piiType">
+		<xs:sequence>
+			<xs:element ref="tns:PII"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ArticleId_pmcidType">
+		<xs:sequence>
+			<xs:element ref="tns:PmcID"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ArticleId_pmcpidType">
+		<xs:sequence>
+			<xs:element ref="tns:PmcPid"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ArticleId_pmpidType">
+		<xs:sequence>
+			<xs:element ref="tns:PmPid"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ArticleId_pubmedType">
+		<xs:sequence>
+			<xs:element ref="tns:PubMedId"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="AssayType">
+		<xs:sequence>
+			<xs:element ref="tns:Assay_handle" minOccurs="0"/>
+			<xs:element ref="tns:Assay_batch" minOccurs="0"/>
+			<xs:element ref="tns:Assay_batchId" minOccurs="0"/>
+			<xs:element name="Assay_batchType" type="tns:Assay_batchTypeType" minOccurs="0"/>
+			<xs:element name="Assay_molType" type="tns:Assay_molTypeType" minOccurs="0"/>
+			<xs:element ref="tns:Assay_sampleSize" minOccurs="0"/>
+			<xs:element ref="tns:Assay_population" minOccurs="0"/>
+			<xs:element ref="tns:Assay_linkoutUrl" minOccurs="0"/>
+			<xs:element name="Assay_method" type="tns:Assay_methodType" minOccurs="0"/>
+			<xs:element name="Assay_taxonomy" type="tns:Assay_taxonomyType"/>
+			<xs:element name="Assay_strains" type="tns:Assay_strainsType" minOccurs="0"/>
+			<xs:element ref="tns:Assay_comment" minOccurs="0"/>
+			<xs:element name="Assay_citation" type="tns:Assay_citationType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Assay_batch" type="xs:string"/>
+	<xs:element name="Assay_batchId" type="xs:string"/>
+	<xs:complexType name="Assay_batchTypeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="snpassay"/>
+					<xs:enumeration value="validation"/>
+					<xs:enumeration value="doublehit"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Assay_citationType">
+		<xs:sequence>
+			<xs:element ref="tns:Assay_citation_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Assay_citation_E" type="xs:string"/>
+	<xs:element name="Assay_comment" type="xs:string"/>
+	<xs:element name="Assay_handle" type="xs:string"/>
+	<xs:element name="Assay_linkoutUrl" type="xs:string"/>
+	<xs:complexType name="Assay_methodType">
+		<xs:sequence>
+			<xs:element ref="tns:Assay_method_name" minOccurs="0"/>
+			<xs:element ref="tns:Assay_method_id" minOccurs="0"/>
+			<xs:element ref="tns:Assay_method_exception"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Assay_method_exception" type="xs:string"/>
+	<xs:element name="Assay_method_id" type="xs:string"/>
+	<xs:element name="Assay_method_name" type="xs:string"/>
+	<xs:complexType name="Assay_molTypeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="genomic"/>
+					<xs:enumeration value="cDNA"/>
+					<xs:enumeration value="mito"/>
+					<xs:enumeration value="chloro"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Assay_population" type="xs:string"/>
+	<xs:element name="Assay_sampleSize" type="xs:string"/>
+	<xs:complexType name="Assay_strainsType">
+		<xs:sequence>
+			<xs:element ref="tns:Assay_strains_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Assay_strains_E" type="xs:string"/>
+	<xs:complexType name="Assay_taxonomyType">
+		<xs:sequence>
+			<xs:element ref="tns:Assay_taxonomy_id"/>
+			<xs:element ref="tns:Assay_taxonomy_organism" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Assay_taxonomy_id" type="xs:string"/>
+	<xs:element name="Assay_taxonomy_organism" type="xs:string"/>
+	<xs:complexType name="AssemblyType">
+		<xs:sequence>
+			<xs:element ref="tns:Assembly_dbSnpBuild"/>
+			<xs:element ref="tns:Assembly_genomeBuild"/>
+			<xs:element ref="tns:Assembly_groupLabel" minOccurs="0"/>
+			<xs:element ref="tns:Assembly_assemblySource" minOccurs="0"/>
+			<xs:element name="Assembly_current" type="tns:Assembly_currentType" minOccurs="0"/>
+			<xs:element name="Assembly_component" type="tns:Assembly_componentType" minOccurs="0"/>
+			<xs:element name="Assembly_snpStat" type="tns:Assembly_snpStatType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Assembly_assemblySource" type="xs:string"/>
+	<xs:complexType name="Assembly_componentType">
+		<xs:sequence>
+			<xs:element name="Component" type="tns:ComponentType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Assembly_currentType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Assembly_dbSnpBuild" type="xs:string"/>
+	<xs:element name="Assembly_genomeBuild" type="xs:string"/>
+	<xs:element name="Assembly_groupLabel" type="xs:string"/>
+	<xs:complexType name="Assembly_snpStatType">
+		<xs:sequence>
+			<xs:element name="Assembly_snpStat_mapWeight" type="tns:Assembly_snpStat_mapWeightType"/>
+			<xs:element ref="tns:Assembly_snpStat_chromCount" minOccurs="0"/>
+			<xs:element ref="tns:Assembly_snpStat_placedContigCount" minOccurs="0"/>
+			<xs:element ref="tns:Assembly_snpStat_unplacedContigCount" minOccurs="0"/>
+			<xs:element ref="tns:Assembly_snpStat_seqlocCount" minOccurs="0"/>
+			<xs:element ref="tns:Assembly_snpStat_hapCount" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Assembly_snpStat_chromCount" type="xs:string"/>
+	<xs:element name="Assembly_snpStat_hapCount" type="xs:string"/>
+	<xs:complexType name="Assembly_snpStat_mapWeightType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="unmapped"/>
+					<xs:enumeration value="unique-in-contig"/>
+					<xs:enumeration value="two-hits-in-contig"/>
+					<xs:enumeration value="less-10-hits"/>
+					<xs:enumeration value="multiple-hits"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Assembly_snpStat_placedContigCount" type="xs:string"/>
+	<xs:element name="Assembly_snpStat_seqlocCount" type="xs:string"/>
+	<xs:element name="Assembly_snpStat_unplacedContigCount" type="xs:string"/>
+	<xs:complexType name="AtomType">
+		<xs:sequence>
+			<xs:element name="Atom_id" type="tns:Atom_idType"/>
+			<xs:element ref="tns:Atom_name" minOccurs="0"/>
+			<xs:element name="Atom_iupac-code" type="tns:Atom_iupac-codeType" minOccurs="0"/>
+			<xs:element name="Atom_element" type="tns:Atom_elementType"/>
+			<xs:element name="Atom_ionizable-proton" type="tns:Atom_ionizable-protonType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Atom-id" type="xs:string"/>
+	<xs:complexType name="Atom-pntrType">
+		<xs:sequence>
+			<xs:element name="Atom-pntr_molecule-id" type="tns:Atom-pntr_molecule-idType"/>
+			<xs:element name="Atom-pntr_residue-id" type="tns:Atom-pntr_residue-idType"/>
+			<xs:element name="Atom-pntr_atom-id" type="tns:Atom-pntr_atom-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Atom-pntr-set">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Atom-pntr" type="tns:Atom-pntrType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Atom-pntr_atom-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Atom-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Atom-pntr_molecule-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Molecule-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Atom-pntr_residue-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Residue-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Atom-pntrsType">
+		<xs:sequence>
+			<xs:element ref="tns:Atom-pntrs_number-of-ptrs"/>
+			<xs:element name="Atom-pntrs_molecule-ids" type="tns:Atom-pntrs_molecule-idsType"/>
+			<xs:element name="Atom-pntrs_residue-ids" type="tns:Atom-pntrs_residue-idsType"/>
+			<xs:element name="Atom-pntrs_atom-ids" type="tns:Atom-pntrs_atom-idsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Atom-pntrs_atom-idsType">
+		<xs:sequence>
+			<xs:element ref="tns:Atom-id" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Atom-pntrs_molecule-idsType">
+		<xs:sequence>
+			<xs:element ref="tns:Molecule-id" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Atom-pntrs_number-of-ptrs" type="xs:string"/>
+	<xs:complexType name="Atom-pntrs_residue-idsType">
+		<xs:sequence>
+			<xs:element ref="tns:Residue-id" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Atom_elementType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="h"/>
+					<xs:enumeration value="he"/>
+					<xs:enumeration value="li"/>
+					<xs:enumeration value="be"/>
+					<xs:enumeration value="b"/>
+					<xs:enumeration value="c"/>
+					<xs:enumeration value="n"/>
+					<xs:enumeration value="o"/>
+					<xs:enumeration value="f"/>
+					<xs:enumeration value="ne"/>
+					<xs:enumeration value="na"/>
+					<xs:enumeration value="mg"/>
+					<xs:enumeration value="al"/>
+					<xs:enumeration value="si"/>
+					<xs:enumeration value="p"/>
+					<xs:enumeration value="s"/>
+					<xs:enumeration value="cl"/>
+					<xs:enumeration value="ar"/>
+					<xs:enumeration value="k"/>
+					<xs:enumeration value="ca"/>
+					<xs:enumeration value="sc"/>
+					<xs:enumeration value="ti"/>
+					<xs:enumeration value="v"/>
+					<xs:enumeration value="cr"/>
+					<xs:enumeration value="mn"/>
+					<xs:enumeration value="fe"/>
+					<xs:enumeration value="co"/>
+					<xs:enumeration value="ni"/>
+					<xs:enumeration value="cu"/>
+					<xs:enumeration value="zn"/>
+					<xs:enumeration value="ga"/>
+					<xs:enumeration value="ge"/>
+					<xs:enumeration value="as"/>
+					<xs:enumeration value="se"/>
+					<xs:enumeration value="br"/>
+					<xs:enumeration value="kr"/>
+					<xs:enumeration value="rb"/>
+					<xs:enumeration value="sr"/>
+					<xs:enumeration value="y"/>
+					<xs:enumeration value="zr"/>
+					<xs:enumeration value="nb"/>
+					<xs:enumeration value="mo"/>
+					<xs:enumeration value="tc"/>
+					<xs:enumeration value="ru"/>
+					<xs:enumeration value="rh"/>
+					<xs:enumeration value="pd"/>
+					<xs:enumeration value="ag"/>
+					<xs:enumeration value="cd"/>
+					<xs:enumeration value="in"/>
+					<xs:enumeration value="sn"/>
+					<xs:enumeration value="sb"/>
+					<xs:enumeration value="te"/>
+					<xs:enumeration value="i"/>
+					<xs:enumeration value="xe"/>
+					<xs:enumeration value="cs"/>
+					<xs:enumeration value="ba"/>
+					<xs:enumeration value="la"/>
+					<xs:enumeration value="ce"/>
+					<xs:enumeration value="pr"/>
+					<xs:enumeration value="nd"/>
+					<xs:enumeration value="pm"/>
+					<xs:enumeration value="sm"/>
+					<xs:enumeration value="eu"/>
+					<xs:enumeration value="gd"/>
+					<xs:enumeration value="tb"/>
+					<xs:enumeration value="dy"/>
+					<xs:enumeration value="ho"/>
+					<xs:enumeration value="er"/>
+					<xs:enumeration value="tm"/>
+					<xs:enumeration value="yb"/>
+					<xs:enumeration value="lu"/>
+					<xs:enumeration value="hf"/>
+					<xs:enumeration value="ta"/>
+					<xs:enumeration value="w"/>
+					<xs:enumeration value="re"/>
+					<xs:enumeration value="os"/>
+					<xs:enumeration value="ir"/>
+					<xs:enumeration value="pt"/>
+					<xs:enumeration value="au"/>
+					<xs:enumeration value="hg"/>
+					<xs:enumeration value="tl"/>
+					<xs:enumeration value="pb"/>
+					<xs:enumeration value="bi"/>
+					<xs:enumeration value="po"/>
+					<xs:enumeration value="at"/>
+					<xs:enumeration value="rn"/>
+					<xs:enumeration value="fr"/>
+					<xs:enumeration value="ra"/>
+					<xs:enumeration value="ac"/>
+					<xs:enumeration value="th"/>
+					<xs:enumeration value="pa"/>
+					<xs:enumeration value="u"/>
+					<xs:enumeration value="np"/>
+					<xs:enumeration value="pu"/>
+					<xs:enumeration value="am"/>
+					<xs:enumeration value="cm"/>
+					<xs:enumeration value="bk"/>
+					<xs:enumeration value="cf"/>
+					<xs:enumeration value="es"/>
+					<xs:enumeration value="fm"/>
+					<xs:enumeration value="md"/>
+					<xs:enumeration value="no"/>
+					<xs:enumeration value="lr"/>
+					<xs:enumeration value="other"/>
+					<xs:enumeration value="unknown"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Atom_idType">
+		<xs:sequence>
+			<xs:element ref="tns:Atom-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Atom_ionizable-protonType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+					<xs:enumeration value="unknown"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Atom_iupac-codeType">
+		<xs:sequence>
+			<xs:element ref="tns:Atom_iupac-code_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Atom_iupac-code_E" type="xs:string"/>
+	<xs:element name="Atom_name" type="xs:string"/>
+	<xs:complexType name="Atomic-coordinatesType">
+		<xs:sequence>
+			<xs:element ref="tns:Atomic-coordinates_number-of-points"/>
+			<xs:element name="Atomic-coordinates_atoms" type="tns:Atomic-coordinates_atomsType"/>
+			<xs:element name="Atomic-coordinates_sites" type="tns:Atomic-coordinates_sitesType"/>
+			<xs:element name="Atomic-coordinates_temperature-factors" type="tns:Atomic-coordinates_temperature-factorsType" minOccurs="0"/>
+			<xs:element name="Atomic-coordinates_occupancies" type="tns:Atomic-coordinates_occupanciesType" minOccurs="0"/>
+			<xs:element name="Atomic-coordinates_alternate-conf-ids" type="tns:Atomic-coordinates_alternate-conf-idsType" minOccurs="0"/>
+			<xs:element name="Atomic-coordinates_conf-ensembles" type="tns:Atomic-coordinates_conf-ensemblesType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Atomic-coordinates_alternate-conf-idsType">
+		<xs:sequence>
+			<xs:element name="Alternate-conformation-ids" type="tns:Alternate-conformation-idsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Atomic-coordinates_atomsType">
+		<xs:sequence>
+			<xs:element name="Atom-pntrs" type="tns:Atom-pntrsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Atomic-coordinates_conf-ensemblesType">
+		<xs:sequence>
+			<xs:element name="Conformation-ensemble" type="tns:Conformation-ensembleType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Atomic-coordinates_number-of-points" type="xs:string"/>
+	<xs:complexType name="Atomic-coordinates_occupanciesType">
+		<xs:sequence>
+			<xs:element name="Atomic-occupancies" type="tns:Atomic-occupanciesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Atomic-coordinates_sitesType">
+		<xs:sequence>
+			<xs:element name="Model-space-points" type="tns:Model-space-pointsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Atomic-coordinates_temperature-factorsType">
+		<xs:sequence>
+			<xs:element name="Atomic-temperature-factors" type="tns:Atomic-temperature-factorsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Atomic-occupanciesType">
+		<xs:sequence>
+			<xs:element ref="tns:Atomic-occupancies_scale-factor"/>
+			<xs:element name="Atomic-occupancies_o" type="tns:Atomic-occupancies_oType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Atomic-occupancies_oType">
+		<xs:sequence>
+			<xs:element ref="tns:Atomic-occupancies_o_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Atomic-occupancies_o_E" type="xs:string"/>
+	<xs:element name="Atomic-occupancies_scale-factor" type="xs:string"/>
+	<xs:complexType name="Atomic-temperature-factorsType">
+		<xs:choice>
+			<xs:element name="Atomic-temperature-factors_isotropic" type="tns:Atomic-temperature-factors_isotropicType"/>
+			<xs:element name="Atomic-temperature-factors_anisotropic" type="tns:Atomic-temperature-factors_anisotropicType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Atomic-temperature-factors_anisotropicType">
+		<xs:sequence>
+			<xs:element name="Anisotropic-temperature-factors" type="tns:Anisotropic-temperature-factorsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Atomic-temperature-factors_isotropicType">
+		<xs:sequence>
+			<xs:element name="Isotropic-temperature-factors" type="tns:Isotropic-temperature-factorsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Auth-listType">
+		<xs:sequence>
+			<xs:element name="Auth-list_names" type="tns:Auth-list_namesType"/>
+			<xs:element name="Auth-list_affil" type="tns:Auth-list_affilType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Auth-list_affilType">
+		<xs:sequence>
+			<xs:element name="Affil" type="tns:AffilType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Auth-list_namesType">
+		<xs:choice>
+			<xs:element name="Auth-list_names_std" type="tns:Auth-list_names_stdType"/>
+			<xs:element name="Auth-list_names_ml" type="tns:Auth-list_names_mlType"/>
+			<xs:element name="Auth-list_names_str" type="tns:Auth-list_names_strType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Auth-list_names_mlType">
+		<xs:sequence>
+			<xs:element ref="tns:Auth-list_names_ml_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Auth-list_names_ml_E" type="xs:string"/>
+	<xs:complexType name="Auth-list_names_stdType">
+		<xs:sequence>
+			<xs:element name="Author" type="tns:AuthorType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Auth-list_names_strType">
+		<xs:sequence>
+			<xs:element ref="tns:Auth-list_names_str_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Auth-list_names_str_E" type="xs:string"/>
+	<xs:complexType name="AuthorType">
+		<xs:sequence>
+			<xs:element name="Author_name" type="tns:Author_nameType"/>
+			<xs:element name="Author_level" type="tns:Author_levelType" minOccurs="0"/>
+			<xs:element name="Author_role" type="tns:Author_roleType" minOccurs="0"/>
+			<xs:element name="Author_affil" type="tns:Author_affilType" minOccurs="0"/>
+			<xs:element name="Author_is-corr" type="tns:Author_is-corrType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Author_affilType">
+		<xs:sequence>
+			<xs:element name="Affil" type="tns:AffilType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Author_is-corrType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Author_levelType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="primary"/>
+					<xs:enumeration value="secondary"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Author_nameType">
+		<xs:sequence>
+			<xs:element name="Person-id" type="tns:Person-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Author_roleType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="compiler"/>
+					<xs:enumeration value="editor"/>
+					<xs:enumeration value="patent-assignee"/>
+					<xs:enumeration value="translator"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="BaseURLType">
+		<xs:sequence>
+			<xs:element ref="tns:BaseURL_urlId" minOccurs="0"/>
+			<xs:element ref="tns:BaseURL_resourceName" minOccurs="0"/>
+			<xs:element ref="tns:BaseURL_resourceId" minOccurs="0"/>
+			<xs:element ref="tns:BaseURL_baseURL"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="BaseURL_baseURL" type="xs:string"/>
+	<xs:element name="BaseURL_resourceId" type="xs:string"/>
+	<xs:element name="BaseURL_resourceName" type="xs:string"/>
+	<xs:element name="BaseURL_urlId" type="xs:string"/>
+	<xs:complexType name="BinomialOrgNameType">
+		<xs:sequence>
+			<xs:element ref="tns:BinomialOrgName_genus"/>
+			<xs:element ref="tns:BinomialOrgName_species" minOccurs="0"/>
+			<xs:element ref="tns:BinomialOrgName_subspecies" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="BinomialOrgName_genus" type="xs:string"/>
+	<xs:element name="BinomialOrgName_species" type="xs:string"/>
+	<xs:element name="BinomialOrgName_subspecies" type="xs:string"/>
+	<xs:complexType name="BioSourceType">
+		<xs:sequence>
+			<xs:element name="BioSource_genome" type="tns:BioSource_genomeType" minOccurs="0"/>
+			<xs:element name="BioSource_origin" type="tns:BioSource_originType" minOccurs="0"/>
+			<xs:element name="BioSource_org" type="tns:BioSource_orgType"/>
+			<xs:element name="BioSource_subtype" type="tns:BioSource_subtypeType" minOccurs="0"/>
+			<xs:element ref="tns:BioSource_is-focus" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="BioSource_genomeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unknown"/>
+							<xs:enumeration value="genomic"/>
+							<xs:enumeration value="chloroplast"/>
+							<xs:enumeration value="chromoplast"/>
+							<xs:enumeration value="kinetoplast"/>
+							<xs:enumeration value="mitochondrion"/>
+							<xs:enumeration value="plastid"/>
+							<xs:enumeration value="macronuclear"/>
+							<xs:enumeration value="extrachrom"/>
+							<xs:enumeration value="plasmid"/>
+							<xs:enumeration value="transposon"/>
+							<xs:enumeration value="insertion-seq"/>
+							<xs:enumeration value="cyanelle"/>
+							<xs:enumeration value="proviral"/>
+							<xs:enumeration value="virion"/>
+							<xs:enumeration value="nucleomorph"/>
+							<xs:enumeration value="apicoplast"/>
+							<xs:enumeration value="leucoplast"/>
+							<xs:enumeration value="proplastid"/>
+							<xs:enumeration value="endogenous-virus"/>
+							<xs:enumeration value="hydrogenosome"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="BioSource_is-focus">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="BioSource_orgType">
+		<xs:sequence>
+			<xs:element name="Org-ref" type="tns:Org-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="BioSource_originType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unknown"/>
+							<xs:enumeration value="natural"/>
+							<xs:enumeration value="natmut"/>
+							<xs:enumeration value="mut"/>
+							<xs:enumeration value="artificial"/>
+							<xs:enumeration value="synthetic"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="BioSource_subtypeType">
+		<xs:sequence>
+			<xs:element name="SubSource" type="tns:SubSourceType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="BioTreeContainer">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="tns:BioTreeContainer_treetype" minOccurs="0"/>
+				<xs:element name="BioTreeContainer_fdict" type="tns:BioTreeContainer_fdictType"/>
+				<xs:element name="BioTreeContainer_nodes" type="tns:BioTreeContainer_nodesType"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="BioTreeContainer_fdictType">
+		<xs:sequence>
+			<xs:element name="FeatureDictSet" type="tns:FeatureDictSetType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="BioTreeContainer_nodesType">
+		<xs:sequence>
+			<xs:element name="NodeSet" type="tns:NodeSetType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="BioTreeContainer_treetype" type="xs:string"/>
+	<xs:complexType name="Biomol-descrType">
+		<xs:choice>
+			<xs:element ref="tns:Biomol-descr_name"/>
+			<xs:element ref="tns:Biomol-descr_pdb-class"/>
+			<xs:element ref="tns:Biomol-descr_pdb-source"/>
+			<xs:element ref="tns:Biomol-descr_pdb-comment"/>
+			<xs:element ref="tns:Biomol-descr_other-comment"/>
+			<xs:element name="Biomol-descr_organism" type="tns:Biomol-descr_organismType"/>
+			<xs:element name="Biomol-descr_attribution" type="tns:Biomol-descr_attributionType"/>
+			<xs:element name="Biomol-descr_assembly-type" type="tns:Biomol-descr_assembly-typeType"/>
+			<xs:element name="Biomol-descr_molecule-type" type="tns:Biomol-descr_molecule-typeType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Biomol-descr_assembly-typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="physiological-form"/>
+							<xs:enumeration value="crystallographic-cell"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Biomol-descr_attributionType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biomol-descr_molecule-typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="dna"/>
+							<xs:enumeration value="rna"/>
+							<xs:enumeration value="protein"/>
+							<xs:enumeration value="other-biopolymer"/>
+							<xs:enumeration value="solvent"/>
+							<xs:enumeration value="other-nonpolymer"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="Biomol-descr_name" type="xs:string"/>
+	<xs:complexType name="Biomol-descr_organismType">
+		<xs:sequence>
+			<xs:element name="BioSource" type="tns:BioSourceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Biomol-descr_other-comment" type="xs:string"/>
+	<xs:element name="Biomol-descr_pdb-class" type="xs:string"/>
+	<xs:element name="Biomol-descr_pdb-comment" type="xs:string"/>
+	<xs:element name="Biomol-descr_pdb-source" type="xs:string"/>
+	<xs:complexType name="BioseqType">
+		<xs:sequence>
+			<xs:element name="Bioseq_id" type="tns:Bioseq_idType"/>
+			<xs:element name="Bioseq_descr" type="tns:Bioseq_descrType" minOccurs="0"/>
+			<xs:element name="Bioseq_inst" type="tns:Bioseq_instType"/>
+			<xs:element name="Bioseq_annot" type="tns:Bioseq_annotType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bioseq-setType">
+		<xs:sequence>
+			<xs:element name="Bioseq-set_id" type="tns:Bioseq-set_idType" minOccurs="0"/>
+			<xs:element name="Bioseq-set_coll" type="tns:Bioseq-set_collType" minOccurs="0"/>
+			<xs:element ref="tns:Bioseq-set_level" minOccurs="0"/>
+			<xs:element name="Bioseq-set_class" type="tns:Bioseq-set_classType" minOccurs="0"/>
+			<xs:element ref="tns:Bioseq-set_release" minOccurs="0"/>
+			<xs:element name="Bioseq-set_date" type="tns:Bioseq-set_dateType" minOccurs="0"/>
+			<xs:element name="Bioseq-set_descr" type="tns:Bioseq-set_descrType" minOccurs="0"/>
+			<xs:element name="Bioseq-set_seq-set" type="tns:Bioseq-set_seq-setType"/>
+			<xs:element name="Bioseq-set_annot" type="tns:Bioseq-set_annotType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bioseq-set_annotType">
+		<xs:sequence>
+			<xs:element name="Seq-annot" type="tns:Seq-annotType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bioseq-set_classType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="not-set"/>
+					<xs:enumeration value="nuc-prot"/>
+					<xs:enumeration value="segset"/>
+					<xs:enumeration value="conset"/>
+					<xs:enumeration value="parts"/>
+					<xs:enumeration value="gibb"/>
+					<xs:enumeration value="gi"/>
+					<xs:enumeration value="genbank"/>
+					<xs:enumeration value="pir"/>
+					<xs:enumeration value="pub-set"/>
+					<xs:enumeration value="equiv"/>
+					<xs:enumeration value="swissprot"/>
+					<xs:enumeration value="pdb-entry"/>
+					<xs:enumeration value="mut-set"/>
+					<xs:enumeration value="pop-set"/>
+					<xs:enumeration value="phy-set"/>
+					<xs:enumeration value="eco-set"/>
+					<xs:enumeration value="gen-prod-set"/>
+					<xs:enumeration value="wgs-set"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Bioseq-set_collType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bioseq-set_dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bioseq-set_descrType">
+		<xs:sequence>
+			<xs:element name="Seq-descr" type="tns:Seq-descrType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bioseq-set_idType">
+		<xs:sequence>
+			<xs:element name="Object-id" type="tns:Object-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Bioseq-set_level" type="xs:string"/>
+	<xs:element name="Bioseq-set_release" type="xs:string"/>
+	<xs:complexType name="Bioseq-set_seq-setType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bioseq_annotType">
+		<xs:sequence>
+			<xs:element name="Seq-annot" type="tns:Seq-annotType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bioseq_descrType">
+		<xs:sequence>
+			<xs:element name="Seq-descr" type="tns:Seq-descrType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bioseq_idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bioseq_instType">
+		<xs:sequence>
+			<xs:element name="Seq-inst" type="tns:Seq-instType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="BiostrucType">
+		<xs:sequence>
+			<xs:element name="Biostruc_id" type="tns:Biostruc_idType"/>
+			<xs:element name="Biostruc_descr" type="tns:Biostruc_descrType" minOccurs="0"/>
+			<xs:element name="Biostruc_chemical-graph" type="tns:Biostruc_chemical-graphType"/>
+			<xs:element name="Biostruc_features" type="tns:Biostruc_featuresType" minOccurs="0"/>
+			<xs:element name="Biostruc_model" type="tns:Biostruc_modelType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-alignType">
+		<xs:sequence>
+			<xs:element name="Biostruc-align_master" type="tns:Biostruc-align_masterType"/>
+			<xs:element name="Biostruc-align_slaves" type="tns:Biostruc-align_slavesType"/>
+			<xs:element name="Biostruc-align_alignments" type="tns:Biostruc-align_alignmentsType"/>
+			<xs:element name="Biostruc-align_sequences" type="tns:Biostruc-align_sequencesType"/>
+			<xs:element name="Biostruc-align_seqalign" type="tns:Biostruc-align_seqalignType"/>
+			<xs:element name="Biostruc-align_style-dictionary" type="tns:Biostruc-align_style-dictionaryType" minOccurs="0"/>
+			<xs:element name="Biostruc-align_user-annotations" type="tns:Biostruc-align_user-annotationsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-align-seqType">
+		<xs:sequence>
+			<xs:element name="Biostruc-align-seq_sequences" type="tns:Biostruc-align-seq_sequencesType"/>
+			<xs:element name="Biostruc-align-seq_seqalign" type="tns:Biostruc-align-seq_seqalignType"/>
+			<xs:element name="Biostruc-align-seq_style-dictionary" type="tns:Biostruc-align-seq_style-dictionaryType" minOccurs="0"/>
+			<xs:element name="Biostruc-align-seq_user-annotations" type="tns:Biostruc-align-seq_user-annotationsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-align-seq_seqalignType">
+		<xs:sequence>
+			<xs:element name="Seq-annot" type="tns:Seq-annotType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-align-seq_sequencesType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-align-seq_style-dictionaryType">
+		<xs:sequence>
+			<xs:element name="Cn3d-style-dictionary" type="tns:Cn3d-style-dictionaryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-align-seq_user-annotationsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-user-annotations" type="tns:Cn3d-user-annotationsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-align_alignmentsType">
+		<xs:sequence>
+			<xs:element name="Biostruc-annot-set" type="tns:Biostruc-annot-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-align_masterType">
+		<xs:sequence>
+			<xs:element name="Biostruc" type="tns:BiostrucType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-align_seqalignType">
+		<xs:sequence>
+			<xs:element name="Seq-annot" type="tns:Seq-annotType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-align_sequencesType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-align_slavesType">
+		<xs:sequence>
+			<xs:element name="Biostruc" type="tns:BiostrucType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-align_style-dictionaryType">
+		<xs:sequence>
+			<xs:element name="Cn3d-style-dictionary" type="tns:Cn3d-style-dictionaryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-align_user-annotationsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-user-annotations" type="tns:Cn3d-user-annotationsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-annot-setType">
+		<xs:sequence>
+			<xs:element name="Biostruc-annot-set_id" type="tns:Biostruc-annot-set_idType" minOccurs="0"/>
+			<xs:element name="Biostruc-annot-set_descr" type="tns:Biostruc-annot-set_descrType" minOccurs="0"/>
+			<xs:element name="Biostruc-annot-set_features" type="tns:Biostruc-annot-set_featuresType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-annot-set_descrType">
+		<xs:sequence>
+			<xs:element name="Biostruc-descr" type="tns:Biostruc-descrType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-annot-set_featuresType">
+		<xs:sequence>
+			<xs:element name="Biostruc-feature-set" type="tns:Biostruc-feature-setType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-annot-set_idType">
+		<xs:sequence>
+			<xs:element name="Biostruc-id" type="tns:Biostruc-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-descrType">
+		<xs:choice>
+			<xs:element ref="tns:Biostruc-descr_name"/>
+			<xs:element ref="tns:Biostruc-descr_pdb-comment"/>
+			<xs:element ref="tns:Biostruc-descr_other-comment"/>
+			<xs:element name="Biostruc-descr_history" type="tns:Biostruc-descr_historyType"/>
+			<xs:element name="Biostruc-descr_attribution" type="tns:Biostruc-descr_attributionType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-descr_attributionType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-descr_historyType">
+		<xs:sequence>
+			<xs:element name="Biostruc-history" type="tns:Biostruc-historyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Biostruc-descr_name" type="xs:string"/>
+	<xs:element name="Biostruc-descr_other-comment" type="xs:string"/>
+	<xs:element name="Biostruc-descr_pdb-comment" type="xs:string"/>
+	<xs:complexType name="Biostruc-featureType">
+		<xs:sequence>
+			<xs:element name="Biostruc-feature_id" type="tns:Biostruc-feature_idType" minOccurs="0"/>
+			<xs:element ref="tns:Biostruc-feature_name" minOccurs="0"/>
+			<xs:element name="Biostruc-feature_type" type="tns:Biostruc-feature_typeType" minOccurs="0"/>
+			<xs:element name="Biostruc-feature_property" type="tns:Biostruc-feature_propertyType" minOccurs="0"/>
+			<xs:element name="Biostruc-feature_location" type="tns:Biostruc-feature_locationType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Biostruc-feature-id" type="xs:string"/>
+	<xs:complexType name="Biostruc-feature-setType">
+		<xs:sequence>
+			<xs:element name="Biostruc-feature-set_id" type="tns:Biostruc-feature-set_idType"/>
+			<xs:element name="Biostruc-feature-set_descr" type="tns:Biostruc-feature-set_descrType" minOccurs="0"/>
+			<xs:element name="Biostruc-feature-set_features" type="tns:Biostruc-feature-set_featuresType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature-set-descrType">
+		<xs:choice>
+			<xs:element ref="tns:Biostruc-feature-set-descr_name"/>
+			<xs:element ref="tns:Biostruc-feature-set-descr_pdb-comment"/>
+			<xs:element ref="tns:Biostruc-feature-set-descr_other-comment"/>
+			<xs:element name="Biostruc-feature-set-descr_attribution" type="tns:Biostruc-feature-set-descr_attributionType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature-set-descr_attributionType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Biostruc-feature-set-descr_name" type="xs:string"/>
+	<xs:element name="Biostruc-feature-set-descr_other-comment" type="xs:string"/>
+	<xs:element name="Biostruc-feature-set-descr_pdb-comment" type="xs:string"/>
+	<xs:element name="Biostruc-feature-set-id" type="xs:string"/>
+	<xs:complexType name="Biostruc-feature-set_descrType">
+		<xs:sequence>
+			<xs:element name="Biostruc-feature-set-descr" type="tns:Biostruc-feature-set-descrType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature-set_featuresType">
+		<xs:sequence>
+			<xs:element name="Biostruc-feature" type="tns:Biostruc-featureType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature-set_idType">
+		<xs:sequence>
+			<xs:element ref="tns:Biostruc-feature-set-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature_idType">
+		<xs:sequence>
+			<xs:element ref="tns:Biostruc-feature-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature_locationType">
+		<xs:choice>
+			<xs:element name="Biostruc-feature_location_subgraph" type="tns:Biostruc-feature_location_subgraphType"/>
+			<xs:element name="Biostruc-feature_location_region" type="tns:Biostruc-feature_location_regionType"/>
+			<xs:element name="Biostruc-feature_location_alignment" type="tns:Biostruc-feature_location_alignmentType"/>
+			<xs:element name="Biostruc-feature_location_similarity" type="tns:Biostruc-feature_location_similarityType"/>
+			<xs:element name="Biostruc-feature_location_indirect" type="tns:Biostruc-feature_location_indirectType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature_location_alignmentType">
+		<xs:sequence>
+			<xs:element name="Chem-graph-alignment" type="tns:Chem-graph-alignmentType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature_location_indirectType">
+		<xs:sequence>
+			<xs:element name="Other-feature" type="tns:Other-featureType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature_location_regionType">
+		<xs:sequence>
+			<xs:element name="Region-pntrs" type="tns:Region-pntrsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature_location_similarityType">
+		<xs:sequence>
+			<xs:element name="Region-similarity" type="tns:Region-similarityType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature_location_subgraphType">
+		<xs:sequence>
+			<xs:element name="Chem-graph-pntrs" type="tns:Chem-graph-pntrsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Biostruc-feature_name" type="xs:string"/>
+	<xs:complexType name="Biostruc-feature_propertyType">
+		<xs:choice>
+			<xs:element name="Biostruc-feature_property_color" type="tns:Biostruc-feature_property_colorType"/>
+			<xs:element name="Biostruc-feature_property_render" type="tns:Biostruc-feature_property_renderType"/>
+			<xs:element name="Biostruc-feature_property_transform" type="tns:Biostruc-feature_property_transformType"/>
+			<xs:element name="Biostruc-feature_property_camera" type="tns:Biostruc-feature_property_cameraType"/>
+			<xs:element name="Biostruc-feature_property_script" type="tns:Biostruc-feature_property_scriptType"/>
+			<xs:element name="Biostruc-feature_property_user" type="tns:Biostruc-feature_property_userType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature_property_cameraType">
+		<xs:sequence>
+			<xs:element name="Camera" type="tns:CameraType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature_property_colorType">
+		<xs:sequence>
+			<xs:element name="Color-prop" type="tns:Color-propType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature_property_renderType">
+		<xs:sequence>
+			<xs:element name="Render-prop" type="tns:Render-propType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature_property_scriptType">
+		<xs:sequence>
+			<xs:element name="Biostruc-script" type="tns:Biostruc-scriptType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature_property_transformType">
+		<xs:sequence>
+			<xs:element name="Transform" type="tns:TransformType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature_property_userType">
+		<xs:sequence>
+			<xs:element name="User-object" type="tns:User-objectType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-feature_typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="helix"/>
+							<xs:enumeration value="strand"/>
+							<xs:enumeration value="sheet"/>
+							<xs:enumeration value="turn"/>
+							<xs:enumeration value="site"/>
+							<xs:enumeration value="footnote"/>
+							<xs:enumeration value="comment"/>
+							<xs:enumeration value="subgraph"/>
+							<xs:enumeration value="region"/>
+							<xs:enumeration value="core"/>
+							<xs:enumeration value="supercore"/>
+							<xs:enumeration value="color"/>
+							<xs:enumeration value="render"/>
+							<xs:enumeration value="label"/>
+							<xs:enumeration value="transform"/>
+							<xs:enumeration value="camera"/>
+							<xs:enumeration value="script"/>
+							<xs:enumeration value="alignment"/>
+							<xs:enumeration value="similarity"/>
+							<xs:enumeration value="multalign"/>
+							<xs:enumeration value="indirect"/>
+							<xs:enumeration value="cn3dstate"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-graphType">
+		<xs:sequence>
+			<xs:element name="Biostruc-graph_descr" type="tns:Biostruc-graph_descrType" minOccurs="0"/>
+			<xs:element name="Biostruc-graph_molecule-graphs" type="tns:Biostruc-graph_molecule-graphsType"/>
+			<xs:element name="Biostruc-graph_inter-molecule-bonds" type="tns:Biostruc-graph_inter-molecule-bondsType" minOccurs="0"/>
+			<xs:element name="Biostruc-graph_residue-graphs" type="tns:Biostruc-graph_residue-graphsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-graph-pntrType">
+		<xs:sequence>
+			<xs:element name="Biostruc-graph-pntr_biostruc-id" type="tns:Biostruc-graph-pntr_biostruc-idType"/>
+			<xs:element name="Biostruc-graph-pntr_residue-graph-id" type="tns:Biostruc-graph-pntr_residue-graph-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-graph-pntr_biostruc-idType">
+		<xs:sequence>
+			<xs:element name="Biostruc-id" type="tns:Biostruc-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-graph-pntr_residue-graph-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Residue-graph-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-graph_descrType">
+		<xs:sequence>
+			<xs:element name="Biomol-descr" type="tns:Biomol-descrType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-graph_inter-molecule-bondsType">
+		<xs:sequence>
+			<xs:element name="Inter-residue-bond" type="tns:Inter-residue-bondType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-graph_molecule-graphsType">
+		<xs:sequence>
+			<xs:element name="Molecule-graph" type="tns:Molecule-graphType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-graph_residue-graphsType">
+		<xs:sequence>
+			<xs:element name="Residue-graph" type="tns:Residue-graphType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-historyType">
+		<xs:sequence>
+			<xs:element name="Biostruc-history_replaces" type="tns:Biostruc-history_replacesType" minOccurs="0"/>
+			<xs:element name="Biostruc-history_replaced-by" type="tns:Biostruc-history_replaced-byType" minOccurs="0"/>
+			<xs:element name="Biostruc-history_data-source" type="tns:Biostruc-history_data-sourceType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-history_data-sourceType">
+		<xs:sequence>
+			<xs:element name="Biostruc-source" type="tns:Biostruc-sourceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-history_replaced-byType">
+		<xs:sequence>
+			<xs:element name="Biostruc-replace" type="tns:Biostruc-replaceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-history_replacesType">
+		<xs:sequence>
+			<xs:element name="Biostruc-replace" type="tns:Biostruc-replaceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-idType">
+		<xs:choice>
+			<xs:element name="Biostruc-id_mmdb-id" type="tns:Biostruc-id_mmdb-idType"/>
+			<xs:element name="Biostruc-id_other-database" type="tns:Biostruc-id_other-databaseType"/>
+			<xs:element name="Biostruc-id_local-id" type="tns:Biostruc-id_local-idType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-id_local-idType">
+		<xs:sequence>
+			<xs:element name="Object-id" type="tns:Object-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-id_mmdb-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Mmdb-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-id_other-databaseType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-modelType">
+		<xs:sequence>
+			<xs:element name="Biostruc-model_id" type="tns:Biostruc-model_idType"/>
+			<xs:element name="Biostruc-model_type" type="tns:Biostruc-model_typeType"/>
+			<xs:element name="Biostruc-model_descr" type="tns:Biostruc-model_descrType" minOccurs="0"/>
+			<xs:element name="Biostruc-model_model-space" type="tns:Biostruc-model_model-spaceType" minOccurs="0"/>
+			<xs:element name="Biostruc-model_model-coordinates" type="tns:Biostruc-model_model-coordinatesType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-model_descrType">
+		<xs:sequence>
+			<xs:element name="Model-descr" type="tns:Model-descrType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-model_idType">
+		<xs:sequence>
+			<xs:element ref="tns:Model-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-model_model-coordinatesType">
+		<xs:sequence>
+			<xs:element name="Model-coordinate-set" type="tns:Model-coordinate-setType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-model_model-spaceType">
+		<xs:sequence>
+			<xs:element name="Model-space" type="tns:Model-spaceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-model_typeType">
+		<xs:sequence>
+			<xs:element name="Model-type" type="tns:Model-typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-replaceType">
+		<xs:sequence>
+			<xs:element name="Biostruc-replace_id" type="tns:Biostruc-replace_idType"/>
+			<xs:element name="Biostruc-replace_date" type="tns:Biostruc-replace_dateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-replace_dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-replace_idType">
+		<xs:sequence>
+			<xs:element name="Biostruc-id" type="tns:Biostruc-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Biostruc-residue-graph-set">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Biostruc-residue-graph-set_id" type="tns:Biostruc-residue-graph-set_idType" minOccurs="0"/>
+				<xs:element name="Biostruc-residue-graph-set_descr" type="tns:Biostruc-residue-graph-set_descrType" minOccurs="0"/>
+				<xs:element name="Biostruc-residue-graph-set_residue-graphs" type="tns:Biostruc-residue-graph-set_residue-graphsType"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Biostruc-residue-graph-set-pntrType">
+		<xs:sequence>
+			<xs:element name="Biostruc-residue-graph-set-pntr_biostruc-residue-graph-set-id" type="tns:Biostruc-residue-graph-set-pntr_biostruc-residue-graph-set-idType"/>
+			<xs:element name="Biostruc-residue-graph-set-pntr_residue-graph-id" type="tns:Biostruc-residue-graph-set-pntr_residue-graph-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-residue-graph-set-pntr_biostruc-residue-graph-set-idType">
+		<xs:sequence>
+			<xs:element name="Biostruc-id" type="tns:Biostruc-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-residue-graph-set-pntr_residue-graph-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Residue-graph-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-residue-graph-set_descrType">
+		<xs:sequence>
+			<xs:element name="Biomol-descr" type="tns:Biomol-descrType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-residue-graph-set_idType">
+		<xs:sequence>
+			<xs:element name="Biostruc-id" type="tns:Biostruc-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-residue-graph-set_residue-graphsType">
+		<xs:sequence>
+			<xs:element name="Residue-graph" type="tns:Residue-graphType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-scriptType">
+		<xs:sequence>
+			<xs:element name="Biostruc-script-step" type="tns:Biostruc-script-stepType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-script-stepType">
+		<xs:sequence>
+			<xs:element name="Biostruc-script-step_step-id" type="tns:Biostruc-script-step_step-idType"/>
+			<xs:element ref="tns:Biostruc-script-step_step-name" minOccurs="0"/>
+			<xs:element name="Biostruc-script-step_feature-do" type="tns:Biostruc-script-step_feature-doType" minOccurs="0"/>
+			<xs:element name="Biostruc-script-step_camera-move" type="tns:Biostruc-script-step_camera-moveType" minOccurs="0"/>
+			<xs:element ref="tns:Biostruc-script-step_pause" minOccurs="0"/>
+			<xs:element name="Biostruc-script-step_waitevent" type="tns:Biostruc-script-step_waiteventType"/>
+			<xs:element ref="tns:Biostruc-script-step_extra"/>
+			<xs:element name="Biostruc-script-step_jump" type="tns:Biostruc-script-step_jumpType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-script-step_camera-moveType">
+		<xs:sequence>
+			<xs:element name="Transform" type="tns:TransformType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Biostruc-script-step_extra" type="xs:string"/>
+	<xs:complexType name="Biostruc-script-step_feature-doType">
+		<xs:sequence>
+			<xs:element name="Other-feature" type="tns:Other-featureType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-script-step_jumpType">
+		<xs:sequence>
+			<xs:element ref="tns:Step-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Biostruc-script-step_pause" type="xs:string"/>
+	<xs:complexType name="Biostruc-script-step_step-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Step-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Biostruc-script-step_step-name" type="xs:string"/>
+	<xs:complexType name="Biostruc-script-step_waiteventType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seqType">
+		<xs:sequence>
+			<xs:element name="Biostruc-seq_structure" type="tns:Biostruc-seq_structureType"/>
+			<xs:element name="Biostruc-seq_sequences" type="tns:Biostruc-seq_sequencesType"/>
+			<xs:element name="Biostruc-seq_style-dictionary" type="tns:Biostruc-seq_style-dictionaryType" minOccurs="0"/>
+			<xs:element name="Biostruc-seq_user-annotations" type="tns:Biostruc-seq_user-annotationsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seq_sequencesType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seq_structureType">
+		<xs:sequence>
+			<xs:element name="Biostruc" type="tns:BiostrucType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seq_style-dictionaryType">
+		<xs:sequence>
+			<xs:element name="Cn3d-style-dictionary" type="tns:Cn3d-style-dictionaryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seq_user-annotationsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-user-annotations" type="tns:Cn3d-user-annotationsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seqsType">
+		<xs:sequence>
+			<xs:element name="Biostruc-seqs_structure" type="tns:Biostruc-seqs_structureType"/>
+			<xs:element name="Biostruc-seqs_sequences" type="tns:Biostruc-seqs_sequencesType"/>
+			<xs:element name="Biostruc-seqs_seqalign" type="tns:Biostruc-seqs_seqalignType"/>
+			<xs:element name="Biostruc-seqs_style-dictionary" type="tns:Biostruc-seqs_style-dictionaryType" minOccurs="0"/>
+			<xs:element name="Biostruc-seqs_user-annotations" type="tns:Biostruc-seqs_user-annotationsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seqs-aligns-cddType">
+		<xs:sequence>
+			<xs:element name="Biostruc-seqs-aligns-cdd_seq-align-data" type="tns:Biostruc-seqs-aligns-cdd_seq-align-dataType"/>
+			<xs:element name="Biostruc-seqs-aligns-cdd_structures" type="tns:Biostruc-seqs-aligns-cdd_structuresType" minOccurs="0"/>
+			<xs:element name="Biostruc-seqs-aligns-cdd_structure-type" type="tns:Biostruc-seqs-aligns-cdd_structure-typeType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seqs-aligns-cdd_seq-align-dataType">
+		<xs:choice>
+			<xs:element name="Biostruc-seqs-aligns-cdd_seq-align-data_bundle" type="tns:Biostruc-seqs-aligns-cdd_seq-align-data_bundleType"/>
+			<xs:element name="Biostruc-seqs-aligns-cdd_seq-align-data_cdd" type="tns:Biostruc-seqs-aligns-cdd_seq-align-data_cddType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seqs-aligns-cdd_seq-align-data_bundleType">
+		<xs:sequence>
+			<xs:element name="Bundle-seqs-aligns" type="tns:Bundle-seqs-alignsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seqs-aligns-cdd_seq-align-data_cddType">
+		<xs:sequence>
+			<xs:element name="Cdd" type="tns:CddType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seqs-aligns-cdd_structure-typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="ncbi-backbone"/>
+					<xs:enumeration value="ncbi-all-atom"/>
+					<xs:enumeration value="pdb-model"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seqs-aligns-cdd_structuresType">
+		<xs:sequence>
+			<xs:element name="Biostruc" type="tns:BiostrucType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seqs_seqalignType">
+		<xs:sequence>
+			<xs:element name="Seq-annot" type="tns:Seq-annotType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seqs_sequencesType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seqs_structureType">
+		<xs:sequence>
+			<xs:element name="Biostruc" type="tns:BiostrucType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seqs_style-dictionaryType">
+		<xs:sequence>
+			<xs:element name="Cn3d-style-dictionary" type="tns:Cn3d-style-dictionaryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-seqs_user-annotationsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-user-annotations" type="tns:Cn3d-user-annotationsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Biostruc-set">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Biostruc-set_id" type="tns:Biostruc-set_idType" minOccurs="0"/>
+				<xs:element name="Biostruc-set_descr" type="tns:Biostruc-set_descrType" minOccurs="0"/>
+				<xs:element name="Biostruc-set_biostrucs" type="tns:Biostruc-set_biostrucsType"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Biostruc-set_biostrucsType">
+		<xs:sequence>
+			<xs:element name="Biostruc" type="tns:BiostrucType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-set_descrType">
+		<xs:sequence>
+			<xs:element name="Biostruc-descr" type="tns:Biostruc-descrType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-set_idType">
+		<xs:sequence>
+			<xs:element name="Biostruc-id" type="tns:Biostruc-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-sourceType">
+		<xs:sequence>
+			<xs:element ref="tns:Biostruc-source_name-of-database"/>
+			<xs:element name="Biostruc-source_version-of-database" type="tns:Biostruc-source_version-of-databaseType" minOccurs="0"/>
+			<xs:element name="Biostruc-source_database-entry-id" type="tns:Biostruc-source_database-entry-idType"/>
+			<xs:element name="Biostruc-source_database-entry-date" type="tns:Biostruc-source_database-entry-dateType"/>
+			<xs:element name="Biostruc-source_database-entry-history" type="tns:Biostruc-source_database-entry-historyType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-source_database-entry-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc-source_database-entry-historyType">
+		<xs:sequence>
+			<xs:element ref="tns:Biostruc-source_database-entry-history_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Biostruc-source_database-entry-history_E" type="xs:string"/>
+	<xs:complexType name="Biostruc-source_database-entry-idType">
+		<xs:sequence>
+			<xs:element name="Biostruc-id" type="tns:Biostruc-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Biostruc-source_name-of-database" type="xs:string"/>
+	<xs:complexType name="Biostruc-source_version-of-databaseType">
+		<xs:choice>
+			<xs:element name="Biostruc-source_version-of-database_release-date" type="tns:Biostruc-source_version-of-database_release-dateType"/>
+			<xs:element ref="tns:Biostruc-source_version-of-database_release-code"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="Biostruc-source_version-of-database_release-code" type="xs:string"/>
+	<xs:complexType name="Biostruc-source_version-of-database_release-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc_chemical-graphType">
+		<xs:sequence>
+			<xs:element name="Biostruc-graph" type="tns:Biostruc-graphType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc_descrType">
+		<xs:sequence>
+			<xs:element name="Biostruc-descr" type="tns:Biostruc-descrType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc_featuresType">
+		<xs:sequence>
+			<xs:element name="Biostruc-feature-set" type="tns:Biostruc-feature-setType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc_idType">
+		<xs:sequence>
+			<xs:element name="Biostruc-id" type="tns:Biostruc-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Biostruc_modelType">
+		<xs:sequence>
+			<xs:element name="Biostruc-model" type="tns:Biostruc-modelType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast-def-lineType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast-def-line_title" minOccurs="0"/>
+			<xs:element name="Blast-def-line_seqid" type="tns:Blast-def-line_seqidType"/>
+			<xs:element ref="tns:Blast-def-line_taxid" minOccurs="0"/>
+			<xs:element name="Blast-def-line_memberships" type="tns:Blast-def-line_membershipsType" minOccurs="0"/>
+			<xs:element name="Blast-def-line_links" type="tns:Blast-def-line_linksType" minOccurs="0"/>
+			<xs:element name="Blast-def-line_other-info" type="tns:Blast-def-line_other-infoType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast-def-line-set">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Blast-def-line" type="tns:Blast-def-lineType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Blast-def-line_linksType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast-def-line_links_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast-def-line_links_E" type="xs:string"/>
+	<xs:complexType name="Blast-def-line_membershipsType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast-def-line_memberships_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast-def-line_memberships_E" type="xs:string"/>
+	<xs:complexType name="Blast-def-line_other-infoType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast-def-line_other-info_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast-def-line_other-info_E" type="xs:string"/>
+	<xs:complexType name="Blast-def-line_seqidType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast-def-line_taxid" type="xs:string"/>
+	<xs:element name="Blast-def-line_title" type="xs:string"/>
+	<xs:complexType name="Blast4-cutoffType">
+		<xs:choice>
+			<xs:element ref="tns:Blast4-cutoff_e-value"/>
+			<xs:element ref="tns:Blast4-cutoff_raw-score"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="Blast4-cutoff_e-value" type="xs:string"/>
+	<xs:element name="Blast4-cutoff_raw-score" type="xs:string"/>
+	<xs:complexType name="Blast4-databaseType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-database_name"/>
+			<xs:element name="Blast4-database_type" type="tns:Blast4-database_typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-database-infoType">
+		<xs:sequence>
+			<xs:element name="Blast4-database-info_database" type="tns:Blast4-database-info_databaseType"/>
+			<xs:element ref="tns:Blast4-database-info_description"/>
+			<xs:element ref="tns:Blast4-database-info_last-updated"/>
+			<xs:element ref="tns:Blast4-database-info_total-length"/>
+			<xs:element ref="tns:Blast4-database-info_num-sequences"/>
+			<xs:element name="Blast4-database-info_seqtech" type="tns:Blast4-database-info_seqtechType"/>
+			<xs:element ref="tns:Blast4-database-info_taxid"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-database-info_databaseType">
+		<xs:sequence>
+			<xs:element name="Blast4-database" type="tns:Blast4-databaseType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-database-info_description" type="xs:string"/>
+	<xs:element name="Blast4-database-info_last-updated" type="xs:string"/>
+	<xs:element name="Blast4-database-info_num-sequences" type="xs:string"/>
+	<xs:complexType name="Blast4-database-info_seqtechType">
+		<xs:sequence>
+			<xs:element name="Blast4-seqtech" type="tns:Blast4-seqtechType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-database-info_taxid" type="xs:string"/>
+	<xs:element name="Blast4-database-info_total-length" type="xs:string"/>
+	<xs:element name="Blast4-database_name" type="xs:string"/>
+	<xs:complexType name="Blast4-database_typeType">
+		<xs:sequence>
+			<xs:element name="Blast4-residue-type" type="tns:Blast4-residue-typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-errorType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-error_code"/>
+			<xs:element ref="tns:Blast4-error_message" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-error-code">
+		<xs:complexType>
+			<xs:simpleContent>
+				<xs:extension base="xs:string">
+					<xs:attribute name="value">
+						<xs:simpleType>
+							<xs:restriction base="xs:NMTOKEN">
+								<xs:enumeration value="conversion-warning"/>
+								<xs:enumeration value="internal-error"/>
+								<xs:enumeration value="not-implemented"/>
+								<xs:enumeration value="not-allowed"/>
+								<xs:enumeration value="bad-request"/>
+								<xs:enumeration value="bad-request-id"/>
+								<xs:enumeration value="search-pending"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+				</xs:extension>
+			</xs:simpleContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Blast4-error-flags">
+		<xs:complexType>
+			<xs:attribute name="value" use="required">
+				<xs:simpleType>
+					<xs:restriction base="xs:NMTOKEN">
+						<xs:enumeration value="warning"/>
+						<xs:enumeration value="error"/>
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:attribute>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Blast4-error_code" type="xs:string"/>
+	<xs:element name="Blast4-error_message" type="xs:string"/>
+	<xs:complexType name="Blast4-finish-params-replyType">
+		<xs:sequence>
+			<xs:element name="Blast4-parameters" type="tns:Blast4-parametersType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-finish-params-requestType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-finish-params-request_program"/>
+			<xs:element ref="tns:Blast4-finish-params-request_service"/>
+			<xs:element ref="tns:Blast4-finish-params-request_paramset" minOccurs="0"/>
+			<xs:element name="Blast4-finish-params-request_params" type="tns:Blast4-finish-params-request_paramsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-finish-params-request_paramsType">
+		<xs:sequence>
+			<xs:element name="Blast4-parameters" type="tns:Blast4-parametersType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-finish-params-request_paramset" type="xs:string"/>
+	<xs:element name="Blast4-finish-params-request_program" type="xs:string"/>
+	<xs:element name="Blast4-finish-params-request_service" type="xs:string"/>
+	<xs:complexType name="Blast4-frame-typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="notset"/>
+					<xs:enumeration value="plus1"/>
+					<xs:enumeration value="plus2"/>
+					<xs:enumeration value="plus3"/>
+					<xs:enumeration value="minus1"/>
+					<xs:enumeration value="minus2"/>
+					<xs:enumeration value="minus3"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-databases-replyType">
+		<xs:sequence>
+			<xs:element name="Blast4-database-info" type="tns:Blast4-database-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-matrices-replyType">
+		<xs:sequence>
+			<xs:element name="Blast4-matrix-id" type="tns:Blast4-matrix-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-parameters-replyType">
+		<xs:sequence>
+			<xs:element name="Blast4-parameter-info" type="tns:Blast4-parameter-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-paramsets-replyType">
+		<xs:sequence>
+			<xs:element name="Blast4-paramset-info" type="tns:Blast4-paramset-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-programs-replyType">
+		<xs:sequence>
+			<xs:element name="Blast4-program-info" type="tns:Blast4-program-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-queries-replyType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-queries-reply_queries" type="tns:Blast4-get-queries-reply_queriesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-queries-reply_queriesType">
+		<xs:sequence>
+			<xs:element name="Blast4-queries" type="tns:Blast4-queriesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-request-info-replyType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-request-info-reply_database" type="tns:Blast4-get-request-info-reply_databaseType"/>
+			<xs:element ref="tns:Blast4-get-request-info-reply_program"/>
+			<xs:element ref="tns:Blast4-get-request-info-reply_service"/>
+			<xs:element ref="tns:Blast4-get-request-info-reply_created-by"/>
+			<xs:element name="Blast4-get-request-info-reply_queries" type="tns:Blast4-get-request-info-reply_queriesType"/>
+			<xs:element name="Blast4-get-request-info-reply_algorithm-options" type="tns:Blast4-get-request-info-reply_algorithm-optionsType"/>
+			<xs:element name="Blast4-get-request-info-reply_program-options" type="tns:Blast4-get-request-info-reply_program-optionsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-request-info-reply_algorithm-optionsType">
+		<xs:sequence>
+			<xs:element name="Blast4-parameters" type="tns:Blast4-parametersType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-get-request-info-reply_created-by" type="xs:string"/>
+	<xs:complexType name="Blast4-get-request-info-reply_databaseType">
+		<xs:sequence>
+			<xs:element name="Blast4-database" type="tns:Blast4-databaseType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-get-request-info-reply_program" type="xs:string"/>
+	<xs:complexType name="Blast4-get-request-info-reply_program-optionsType">
+		<xs:sequence>
+			<xs:element name="Blast4-parameters" type="tns:Blast4-parametersType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-request-info-reply_queriesType">
+		<xs:sequence>
+			<xs:element name="Blast4-queries" type="tns:Blast4-queriesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-get-request-info-reply_service" type="xs:string"/>
+	<xs:complexType name="Blast4-get-request-info-requestType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-get-request-info-request_request-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-get-request-info-request_request-id" type="xs:string"/>
+	<xs:complexType name="Blast4-get-search-results-replyType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-search-results-reply_alignments" type="tns:Blast4-get-search-results-reply_alignmentsType" minOccurs="0"/>
+			<xs:element name="Blast4-get-search-results-reply_phi-alignments" type="tns:Blast4-get-search-results-reply_phi-alignmentsType" minOccurs="0"/>
+			<xs:element name="Blast4-get-search-results-reply_masks" type="tns:Blast4-get-search-results-reply_masksType" minOccurs="0"/>
+			<xs:element name="Blast4-get-search-results-reply_ka-blocks" type="tns:Blast4-get-search-results-reply_ka-blocksType" minOccurs="0"/>
+			<xs:element name="Blast4-get-search-results-reply_search-stats" type="tns:Blast4-get-search-results-reply_search-statsType" minOccurs="0"/>
+			<xs:element name="Blast4-get-search-results-reply_pssm" type="tns:Blast4-get-search-results-reply_pssmType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-search-results-reply_alignmentsType">
+		<xs:sequence>
+			<xs:element name="Seq-align-set" type="tns:Seq-align-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-search-results-reply_ka-blocksType">
+		<xs:sequence>
+			<xs:element name="Blast4-ka-block" type="tns:Blast4-ka-blockType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-search-results-reply_masksType">
+		<xs:sequence>
+			<xs:element name="Blast4-mask" type="tns:Blast4-maskType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-search-results-reply_phi-alignmentsType">
+		<xs:sequence>
+			<xs:element name="Blast4-phi-alignments" type="tns:Blast4-phi-alignmentsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-search-results-reply_pssmType">
+		<xs:sequence>
+			<xs:element name="PssmWithParameters" type="tns:PssmWithParametersType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-search-results-reply_search-statsType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-get-search-results-reply_search-stats_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-get-search-results-reply_search-stats_E" type="xs:string"/>
+	<xs:complexType name="Blast4-get-search-results-requestType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-get-search-results-request_request-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-get-search-results-request_request-id" type="xs:string"/>
+	<xs:complexType name="Blast4-get-seq-parts-replyType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-seq-parts-reply_bioseq" type="tns:Blast4-get-seq-parts-reply_bioseqType" minOccurs="0"/>
+			<xs:element name="Blast4-get-seq-parts-reply_ids" type="tns:Blast4-get-seq-parts-reply_idsType" minOccurs="0"/>
+			<xs:element ref="tns:Blast4-get-seq-parts-reply_length" minOccurs="0"/>
+			<xs:element name="Blast4-get-seq-parts-reply_data" type="tns:Blast4-get-seq-parts-reply_dataType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-seq-parts-reply_bioseqType">
+		<xs:sequence>
+			<xs:element name="Bioseq" type="tns:BioseqType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-seq-parts-reply_dataType">
+		<xs:sequence>
+			<xs:element name="Seq-data" type="tns:Seq-dataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-seq-parts-reply_idsType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-get-seq-parts-reply_length" type="xs:string"/>
+	<xs:complexType name="Blast4-get-seq-parts-requestType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-seq-parts-request_database" type="tns:Blast4-get-seq-parts-request_databaseType"/>
+			<xs:element name="Blast4-get-seq-parts-request_id" type="tns:Blast4-get-seq-parts-request_idType"/>
+			<xs:element name="Blast4-get-seq-parts-request_need-meta-data" type="tns:Blast4-get-seq-parts-request_need-meta-dataType"/>
+			<xs:element ref="tns:Blast4-get-seq-parts-request_start" minOccurs="0"/>
+			<xs:element ref="tns:Blast4-get-seq-parts-request_end" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-seq-parts-request_databaseType">
+		<xs:sequence>
+			<xs:element name="Blast4-database" type="tns:Blast4-databaseType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-get-seq-parts-request_end" type="xs:string"/>
+	<xs:complexType name="Blast4-get-seq-parts-request_idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-seq-parts-request_need-meta-dataType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Blast4-get-seq-parts-request_start" type="xs:string"/>
+	<xs:complexType name="Blast4-get-sequences-replyType">
+		<xs:sequence>
+			<xs:element name="Bioseq" type="tns:BioseqType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-sequences-requestType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-sequences-request_database" type="tns:Blast4-get-sequences-request_databaseType"/>
+			<xs:element name="Blast4-get-sequences-request_seq-ids" type="tns:Blast4-get-sequences-request_seq-idsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-sequences-request_databaseType">
+		<xs:sequence>
+			<xs:element name="Blast4-database" type="tns:Blast4-databaseType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-get-sequences-request_seq-idsType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-ka-blockType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-ka-block_lambda"/>
+			<xs:element ref="tns:Blast4-ka-block_k"/>
+			<xs:element ref="tns:Blast4-ka-block_h"/>
+			<xs:element name="Blast4-ka-block_gapped" type="tns:Blast4-ka-block_gappedType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-ka-block_gappedType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Blast4-ka-block_h" type="xs:string"/>
+	<xs:element name="Blast4-ka-block_k" type="xs:string"/>
+	<xs:element name="Blast4-ka-block_lambda" type="xs:string"/>
+	<xs:complexType name="Blast4-maskType">
+		<xs:sequence>
+			<xs:element name="Blast4-mask_locations" type="tns:Blast4-mask_locationsType"/>
+			<xs:element name="Blast4-mask_frame" type="tns:Blast4-mask_frameType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-mask_frameType">
+		<xs:sequence>
+			<xs:element name="Blast4-frame-type" type="tns:Blast4-frame-typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-mask_locationsType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-matrix-idType">
+		<xs:sequence>
+			<xs:element name="Blast4-matrix-id_residue-type" type="tns:Blast4-matrix-id_residue-typeType"/>
+			<xs:element ref="tns:Blast4-matrix-id_name"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-matrix-id_name" type="xs:string"/>
+	<xs:complexType name="Blast4-matrix-id_residue-typeType">
+		<xs:sequence>
+			<xs:element name="Blast4-residue-type" type="tns:Blast4-residue-typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-parameterType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-parameter_name"/>
+			<xs:element name="Blast4-parameter_value" type="tns:Blast4-parameter_valueType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-parameter-infoType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-parameter-info_name"/>
+			<xs:element ref="tns:Blast4-parameter-info_type"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-parameter-info_name" type="xs:string"/>
+	<xs:element name="Blast4-parameter-info_type" type="xs:string"/>
+	<xs:element name="Blast4-parameter_name" type="xs:string"/>
+	<xs:complexType name="Blast4-parameter_valueType">
+		<xs:sequence>
+			<xs:element name="Blast4-value" type="tns:Blast4-valueType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-parametersType">
+		<xs:sequence>
+			<xs:element name="Blast4-parameter" type="tns:Blast4-parameterType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-paramset-infoType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-paramset-info_program"/>
+			<xs:element ref="tns:Blast4-paramset-info_name"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-paramset-info_name" type="xs:string"/>
+	<xs:element name="Blast4-paramset-info_program" type="xs:string"/>
+	<xs:complexType name="Blast4-phi-alignmentsType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-phi-alignments_num-alignments"/>
+			<xs:element name="Blast4-phi-alignments_seq-locs" type="tns:Blast4-phi-alignments_seq-locsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-phi-alignments_num-alignments" type="xs:string"/>
+	<xs:complexType name="Blast4-phi-alignments_seq-locsType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-program-infoType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-program-info_program"/>
+			<xs:element name="Blast4-program-info_services" type="tns:Blast4-program-info_servicesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-program-info_program" type="xs:string"/>
+	<xs:complexType name="Blast4-program-info_servicesType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-program-info_services_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-program-info_services_E" type="xs:string"/>
+	<xs:complexType name="Blast4-queriesType">
+		<xs:choice>
+			<xs:element name="Blast4-queries_pssm" type="tns:Blast4-queries_pssmType"/>
+			<xs:element name="Blast4-queries_seq-loc-list" type="tns:Blast4-queries_seq-loc-listType"/>
+			<xs:element name="Blast4-queries_bioseq-set" type="tns:Blast4-queries_bioseq-setType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Blast4-queries_bioseq-setType">
+		<xs:sequence>
+			<xs:element name="Bioseq-set" type="tns:Bioseq-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-queries_pssmType">
+		<xs:sequence>
+			<xs:element name="PssmWithParameters" type="tns:PssmWithParametersType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-queries_seq-loc-listType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-queue-search-replyType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-queue-search-reply_request-id" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-queue-search-reply_request-id" type="xs:string"/>
+	<xs:complexType name="Blast4-queue-search-requestType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-queue-search-request_program"/>
+			<xs:element ref="tns:Blast4-queue-search-request_service"/>
+			<xs:element name="Blast4-queue-search-request_queries" type="tns:Blast4-queue-search-request_queriesType"/>
+			<xs:element name="Blast4-queue-search-request_subject" type="tns:Blast4-queue-search-request_subjectType"/>
+			<xs:element ref="tns:Blast4-queue-search-request_paramset" minOccurs="0"/>
+			<xs:element name="Blast4-queue-search-request_algorithm-options" type="tns:Blast4-queue-search-request_algorithm-optionsType" minOccurs="0"/>
+			<xs:element name="Blast4-queue-search-request_program-options" type="tns:Blast4-queue-search-request_program-optionsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-queue-search-request_algorithm-optionsType">
+		<xs:sequence>
+			<xs:element name="Blast4-parameters" type="tns:Blast4-parametersType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-queue-search-request_paramset" type="xs:string"/>
+	<xs:element name="Blast4-queue-search-request_program" type="xs:string"/>
+	<xs:complexType name="Blast4-queue-search-request_program-optionsType">
+		<xs:sequence>
+			<xs:element name="Blast4-parameters" type="tns:Blast4-parametersType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-queue-search-request_queriesType">
+		<xs:sequence>
+			<xs:element name="Blast4-queries" type="tns:Blast4-queriesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-queue-search-request_service" type="xs:string"/>
+	<xs:complexType name="Blast4-queue-search-request_subjectType">
+		<xs:sequence>
+			<xs:element name="Blast4-subject" type="tns:Blast4-subjectType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-reply">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Blast4-reply_errors" type="tns:Blast4-reply_errorsType" minOccurs="0"/>
+				<xs:element name="Blast4-reply_body" type="tns:Blast4-reply_bodyType"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Blast4-reply-bodyType">
+		<xs:choice>
+			<xs:element name="Blast4-reply-body_finish-params" type="tns:Blast4-reply-body_finish-paramsType"/>
+			<xs:element name="Blast4-reply-body_get-databases" type="tns:Blast4-reply-body_get-databasesType"/>
+			<xs:element name="Blast4-reply-body_get-matrices" type="tns:Blast4-reply-body_get-matricesType"/>
+			<xs:element name="Blast4-reply-body_get-parameters" type="tns:Blast4-reply-body_get-parametersType"/>
+			<xs:element name="Blast4-reply-body_get-paramsets" type="tns:Blast4-reply-body_get-paramsetsType"/>
+			<xs:element name="Blast4-reply-body_get-programs" type="tns:Blast4-reply-body_get-programsType"/>
+			<xs:element name="Blast4-reply-body_get-search-results" type="tns:Blast4-reply-body_get-search-resultsType"/>
+			<xs:element name="Blast4-reply-body_get-sequences" type="tns:Blast4-reply-body_get-sequencesType"/>
+			<xs:element name="Blast4-reply-body_queue-search" type="tns:Blast4-reply-body_queue-searchType"/>
+			<xs:element name="Blast4-reply-body_get-queries" type="tns:Blast4-reply-body_get-queriesType"/>
+			<xs:element name="Blast4-reply-body_get-request-info" type="tns:Blast4-reply-body_get-request-infoType"/>
+			<xs:element name="Blast4-reply-body_get-sequence-parts" type="tns:Blast4-reply-body_get-sequence-partsType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Blast4-reply-body_finish-paramsType">
+		<xs:sequence>
+			<xs:element name="Blast4-finish-params-reply" type="tns:Blast4-finish-params-replyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-reply-body_get-databasesType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-databases-reply" type="tns:Blast4-get-databases-replyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-reply-body_get-matricesType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-matrices-reply" type="tns:Blast4-get-matrices-replyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-reply-body_get-parametersType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-parameters-reply" type="tns:Blast4-get-parameters-replyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-reply-body_get-paramsetsType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-paramsets-reply" type="tns:Blast4-get-paramsets-replyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-reply-body_get-programsType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-programs-reply" type="tns:Blast4-get-programs-replyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-reply-body_get-queriesType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-queries-reply" type="tns:Blast4-get-queries-replyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-reply-body_get-request-infoType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-request-info-reply" type="tns:Blast4-get-request-info-replyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-reply-body_get-search-resultsType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-search-results-reply" type="tns:Blast4-get-search-results-replyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-reply-body_get-sequence-partsType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-seq-parts-reply" type="tns:Blast4-get-seq-parts-replyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-reply-body_get-sequencesType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-sequences-reply" type="tns:Blast4-get-sequences-replyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-reply-body_queue-searchType">
+		<xs:sequence>
+			<xs:element name="Blast4-queue-search-reply" type="tns:Blast4-queue-search-replyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-reply_bodyType">
+		<xs:sequence>
+			<xs:element name="Blast4-reply-body" type="tns:Blast4-reply-bodyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-reply_errorsType">
+		<xs:sequence>
+			<xs:element name="Blast4-error" type="tns:Blast4-errorType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-request">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="tns:Blast4-request_ident" minOccurs="0"/>
+				<xs:element name="Blast4-request_body" type="tns:Blast4-request_bodyType"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Blast4-request-bodyType">
+		<xs:choice>
+			<xs:element name="Blast4-request-body_finish-params" type="tns:Blast4-request-body_finish-paramsType"/>
+			<xs:element ref="tns:Blast4-request-body_get-databases"/>
+			<xs:element ref="tns:Blast4-request-body_get-matrices"/>
+			<xs:element ref="tns:Blast4-request-body_get-parameters"/>
+			<xs:element ref="tns:Blast4-request-body_get-paramsets"/>
+			<xs:element ref="tns:Blast4-request-body_get-programs"/>
+			<xs:element name="Blast4-request-body_get-search-results" type="tns:Blast4-request-body_get-search-resultsType"/>
+			<xs:element name="Blast4-request-body_get-sequences" type="tns:Blast4-request-body_get-sequencesType"/>
+			<xs:element name="Blast4-request-body_queue-search" type="tns:Blast4-request-body_queue-searchType"/>
+			<xs:element name="Blast4-request-body_get-request-info" type="tns:Blast4-request-body_get-request-infoType"/>
+			<xs:element name="Blast4-request-body_get-sequence-parts" type="tns:Blast4-request-body_get-sequence-partsType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Blast4-request-body_finish-paramsType">
+		<xs:sequence>
+			<xs:element name="Blast4-finish-params-request" type="tns:Blast4-finish-params-requestType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-request-body_get-databases">
+		<xs:complexType/>
+	</xs:element>
+	<xs:element name="Blast4-request-body_get-matrices">
+		<xs:complexType/>
+	</xs:element>
+	<xs:element name="Blast4-request-body_get-parameters">
+		<xs:complexType/>
+	</xs:element>
+	<xs:element name="Blast4-request-body_get-paramsets">
+		<xs:complexType/>
+	</xs:element>
+	<xs:element name="Blast4-request-body_get-programs">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="Blast4-request-body_get-request-infoType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-request-info-request" type="tns:Blast4-get-request-info-requestType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-request-body_get-search-resultsType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-search-results-request" type="tns:Blast4-get-search-results-requestType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-request-body_get-sequence-partsType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-seq-parts-request" type="tns:Blast4-get-seq-parts-requestType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-request-body_get-sequencesType">
+		<xs:sequence>
+			<xs:element name="Blast4-get-sequences-request" type="tns:Blast4-get-sequences-requestType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-request-body_queue-searchType">
+		<xs:sequence>
+			<xs:element name="Blast4-queue-search-request" type="tns:Blast4-queue-search-requestType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-request_bodyType">
+		<xs:sequence>
+			<xs:element name="Blast4-request-body" type="tns:Blast4-request-bodyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-request_ident" type="xs:string"/>
+	<xs:complexType name="Blast4-residue-typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="unknown"/>
+					<xs:enumeration value="protein"/>
+					<xs:enumeration value="nucleotide"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Blast4-seqtechType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unknown"/>
+							<xs:enumeration value="standard"/>
+							<xs:enumeration value="est"/>
+							<xs:enumeration value="sts"/>
+							<xs:enumeration value="survey"/>
+							<xs:enumeration value="genemap"/>
+							<xs:enumeration value="physmap"/>
+							<xs:enumeration value="derived"/>
+							<xs:enumeration value="concept-trans"/>
+							<xs:enumeration value="seq-pept"/>
+							<xs:enumeration value="both"/>
+							<xs:enumeration value="seq-pept-overlap"/>
+							<xs:enumeration value="seq-pept-homol"/>
+							<xs:enumeration value="concept-trans-a"/>
+							<xs:enumeration value="htgs-1"/>
+							<xs:enumeration value="htgs-2"/>
+							<xs:enumeration value="htgs-3"/>
+							<xs:enumeration value="fli-cdna"/>
+							<xs:enumeration value="htgs-0"/>
+							<xs:enumeration value="htc"/>
+							<xs:enumeration value="wgs"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Blast4-strand-typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="forward-strand"/>
+					<xs:enumeration value="reverse-strand"/>
+					<xs:enumeration value="both-strands"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Blast4-subjectType">
+		<xs:choice>
+			<xs:element ref="tns:Blast4-subject_database"/>
+			<xs:element name="Blast4-subject_sequences" type="tns:Blast4-subject_sequencesType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="Blast4-subject_database" type="xs:string"/>
+	<xs:complexType name="Blast4-subject_sequencesType">
+		<xs:sequence>
+			<xs:element name="Bioseq" type="tns:BioseqType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-valueType">
+		<xs:choice>
+			<xs:element ref="tns:Blast4-value_big-integer"/>
+			<xs:element name="Blast4-value_bioseq" type="tns:Blast4-value_bioseqType"/>
+			<xs:element name="Blast4-value_boolean" type="tns:Blast4-value_booleanType"/>
+			<xs:element name="Blast4-value_cutoff" type="tns:Blast4-value_cutoffType"/>
+			<xs:element ref="tns:Blast4-value_integer"/>
+			<xs:element name="Blast4-value_matrix" type="tns:Blast4-value_matrixType"/>
+			<xs:element ref="tns:Blast4-value_real"/>
+			<xs:element name="Blast4-value_seq-align" type="tns:Blast4-value_seq-alignType"/>
+			<xs:element name="Blast4-value_seq-id" type="tns:Blast4-value_seq-idType"/>
+			<xs:element name="Blast4-value_seq-loc" type="tns:Blast4-value_seq-locType"/>
+			<xs:element name="Blast4-value_strand-type" type="tns:Blast4-value_strand-typeType"/>
+			<xs:element ref="tns:Blast4-value_string"/>
+			<xs:element name="Blast4-value_big-integer-list" type="tns:Blast4-value_big-integer-listType"/>
+			<xs:element name="Blast4-value_bioseq-list" type="tns:Blast4-value_bioseq-listType"/>
+			<xs:element name="Blast4-value_boolean-list" type="tns:Blast4-value_boolean-listType"/>
+			<xs:element name="Blast4-value_cutoff-list" type="tns:Blast4-value_cutoff-listType"/>
+			<xs:element name="Blast4-value_integer-list" type="tns:Blast4-value_integer-listType"/>
+			<xs:element name="Blast4-value_matrix-list" type="tns:Blast4-value_matrix-listType"/>
+			<xs:element name="Blast4-value_real-list" type="tns:Blast4-value_real-listType"/>
+			<xs:element name="Blast4-value_seq-align-list" type="tns:Blast4-value_seq-align-listType"/>
+			<xs:element name="Blast4-value_seq-id-list" type="tns:Blast4-value_seq-id-listType"/>
+			<xs:element name="Blast4-value_seq-loc-list" type="tns:Blast4-value_seq-loc-listType"/>
+			<xs:element name="Blast4-value_strand-type-list" type="tns:Blast4-value_strand-type-listType"/>
+			<xs:element name="Blast4-value_string-list" type="tns:Blast4-value_string-listType"/>
+			<xs:element name="Blast4-value_bioseq-set" type="tns:Blast4-value_bioseq-setType"/>
+			<xs:element name="Blast4-value_seq-align-set" type="tns:Blast4-value_seq-align-setType"/>
+			<xs:element name="Blast4-value_query-mask" type="tns:Blast4-value_query-maskType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="Blast4-value_big-integer" type="xs:string"/>
+	<xs:complexType name="Blast4-value_big-integer-listType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-value_big-integer-list_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-value_big-integer-list_E" type="xs:string"/>
+	<xs:complexType name="Blast4-value_bioseqType">
+		<xs:sequence>
+			<xs:element name="Bioseq" type="tns:BioseqType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_bioseq-listType">
+		<xs:sequence>
+			<xs:element name="Bioseq" type="tns:BioseqType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_bioseq-setType">
+		<xs:sequence>
+			<xs:element name="Bioseq-set" type="tns:Bioseq-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_booleanType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_boolean-listType">
+		<xs:sequence>
+			<xs:element name="Blast4-value_boolean-list_E" type="tns:Blast4-value_boolean-list_EType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_boolean-list_EType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_cutoffType">
+		<xs:sequence>
+			<xs:element name="Blast4-cutoff" type="tns:Blast4-cutoffType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_cutoff-listType">
+		<xs:sequence>
+			<xs:element name="Blast4-cutoff" type="tns:Blast4-cutoffType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-value_integer" type="xs:string"/>
+	<xs:complexType name="Blast4-value_integer-listType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-value_integer-list_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-value_integer-list_E" type="xs:string"/>
+	<xs:complexType name="Blast4-value_matrixType">
+		<xs:sequence>
+			<xs:element name="PssmWithParameters" type="tns:PssmWithParametersType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_matrix-listType">
+		<xs:sequence>
+			<xs:element name="PssmWithParameters" type="tns:PssmWithParametersType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_query-maskType">
+		<xs:sequence>
+			<xs:element name="Blast4-mask" type="tns:Blast4-maskType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-value_real" type="xs:string"/>
+	<xs:complexType name="Blast4-value_real-listType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-value_real-list_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-value_real-list_E" type="xs:string"/>
+	<xs:complexType name="Blast4-value_seq-alignType">
+		<xs:sequence>
+			<xs:element name="Seq-align" type="tns:Seq-alignType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_seq-align-listType">
+		<xs:sequence>
+			<xs:element name="Seq-align" type="tns:Seq-alignType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_seq-align-setType">
+		<xs:sequence>
+			<xs:element name="Seq-align-set" type="tns:Seq-align-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_seq-idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_seq-id-listType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_seq-locType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_seq-loc-listType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_strand-typeType">
+		<xs:sequence>
+			<xs:element name="Blast4-strand-type" type="tns:Blast4-strand-typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Blast4-value_strand-type-listType">
+		<xs:sequence>
+			<xs:element name="Blast4-strand-type" type="tns:Blast4-strand-typeType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-value_string" type="xs:string"/>
+	<xs:complexType name="Blast4-value_string-listType">
+		<xs:sequence>
+			<xs:element ref="tns:Blast4-value_string-list_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Blast4-value_string-list_E" type="xs:string"/>
+	<xs:element name="BlastOutput">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="tns:BlastOutput_program"/>
+				<xs:element ref="tns:BlastOutput_version"/>
+				<xs:element ref="tns:BlastOutput_reference"/>
+				<xs:element ref="tns:BlastOutput_db"/>
+				<xs:element ref="tns:BlastOutput_query-ID"/>
+				<xs:element ref="tns:BlastOutput_query-def"/>
+				<xs:element ref="tns:BlastOutput_query-len"/>
+				<xs:element ref="tns:BlastOutput_query-seq" minOccurs="0"/>
+				<xs:element name="BlastOutput_param" type="tns:BlastOutput_paramType"/>
+				<xs:element name="BlastOutput_iterations" type="tns:BlastOutput_iterationsType"/>
+				<xs:element name="BlastOutput_mbstat" type="tns:BlastOutput_mbstatType" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="BlastOutput_db" type="xs:string"/>
+	<xs:complexType name="BlastOutput_iterationsType">
+		<xs:sequence>
+			<xs:element name="Iteration" type="tns:IterationType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="BlastOutput_mbstatType">
+		<xs:sequence>
+			<xs:element name="Statistics" type="tns:StatisticsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="BlastOutput_paramType">
+		<xs:sequence>
+			<xs:element name="Parameters" type="tns:ParametersType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="BlastOutput_program" type="xs:string"/>
+	<xs:element name="BlastOutput_query-ID" type="xs:string"/>
+	<xs:element name="BlastOutput_query-def" type="xs:string"/>
+	<xs:element name="BlastOutput_query-len" type="xs:string"/>
+	<xs:element name="BlastOutput_query-seq" type="xs:string"/>
+	<xs:element name="BlastOutput_reference" type="xs:string"/>
+	<xs:element name="BlastOutput_version" type="xs:string"/>
+	<xs:complexType name="BlockPropertyType">
+		<xs:sequence>
+			<xs:element name="BlockProperty_type" type="tns:BlockProperty_typeType"/>
+			<xs:element ref="tns:BlockProperty_intvalue" minOccurs="0"/>
+			<xs:element ref="tns:BlockProperty_textvalue" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="BlockProperty_intvalue" type="xs:string"/>
+	<xs:element name="BlockProperty_textvalue" type="xs:string"/>
+	<xs:complexType name="BlockProperty_typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unassigned"/>
+							<xs:enumeration value="threshold"/>
+							<xs:enumeration value="minscore"/>
+							<xs:enumeration value="maxscore"/>
+							<xs:enumeration value="meanscore"/>
+							<xs:enumeration value="variance"/>
+							<xs:enumeration value="name"/>
+							<xs:enumeration value="is-optional"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="BrickType">
+		<xs:sequence>
+			<xs:element name="Brick_corner-000" type="tns:Brick_corner-000Type"/>
+			<xs:element name="Brick_corner-001" type="tns:Brick_corner-001Type"/>
+			<xs:element name="Brick_corner-010" type="tns:Brick_corner-010Type"/>
+			<xs:element name="Brick_corner-011" type="tns:Brick_corner-011Type"/>
+			<xs:element name="Brick_corner-100" type="tns:Brick_corner-100Type"/>
+			<xs:element name="Brick_corner-101" type="tns:Brick_corner-101Type"/>
+			<xs:element name="Brick_corner-110" type="tns:Brick_corner-110Type"/>
+			<xs:element name="Brick_corner-111" type="tns:Brick_corner-111Type"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Brick_corner-000Type">
+		<xs:sequence>
+			<xs:element name="Model-space-point" type="tns:Model-space-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Brick_corner-001Type">
+		<xs:sequence>
+			<xs:element name="Model-space-point" type="tns:Model-space-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Brick_corner-010Type">
+		<xs:sequence>
+			<xs:element name="Model-space-point" type="tns:Model-space-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Brick_corner-011Type">
+		<xs:sequence>
+			<xs:element name="Model-space-point" type="tns:Model-space-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Brick_corner-100Type">
+		<xs:sequence>
+			<xs:element name="Model-space-point" type="tns:Model-space-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Brick_corner-101Type">
+		<xs:sequence>
+			<xs:element name="Model-space-point" type="tns:Model-space-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Brick_corner-110Type">
+		<xs:sequence>
+			<xs:element name="Model-space-point" type="tns:Model-space-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Brick_corner-111Type">
+		<xs:sequence>
+			<xs:element name="Model-space-point" type="tns:Model-space-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bundle-seqs-alignsType">
+		<xs:sequence>
+			<xs:element name="Bundle-seqs-aligns_sequences" type="tns:Bundle-seqs-aligns_sequencesType" minOccurs="0"/>
+			<xs:element name="Bundle-seqs-aligns_seqaligns" type="tns:Bundle-seqs-aligns_seqalignsType" minOccurs="0"/>
+			<xs:element name="Bundle-seqs-aligns_strucaligns" type="tns:Bundle-seqs-aligns_strucalignsType" minOccurs="0"/>
+			<xs:element name="Bundle-seqs-aligns_imports" type="tns:Bundle-seqs-aligns_importsType" minOccurs="0"/>
+			<xs:element name="Bundle-seqs-aligns_style-dictionary" type="tns:Bundle-seqs-aligns_style-dictionaryType" minOccurs="0"/>
+			<xs:element name="Bundle-seqs-aligns_user-annotations" type="tns:Bundle-seqs-aligns_user-annotationsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bundle-seqs-aligns_importsType">
+		<xs:sequence>
+			<xs:element name="Seq-annot" type="tns:Seq-annotType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bundle-seqs-aligns_seqalignsType">
+		<xs:sequence>
+			<xs:element name="Seq-annot" type="tns:Seq-annotType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bundle-seqs-aligns_sequencesType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bundle-seqs-aligns_strucalignsType">
+		<xs:sequence>
+			<xs:element name="Biostruc-annot-set" type="tns:Biostruc-annot-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bundle-seqs-aligns_style-dictionaryType">
+		<xs:sequence>
+			<xs:element name="Cn3d-style-dictionary" type="tns:Cn3d-style-dictionaryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Bundle-seqs-aligns_user-annotationsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-user-annotations" type="tns:Cn3d-user-annotationsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Byte-graphType">
+		<xs:sequence>
+			<xs:element ref="tns:Byte-graph_max"/>
+			<xs:element ref="tns:Byte-graph_min"/>
+			<xs:element ref="tns:Byte-graph_axis"/>
+			<xs:element ref="tns:Byte-graph_values"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Byte-graph_axis" type="xs:string"/>
+	<xs:element name="Byte-graph_max" type="xs:string"/>
+	<xs:element name="Byte-graph_min" type="xs:string"/>
+	<xs:element name="Byte-graph_values" type="xs:string"/>
+	<xs:complexType name="CameraType">
+		<xs:sequence>
+			<xs:element ref="tns:Camera_x"/>
+			<xs:element ref="tns:Camera_y"/>
+			<xs:element ref="tns:Camera_distance"/>
+			<xs:element ref="tns:Camera_angle"/>
+			<xs:element ref="tns:Camera_scale"/>
+			<xs:element name="Camera_modelview" type="tns:Camera_modelviewType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Camera_angle" type="xs:string"/>
+	<xs:element name="Camera_distance" type="xs:string"/>
+	<xs:complexType name="Camera_modelviewType">
+		<xs:sequence>
+			<xs:element name="GL-matrix" type="tns:GL-matrixType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Camera_scale" type="xs:string"/>
+	<xs:element name="Camera_x" type="xs:string"/>
+	<xs:element name="Camera_y" type="xs:string"/>
+	<xs:complexType name="CddType">
+		<xs:sequence>
+			<xs:element ref="tns:Cdd_name"/>
+			<xs:element name="Cdd_id" type="tns:Cdd_idType"/>
+			<xs:element name="Cdd_description" type="tns:Cdd_descriptionType" minOccurs="0"/>
+			<xs:element name="Cdd_seqannot" type="tns:Cdd_seqannotType" minOccurs="0"/>
+			<xs:element name="Cdd_features" type="tns:Cdd_featuresType" minOccurs="0"/>
+			<xs:element name="Cdd_sequences" type="tns:Cdd_sequencesType" minOccurs="0"/>
+			<xs:element name="Cdd_profile-range" type="tns:Cdd_profile-rangeType" minOccurs="0"/>
+			<xs:element name="Cdd_trunc-master" type="tns:Cdd_trunc-masterType" minOccurs="0"/>
+			<xs:element name="Cdd_posfreq" type="tns:Cdd_posfreqType" minOccurs="0"/>
+			<xs:element name="Cdd_scoremat" type="tns:Cdd_scorematType" minOccurs="0"/>
+			<xs:element name="Cdd_distance" type="tns:Cdd_distanceType" minOccurs="0"/>
+			<xs:element name="Cdd_parent" type="tns:Cdd_parentType" minOccurs="0"/>
+			<xs:element name="Cdd_children" type="tns:Cdd_childrenType" minOccurs="0"/>
+			<xs:element name="Cdd_siblings" type="tns:Cdd_siblingsType" minOccurs="0"/>
+			<xs:element name="Cdd_neighbors" type="tns:Cdd_neighborsType" minOccurs="0"/>
+			<xs:element name="Cdd_pending" type="tns:Cdd_pendingType" minOccurs="0"/>
+			<xs:element name="Cdd_rejects" type="tns:Cdd_rejectsType" minOccurs="0"/>
+			<xs:element name="Cdd_master3d" type="tns:Cdd_master3dType" minOccurs="0"/>
+			<xs:element name="Cdd_alignannot" type="tns:Cdd_alignannotType" minOccurs="0"/>
+			<xs:element name="Cdd_style-dictionary" type="tns:Cdd_style-dictionaryType" minOccurs="0"/>
+			<xs:element name="Cdd_user-annotations" type="tns:Cdd_user-annotationsType" minOccurs="0"/>
+			<xs:element name="Cdd_ancestors" type="tns:Cdd_ancestorsType" minOccurs="0"/>
+			<xs:element name="Cdd_scoreparams" type="tns:Cdd_scoreparamsType" minOccurs="0"/>
+			<xs:element name="Cdd_seqtree" type="tns:Cdd_seqtreeType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-Project">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Cdd-Project_cds" type="tns:Cdd-Project_cdsType"/>
+				<xs:element name="Cdd-Project_cdcolor" type="tns:Cdd-Project_cdcolorType"/>
+				<xs:element name="Cdd-Project_viewers" type="tns:Cdd-Project_viewersType"/>
+				<xs:element ref="tns:Cdd-Project_log"/>
+				<xs:element name="Cdd-Project_scripts" type="tns:Cdd-Project_scriptsType" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Cdd-Project_cdcolorType">
+		<xs:sequence>
+			<xs:element ref="tns:Cdd-Project_cdcolor_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-Project_cdcolor_E" type="xs:string"/>
+	<xs:complexType name="Cdd-Project_cdsType">
+		<xs:sequence>
+			<xs:element name="Cdd" type="tns:CddType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-Project_log" type="xs:string"/>
+	<xs:complexType name="Cdd-Project_scriptsType">
+		<xs:sequence>
+			<xs:element name="Cdd-Script" type="tns:Cdd-ScriptType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-Project_viewersType">
+		<xs:sequence>
+			<xs:element name="Cdd-Viewer" type="tns:Cdd-ViewerType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-ScriptType">
+		<xs:sequence>
+			<xs:element name="Cdd-Script_type" type="tns:Cdd-Script_typeType" minOccurs="0"/>
+			<xs:element ref="tns:Cdd-Script_name" minOccurs="0"/>
+			<xs:element ref="tns:Cdd-Script_commands"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-Script_commands" type="xs:string"/>
+	<xs:element name="Cdd-Script_name" type="xs:string"/>
+	<xs:complexType name="Cdd-Script_typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unassigned"/>
+							<xs:enumeration value="user-recorded"/>
+							<xs:enumeration value="server-generated"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Cdd-ViewerType">
+		<xs:sequence>
+			<xs:element name="Cdd-Viewer_ctrl" type="tns:Cdd-Viewer_ctrlType"/>
+			<xs:element name="Cdd-Viewer_rect" type="tns:Cdd-Viewer_rectType" minOccurs="0"/>
+			<xs:element name="Cdd-Viewer_accessions" type="tns:Cdd-Viewer_accessionsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-Viewer-RectType">
+		<xs:sequence>
+			<xs:element ref="tns:Cdd-Viewer-Rect_top"/>
+			<xs:element ref="tns:Cdd-Viewer-Rect_left"/>
+			<xs:element ref="tns:Cdd-Viewer-Rect_width"/>
+			<xs:element ref="tns:Cdd-Viewer-Rect_height"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-Viewer-Rect_height" type="xs:string"/>
+	<xs:element name="Cdd-Viewer-Rect_left" type="xs:string"/>
+	<xs:element name="Cdd-Viewer-Rect_top" type="xs:string"/>
+	<xs:element name="Cdd-Viewer-Rect_width" type="xs:string"/>
+	<xs:complexType name="Cdd-Viewer_accessionsType">
+		<xs:sequence>
+			<xs:element ref="tns:Cdd-Viewer_accessions_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-Viewer_accessions_E" type="xs:string"/>
+	<xs:complexType name="Cdd-Viewer_ctrlType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unassigned"/>
+							<xs:enumeration value="cd-info"/>
+							<xs:enumeration value="align-annot"/>
+							<xs:enumeration value="seq-list"/>
+							<xs:enumeration value="seq-tree"/>
+							<xs:enumeration value="merge-preview"/>
+							<xs:enumeration value="cross-hits"/>
+							<xs:enumeration value="notes"/>
+							<xs:enumeration value="tax-tree"/>
+							<xs:enumeration value="dart"/>
+							<xs:enumeration value="dart-selected-rows"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Cdd-Viewer_rectType">
+		<xs:sequence>
+			<xs:element name="Cdd-Viewer-Rect" type="tns:Cdd-Viewer-RectType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-book-refType">
+		<xs:sequence>
+			<xs:element ref="tns:Cdd-book-ref_bookname"/>
+			<xs:element name="Cdd-book-ref_textelement" type="tns:Cdd-book-ref_textelementType"/>
+			<xs:element ref="tns:Cdd-book-ref_elementid" minOccurs="0"/>
+			<xs:element ref="tns:Cdd-book-ref_subelementid" minOccurs="0"/>
+			<xs:element ref="tns:Cdd-book-ref_celementid" minOccurs="0"/>
+			<xs:element ref="tns:Cdd-book-ref_csubelementid" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-book-ref_bookname" type="xs:string"/>
+	<xs:element name="Cdd-book-ref_celementid" type="xs:string"/>
+	<xs:element name="Cdd-book-ref_csubelementid" type="xs:string"/>
+	<xs:element name="Cdd-book-ref_elementid" type="xs:string"/>
+	<xs:element name="Cdd-book-ref_subelementid" type="xs:string"/>
+	<xs:complexType name="Cdd-book-ref_textelementType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="unassigned"/>
+					<xs:enumeration value="section"/>
+					<xs:enumeration value="figgrp"/>
+					<xs:enumeration value="table"/>
+					<xs:enumeration value="chapter"/>
+					<xs:enumeration value="biblist"/>
+					<xs:enumeration value="box"/>
+					<xs:enumeration value="glossary"/>
+					<xs:enumeration value="appendix"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Cdd-descrType">
+		<xs:choice>
+			<xs:element ref="tns:Cdd-descr_othername"/>
+			<xs:element ref="tns:Cdd-descr_category"/>
+			<xs:element ref="tns:Cdd-descr_comment"/>
+			<xs:element name="Cdd-descr_reference" type="tns:Cdd-descr_referenceType"/>
+			<xs:element name="Cdd-descr_create-date" type="tns:Cdd-descr_create-dateType"/>
+			<xs:element name="Cdd-descr_tax-source" type="tns:Cdd-descr_tax-sourceType"/>
+			<xs:element ref="tns:Cdd-descr_source"/>
+			<xs:element name="Cdd-descr_status" type="tns:Cdd-descr_statusType"/>
+			<xs:element name="Cdd-descr_update-date" type="tns:Cdd-descr_update-dateType"/>
+			<xs:element name="Cdd-descr_scrapbook" type="tns:Cdd-descr_scrapbookType"/>
+			<xs:element name="Cdd-descr_source-id" type="tns:Cdd-descr_source-idType"/>
+			<xs:element name="Cdd-descr_repeats" type="tns:Cdd-descr_repeatsType"/>
+			<xs:element name="Cdd-descr_old-root" type="tns:Cdd-descr_old-rootType"/>
+			<xs:element name="Cdd-descr_curation-status" type="tns:Cdd-descr_curation-statusType"/>
+			<xs:element name="Cdd-descr_readonly-status" type="tns:Cdd-descr_readonly-statusType"/>
+			<xs:element name="Cdd-descr_book-ref" type="tns:Cdd-descr_book-refType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Cdd-descr-setType">
+		<xs:sequence>
+			<xs:element name="Cdd-descr" type="tns:Cdd-descrType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-descr_book-refType">
+		<xs:sequence>
+			<xs:element name="Cdd-book-ref" type="tns:Cdd-book-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-descr_category" type="xs:string"/>
+	<xs:element name="Cdd-descr_comment" type="xs:string"/>
+	<xs:complexType name="Cdd-descr_create-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-descr_curation-statusType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unassigned"/>
+							<xs:enumeration value="prein"/>
+							<xs:enumeration value="ofc"/>
+							<xs:enumeration value="iac"/>
+							<xs:enumeration value="ofv1"/>
+							<xs:enumeration value="iav1"/>
+							<xs:enumeration value="ofv2"/>
+							<xs:enumeration value="iav2"/>
+							<xs:enumeration value="postin"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Cdd-descr_old-rootType">
+		<xs:sequence>
+			<xs:element name="Cdd-id-set" type="tns:Cdd-id-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-descr_othername" type="xs:string"/>
+	<xs:complexType name="Cdd-descr_readonly-statusType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unassigned"/>
+							<xs:enumeration value="readonly"/>
+							<xs:enumeration value="readwrite"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Cdd-descr_referenceType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-descr_repeatsType">
+		<xs:sequence>
+			<xs:element name="Cdd-repeat" type="tns:Cdd-repeatType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-descr_scrapbookType">
+		<xs:sequence>
+			<xs:element ref="tns:Cdd-descr_scrapbook_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-descr_scrapbook_E" type="xs:string"/>
+	<xs:element name="Cdd-descr_source" type="xs:string"/>
+	<xs:complexType name="Cdd-descr_source-idType">
+		<xs:sequence>
+			<xs:element name="Cdd-id-set" type="tns:Cdd-id-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-descr_statusType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unassigned"/>
+							<xs:enumeration value="finished-ok"/>
+							<xs:enumeration value="pending-release"/>
+							<xs:enumeration value="other-asis"/>
+							<xs:enumeration value="matrix-only"/>
+							<xs:enumeration value="update-running"/>
+							<xs:enumeration value="auto-updated"/>
+							<xs:enumeration value="claimed"/>
+							<xs:enumeration value="curated-complete"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Cdd-descr_tax-sourceType">
+		<xs:sequence>
+			<xs:element name="Org-ref" type="tns:Org-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-descr_update-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-idType">
+		<xs:choice>
+			<xs:element ref="tns:Cdd-id_uid"/>
+			<xs:element name="Cdd-id_gid" type="tns:Cdd-id_gidType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Cdd-id-setType">
+		<xs:sequence>
+			<xs:element name="Cdd-id" type="tns:Cdd-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-id_gidType">
+		<xs:sequence>
+			<xs:element name="Global-id" type="tns:Global-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-id_uid" type="xs:string"/>
+	<xs:complexType name="Cdd-org-refType">
+		<xs:sequence>
+			<xs:element name="Cdd-org-ref_reference" type="tns:Cdd-org-ref_referenceType"/>
+			<xs:element name="Cdd-org-ref_active" type="tns:Cdd-org-ref_activeType" minOccurs="0"/>
+			<xs:element ref="tns:Cdd-org-ref_parent-tax-id" minOccurs="0"/>
+			<xs:element ref="tns:Cdd-org-ref_rank" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-org-ref-setType">
+		<xs:sequence>
+			<xs:element name="Cdd-org-ref" type="tns:Cdd-org-refType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-org-ref_activeType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Cdd-org-ref_parent-tax-id" type="xs:string"/>
+	<xs:element name="Cdd-org-ref_rank" type="xs:string"/>
+	<xs:complexType name="Cdd-org-ref_referenceType">
+		<xs:sequence>
+			<xs:element name="Org-ref" type="tns:Org-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-pref-node-descrType">
+		<xs:choice>
+			<xs:element name="Cdd-pref-node-descr_create-date" type="tns:Cdd-pref-node-descr_create-dateType"/>
+			<xs:element ref="tns:Cdd-pref-node-descr_description"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Cdd-pref-node-descr-setType">
+		<xs:sequence>
+			<xs:element name="Cdd-pref-node-descr" type="tns:Cdd-pref-node-descrType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-pref-node-descr_create-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-pref-node-descr_description" type="xs:string"/>
+	<xs:element name="Cdd-pref-nodes">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Cdd-pref-nodes_preferred-nodes" type="tns:Cdd-pref-nodes_preferred-nodesType"/>
+				<xs:element name="Cdd-pref-nodes_model-organisms" type="tns:Cdd-pref-nodes_model-organismsType" minOccurs="0"/>
+				<xs:element name="Cdd-pref-nodes_optional-nodes" type="tns:Cdd-pref-nodes_optional-nodesType" minOccurs="0"/>
+				<xs:element name="Cdd-pref-nodes_description" type="tns:Cdd-pref-nodes_descriptionType" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Cdd-pref-nodes_descriptionType">
+		<xs:sequence>
+			<xs:element name="Cdd-pref-node-descr-set" type="tns:Cdd-pref-node-descr-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-pref-nodes_model-organismsType">
+		<xs:sequence>
+			<xs:element name="Cdd-org-ref-set" type="tns:Cdd-org-ref-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-pref-nodes_optional-nodesType">
+		<xs:sequence>
+			<xs:element name="Cdd-org-ref-set" type="tns:Cdd-org-ref-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-pref-nodes_preferred-nodesType">
+		<xs:sequence>
+			<xs:element name="Cdd-org-ref-set" type="tns:Cdd-org-ref-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-repeatType">
+		<xs:sequence>
+			<xs:element ref="tns:Cdd-repeat_count"/>
+			<xs:element name="Cdd-repeat_location" type="tns:Cdd-repeat_locationType" minOccurs="0"/>
+			<xs:element ref="tns:Cdd-repeat_avglen" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-repeat_avglen" type="xs:string"/>
+	<xs:element name="Cdd-repeat_count" type="xs:string"/>
+	<xs:complexType name="Cdd-repeat_locationType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-set">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Cdd" type="tns:CddType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Cdd-treeType">
+		<xs:sequence>
+			<xs:element ref="tns:Cdd-tree_name"/>
+			<xs:element name="Cdd-tree_id" type="tns:Cdd-tree_idType"/>
+			<xs:element name="Cdd-tree_description" type="tns:Cdd-tree_descriptionType" minOccurs="0"/>
+			<xs:element name="Cdd-tree_parent" type="tns:Cdd-tree_parentType" minOccurs="0"/>
+			<xs:element name="Cdd-tree_children" type="tns:Cdd-tree_childrenType" minOccurs="0"/>
+			<xs:element name="Cdd-tree_siblings" type="tns:Cdd-tree_siblingsType" minOccurs="0"/>
+			<xs:element name="Cdd-tree_neighbors" type="tns:Cdd-tree_neighborsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-tree-set">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Cdd-tree" type="tns:Cdd-treeType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Cdd-tree_childrenType">
+		<xs:sequence>
+			<xs:element name="Cdd-id-set" type="tns:Cdd-id-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-tree_descriptionType">
+		<xs:sequence>
+			<xs:element name="Cdd-descr-set" type="tns:Cdd-descr-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-tree_idType">
+		<xs:sequence>
+			<xs:element name="Cdd-id-set" type="tns:Cdd-id-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd-tree_name" type="xs:string"/>
+	<xs:complexType name="Cdd-tree_neighborsType">
+		<xs:sequence>
+			<xs:element name="Cdd-id-set" type="tns:Cdd-id-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-tree_parentType">
+		<xs:sequence>
+			<xs:element name="Cdd-id" type="tns:Cdd-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd-tree_siblingsType">
+		<xs:sequence>
+			<xs:element name="Cdd-id-set" type="tns:Cdd-id-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_alignannotType">
+		<xs:sequence>
+			<xs:element name="Align-annot-set" type="tns:Align-annot-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_ancestorsType">
+		<xs:sequence>
+			<xs:element name="Domain-parent" type="tns:Domain-parentType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_childrenType">
+		<xs:sequence>
+			<xs:element name="Cdd-id-set" type="tns:Cdd-id-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_descriptionType">
+		<xs:sequence>
+			<xs:element name="Cdd-descr-set" type="tns:Cdd-descr-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_distanceType">
+		<xs:sequence>
+			<xs:element name="Triangle" type="tns:TriangleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_featuresType">
+		<xs:sequence>
+			<xs:element name="Biostruc-annot-set" type="tns:Biostruc-annot-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_idType">
+		<xs:sequence>
+			<xs:element name="Cdd-id-set" type="tns:Cdd-id-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_master3dType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cdd_name" type="xs:string"/>
+	<xs:complexType name="Cdd_neighborsType">
+		<xs:sequence>
+			<xs:element name="Cdd-id-set" type="tns:Cdd-id-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_parentType">
+		<xs:sequence>
+			<xs:element name="Cdd-id" type="tns:Cdd-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_pendingType">
+		<xs:sequence>
+			<xs:element name="Update-align" type="tns:Update-alignType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_posfreqType">
+		<xs:sequence>
+			<xs:element name="Matrix" type="tns:MatrixType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_profile-rangeType">
+		<xs:sequence>
+			<xs:element name="Seq-interval" type="tns:Seq-intervalType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_rejectsType">
+		<xs:sequence>
+			<xs:element name="Reject-id" type="tns:Reject-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_scorematType">
+		<xs:sequence>
+			<xs:element name="Matrix" type="tns:MatrixType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_scoreparamsType">
+		<xs:sequence>
+			<xs:element name="PssmWithParameters" type="tns:PssmWithParametersType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_seqannotType">
+		<xs:sequence>
+			<xs:element name="Seq-annot" type="tns:Seq-annotType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_seqtreeType">
+		<xs:sequence>
+			<xs:element name="Sequence-tree" type="tns:Sequence-treeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_sequencesType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_siblingsType">
+		<xs:sequence>
+			<xs:element name="Cdd-id-set" type="tns:Cdd-id-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_style-dictionaryType">
+		<xs:sequence>
+			<xs:element name="Cn3d-style-dictionary" type="tns:Cn3d-style-dictionaryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_trunc-masterType">
+		<xs:sequence>
+			<xs:element name="Bioseq" type="tns:BioseqType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdd_user-annotationsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-user-annotations" type="tns:Cn3d-user-annotationsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="CdregionType">
+		<xs:sequence>
+			<xs:element name="Cdregion_orf" type="tns:Cdregion_orfType" minOccurs="0"/>
+			<xs:element name="Cdregion_frame" type="tns:Cdregion_frameType" minOccurs="0"/>
+			<xs:element name="Cdregion_conflict" type="tns:Cdregion_conflictType" minOccurs="0"/>
+			<xs:element ref="tns:Cdregion_gaps" minOccurs="0"/>
+			<xs:element ref="tns:Cdregion_mismatch" minOccurs="0"/>
+			<xs:element name="Cdregion_code" type="tns:Cdregion_codeType" minOccurs="0"/>
+			<xs:element name="Cdregion_code-break" type="tns:Cdregion_code-breakType" minOccurs="0"/>
+			<xs:element ref="tns:Cdregion_stops" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdregion_codeType">
+		<xs:sequence>
+			<xs:element name="Genetic-code" type="tns:Genetic-codeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdregion_code-breakType">
+		<xs:sequence>
+			<xs:element name="Code-break" type="tns:Code-breakType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cdregion_conflictType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Cdregion_frameType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="not-set"/>
+					<xs:enumeration value="one"/>
+					<xs:enumeration value="two"/>
+					<xs:enumeration value="three"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Cdregion_gaps" type="xs:string"/>
+	<xs:element name="Cdregion_mismatch" type="xs:string"/>
+	<xs:complexType name="Cdregion_orfType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Cdregion_stops" type="xs:string"/>
+	<xs:complexType name="Chem-graph-alignmentType">
+		<xs:sequence>
+			<xs:element ref="tns:Chem-graph-alignment_dimension" minOccurs="0"/>
+			<xs:element name="Chem-graph-alignment_biostruc-ids" type="tns:Chem-graph-alignment_biostruc-idsType"/>
+			<xs:element name="Chem-graph-alignment_alignment" type="tns:Chem-graph-alignment_alignmentType"/>
+			<xs:element name="Chem-graph-alignment_domain" type="tns:Chem-graph-alignment_domainType" minOccurs="0"/>
+			<xs:element name="Chem-graph-alignment_transform" type="tns:Chem-graph-alignment_transformType" minOccurs="0"/>
+			<xs:element name="Chem-graph-alignment_aligndata" type="tns:Chem-graph-alignment_aligndataType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Chem-graph-alignment_aligndataType">
+		<xs:sequence>
+			<xs:element name="Align-stats" type="tns:Align-statsType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Chem-graph-alignment_alignmentType">
+		<xs:sequence>
+			<xs:element name="Chem-graph-pntrs" type="tns:Chem-graph-pntrsType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Chem-graph-alignment_biostruc-idsType">
+		<xs:sequence>
+			<xs:element name="Biostruc-id" type="tns:Biostruc-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Chem-graph-alignment_dimension" type="xs:string"/>
+	<xs:complexType name="Chem-graph-alignment_domainType">
+		<xs:sequence>
+			<xs:element name="Chem-graph-pntrs" type="tns:Chem-graph-pntrsType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Chem-graph-alignment_transformType">
+		<xs:sequence>
+			<xs:element name="Transform" type="tns:TransformType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Chem-graph-pntrsType">
+		<xs:choice>
+			<xs:element name="Chem-graph-pntrs_atoms" type="tns:Chem-graph-pntrs_atomsType"/>
+			<xs:element name="Chem-graph-pntrs_residues" type="tns:Chem-graph-pntrs_residuesType"/>
+			<xs:element name="Chem-graph-pntrs_molecules" type="tns:Chem-graph-pntrs_moleculesType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Chem-graph-pntrs_atomsType">
+		<xs:sequence>
+			<xs:element name="Atom-pntrs" type="tns:Atom-pntrsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Chem-graph-pntrs_moleculesType">
+		<xs:sequence>
+			<xs:element name="Molecule-pntrs" type="tns:Molecule-pntrsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Chem-graph-pntrs_residuesType">
+		<xs:sequence>
+			<xs:element name="Residue-pntrs" type="tns:Residue-pntrsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Chiral-centerType">
+		<xs:sequence>
+			<xs:element name="Chiral-center_c" type="tns:Chiral-center_cType"/>
+			<xs:element name="Chiral-center_n1" type="tns:Chiral-center_n1Type"/>
+			<xs:element name="Chiral-center_n2" type="tns:Chiral-center_n2Type"/>
+			<xs:element name="Chiral-center_n3" type="tns:Chiral-center_n3Type"/>
+			<xs:element name="Chiral-center_sign" type="tns:Chiral-center_signType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Chiral-center_cType">
+		<xs:sequence>
+			<xs:element ref="tns:Atom-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Chiral-center_n1Type">
+		<xs:sequence>
+			<xs:element ref="tns:Atom-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Chiral-center_n2Type">
+		<xs:sequence>
+			<xs:element ref="tns:Atom-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Chiral-center_n3Type">
+		<xs:sequence>
+			<xs:element ref="tns:Atom-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Chiral-center_signType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="positive"/>
+					<xs:enumeration value="negative"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Cit-artType">
+		<xs:sequence>
+			<xs:element name="Cit-art_title" type="tns:Cit-art_titleType" minOccurs="0"/>
+			<xs:element name="Cit-art_authors" type="tns:Cit-art_authorsType" minOccurs="0"/>
+			<xs:element name="Cit-art_from" type="tns:Cit-art_fromType"/>
+			<xs:element name="Cit-art_ids" type="tns:Cit-art_idsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-art_authorsType">
+		<xs:sequence>
+			<xs:element name="Auth-list" type="tns:Auth-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-art_fromType">
+		<xs:choice>
+			<xs:element name="Cit-art_from_journal" type="tns:Cit-art_from_journalType"/>
+			<xs:element name="Cit-art_from_book" type="tns:Cit-art_from_bookType"/>
+			<xs:element name="Cit-art_from_proc" type="tns:Cit-art_from_procType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Cit-art_from_bookType">
+		<xs:sequence>
+			<xs:element name="Cit-book" type="tns:Cit-bookType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-art_from_journalType">
+		<xs:sequence>
+			<xs:element name="Cit-jour" type="tns:Cit-jourType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-art_from_procType">
+		<xs:sequence>
+			<xs:element name="Cit-proc" type="tns:Cit-procType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-art_idsType">
+		<xs:sequence>
+			<xs:element name="ArticleIdSet" type="tns:ArticleIdSetType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-art_titleType">
+		<xs:sequence>
+			<xs:element name="Title" type="tns:TitleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-bookType">
+		<xs:sequence>
+			<xs:element name="Cit-book_title" type="tns:Cit-book_titleType"/>
+			<xs:element name="Cit-book_coll" type="tns:Cit-book_collType" minOccurs="0"/>
+			<xs:element name="Cit-book_authors" type="tns:Cit-book_authorsType"/>
+			<xs:element name="Cit-book_imp" type="tns:Cit-book_impType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-book_authorsType">
+		<xs:sequence>
+			<xs:element name="Auth-list" type="tns:Auth-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-book_collType">
+		<xs:sequence>
+			<xs:element name="Title" type="tns:TitleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-book_impType">
+		<xs:sequence>
+			<xs:element name="Imprint" type="tns:ImprintType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-book_titleType">
+		<xs:sequence>
+			<xs:element name="Title" type="tns:TitleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-genType">
+		<xs:sequence>
+			<xs:element ref="tns:Cit-gen_cit" minOccurs="0"/>
+			<xs:element name="Cit-gen_authors" type="tns:Cit-gen_authorsType" minOccurs="0"/>
+			<xs:element ref="tns:Cit-gen_muid" minOccurs="0"/>
+			<xs:element name="Cit-gen_journal" type="tns:Cit-gen_journalType" minOccurs="0"/>
+			<xs:element ref="tns:Cit-gen_volume" minOccurs="0"/>
+			<xs:element ref="tns:Cit-gen_issue" minOccurs="0"/>
+			<xs:element ref="tns:Cit-gen_pages" minOccurs="0"/>
+			<xs:element name="Cit-gen_date" type="tns:Cit-gen_dateType" minOccurs="0"/>
+			<xs:element ref="tns:Cit-gen_serial-number" minOccurs="0"/>
+			<xs:element ref="tns:Cit-gen_title" minOccurs="0"/>
+			<xs:element name="Cit-gen_pmid" type="tns:Cit-gen_pmidType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-gen_authorsType">
+		<xs:sequence>
+			<xs:element name="Auth-list" type="tns:Auth-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cit-gen_cit" type="xs:string"/>
+	<xs:complexType name="Cit-gen_dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cit-gen_issue" type="xs:string"/>
+	<xs:complexType name="Cit-gen_journalType">
+		<xs:sequence>
+			<xs:element name="Title" type="tns:TitleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cit-gen_muid" type="xs:string"/>
+	<xs:element name="Cit-gen_pages" type="xs:string"/>
+	<xs:complexType name="Cit-gen_pmidType">
+		<xs:sequence>
+			<xs:element ref="tns:PubMedId"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cit-gen_serial-number" type="xs:string"/>
+	<xs:element name="Cit-gen_title" type="xs:string"/>
+	<xs:element name="Cit-gen_volume" type="xs:string"/>
+	<xs:complexType name="Cit-jourType">
+		<xs:sequence>
+			<xs:element name="Cit-jour_title" type="tns:Cit-jour_titleType"/>
+			<xs:element name="Cit-jour_imp" type="tns:Cit-jour_impType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-jour_impType">
+		<xs:sequence>
+			<xs:element name="Imprint" type="tns:ImprintType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-jour_titleType">
+		<xs:sequence>
+			<xs:element name="Title" type="tns:TitleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-letType">
+		<xs:sequence>
+			<xs:element name="Cit-let_cit" type="tns:Cit-let_citType"/>
+			<xs:element ref="tns:Cit-let_man-id" minOccurs="0"/>
+			<xs:element name="Cit-let_type" type="tns:Cit-let_typeType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-let_citType">
+		<xs:sequence>
+			<xs:element name="Cit-book" type="tns:Cit-bookType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cit-let_man-id" type="xs:string"/>
+	<xs:complexType name="Cit-let_typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="manuscript"/>
+					<xs:enumeration value="letter"/>
+					<xs:enumeration value="thesis"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Cit-patType">
+		<xs:sequence>
+			<xs:element ref="tns:Cit-pat_title"/>
+			<xs:element name="Cit-pat_authors" type="tns:Cit-pat_authorsType"/>
+			<xs:element ref="tns:Cit-pat_country"/>
+			<xs:element ref="tns:Cit-pat_doc-type"/>
+			<xs:element ref="tns:Cit-pat_number" minOccurs="0"/>
+			<xs:element name="Cit-pat_date-issue" type="tns:Cit-pat_date-issueType" minOccurs="0"/>
+			<xs:element name="Cit-pat_class" type="tns:Cit-pat_classType" minOccurs="0"/>
+			<xs:element ref="tns:Cit-pat_app-number" minOccurs="0"/>
+			<xs:element name="Cit-pat_app-date" type="tns:Cit-pat_app-dateType" minOccurs="0"/>
+			<xs:element name="Cit-pat_applicants" type="tns:Cit-pat_applicantsType" minOccurs="0"/>
+			<xs:element name="Cit-pat_assignees" type="tns:Cit-pat_assigneesType" minOccurs="0"/>
+			<xs:element name="Cit-pat_priority" type="tns:Cit-pat_priorityType" minOccurs="0"/>
+			<xs:element ref="tns:Cit-pat_abstract" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cit-pat_abstract" type="xs:string"/>
+	<xs:complexType name="Cit-pat_app-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cit-pat_app-number" type="xs:string"/>
+	<xs:complexType name="Cit-pat_applicantsType">
+		<xs:sequence>
+			<xs:element name="Auth-list" type="tns:Auth-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-pat_assigneesType">
+		<xs:sequence>
+			<xs:element name="Auth-list" type="tns:Auth-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-pat_authorsType">
+		<xs:sequence>
+			<xs:element name="Auth-list" type="tns:Auth-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-pat_classType">
+		<xs:sequence>
+			<xs:element ref="tns:Cit-pat_class_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cit-pat_class_E" type="xs:string"/>
+	<xs:element name="Cit-pat_country" type="xs:string"/>
+	<xs:complexType name="Cit-pat_date-issueType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cit-pat_doc-type" type="xs:string"/>
+	<xs:element name="Cit-pat_number" type="xs:string"/>
+	<xs:complexType name="Cit-pat_priorityType">
+		<xs:sequence>
+			<xs:element name="Patent-priority" type="tns:Patent-priorityType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cit-pat_title" type="xs:string"/>
+	<xs:complexType name="Cit-procType">
+		<xs:sequence>
+			<xs:element name="Cit-proc_book" type="tns:Cit-proc_bookType"/>
+			<xs:element name="Cit-proc_meet" type="tns:Cit-proc_meetType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-proc_bookType">
+		<xs:sequence>
+			<xs:element name="Cit-book" type="tns:Cit-bookType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-proc_meetType">
+		<xs:sequence>
+			<xs:element name="Meeting" type="tns:MeetingType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-subType">
+		<xs:sequence>
+			<xs:element name="Cit-sub_authors" type="tns:Cit-sub_authorsType"/>
+			<xs:element name="Cit-sub_imp" type="tns:Cit-sub_impType" minOccurs="0"/>
+			<xs:element name="Cit-sub_medium" type="tns:Cit-sub_mediumType" minOccurs="0"/>
+			<xs:element name="Cit-sub_date" type="tns:Cit-sub_dateType" minOccurs="0"/>
+			<xs:element ref="tns:Cit-sub_descr" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-sub_authorsType">
+		<xs:sequence>
+			<xs:element name="Auth-list" type="tns:Auth-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-sub_dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cit-sub_descr" type="xs:string"/>
+	<xs:complexType name="Cit-sub_impType">
+		<xs:sequence>
+			<xs:element name="Imprint" type="tns:ImprintType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cit-sub_mediumType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="paper"/>
+					<xs:enumeration value="tape"/>
+					<xs:enumeration value="floppy"/>
+					<xs:enumeration value="email"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="CitRetractType">
+		<xs:sequence>
+			<xs:element name="CitRetract_type" type="tns:CitRetract_typeType"/>
+			<xs:element ref="tns:CitRetract_exp" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="CitRetract_exp" type="xs:string"/>
+	<xs:complexType name="CitRetract_typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="retracted"/>
+					<xs:enumeration value="notice"/>
+					<xs:enumeration value="in-error"/>
+					<xs:enumeration value="erratum"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-GL-matrixType">
+		<xs:sequence>
+			<xs:element ref="tns:Cn3d-GL-matrix_m0"/>
+			<xs:element ref="tns:Cn3d-GL-matrix_m1"/>
+			<xs:element ref="tns:Cn3d-GL-matrix_m2"/>
+			<xs:element ref="tns:Cn3d-GL-matrix_m3"/>
+			<xs:element ref="tns:Cn3d-GL-matrix_m4"/>
+			<xs:element ref="tns:Cn3d-GL-matrix_m5"/>
+			<xs:element ref="tns:Cn3d-GL-matrix_m6"/>
+			<xs:element ref="tns:Cn3d-GL-matrix_m7"/>
+			<xs:element ref="tns:Cn3d-GL-matrix_m8"/>
+			<xs:element ref="tns:Cn3d-GL-matrix_m9"/>
+			<xs:element ref="tns:Cn3d-GL-matrix_m10"/>
+			<xs:element ref="tns:Cn3d-GL-matrix_m11"/>
+			<xs:element ref="tns:Cn3d-GL-matrix_m12"/>
+			<xs:element ref="tns:Cn3d-GL-matrix_m13"/>
+			<xs:element ref="tns:Cn3d-GL-matrix_m14"/>
+			<xs:element ref="tns:Cn3d-GL-matrix_m15"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cn3d-GL-matrix_m0" type="xs:string"/>
+	<xs:element name="Cn3d-GL-matrix_m1" type="xs:string"/>
+	<xs:element name="Cn3d-GL-matrix_m10" type="xs:string"/>
+	<xs:element name="Cn3d-GL-matrix_m11" type="xs:string"/>
+	<xs:element name="Cn3d-GL-matrix_m12" type="xs:string"/>
+	<xs:element name="Cn3d-GL-matrix_m13" type="xs:string"/>
+	<xs:element name="Cn3d-GL-matrix_m14" type="xs:string"/>
+	<xs:element name="Cn3d-GL-matrix_m15" type="xs:string"/>
+	<xs:element name="Cn3d-GL-matrix_m2" type="xs:string"/>
+	<xs:element name="Cn3d-GL-matrix_m3" type="xs:string"/>
+	<xs:element name="Cn3d-GL-matrix_m4" type="xs:string"/>
+	<xs:element name="Cn3d-GL-matrix_m5" type="xs:string"/>
+	<xs:element name="Cn3d-GL-matrix_m6" type="xs:string"/>
+	<xs:element name="Cn3d-GL-matrix_m7" type="xs:string"/>
+	<xs:element name="Cn3d-GL-matrix_m8" type="xs:string"/>
+	<xs:element name="Cn3d-GL-matrix_m9" type="xs:string"/>
+	<xs:complexType name="Cn3d-backbone-label-styleType">
+		<xs:sequence>
+			<xs:element ref="tns:Cn3d-backbone-label-style_spacing"/>
+			<xs:element name="Cn3d-backbone-label-style_type" type="tns:Cn3d-backbone-label-style_typeType"/>
+			<xs:element name="Cn3d-backbone-label-style_number" type="tns:Cn3d-backbone-label-style_numberType"/>
+			<xs:element name="Cn3d-backbone-label-style_termini" type="tns:Cn3d-backbone-label-style_terminiType"/>
+			<xs:element name="Cn3d-backbone-label-style_white" type="tns:Cn3d-backbone-label-style_whiteType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-backbone-label-style_numberType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="none"/>
+					<xs:enumeration value="sequential"/>
+					<xs:enumeration value="pdb"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Cn3d-backbone-label-style_spacing" type="xs:string"/>
+	<xs:complexType name="Cn3d-backbone-label-style_terminiType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-backbone-label-style_typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="one-letter"/>
+					<xs:enumeration value="three-letter"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-backbone-label-style_whiteType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-backbone-styleType">
+		<xs:sequence>
+			<xs:element name="Cn3d-backbone-style_type" type="tns:Cn3d-backbone-style_typeType"/>
+			<xs:element name="Cn3d-backbone-style_style" type="tns:Cn3d-backbone-style_styleType"/>
+			<xs:element name="Cn3d-backbone-style_color-scheme" type="tns:Cn3d-backbone-style_color-schemeType"/>
+			<xs:element name="Cn3d-backbone-style_user-color" type="tns:Cn3d-backbone-style_user-colorType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-backbone-style_color-schemeType">
+		<xs:sequence>
+			<xs:element name="Cn3d-color-scheme" type="tns:Cn3d-color-schemeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-backbone-style_styleType">
+		<xs:sequence>
+			<xs:element name="Cn3d-drawing-style" type="tns:Cn3d-drawing-styleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-backbone-style_typeType">
+		<xs:sequence>
+			<xs:element name="Cn3d-backbone-type" type="tns:Cn3d-backbone-typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-backbone-style_user-colorType">
+		<xs:sequence>
+			<xs:element name="Cn3d-color" type="tns:Cn3d-colorType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-backbone-typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="off"/>
+					<xs:enumeration value="trace"/>
+					<xs:enumeration value="partial"/>
+					<xs:enumeration value="complete"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-colorType">
+		<xs:sequence>
+			<xs:element ref="tns:Cn3d-color_scale-factor" minOccurs="0"/>
+			<xs:element ref="tns:Cn3d-color_red"/>
+			<xs:element ref="tns:Cn3d-color_green"/>
+			<xs:element ref="tns:Cn3d-color_blue"/>
+			<xs:element ref="tns:Cn3d-color_alpha" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-color-schemeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="element"/>
+					<xs:enumeration value="object"/>
+					<xs:enumeration value="molecule"/>
+					<xs:enumeration value="domain"/>
+					<xs:enumeration value="residue"/>
+					<xs:enumeration value="secondary-structure"/>
+					<xs:enumeration value="user-select"/>
+					<xs:enumeration value="aligned"/>
+					<xs:enumeration value="identity"/>
+					<xs:enumeration value="variety"/>
+					<xs:enumeration value="weighted-variety"/>
+					<xs:enumeration value="information-content"/>
+					<xs:enumeration value="fit"/>
+					<xs:enumeration value="block-fit"/>
+					<xs:enumeration value="block-z-fit"/>
+					<xs:enumeration value="block-row-fit"/>
+					<xs:enumeration value="temperature"/>
+					<xs:enumeration value="hydrophobicity"/>
+					<xs:enumeration value="charge"/>
+					<xs:enumeration value="rainbow"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Cn3d-color_alpha" type="xs:string"/>
+	<xs:element name="Cn3d-color_blue" type="xs:string"/>
+	<xs:element name="Cn3d-color_green" type="xs:string"/>
+	<xs:element name="Cn3d-color_red" type="xs:string"/>
+	<xs:element name="Cn3d-color_scale-factor" type="xs:string"/>
+	<xs:complexType name="Cn3d-drawing-styleType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="wire"/>
+					<xs:enumeration value="tubes"/>
+					<xs:enumeration value="ball-and-stick"/>
+					<xs:enumeration value="space-fill"/>
+					<xs:enumeration value="wire-worm"/>
+					<xs:enumeration value="tube-worm"/>
+					<xs:enumeration value="with-arrows"/>
+					<xs:enumeration value="without-arrows"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-general-styleType">
+		<xs:sequence>
+			<xs:element name="Cn3d-general-style_is-on" type="tns:Cn3d-general-style_is-onType"/>
+			<xs:element name="Cn3d-general-style_style" type="tns:Cn3d-general-style_styleType"/>
+			<xs:element name="Cn3d-general-style_color-scheme" type="tns:Cn3d-general-style_color-schemeType"/>
+			<xs:element name="Cn3d-general-style_user-color" type="tns:Cn3d-general-style_user-colorType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-general-style_color-schemeType">
+		<xs:sequence>
+			<xs:element name="Cn3d-color-scheme" type="tns:Cn3d-color-schemeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-general-style_is-onType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-general-style_styleType">
+		<xs:sequence>
+			<xs:element name="Cn3d-drawing-style" type="tns:Cn3d-drawing-styleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-general-style_user-colorType">
+		<xs:sequence>
+			<xs:element name="Cn3d-color" type="tns:Cn3d-colorType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-molecule-locationType">
+		<xs:sequence>
+			<xs:element name="Cn3d-molecule-location_molecule-id" type="tns:Cn3d-molecule-location_molecule-idType"/>
+			<xs:element name="Cn3d-molecule-location_residues" type="tns:Cn3d-molecule-location_residuesType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-molecule-location_molecule-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Molecule-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-molecule-location_residuesType">
+		<xs:sequence>
+			<xs:element name="Cn3d-residue-range" type="tns:Cn3d-residue-rangeType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-object-locationType">
+		<xs:sequence>
+			<xs:element name="Cn3d-object-location_structure-id" type="tns:Cn3d-object-location_structure-idType"/>
+			<xs:element name="Cn3d-object-location_residues" type="tns:Cn3d-object-location_residuesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-object-location_residuesType">
+		<xs:sequence>
+			<xs:element name="Cn3d-molecule-location" type="tns:Cn3d-molecule-locationType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-object-location_structure-idType">
+		<xs:sequence>
+			<xs:element name="Biostruc-id" type="tns:Biostruc-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-residue-rangeType">
+		<xs:sequence>
+			<xs:element name="Cn3d-residue-range_from" type="tns:Cn3d-residue-range_fromType"/>
+			<xs:element name="Cn3d-residue-range_to" type="tns:Cn3d-residue-range_toType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-residue-range_fromType">
+		<xs:sequence>
+			<xs:element ref="tns:Residue-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-residue-range_toType">
+		<xs:sequence>
+			<xs:element ref="tns:Residue-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-style-dictionaryType">
+		<xs:sequence>
+			<xs:element name="Cn3d-style-dictionary_global-style" type="tns:Cn3d-style-dictionary_global-styleType"/>
+			<xs:element name="Cn3d-style-dictionary_style-table" type="tns:Cn3d-style-dictionary_style-tableType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-style-dictionary_global-styleType">
+		<xs:sequence>
+			<xs:element name="Cn3d-style-settings" type="tns:Cn3d-style-settingsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-style-dictionary_style-tableType">
+		<xs:sequence>
+			<xs:element name="Cn3d-style-table-item" type="tns:Cn3d-style-table-itemType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-style-settingsType">
+		<xs:sequence>
+			<xs:element ref="tns:Cn3d-style-settings_name" minOccurs="0"/>
+			<xs:element name="Cn3d-style-settings_protein-backbone" type="tns:Cn3d-style-settings_protein-backboneType"/>
+			<xs:element name="Cn3d-style-settings_nucleotide-backbone" type="tns:Cn3d-style-settings_nucleotide-backboneType"/>
+			<xs:element name="Cn3d-style-settings_protein-sidechains" type="tns:Cn3d-style-settings_protein-sidechainsType"/>
+			<xs:element name="Cn3d-style-settings_nucleotide-sidechains" type="tns:Cn3d-style-settings_nucleotide-sidechainsType"/>
+			<xs:element name="Cn3d-style-settings_heterogens" type="tns:Cn3d-style-settings_heterogensType"/>
+			<xs:element name="Cn3d-style-settings_solvents" type="tns:Cn3d-style-settings_solventsType"/>
+			<xs:element name="Cn3d-style-settings_connections" type="tns:Cn3d-style-settings_connectionsType"/>
+			<xs:element name="Cn3d-style-settings_helix-objects" type="tns:Cn3d-style-settings_helix-objectsType"/>
+			<xs:element name="Cn3d-style-settings_strand-objects" type="tns:Cn3d-style-settings_strand-objectsType"/>
+			<xs:element name="Cn3d-style-settings_virtual-disulfides-on" type="tns:Cn3d-style-settings_virtual-disulfides-onType"/>
+			<xs:element name="Cn3d-style-settings_virtual-disulfide-color" type="tns:Cn3d-style-settings_virtual-disulfide-colorType"/>
+			<xs:element name="Cn3d-style-settings_hydrogens-on" type="tns:Cn3d-style-settings_hydrogens-onType"/>
+			<xs:element name="Cn3d-style-settings_background-color" type="tns:Cn3d-style-settings_background-colorType"/>
+			<xs:element ref="tns:Cn3d-style-settings_scale-factor"/>
+			<xs:element ref="tns:Cn3d-style-settings_space-fill-proportion"/>
+			<xs:element ref="tns:Cn3d-style-settings_ball-radius"/>
+			<xs:element ref="tns:Cn3d-style-settings_stick-radius"/>
+			<xs:element ref="tns:Cn3d-style-settings_tube-radius"/>
+			<xs:element ref="tns:Cn3d-style-settings_tube-worm-radius"/>
+			<xs:element ref="tns:Cn3d-style-settings_helix-radius"/>
+			<xs:element ref="tns:Cn3d-style-settings_strand-width"/>
+			<xs:element ref="tns:Cn3d-style-settings_strand-thickness"/>
+			<xs:element name="Cn3d-style-settings_protein-labels" type="tns:Cn3d-style-settings_protein-labelsType" minOccurs="0"/>
+			<xs:element name="Cn3d-style-settings_nucleotide-labels" type="tns:Cn3d-style-settings_nucleotide-labelsType" minOccurs="0"/>
+			<xs:element name="Cn3d-style-settings_ion-labels" type="tns:Cn3d-style-settings_ion-labelsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cn3d-style-settings-set">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Cn3d-style-settings" type="tns:Cn3d-style-settingsType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Cn3d-style-settings_background-colorType">
+		<xs:sequence>
+			<xs:element name="Cn3d-color" type="tns:Cn3d-colorType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cn3d-style-settings_ball-radius" type="xs:string"/>
+	<xs:complexType name="Cn3d-style-settings_connectionsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-general-style" type="tns:Cn3d-general-styleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-style-settings_helix-objectsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-general-style" type="tns:Cn3d-general-styleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cn3d-style-settings_helix-radius" type="xs:string"/>
+	<xs:complexType name="Cn3d-style-settings_heterogensType">
+		<xs:sequence>
+			<xs:element name="Cn3d-general-style" type="tns:Cn3d-general-styleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-style-settings_hydrogens-onType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-style-settings_ion-labelsType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Cn3d-style-settings_name" type="xs:string"/>
+	<xs:complexType name="Cn3d-style-settings_nucleotide-backboneType">
+		<xs:sequence>
+			<xs:element name="Cn3d-backbone-style" type="tns:Cn3d-backbone-styleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-style-settings_nucleotide-labelsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-backbone-label-style" type="tns:Cn3d-backbone-label-styleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-style-settings_nucleotide-sidechainsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-general-style" type="tns:Cn3d-general-styleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-style-settings_protein-backboneType">
+		<xs:sequence>
+			<xs:element name="Cn3d-backbone-style" type="tns:Cn3d-backbone-styleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-style-settings_protein-labelsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-backbone-label-style" type="tns:Cn3d-backbone-label-styleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-style-settings_protein-sidechainsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-general-style" type="tns:Cn3d-general-styleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cn3d-style-settings_scale-factor" type="xs:string"/>
+	<xs:complexType name="Cn3d-style-settings_solventsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-general-style" type="tns:Cn3d-general-styleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cn3d-style-settings_space-fill-proportion" type="xs:string"/>
+	<xs:element name="Cn3d-style-settings_stick-radius" type="xs:string"/>
+	<xs:complexType name="Cn3d-style-settings_strand-objectsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-general-style" type="tns:Cn3d-general-styleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cn3d-style-settings_strand-thickness" type="xs:string"/>
+	<xs:element name="Cn3d-style-settings_strand-width" type="xs:string"/>
+	<xs:element name="Cn3d-style-settings_tube-radius" type="xs:string"/>
+	<xs:element name="Cn3d-style-settings_tube-worm-radius" type="xs:string"/>
+	<xs:complexType name="Cn3d-style-settings_virtual-disulfide-colorType">
+		<xs:sequence>
+			<xs:element name="Cn3d-color" type="tns:Cn3d-colorType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-style-settings_virtual-disulfides-onType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Cn3d-style-table-id" type="xs:string"/>
+	<xs:complexType name="Cn3d-style-table-itemType">
+		<xs:sequence>
+			<xs:element name="Cn3d-style-table-item_id" type="tns:Cn3d-style-table-item_idType"/>
+			<xs:element name="Cn3d-style-table-item_style" type="tns:Cn3d-style-table-item_styleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-style-table-item_idType">
+		<xs:sequence>
+			<xs:element ref="tns:Cn3d-style-table-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-style-table-item_styleType">
+		<xs:sequence>
+			<xs:element name="Cn3d-style-settings" type="tns:Cn3d-style-settingsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-user-annotationType">
+		<xs:sequence>
+			<xs:element ref="tns:Cn3d-user-annotation_name"/>
+			<xs:element ref="tns:Cn3d-user-annotation_description" minOccurs="0"/>
+			<xs:element name="Cn3d-user-annotation_style-id" type="tns:Cn3d-user-annotation_style-idType"/>
+			<xs:element name="Cn3d-user-annotation_residues" type="tns:Cn3d-user-annotation_residuesType"/>
+			<xs:element name="Cn3d-user-annotation_is-on" type="tns:Cn3d-user-annotation_is-onType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cn3d-user-annotation_description" type="xs:string"/>
+	<xs:complexType name="Cn3d-user-annotation_is-onType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Cn3d-user-annotation_name" type="xs:string"/>
+	<xs:complexType name="Cn3d-user-annotation_residuesType">
+		<xs:sequence>
+			<xs:element name="Cn3d-object-location" type="tns:Cn3d-object-locationType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-user-annotation_style-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Cn3d-style-table-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-user-annotationsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-user-annotations_annotations" type="tns:Cn3d-user-annotations_annotationsType" minOccurs="0"/>
+			<xs:element name="Cn3d-user-annotations_view" type="tns:Cn3d-user-annotations_viewType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-user-annotations_annotationsType">
+		<xs:sequence>
+			<xs:element name="Cn3d-user-annotation" type="tns:Cn3d-user-annotationType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-user-annotations_viewType">
+		<xs:sequence>
+			<xs:element name="Cn3d-view-settings" type="tns:Cn3d-view-settingsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-vectorType">
+		<xs:sequence>
+			<xs:element ref="tns:Cn3d-vector_x"/>
+			<xs:element ref="tns:Cn3d-vector_y"/>
+			<xs:element ref="tns:Cn3d-vector_z"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cn3d-vector_x" type="xs:string"/>
+	<xs:element name="Cn3d-vector_y" type="xs:string"/>
+	<xs:element name="Cn3d-vector_z" type="xs:string"/>
+	<xs:complexType name="Cn3d-view-settingsType">
+		<xs:sequence>
+			<xs:element ref="tns:Cn3d-view-settings_camera-distance"/>
+			<xs:element ref="tns:Cn3d-view-settings_camera-angle-rad"/>
+			<xs:element ref="tns:Cn3d-view-settings_camera-look-at-X"/>
+			<xs:element ref="tns:Cn3d-view-settings_camera-look-at-Y"/>
+			<xs:element ref="tns:Cn3d-view-settings_camera-clip-near"/>
+			<xs:element ref="tns:Cn3d-view-settings_camera-clip-far"/>
+			<xs:element name="Cn3d-view-settings_matrix" type="tns:Cn3d-view-settings_matrixType"/>
+			<xs:element name="Cn3d-view-settings_rotation-center" type="tns:Cn3d-view-settings_rotation-centerType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Cn3d-view-settings_camera-angle-rad" type="xs:string"/>
+	<xs:element name="Cn3d-view-settings_camera-clip-far" type="xs:string"/>
+	<xs:element name="Cn3d-view-settings_camera-clip-near" type="xs:string"/>
+	<xs:element name="Cn3d-view-settings_camera-distance" type="xs:string"/>
+	<xs:element name="Cn3d-view-settings_camera-look-at-X" type="xs:string"/>
+	<xs:element name="Cn3d-view-settings_camera-look-at-Y" type="xs:string"/>
+	<xs:complexType name="Cn3d-view-settings_matrixType">
+		<xs:sequence>
+			<xs:element name="Cn3d-GL-matrix" type="tns:Cn3d-GL-matrixType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cn3d-view-settings_rotation-centerType">
+		<xs:sequence>
+			<xs:element name="Cn3d-vector" type="tns:Cn3d-vectorType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Code-breakType">
+		<xs:sequence>
+			<xs:element name="Code-break_loc" type="tns:Code-break_locType"/>
+			<xs:element name="Code-break_aa" type="tns:Code-break_aaType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Code-break_aaType">
+		<xs:choice>
+			<xs:element ref="tns:Code-break_aa_ncbieaa"/>
+			<xs:element ref="tns:Code-break_aa_ncbi8aa"/>
+			<xs:element ref="tns:Code-break_aa_ncbistdaa"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="Code-break_aa_ncbi8aa" type="xs:string"/>
+	<xs:element name="Code-break_aa_ncbieaa" type="xs:string"/>
+	<xs:element name="Code-break_aa_ncbistdaa" type="xs:string"/>
+	<xs:complexType name="Code-break_locType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Color-propType">
+		<xs:sequence>
+			<xs:element ref="tns:Color-prop_r" minOccurs="0"/>
+			<xs:element ref="tns:Color-prop_g" minOccurs="0"/>
+			<xs:element ref="tns:Color-prop_b" minOccurs="0"/>
+			<xs:element ref="tns:Color-prop_name" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Color-prop_b" type="xs:string"/>
+	<xs:element name="Color-prop_g" type="xs:string"/>
+	<xs:element name="Color-prop_name" type="xs:string"/>
+	<xs:element name="Color-prop_r" type="xs:string"/>
+	<xs:complexType name="ComponentType">
+		<xs:sequence>
+			<xs:element name="Component_componentType" type="tns:Component_componentTypeType" minOccurs="0"/>
+			<xs:element ref="tns:Component_ctgId" minOccurs="0"/>
+			<xs:element ref="tns:Component_accession" minOccurs="0"/>
+			<xs:element ref="tns:Component_name" minOccurs="0"/>
+			<xs:element ref="tns:Component_chromosome" minOccurs="0"/>
+			<xs:element ref="tns:Component_start" minOccurs="0"/>
+			<xs:element ref="tns:Component_end" minOccurs="0"/>
+			<xs:element name="Component_orientation" type="tns:Component_orientationType" minOccurs="0"/>
+			<xs:element ref="tns:Component_gi" minOccurs="0"/>
+			<xs:element ref="tns:Component_groupTerm" minOccurs="0"/>
+			<xs:element ref="tns:Component_contigLabel" minOccurs="0"/>
+			<xs:element name="Component_mapLoc" type="tns:Component_mapLocType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Component_accession" type="xs:string"/>
+	<xs:element name="Component_chromosome" type="xs:string"/>
+	<xs:complexType name="Component_componentTypeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="contig"/>
+					<xs:enumeration value="mrna"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Component_contigLabel" type="xs:string"/>
+	<xs:element name="Component_ctgId" type="xs:string"/>
+	<xs:element name="Component_end" type="xs:string"/>
+	<xs:element name="Component_gi" type="xs:string"/>
+	<xs:element name="Component_groupTerm" type="xs:string"/>
+	<xs:complexType name="Component_mapLocType">
+		<xs:sequence>
+			<xs:element name="MapLoc" type="tns:MapLocType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Component_name" type="xs:string"/>
+	<xs:complexType name="Component_orientationType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="fwd"/>
+					<xs:enumeration value="rev"/>
+					<xs:enumeration value="unknown"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Component_start" type="xs:string"/>
+	<xs:complexType name="ConeType">
+		<xs:sequence>
+			<xs:element name="Cone_axis-top" type="tns:Cone_axis-topType"/>
+			<xs:element name="Cone_axis-bottom" type="tns:Cone_axis-bottomType"/>
+			<xs:element name="Cone_radius-bottom" type="tns:Cone_radius-bottomType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cone_axis-bottomType">
+		<xs:sequence>
+			<xs:element name="Model-space-point" type="tns:Model-space-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cone_axis-topType">
+		<xs:sequence>
+			<xs:element name="Model-space-point" type="tns:Model-space-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cone_radius-bottomType">
+		<xs:sequence>
+			<xs:element name="RealValue" type="tns:RealValueType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Conformation-ensembleType">
+		<xs:sequence>
+			<xs:element ref="tns:Conformation-ensemble_name"/>
+			<xs:element name="Conformation-ensemble_alt-conf-ids" type="tns:Conformation-ensemble_alt-conf-idsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Conformation-ensemble_alt-conf-idsType">
+		<xs:sequence>
+			<xs:element ref="tns:Alternate-conformation-id" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Conformation-ensemble_name" type="xs:string"/>
+	<xs:complexType name="Contact-infoType">
+		<xs:sequence>
+			<xs:element ref="tns:Contact-info_name" minOccurs="0"/>
+			<xs:element name="Contact-info_address" type="tns:Contact-info_addressType" minOccurs="0"/>
+			<xs:element ref="tns:Contact-info_phone" minOccurs="0"/>
+			<xs:element ref="tns:Contact-info_fax" minOccurs="0"/>
+			<xs:element ref="tns:Contact-info_email" minOccurs="0"/>
+			<xs:element ref="tns:Contact-info_telex" minOccurs="0"/>
+			<xs:element name="Contact-info_owner-id" type="tns:Contact-info_owner-idType" minOccurs="0"/>
+			<xs:element ref="tns:Contact-info_password" minOccurs="0"/>
+			<xs:element ref="tns:Contact-info_last-name" minOccurs="0"/>
+			<xs:element ref="tns:Contact-info_first-name" minOccurs="0"/>
+			<xs:element ref="tns:Contact-info_middle-initial" minOccurs="0"/>
+			<xs:element name="Contact-info_contact" type="tns:Contact-info_contactType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Contact-info_addressType">
+		<xs:sequence>
+			<xs:element ref="tns:Contact-info_address_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Contact-info_address_E" type="xs:string"/>
+	<xs:complexType name="Contact-info_contactType">
+		<xs:sequence>
+			<xs:element name="Author" type="tns:AuthorType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Contact-info_email" type="xs:string"/>
+	<xs:element name="Contact-info_fax" type="xs:string"/>
+	<xs:element name="Contact-info_first-name" type="xs:string"/>
+	<xs:element name="Contact-info_last-name" type="xs:string"/>
+	<xs:element name="Contact-info_middle-initial" type="xs:string"/>
+	<xs:element name="Contact-info_name" type="xs:string"/>
+	<xs:complexType name="Contact-info_owner-idType">
+		<xs:sequence>
+			<xs:element name="Object-id" type="tns:Object-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Contact-info_password" type="xs:string"/>
+	<xs:element name="Contact-info_phone" type="xs:string"/>
+	<xs:element name="Contact-info_telex" type="xs:string"/>
+	<xs:complexType name="CoordinatesType">
+		<xs:choice>
+			<xs:element name="Coordinates_atomic" type="tns:Coordinates_atomicType"/>
+			<xs:element name="Coordinates_surface" type="tns:Coordinates_surfaceType"/>
+			<xs:element name="Coordinates_density" type="tns:Coordinates_densityType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Coordinates_atomicType">
+		<xs:sequence>
+			<xs:element name="Atomic-coordinates" type="tns:Atomic-coordinatesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Coordinates_densityType">
+		<xs:sequence>
+			<xs:element name="Density-coordinates" type="tns:Density-coordinatesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Coordinates_surfaceType">
+		<xs:sequence>
+			<xs:element name="Surface-coordinates" type="tns:Surface-coordinatesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="CoreBlockType">
+		<xs:sequence>
+			<xs:element ref="tns:CoreBlock_start"/>
+			<xs:element ref="tns:CoreBlock_stop"/>
+			<xs:element ref="tns:CoreBlock_minstart" minOccurs="0"/>
+			<xs:element ref="tns:CoreBlock_maxstop" minOccurs="0"/>
+			<xs:element name="CoreBlock_property" type="tns:CoreBlock_propertyType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="CoreBlock_maxstop" type="xs:string"/>
+	<xs:element name="CoreBlock_minstart" type="xs:string"/>
+	<xs:complexType name="CoreBlock_propertyType">
+		<xs:sequence>
+			<xs:element name="BlockProperty" type="tns:BlockPropertyType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="CoreBlock_start" type="xs:string"/>
+	<xs:element name="CoreBlock_stop" type="xs:string"/>
+	<xs:complexType name="CoreDefType">
+		<xs:sequence>
+			<xs:element ref="tns:CoreDef_nblocks"/>
+			<xs:element name="CoreDef_blocks" type="tns:CoreDef_blocksType"/>
+			<xs:element name="CoreDef_loops" type="tns:CoreDef_loopsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="CoreDef_blocksType">
+		<xs:sequence>
+			<xs:element name="CoreBlock" type="tns:CoreBlockType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="CoreDef_loopsType">
+		<xs:sequence>
+			<xs:element name="LoopConstraint" type="tns:LoopConstraintType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="CoreDef_nblocks" type="xs:string"/>
+	<xs:complexType name="CylinderType">
+		<xs:sequence>
+			<xs:element name="Cylinder_axis-top" type="tns:Cylinder_axis-topType"/>
+			<xs:element name="Cylinder_axis-bottom" type="tns:Cylinder_axis-bottomType"/>
+			<xs:element name="Cylinder_radius" type="tns:Cylinder_radiusType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cylinder_axis-bottomType">
+		<xs:sequence>
+			<xs:element name="Model-space-point" type="tns:Model-space-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cylinder_axis-topType">
+		<xs:sequence>
+			<xs:element name="Model-space-point" type="tns:Model-space-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Cylinder_radiusType">
+		<xs:sequence>
+			<xs:element name="RealValue" type="tns:RealValueType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="DOI" type="xs:string"/>
+	<xs:complexType name="DateType">
+		<xs:choice>
+			<xs:element ref="tns:Date_str"/>
+			<xs:element name="Date_std" type="tns:Date_stdType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Date-stdType">
+		<xs:sequence>
+			<xs:element ref="tns:Date-std_year"/>
+			<xs:element ref="tns:Date-std_month" minOccurs="0"/>
+			<xs:element ref="tns:Date-std_day" minOccurs="0"/>
+			<xs:element ref="tns:Date-std_season" minOccurs="0"/>
+			<xs:element ref="tns:Date-std_hour" minOccurs="0"/>
+			<xs:element ref="tns:Date-std_minute" minOccurs="0"/>
+			<xs:element ref="tns:Date-std_second" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Date-std_day" type="xs:string"/>
+	<xs:element name="Date-std_hour" type="xs:string"/>
+	<xs:element name="Date-std_minute" type="xs:string"/>
+	<xs:element name="Date-std_month" type="xs:string"/>
+	<xs:element name="Date-std_season" type="xs:string"/>
+	<xs:element name="Date-std_second" type="xs:string"/>
+	<xs:element name="Date-std_year" type="xs:string"/>
+	<xs:complexType name="Date_stdType">
+		<xs:sequence>
+			<xs:element name="Date-std" type="tns:Date-stdType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Date_str" type="xs:string"/>
+	<xs:complexType name="DbtagType">
+		<xs:sequence>
+			<xs:element ref="tns:Dbtag_db"/>
+			<xs:element name="Dbtag_tag" type="tns:Dbtag_tagType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Dbtag_db" type="xs:string"/>
+	<xs:complexType name="Dbtag_tagType">
+		<xs:sequence>
+			<xs:element name="Object-id" type="tns:Object-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Delta-extType">
+		<xs:sequence>
+			<xs:element name="Delta-seq" type="tns:Delta-seqType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Delta-seqType">
+		<xs:choice>
+			<xs:element name="Delta-seq_loc" type="tns:Delta-seq_locType"/>
+			<xs:element name="Delta-seq_literal" type="tns:Delta-seq_literalType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Delta-seq_literalType">
+		<xs:sequence>
+			<xs:element name="Seq-literal" type="tns:Seq-literalType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Delta-seq_locType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Dense-diagType">
+		<xs:sequence>
+			<xs:element ref="tns:Dense-diag_dim" minOccurs="0"/>
+			<xs:element name="Dense-diag_ids" type="tns:Dense-diag_idsType"/>
+			<xs:element name="Dense-diag_starts" type="tns:Dense-diag_startsType"/>
+			<xs:element ref="tns:Dense-diag_len"/>
+			<xs:element name="Dense-diag_strands" type="tns:Dense-diag_strandsType" minOccurs="0"/>
+			<xs:element name="Dense-diag_scores" type="tns:Dense-diag_scoresType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Dense-diag_dim" type="xs:string"/>
+	<xs:complexType name="Dense-diag_idsType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Dense-diag_len" type="xs:string"/>
+	<xs:complexType name="Dense-diag_scoresType">
+		<xs:sequence>
+			<xs:element name="Score" type="tns:ScoreType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Dense-diag_startsType">
+		<xs:sequence>
+			<xs:element ref="tns:Dense-diag_starts_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Dense-diag_starts_E" type="xs:string"/>
+	<xs:complexType name="Dense-diag_strandsType">
+		<xs:sequence>
+			<xs:element name="Na-strand" type="tns:Na-strandType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Dense-segType">
+		<xs:sequence>
+			<xs:element ref="tns:Dense-seg_dim" minOccurs="0"/>
+			<xs:element ref="tns:Dense-seg_numseg"/>
+			<xs:element name="Dense-seg_ids" type="tns:Dense-seg_idsType"/>
+			<xs:element name="Dense-seg_starts" type="tns:Dense-seg_startsType"/>
+			<xs:element name="Dense-seg_lens" type="tns:Dense-seg_lensType"/>
+			<xs:element name="Dense-seg_strands" type="tns:Dense-seg_strandsType" minOccurs="0"/>
+			<xs:element name="Dense-seg_scores" type="tns:Dense-seg_scoresType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Dense-seg_dim" type="xs:string"/>
+	<xs:complexType name="Dense-seg_idsType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Dense-seg_lensType">
+		<xs:sequence>
+			<xs:element ref="tns:Dense-seg_lens_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Dense-seg_lens_E" type="xs:string"/>
+	<xs:element name="Dense-seg_numseg" type="xs:string"/>
+	<xs:complexType name="Dense-seg_scoresType">
+		<xs:sequence>
+			<xs:element name="Score" type="tns:ScoreType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Dense-seg_startsType">
+		<xs:sequence>
+			<xs:element ref="tns:Dense-seg_starts_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Dense-seg_starts_E" type="xs:string"/>
+	<xs:complexType name="Dense-seg_strandsType">
+		<xs:sequence>
+			<xs:element name="Na-strand" type="tns:Na-strandType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Density-coordinatesType">
+		<xs:sequence>
+			<xs:element name="Density-coordinates_contents" type="tns:Density-coordinates_contentsType"/>
+			<xs:element name="Density-coordinates_grid-corners" type="tns:Density-coordinates_grid-cornersType"/>
+			<xs:element ref="tns:Density-coordinates_grid-steps-x"/>
+			<xs:element ref="tns:Density-coordinates_grid-steps-y"/>
+			<xs:element ref="tns:Density-coordinates_grid-steps-z"/>
+			<xs:element name="Density-coordinates_fastest-varying" type="tns:Density-coordinates_fastest-varyingType"/>
+			<xs:element name="Density-coordinates_slowest-varying" type="tns:Density-coordinates_slowest-varyingType"/>
+			<xs:element ref="tns:Density-coordinates_scale-factor"/>
+			<xs:element name="Density-coordinates_density" type="tns:Density-coordinates_densityType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Density-coordinates_contentsType">
+		<xs:sequence>
+			<xs:element name="Chem-graph-pntrs" type="tns:Chem-graph-pntrsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Density-coordinates_densityType">
+		<xs:sequence>
+			<xs:element ref="tns:Density-coordinates_density_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Density-coordinates_density_E" type="xs:string"/>
+	<xs:complexType name="Density-coordinates_fastest-varyingType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="x"/>
+					<xs:enumeration value="y"/>
+					<xs:enumeration value="z"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Density-coordinates_grid-cornersType">
+		<xs:sequence>
+			<xs:element name="Brick" type="tns:BrickType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Density-coordinates_grid-steps-x" type="xs:string"/>
+	<xs:element name="Density-coordinates_grid-steps-y" type="xs:string"/>
+	<xs:element name="Density-coordinates_grid-steps-z" type="xs:string"/>
+	<xs:element name="Density-coordinates_scale-factor" type="xs:string"/>
+	<xs:complexType name="Density-coordinates_slowest-varyingType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="x"/>
+					<xs:enumeration value="y"/>
+					<xs:enumeration value="z"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="DocRefType">
+		<xs:sequence>
+			<xs:element name="DocRef_type" type="tns:DocRef_typeType"/>
+			<xs:element ref="tns:DocRef_uid"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="DocRef_typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="medline"/>
+							<xs:enumeration value="pubmed"/>
+							<xs:enumeration value="ncbigi"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="DocRef_uid" type="xs:string"/>
+	<xs:complexType name="Domain-parentType">
+		<xs:sequence>
+			<xs:element name="Domain-parent_parent-type" type="tns:Domain-parent_parent-typeType"/>
+			<xs:element name="Domain-parent_parentid" type="tns:Domain-parent_parentidType"/>
+			<xs:element name="Domain-parent_seqannot" type="tns:Domain-parent_seqannotType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Domain-parent_parent-typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="classical"/>
+							<xs:enumeration value="fusion"/>
+							<xs:enumeration value="deletion"/>
+							<xs:enumeration value="permutation"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Domain-parent_parentidType">
+		<xs:sequence>
+			<xs:element name="Cdd-id" type="tns:Cdd-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Domain-parent_seqannotType">
+		<xs:sequence>
+			<xs:element name="Seq-annot" type="tns:Seq-annotType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="E2ReplyType">
+		<xs:choice>
+			<xs:element ref="tns:E2Reply_error"/>
+			<xs:element name="E2Reply_get-info" type="tns:E2Reply_get-infoType"/>
+			<xs:element name="E2Reply_eval-boolean" type="tns:E2Reply_eval-booleanType"/>
+			<xs:element name="E2Reply_get-docsum" type="tns:E2Reply_get-docsumType"/>
+			<xs:element ref="tns:E2Reply_get-term-pos"/>
+			<xs:element name="E2Reply_get-term-list" type="tns:E2Reply_get-term-listType"/>
+			<xs:element name="E2Reply_get-term-hierarchy" type="tns:E2Reply_get-term-hierarchyType"/>
+			<xs:element name="E2Reply_get-links" type="tns:E2Reply_get-linksType"/>
+			<xs:element name="E2Reply_get-linked" type="tns:E2Reply_get-linkedType"/>
+			<xs:element name="E2Reply_get-link-counts" type="tns:E2Reply_get-link-countsType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="E2Reply_error" type="xs:string"/>
+	<xs:complexType name="E2Reply_eval-booleanType">
+		<xs:sequence>
+			<xs:element name="Entrez2-boolean-reply" type="tns:Entrez2-boolean-replyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="E2Reply_get-docsumType">
+		<xs:sequence>
+			<xs:element name="Entrez2-docsum-list" type="tns:Entrez2-docsum-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="E2Reply_get-infoType">
+		<xs:sequence>
+			<xs:element name="Entrez2-info" type="tns:Entrez2-infoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="E2Reply_get-link-countsType">
+		<xs:sequence>
+			<xs:element name="Entrez2-link-count-list" type="tns:Entrez2-link-count-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="E2Reply_get-linkedType">
+		<xs:sequence>
+			<xs:element name="Entrez2-id-list" type="tns:Entrez2-id-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="E2Reply_get-linksType">
+		<xs:sequence>
+			<xs:element name="Entrez2-link-set" type="tns:Entrez2-link-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="E2Reply_get-term-hierarchyType">
+		<xs:sequence>
+			<xs:element name="Entrez2-hier-node" type="tns:Entrez2-hier-nodeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="E2Reply_get-term-listType">
+		<xs:sequence>
+			<xs:element name="Entrez2-term-list" type="tns:Entrez2-term-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="E2Reply_get-term-pos" type="xs:string"/>
+	<xs:complexType name="E2RequestType">
+		<xs:choice>
+			<xs:element ref="tns:E2Request_get-info"/>
+			<xs:element name="E2Request_eval-boolean" type="tns:E2Request_eval-booleanType"/>
+			<xs:element name="E2Request_get-docsum" type="tns:E2Request_get-docsumType"/>
+			<xs:element name="E2Request_get-term-pos" type="tns:E2Request_get-term-posType"/>
+			<xs:element name="E2Request_get-term-list" type="tns:E2Request_get-term-listType"/>
+			<xs:element name="E2Request_get-term-hierarchy" type="tns:E2Request_get-term-hierarchyType"/>
+			<xs:element name="E2Request_get-links" type="tns:E2Request_get-linksType"/>
+			<xs:element name="E2Request_get-linked" type="tns:E2Request_get-linkedType"/>
+			<xs:element name="E2Request_get-link-counts" type="tns:E2Request_get-link-countsType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="E2Request_eval-booleanType">
+		<xs:sequence>
+			<xs:element name="Entrez2-eval-boolean" type="tns:Entrez2-eval-booleanType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="E2Request_get-docsumType">
+		<xs:sequence>
+			<xs:element name="Entrez2-id-list" type="tns:Entrez2-id-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="E2Request_get-info">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="E2Request_get-link-countsType">
+		<xs:sequence>
+			<xs:element name="Entrez2-id" type="tns:Entrez2-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="E2Request_get-linkedType">
+		<xs:sequence>
+			<xs:element name="Entrez2-get-links" type="tns:Entrez2-get-linksType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="E2Request_get-linksType">
+		<xs:sequence>
+			<xs:element name="Entrez2-get-links" type="tns:Entrez2-get-linksType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="E2Request_get-term-hierarchyType">
+		<xs:sequence>
+			<xs:element name="Entrez2-hier-query" type="tns:Entrez2-hier-queryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="E2Request_get-term-listType">
+		<xs:sequence>
+			<xs:element name="Entrez2-term-pos" type="tns:Entrez2-term-posType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="E2Request_get-term-posType">
+		<xs:sequence>
+			<xs:element name="Entrez2-term-query" type="tns:Entrez2-term-queryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="EMBL-blockType">
+		<xs:sequence>
+			<xs:element name="EMBL-block_class" type="tns:EMBL-block_classType" minOccurs="0"/>
+			<xs:element name="EMBL-block_div" type="tns:EMBL-block_divType" minOccurs="0"/>
+			<xs:element name="EMBL-block_creation-date" type="tns:EMBL-block_creation-dateType"/>
+			<xs:element name="EMBL-block_update-date" type="tns:EMBL-block_update-dateType"/>
+			<xs:element name="EMBL-block_extra-acc" type="tns:EMBL-block_extra-accType" minOccurs="0"/>
+			<xs:element name="EMBL-block_keywords" type="tns:EMBL-block_keywordsType" minOccurs="0"/>
+			<xs:element name="EMBL-block_xref" type="tns:EMBL-block_xrefType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="EMBL-block_classType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="not-set"/>
+					<xs:enumeration value="standard"/>
+					<xs:enumeration value="unannotated"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="EMBL-block_creation-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="EMBL-block_divType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="fun"/>
+					<xs:enumeration value="inv"/>
+					<xs:enumeration value="mam"/>
+					<xs:enumeration value="org"/>
+					<xs:enumeration value="phg"/>
+					<xs:enumeration value="pln"/>
+					<xs:enumeration value="pri"/>
+					<xs:enumeration value="pro"/>
+					<xs:enumeration value="rod"/>
+					<xs:enumeration value="syn"/>
+					<xs:enumeration value="una"/>
+					<xs:enumeration value="vrl"/>
+					<xs:enumeration value="vrt"/>
+					<xs:enumeration value="pat"/>
+					<xs:enumeration value="est"/>
+					<xs:enumeration value="sts"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="EMBL-block_extra-accType">
+		<xs:sequence>
+			<xs:element ref="tns:EMBL-block_extra-acc_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="EMBL-block_extra-acc_E" type="xs:string"/>
+	<xs:complexType name="EMBL-block_keywordsType">
+		<xs:sequence>
+			<xs:element ref="tns:EMBL-block_keywords_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="EMBL-block_keywords_E" type="xs:string"/>
+	<xs:complexType name="EMBL-block_update-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="EMBL-block_xrefType">
+		<xs:sequence>
+			<xs:element name="EMBL-xref" type="tns:EMBL-xrefType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="EMBL-dbnameType">
+		<xs:choice>
+			<xs:element name="EMBL-dbname_code" type="tns:EMBL-dbname_codeType"/>
+			<xs:element ref="tns:EMBL-dbname_name"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="EMBL-dbname_codeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="embl"/>
+					<xs:enumeration value="genbank"/>
+					<xs:enumeration value="ddbj"/>
+					<xs:enumeration value="geninfo"/>
+					<xs:enumeration value="medline"/>
+					<xs:enumeration value="swissprot"/>
+					<xs:enumeration value="pir"/>
+					<xs:enumeration value="pdb"/>
+					<xs:enumeration value="epd"/>
+					<xs:enumeration value="ecd"/>
+					<xs:enumeration value="tfd"/>
+					<xs:enumeration value="flybase"/>
+					<xs:enumeration value="prosite"/>
+					<xs:enumeration value="enzyme"/>
+					<xs:enumeration value="mim"/>
+					<xs:enumeration value="ecoseq"/>
+					<xs:enumeration value="hiv"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="EMBL-dbname_name" type="xs:string"/>
+	<xs:complexType name="EMBL-xrefType">
+		<xs:sequence>
+			<xs:element name="EMBL-xref_dbname" type="tns:EMBL-xref_dbnameType"/>
+			<xs:element name="EMBL-xref_id" type="tns:EMBL-xref_idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="EMBL-xref_dbnameType">
+		<xs:sequence>
+			<xs:element name="EMBL-dbname" type="tns:EMBL-dbnameType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="EMBL-xref_idType">
+		<xs:sequence>
+			<xs:element name="Object-id" type="tns:Object-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez-generalType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez-general_title" minOccurs="0"/>
+			<xs:element name="Entrez-general_data" type="tns:Entrez-general_dataType"/>
+			<xs:element name="Entrez-general_style" type="tns:Entrez-general_styleType"/>
+			<xs:element ref="tns:Entrez-general_location" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez-general_dataType">
+		<xs:choice>
+			<xs:element name="Entrez-general_data_ml" type="tns:Entrez-general_data_mlType"/>
+			<xs:element name="Entrez-general_data_prot" type="tns:Entrez-general_data_protType"/>
+			<xs:element name="Entrez-general_data_nuc" type="tns:Entrez-general_data_nucType"/>
+			<xs:element name="Entrez-general_data_genome" type="tns:Entrez-general_data_genomeType"/>
+			<xs:element name="Entrez-general_data_structure" type="tns:Entrez-general_data_structureType"/>
+			<xs:element name="Entrez-general_data_strucAnnot" type="tns:Entrez-general_data_strucAnnotType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Entrez-general_data_genomeType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez-general_data_mlType">
+		<xs:sequence>
+			<xs:element name="Medline-entry" type="tns:Medline-entryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez-general_data_nucType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez-general_data_protType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez-general_data_strucAnnotType">
+		<xs:sequence>
+			<xs:element name="Biostruc-annot-set" type="tns:Biostruc-annot-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez-general_data_structureType">
+		<xs:sequence>
+			<xs:element name="Biostruc" type="tns:BiostrucType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez-general_location" type="xs:string"/>
+	<xs:complexType name="Entrez-general_styleType">
+		<xs:sequence>
+			<xs:element name="Entrez-style" type="tns:Entrez-styleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez-general_title" type="xs:string"/>
+	<xs:complexType name="Entrez-styleType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="docsum"/>
+					<xs:enumeration value="genbank"/>
+					<xs:enumeration value="genpept"/>
+					<xs:enumeration value="fasta"/>
+					<xs:enumeration value="asn1"/>
+					<xs:enumeration value="graphic"/>
+					<xs:enumeration value="alignment"/>
+					<xs:enumeration value="globalview"/>
+					<xs:enumeration value="report"/>
+					<xs:enumeration value="medlars"/>
+					<xs:enumeration value="embl"/>
+					<xs:enumeration value="pdb"/>
+					<xs:enumeration value="kinemage"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-boolean-elementType">
+		<xs:choice>
+			<xs:element ref="tns:Entrez2-boolean-element_str"/>
+			<xs:element name="Entrez2-boolean-element_op" type="tns:Entrez2-boolean-element_opType"/>
+			<xs:element name="Entrez2-boolean-element_term" type="tns:Entrez2-boolean-element_termType"/>
+			<xs:element name="Entrez2-boolean-element_ids" type="tns:Entrez2-boolean-element_idsType"/>
+			<xs:element ref="tns:Entrez2-boolean-element_key"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-boolean-element_idsType">
+		<xs:sequence>
+			<xs:element name="Entrez2-id-list" type="tns:Entrez2-id-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-boolean-element_key" type="xs:string"/>
+	<xs:complexType name="Entrez2-boolean-element_opType">
+		<xs:sequence>
+			<xs:element name="Entrez2-operator" type="tns:Entrez2-operatorType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-boolean-element_str" type="xs:string"/>
+	<xs:complexType name="Entrez2-boolean-element_termType">
+		<xs:sequence>
+			<xs:element name="Entrez2-boolean-term" type="tns:Entrez2-boolean-termType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-boolean-expType">
+		<xs:sequence>
+			<xs:element name="Entrez2-boolean-exp_db" type="tns:Entrez2-boolean-exp_dbType"/>
+			<xs:element name="Entrez2-boolean-exp_exp" type="tns:Entrez2-boolean-exp_expType"/>
+			<xs:element name="Entrez2-boolean-exp_limits" type="tns:Entrez2-boolean-exp_limitsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-boolean-exp_dbType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-db-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-boolean-exp_expType">
+		<xs:sequence>
+			<xs:element name="Entrez2-boolean-element" type="tns:Entrez2-boolean-elementType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-boolean-exp_limitsType">
+		<xs:sequence>
+			<xs:element name="Entrez2-limits" type="tns:Entrez2-limitsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-boolean-replyType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-boolean-reply_count"/>
+			<xs:element name="Entrez2-boolean-reply_uids" type="tns:Entrez2-boolean-reply_uidsType" minOccurs="0"/>
+			<xs:element name="Entrez2-boolean-reply_query" type="tns:Entrez2-boolean-reply_queryType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-boolean-reply_count" type="xs:string"/>
+	<xs:complexType name="Entrez2-boolean-reply_queryType">
+		<xs:sequence>
+			<xs:element name="Entrez2-boolean-exp" type="tns:Entrez2-boolean-expType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-boolean-reply_uidsType">
+		<xs:sequence>
+			<xs:element name="Entrez2-id-list" type="tns:Entrez2-id-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-boolean-termType">
+		<xs:sequence>
+			<xs:element name="Entrez2-boolean-term_field" type="tns:Entrez2-boolean-term_fieldType"/>
+			<xs:element ref="tns:Entrez2-boolean-term_term"/>
+			<xs:element ref="tns:Entrez2-boolean-term_term-count" minOccurs="0"/>
+			<xs:element name="Entrez2-boolean-term_do-not-explode" type="tns:Entrez2-boolean-term_do-not-explodeType" minOccurs="0"/>
+			<xs:element name="Entrez2-boolean-term_do-not-translate" type="tns:Entrez2-boolean-term_do-not-translateType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-boolean-term_do-not-explodeType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-boolean-term_do-not-translateType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-boolean-term_fieldType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-field-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-boolean-term_term" type="xs:string"/>
+	<xs:element name="Entrez2-boolean-term_term-count" type="xs:string"/>
+	<xs:element name="Entrez2-db-id" type="xs:string"/>
+	<xs:complexType name="Entrez2-db-infoType">
+		<xs:sequence>
+			<xs:element name="Entrez2-db-info_db-name" type="tns:Entrez2-db-info_db-nameType"/>
+			<xs:element ref="tns:Entrez2-db-info_db-menu"/>
+			<xs:element ref="tns:Entrez2-db-info_db-descr"/>
+			<xs:element ref="tns:Entrez2-db-info_doc-count"/>
+			<xs:element ref="tns:Entrez2-db-info_field-count"/>
+			<xs:element name="Entrez2-db-info_fields" type="tns:Entrez2-db-info_fieldsType"/>
+			<xs:element ref="tns:Entrez2-db-info_link-count"/>
+			<xs:element name="Entrez2-db-info_links" type="tns:Entrez2-db-info_linksType"/>
+			<xs:element ref="tns:Entrez2-db-info_docsum-field-count"/>
+			<xs:element name="Entrez2-db-info_docsum-fields" type="tns:Entrez2-db-info_docsum-fieldsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-db-info_db-descr" type="xs:string"/>
+	<xs:element name="Entrez2-db-info_db-menu" type="xs:string"/>
+	<xs:complexType name="Entrez2-db-info_db-nameType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-db-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-db-info_doc-count" type="xs:string"/>
+	<xs:element name="Entrez2-db-info_docsum-field-count" type="xs:string"/>
+	<xs:complexType name="Entrez2-db-info_docsum-fieldsType">
+		<xs:sequence>
+			<xs:element name="Entrez2-docsum-field-info" type="tns:Entrez2-docsum-field-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-db-info_field-count" type="xs:string"/>
+	<xs:complexType name="Entrez2-db-info_fieldsType">
+		<xs:sequence>
+			<xs:element name="Entrez2-field-info" type="tns:Entrez2-field-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-db-info_link-count" type="xs:string"/>
+	<xs:complexType name="Entrez2-db-info_linksType">
+		<xs:sequence>
+			<xs:element name="Entrez2-link-info" type="tns:Entrez2-link-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-docsumType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-docsum_uid"/>
+			<xs:element name="Entrez2-docsum_docsum-data" type="tns:Entrez2-docsum_docsum-dataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-docsum-dataType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-docsum-data_field-name"/>
+			<xs:element ref="tns:Entrez2-docsum-data_field-value"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-docsum-data_field-name" type="xs:string"/>
+	<xs:element name="Entrez2-docsum-data_field-value" type="xs:string"/>
+	<xs:complexType name="Entrez2-docsum-field-infoType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-docsum-field-info_field-name"/>
+			<xs:element ref="tns:Entrez2-docsum-field-info_field-description"/>
+			<xs:element name="Entrez2-docsum-field-info_field-type" type="tns:Entrez2-docsum-field-info_field-typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-docsum-field-info_field-description" type="xs:string"/>
+	<xs:element name="Entrez2-docsum-field-info_field-name" type="xs:string"/>
+	<xs:complexType name="Entrez2-docsum-field-info_field-typeType">
+		<xs:sequence>
+			<xs:element name="Entrez2-docsum-field-type" type="tns:Entrez2-docsum-field-typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-docsum-field-typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="string"/>
+							<xs:enumeration value="int"/>
+							<xs:enumeration value="float"/>
+							<xs:enumeration value="date-pubmed"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-docsum-listType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-docsum-list_count"/>
+			<xs:element name="Entrez2-docsum-list_list" type="tns:Entrez2-docsum-list_listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-docsum-list_count" type="xs:string"/>
+	<xs:complexType name="Entrez2-docsum-list_listType">
+		<xs:sequence>
+			<xs:element name="Entrez2-docsum" type="tns:Entrez2-docsumType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-docsum_docsum-dataType">
+		<xs:sequence>
+			<xs:element name="Entrez2-docsum-data" type="tns:Entrez2-docsum-dataType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-docsum_uid" type="xs:string"/>
+	<xs:element name="Entrez2-dt" type="xs:string"/>
+	<xs:complexType name="Entrez2-dt-filterType">
+		<xs:sequence>
+			<xs:element name="Entrez2-dt-filter_begin-date" type="tns:Entrez2-dt-filter_begin-dateType"/>
+			<xs:element name="Entrez2-dt-filter_end-date" type="tns:Entrez2-dt-filter_end-dateType"/>
+			<xs:element name="Entrez2-dt-filter_type-date" type="tns:Entrez2-dt-filter_type-dateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-dt-filter_begin-dateType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-dt"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-dt-filter_end-dateType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-dt"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-dt-filter_type-dateType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-field-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-eval-booleanType">
+		<xs:sequence>
+			<xs:element name="Entrez2-eval-boolean_return-UIDs" type="tns:Entrez2-eval-boolean_return-UIDsType" minOccurs="0"/>
+			<xs:element name="Entrez2-eval-boolean_return-parse" type="tns:Entrez2-eval-boolean_return-parseType" minOccurs="0"/>
+			<xs:element name="Entrez2-eval-boolean_query" type="tns:Entrez2-eval-boolean_queryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-eval-boolean_queryType">
+		<xs:sequence>
+			<xs:element name="Entrez2-boolean-exp" type="tns:Entrez2-boolean-expType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-eval-boolean_return-UIDsType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-eval-boolean_return-parseType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Entrez2-field-id" type="xs:string"/>
+	<xs:complexType name="Entrez2-field-infoType">
+		<xs:sequence>
+			<xs:element name="Entrez2-field-info_field-name" type="tns:Entrez2-field-info_field-nameType"/>
+			<xs:element ref="tns:Entrez2-field-info_field-menu"/>
+			<xs:element ref="tns:Entrez2-field-info_field-descr"/>
+			<xs:element ref="tns:Entrez2-field-info_term-count"/>
+			<xs:element name="Entrez2-field-info_is-date" type="tns:Entrez2-field-info_is-dateType" minOccurs="0"/>
+			<xs:element name="Entrez2-field-info_is-numerical" type="tns:Entrez2-field-info_is-numericalType" minOccurs="0"/>
+			<xs:element name="Entrez2-field-info_single-token" type="tns:Entrez2-field-info_single-tokenType" minOccurs="0"/>
+			<xs:element name="Entrez2-field-info_hierarchy-avail" type="tns:Entrez2-field-info_hierarchy-availType" minOccurs="0"/>
+			<xs:element name="Entrez2-field-info_is-rangable" type="tns:Entrez2-field-info_is-rangableType" minOccurs="0"/>
+			<xs:element name="Entrez2-field-info_is-truncatable" type="tns:Entrez2-field-info_is-truncatableType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-field-info_field-descr" type="xs:string"/>
+	<xs:element name="Entrez2-field-info_field-menu" type="xs:string"/>
+	<xs:complexType name="Entrez2-field-info_field-nameType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-field-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-field-info_hierarchy-availType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-field-info_is-dateType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-field-info_is-numericalType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-field-info_is-rangableType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-field-info_is-truncatableType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-field-info_single-tokenType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Entrez2-field-info_term-count" type="xs:string"/>
+	<xs:complexType name="Entrez2-get-linksType">
+		<xs:sequence>
+			<xs:element name="Entrez2-get-links_uids" type="tns:Entrez2-get-links_uidsType"/>
+			<xs:element name="Entrez2-get-links_linktype" type="tns:Entrez2-get-links_linktypeType"/>
+			<xs:element ref="tns:Entrez2-get-links_max-UIDS" minOccurs="0"/>
+			<xs:element name="Entrez2-get-links_count-only" type="tns:Entrez2-get-links_count-onlyType" minOccurs="0"/>
+			<xs:element name="Entrez2-get-links_parents-persist" type="tns:Entrez2-get-links_parents-persistType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-get-links_count-onlyType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-get-links_linktypeType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-link-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-get-links_max-UIDS" type="xs:string"/>
+	<xs:complexType name="Entrez2-get-links_parents-persistType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-get-links_uidsType">
+		<xs:sequence>
+			<xs:element name="Entrez2-id-list" type="tns:Entrez2-id-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-hier-nodeType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-hier-node_cannonical-form"/>
+			<xs:element ref="tns:Entrez2-hier-node_lineage-count"/>
+			<xs:element name="Entrez2-hier-node_lineage" type="tns:Entrez2-hier-node_lineageType" minOccurs="0"/>
+			<xs:element ref="tns:Entrez2-hier-node_child-count"/>
+			<xs:element name="Entrez2-hier-node_children" type="tns:Entrez2-hier-node_childrenType"/>
+			<xs:element name="Entrez2-hier-node_is-ambiguous" type="tns:Entrez2-hier-node_is-ambiguousType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-hier-node_cannonical-form" type="xs:string"/>
+	<xs:element name="Entrez2-hier-node_child-count" type="xs:string"/>
+	<xs:complexType name="Entrez2-hier-node_childrenType">
+		<xs:sequence>
+			<xs:element name="Entrez2-term" type="tns:Entrez2-termType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-hier-node_is-ambiguousType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-hier-node_lineageType">
+		<xs:sequence>
+			<xs:element name="Entrez2-term" type="tns:Entrez2-termType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-hier-node_lineage-count" type="xs:string"/>
+	<xs:complexType name="Entrez2-hier-queryType">
+		<xs:sequence>
+			<xs:element name="Entrez2-hier-query_db" type="tns:Entrez2-hier-query_dbType"/>
+			<xs:element name="Entrez2-hier-query_field" type="tns:Entrez2-hier-query_fieldType"/>
+			<xs:element ref="tns:Entrez2-hier-query_term" minOccurs="0"/>
+			<xs:element ref="tns:Entrez2-hier-query_txid" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-hier-query_dbType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-db-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-hier-query_fieldType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-field-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-hier-query_term" type="xs:string"/>
+	<xs:element name="Entrez2-hier-query_txid" type="xs:string"/>
+	<xs:complexType name="Entrez2-idType">
+		<xs:sequence>
+			<xs:element name="Entrez2-id_db" type="tns:Entrez2-id_dbType"/>
+			<xs:element ref="tns:Entrez2-id_uid"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-id-listType">
+		<xs:sequence>
+			<xs:element name="Entrez2-id-list_db" type="tns:Entrez2-id-list_dbType"/>
+			<xs:element ref="tns:Entrez2-id-list_num"/>
+			<xs:element ref="tns:Entrez2-id-list_uids" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-id-list_dbType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-db-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-id-list_num" type="xs:string"/>
+	<xs:element name="Entrez2-id-list_uids" type="xs:string"/>
+	<xs:complexType name="Entrez2-id_dbType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-db-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-id_uid" type="xs:string"/>
+	<xs:complexType name="Entrez2-infoType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-info_db-count"/>
+			<xs:element name="Entrez2-info_build-date" type="tns:Entrez2-info_build-dateType"/>
+			<xs:element name="Entrez2-info_db-info" type="tns:Entrez2-info_db-infoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-info_build-dateType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-dt"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-info_db-count" type="xs:string"/>
+	<xs:complexType name="Entrez2-info_db-infoType">
+		<xs:sequence>
+			<xs:element name="Entrez2-db-info" type="tns:Entrez2-db-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-limitsType">
+		<xs:sequence>
+			<xs:element name="Entrez2-limits_filter-date" type="tns:Entrez2-limits_filter-dateType" minOccurs="0"/>
+			<xs:element ref="tns:Entrez2-limits_max-UIDs" minOccurs="0"/>
+			<xs:element ref="tns:Entrez2-limits_offset-UIDs" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-limits_filter-dateType">
+		<xs:sequence>
+			<xs:element name="Entrez2-dt-filter" type="tns:Entrez2-dt-filterType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-limits_max-UIDs" type="xs:string"/>
+	<xs:element name="Entrez2-limits_offset-UIDs" type="xs:string"/>
+	<xs:complexType name="Entrez2-link-countType">
+		<xs:sequence>
+			<xs:element name="Entrez2-link-count_link-type" type="tns:Entrez2-link-count_link-typeType"/>
+			<xs:element ref="tns:Entrez2-link-count_link-count"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-link-count-listType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-link-count-list_link-type-count"/>
+			<xs:element name="Entrez2-link-count-list_links" type="tns:Entrez2-link-count-list_linksType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-link-count-list_link-type-count" type="xs:string"/>
+	<xs:complexType name="Entrez2-link-count-list_linksType">
+		<xs:sequence>
+			<xs:element name="Entrez2-link-count" type="tns:Entrez2-link-countType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-link-count_link-count" type="xs:string"/>
+	<xs:complexType name="Entrez2-link-count_link-typeType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-link-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-link-id" type="xs:string"/>
+	<xs:complexType name="Entrez2-link-infoType">
+		<xs:sequence>
+			<xs:element name="Entrez2-link-info_link-name" type="tns:Entrez2-link-info_link-nameType"/>
+			<xs:element ref="tns:Entrez2-link-info_link-menu"/>
+			<xs:element ref="tns:Entrez2-link-info_link-descr"/>
+			<xs:element name="Entrez2-link-info_db-to" type="tns:Entrez2-link-info_db-toType"/>
+			<xs:element ref="tns:Entrez2-link-info_data-size" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-link-info_data-size" type="xs:string"/>
+	<xs:complexType name="Entrez2-link-info_db-toType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-db-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-link-info_link-descr" type="xs:string"/>
+	<xs:element name="Entrez2-link-info_link-menu" type="xs:string"/>
+	<xs:complexType name="Entrez2-link-info_link-nameType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-link-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-link-setType">
+		<xs:sequence>
+			<xs:element name="Entrez2-link-set_ids" type="tns:Entrez2-link-set_idsType"/>
+			<xs:element ref="tns:Entrez2-link-set_data-size" minOccurs="0"/>
+			<xs:element ref="tns:Entrez2-link-set_data" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-link-set_data" type="xs:string"/>
+	<xs:element name="Entrez2-link-set_data-size" type="xs:string"/>
+	<xs:complexType name="Entrez2-link-set_idsType">
+		<xs:sequence>
+			<xs:element name="Entrez2-id-list" type="tns:Entrez2-id-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-operatorType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="and"/>
+							<xs:enumeration value="or"/>
+							<xs:enumeration value="butnot"/>
+							<xs:enumeration value="range"/>
+							<xs:enumeration value="left-paren"/>
+							<xs:enumeration value="right-paren"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="Entrez2-reply">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Entrez2-reply_reply" type="tns:Entrez2-reply_replyType"/>
+				<xs:element name="Entrez2-reply_dt" type="tns:Entrez2-reply_dtType"/>
+				<xs:element ref="tns:Entrez2-reply_server"/>
+				<xs:element ref="tns:Entrez2-reply_msg" minOccurs="0"/>
+				<xs:element ref="tns:Entrez2-reply_key" minOccurs="0"/>
+				<xs:element ref="tns:Entrez2-reply_cookie" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Entrez2-reply_cookie" type="xs:string"/>
+	<xs:complexType name="Entrez2-reply_dtType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-dt"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-reply_key" type="xs:string"/>
+	<xs:element name="Entrez2-reply_msg" type="xs:string"/>
+	<xs:complexType name="Entrez2-reply_replyType">
+		<xs:sequence>
+			<xs:element name="E2Reply" type="tns:E2ReplyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-reply_server" type="xs:string"/>
+	<xs:element name="Entrez2-request">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Entrez2-request_request" type="tns:Entrez2-request_requestType"/>
+				<xs:element ref="tns:Entrez2-request_version"/>
+				<xs:element ref="tns:Entrez2-request_tool" minOccurs="0"/>
+				<xs:element ref="tns:Entrez2-request_cookie" minOccurs="0"/>
+				<xs:element name="Entrez2-request_use-history" type="tns:Entrez2-request_use-historyType" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Entrez2-request_cookie" type="xs:string"/>
+	<xs:complexType name="Entrez2-request_requestType">
+		<xs:sequence>
+			<xs:element name="E2Request" type="tns:E2RequestType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-request_tool" type="xs:string"/>
+	<xs:complexType name="Entrez2-request_use-historyType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Entrez2-request_version" type="xs:string"/>
+	<xs:complexType name="Entrez2-termType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-term_term"/>
+			<xs:element ref="tns:Entrez2-term_txid" minOccurs="0"/>
+			<xs:element ref="tns:Entrez2-term_count"/>
+			<xs:element name="Entrez2-term_is-leaf-node" type="tns:Entrez2-term_is-leaf-nodeType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-term-listType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-term-list_pos"/>
+			<xs:element ref="tns:Entrez2-term-list_num"/>
+			<xs:element name="Entrez2-term-list_list" type="tns:Entrez2-term-list_listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-term-list_listType">
+		<xs:sequence>
+			<xs:element name="Entrez2-term" type="tns:Entrez2-termType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-term-list_num" type="xs:string"/>
+	<xs:element name="Entrez2-term-list_pos" type="xs:string"/>
+	<xs:complexType name="Entrez2-term-posType">
+		<xs:sequence>
+			<xs:element name="Entrez2-term-pos_db" type="tns:Entrez2-term-pos_dbType"/>
+			<xs:element name="Entrez2-term-pos_field" type="tns:Entrez2-term-pos_fieldType"/>
+			<xs:element ref="tns:Entrez2-term-pos_first-term-pos"/>
+			<xs:element ref="tns:Entrez2-term-pos_number-of-terms" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-term-pos_dbType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-db-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-term-pos_fieldType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-field-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-term-pos_first-term-pos" type="xs:string"/>
+	<xs:element name="Entrez2-term-pos_number-of-terms" type="xs:string"/>
+	<xs:complexType name="Entrez2-term-queryType">
+		<xs:sequence>
+			<xs:element name="Entrez2-term-query_db" type="tns:Entrez2-term-query_dbType"/>
+			<xs:element name="Entrez2-term-query_field" type="tns:Entrez2-term-query_fieldType"/>
+			<xs:element ref="tns:Entrez2-term-query_term"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-term-query_dbType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-db-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrez2-term-query_fieldType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrez2-field-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrez2-term-query_term" type="xs:string"/>
+	<xs:element name="Entrez2-term_count" type="xs:string"/>
+	<xs:complexType name="Entrez2-term_is-leaf-nodeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Entrez2-term_term" type="xs:string"/>
+	<xs:element name="Entrez2-term_txid" type="xs:string"/>
+	<xs:complexType name="EntrezgeneType">
+		<xs:sequence>
+			<xs:element name="Entrezgene_track-info" type="tns:Entrezgene_track-infoType" minOccurs="0"/>
+			<xs:element name="Entrezgene_type" type="tns:Entrezgene_typeType"/>
+			<xs:element name="Entrezgene_source" type="tns:Entrezgene_sourceType"/>
+			<xs:element name="Entrezgene_gene" type="tns:Entrezgene_geneType"/>
+			<xs:element name="Entrezgene_prot" type="tns:Entrezgene_protType" minOccurs="0"/>
+			<xs:element name="Entrezgene_rna" type="tns:Entrezgene_rnaType" minOccurs="0"/>
+			<xs:element ref="tns:Entrezgene_summary" minOccurs="0"/>
+			<xs:element name="Entrezgene_location" type="tns:Entrezgene_locationType" minOccurs="0"/>
+			<xs:element name="Entrezgene_gene-source" type="tns:Entrezgene_gene-sourceType" minOccurs="0"/>
+			<xs:element name="Entrezgene_locus" type="tns:Entrezgene_locusType" minOccurs="0"/>
+			<xs:element name="Entrezgene_properties" type="tns:Entrezgene_propertiesType" minOccurs="0"/>
+			<xs:element name="Entrezgene_refgene" type="tns:Entrezgene_refgeneType" minOccurs="0"/>
+			<xs:element name="Entrezgene_homology" type="tns:Entrezgene_homologyType" minOccurs="0"/>
+			<xs:element name="Entrezgene_comments" type="tns:Entrezgene_commentsType" minOccurs="0"/>
+			<xs:element name="Entrezgene_unique-keys" type="tns:Entrezgene_unique-keysType" minOccurs="0"/>
+			<xs:element name="Entrezgene_xtra-index-terms" type="tns:Entrezgene_xtra-index-termsType" minOccurs="0"/>
+			<xs:element name="Entrezgene_xtra-properties" type="tns:Entrezgene_xtra-propertiesType" minOccurs="0"/>
+			<xs:element name="Entrezgene_xtra-iq" type="tns:Entrezgene_xtra-iqType" minOccurs="0"/>
+			<xs:element name="Entrezgene_non-unique-keys" type="tns:Entrezgene_non-unique-keysType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrezgene-Set">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Entrezgene" type="tns:EntrezgeneType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Entrezgene_commentsType">
+		<xs:sequence>
+			<xs:element name="Gene-commentary" type="tns:Gene-commentaryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrezgene_geneType">
+		<xs:sequence>
+			<xs:element name="Gene-ref" type="tns:Gene-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrezgene_gene-sourceType">
+		<xs:sequence>
+			<xs:element name="Gene-source" type="tns:Gene-sourceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrezgene_homologyType">
+		<xs:sequence>
+			<xs:element name="Gene-commentary" type="tns:Gene-commentaryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrezgene_locationType">
+		<xs:sequence>
+			<xs:element name="Maps" type="tns:MapsType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrezgene_locusType">
+		<xs:sequence>
+			<xs:element name="Gene-commentary" type="tns:Gene-commentaryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrezgene_non-unique-keysType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrezgene_propertiesType">
+		<xs:sequence>
+			<xs:element name="Gene-commentary" type="tns:Gene-commentaryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrezgene_protType">
+		<xs:sequence>
+			<xs:element name="Prot-ref" type="tns:Prot-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrezgene_refgeneType">
+		<xs:sequence>
+			<xs:element name="Gene-commentary" type="tns:Gene-commentaryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrezgene_rnaType">
+		<xs:sequence>
+			<xs:element name="RNA-ref" type="tns:RNA-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrezgene_sourceType">
+		<xs:sequence>
+			<xs:element name="BioSource" type="tns:BioSourceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrezgene_summary" type="xs:string"/>
+	<xs:complexType name="Entrezgene_track-infoType">
+		<xs:sequence>
+			<xs:element name="Gene-track" type="tns:Gene-trackType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrezgene_typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unknown"/>
+							<xs:enumeration value="tRNA"/>
+							<xs:enumeration value="rRNA"/>
+							<xs:enumeration value="snRNA"/>
+							<xs:enumeration value="scRNA"/>
+							<xs:enumeration value="snoRNA"/>
+							<xs:enumeration value="protein-coding"/>
+							<xs:enumeration value="pseudo"/>
+							<xs:enumeration value="transposon"/>
+							<xs:enumeration value="miscRNA"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Entrezgene_unique-keysType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrezgene_xtra-index-termsType">
+		<xs:sequence>
+			<xs:element ref="tns:Entrezgene_xtra-index-terms_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Entrezgene_xtra-index-terms_E" type="xs:string"/>
+	<xs:complexType name="Entrezgene_xtra-iqType">
+		<xs:sequence>
+			<xs:element name="Xtra-Terms" type="tns:Xtra-TermsType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entrezgene_xtra-propertiesType">
+		<xs:sequence>
+			<xs:element name="Xtra-Terms" type="tns:Xtra-TermsType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Entry-complexitiesType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="entry"/>
+							<xs:enumeration value="bioseq"/>
+							<xs:enumeration value="bioseq-set"/>
+							<xs:enumeration value="nuc-prot"/>
+							<xs:enumeration value="pub-set"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Error-valType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="not-found"/>
+					<xs:enumeration value="operational-error"/>
+					<xs:enumeration value="cannot-connect-jrsrv"/>
+					<xs:enumeration value="cannot-connect-pmdb"/>
+					<xs:enumeration value="journal-not-found"/>
+					<xs:enumeration value="citation-not-found"/>
+					<xs:enumeration value="citation-ambiguous"/>
+					<xs:enumeration value="citation-too-many"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+<!--
+	<xs:element name="ExchangeSet">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="tns:ExchangeSet_setType" minOccurs="0"/>
+				<xs:element ref="tns:ExchangeSet_setDepth" minOccurs="0"/>
+				<xs:element ref="tns:ExchangeSet_specVersion" minOccurs="0"/>
+				<xs:element ref="tns:ExchangeSet_dbSnpBuild" minOccurs="0"/>
+				<xs:element ref="tns:ExchangeSet_generated" minOccurs="0"/>
+				<xs:element name="ExchangeSet_sourceDatabase" type="tns:ExchangeSet_sourceDatabaseType"/>
+				<xs:element name="ExchangeSet_rs" type="tns:ExchangeSet_rsType" minOccurs="0"/>
+				<xs:element name="ExchangeSet_assay" type="tns:ExchangeSet_assayType" minOccurs="0"/>
+				<xs:element name="ExchangeSet_query" type="tns:ExchangeSet_queryType" minOccurs="0"/>
+				<xs:element name="ExchangeSet_summary" type="tns:ExchangeSet_summaryType"/>
+				<xs:element name="ExchangeSet_baseURL" type="tns:ExchangeSet_baseURLType"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+-->
+
+	<xs:element name="ExchangeSet">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Rs" type="tns:RsType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<xs:complexType name="ExchangeSet_assayType">
+		<xs:sequence>
+			<xs:element name="Assay" type="tns:AssayType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ExchangeSet_baseURLType">
+		<xs:sequence>
+			<xs:element name="BaseURL" type="tns:BaseURLType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ExchangeSet_dbSnpBuild" type="xs:string"/>
+	<xs:element name="ExchangeSet_generated" type="xs:string"/>
+	<xs:complexType name="ExchangeSet_queryType">
+		<xs:sequence>
+			<xs:element ref="tns:ExchangeSet_query_date" minOccurs="0"/>
+			<xs:element ref="tns:ExchangeSet_query_string" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ExchangeSet_query_date" type="xs:string"/>
+	<xs:element name="ExchangeSet_query_string" type="xs:string"/>
+	<xs:complexType name="ExchangeSet_rsType">
+		<xs:sequence>
+			<xs:element name="Rs" type="tns:RsType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ExchangeSet_setDepth" type="xs:string"/>
+	<xs:element name="ExchangeSet_setType" type="xs:string"/>
+	<xs:complexType name="ExchangeSet_sourceDatabaseType">
+		<xs:sequence>
+			<xs:element ref="tns:ExchangeSet_sourceDatabase_taxId"/>
+			<xs:element ref="tns:ExchangeSet_sourceDatabase_organism"/>
+			<xs:element ref="tns:ExchangeSet_sourceDatabase_dbSnpOrgAbbr" minOccurs="0"/>
+			<xs:element ref="tns:ExchangeSet_sourceDatabase_gpipeOrgAbbr" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ExchangeSet_sourceDatabase_dbSnpOrgAbbr" type="xs:string"/>
+	<xs:element name="ExchangeSet_sourceDatabase_gpipeOrgAbbr" type="xs:string"/>
+	<xs:element name="ExchangeSet_sourceDatabase_organism" type="xs:string"/>
+	<xs:element name="ExchangeSet_sourceDatabase_taxId" type="xs:string"/>
+	<xs:element name="ExchangeSet_specVersion" type="xs:string"/>
+	<xs:complexType name="ExchangeSet_summaryType">
+		<xs:sequence>
+			<xs:element ref="tns:ExchangeSet_summary_numRsIds" minOccurs="0"/>
+			<xs:element ref="tns:ExchangeSet_summary_totalSeqLength" minOccurs="0"/>
+			<xs:element ref="tns:ExchangeSet_summary_numContigHits" minOccurs="0"/>
+			<xs:element ref="tns:ExchangeSet_summary_numGeneHits" minOccurs="0"/>
+			<xs:element ref="tns:ExchangeSet_summary_numGiHits" minOccurs="0"/>
+			<xs:element ref="tns:ExchangeSet_summary_num3dStructs" minOccurs="0"/>
+			<xs:element ref="tns:ExchangeSet_summary_numAlleleFreqs" minOccurs="0"/>
+			<xs:element ref="tns:ExchangeSet_summary_numStsHits" minOccurs="0"/>
+			<xs:element ref="tns:ExchangeSet_summary_numUnigeneCids" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ExchangeSet_summary_num3dStructs" type="xs:string"/>
+	<xs:element name="ExchangeSet_summary_numAlleleFreqs" type="xs:string"/>
+	<xs:element name="ExchangeSet_summary_numContigHits" type="xs:string"/>
+	<xs:element name="ExchangeSet_summary_numGeneHits" type="xs:string"/>
+	<xs:element name="ExchangeSet_summary_numGiHits" type="xs:string"/>
+	<xs:element name="ExchangeSet_summary_numRsIds" type="xs:string"/>
+	<xs:element name="ExchangeSet_summary_numStsHits" type="xs:string"/>
+	<xs:element name="ExchangeSet_summary_numUnigeneCids" type="xs:string"/>
+	<xs:element name="ExchangeSet_summary_totalSeqLength" type="xs:string"/>
+	<xs:complexType name="Feat-idType">
+		<xs:choice>
+			<xs:element ref="tns:Feat-id_gibb"/>
+			<xs:element name="Feat-id_giim" type="tns:Feat-id_giimType"/>
+			<xs:element name="Feat-id_local" type="tns:Feat-id_localType"/>
+			<xs:element name="Feat-id_general" type="tns:Feat-id_generalType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Feat-id_generalType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Feat-id_gibb" type="xs:string"/>
+	<xs:complexType name="Feat-id_giimType">
+		<xs:sequence>
+			<xs:element name="Giimport-id" type="tns:Giimport-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Feat-id_localType">
+		<xs:sequence>
+			<xs:element name="Object-id" type="tns:Object-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="FeatDefType">
+		<xs:sequence>
+			<xs:element ref="tns:FeatDef_typelabel"/>
+			<xs:element ref="tns:FeatDef_menulabel"/>
+			<xs:element ref="tns:FeatDef_featdef-key"/>
+			<xs:element ref="tns:FeatDef_seqfeat-key"/>
+			<xs:element ref="tns:FeatDef_entrygroup"/>
+			<xs:element ref="tns:FeatDef_displaygroup"/>
+			<xs:element name="FeatDef_molgroup" type="tns:FeatDef_molgroupType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="FeatDefGroupSet">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="FeatDefGroupSet_groups" type="tns:FeatDefGroupSet_groupsType"/>
+				<xs:element name="FeatDefGroupSet_defs" type="tns:FeatDefGroupSet_defsType"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="FeatDefGroupSet_defsType">
+		<xs:sequence>
+			<xs:element name="FeatDefSet" type="tns:FeatDefSetType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="FeatDefGroupSet_groupsType">
+		<xs:sequence>
+			<xs:element name="FeatDispGroupSet" type="tns:FeatDispGroupSetType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="FeatDefSetType">
+		<xs:sequence>
+			<xs:element name="FeatDef" type="tns:FeatDefType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="FeatDef_displaygroup" type="xs:string"/>
+	<xs:element name="FeatDef_entrygroup" type="xs:string"/>
+	<xs:element name="FeatDef_featdef-key" type="xs:string"/>
+	<xs:element name="FeatDef_menulabel" type="xs:string"/>
+	<xs:complexType name="FeatDef_molgroupType">
+		<xs:sequence>
+			<xs:element name="FeatMolType" type="tns:FeatMolTypeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="FeatDef_seqfeat-key" type="xs:string"/>
+	<xs:element name="FeatDef_typelabel" type="xs:string"/>
+	<xs:complexType name="FeatDispGroupType">
+		<xs:sequence>
+			<xs:element ref="tns:FeatDispGroup_groupkey"/>
+			<xs:element ref="tns:FeatDispGroup_groupname"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="FeatDispGroupSetType">
+		<xs:sequence>
+			<xs:element name="FeatDispGroup" type="tns:FeatDispGroupType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="FeatDispGroup_groupkey" type="xs:string"/>
+	<xs:element name="FeatDispGroup_groupname" type="xs:string"/>
+	<xs:complexType name="FeatMolTypeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="aa"/>
+					<xs:enumeration value="na"/>
+					<xs:enumeration value="both"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Feature-evidenceType">
+		<xs:choice>
+			<xs:element ref="tns:Feature-evidence_comment"/>
+			<xs:element name="Feature-evidence_reference" type="tns:Feature-evidence_referenceType"/>
+			<xs:element name="Feature-evidence_bsannot" type="tns:Feature-evidence_bsannotType"/>
+			<xs:element name="Feature-evidence_seqfeat" type="tns:Feature-evidence_seqfeatType"/>
+			<xs:element name="Feature-evidence_book-ref" type="tns:Feature-evidence_book-refType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Feature-evidence_book-refType">
+		<xs:sequence>
+			<xs:element name="Cdd-book-ref" type="tns:Cdd-book-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Feature-evidence_bsannotType">
+		<xs:sequence>
+			<xs:element name="Biostruc-annot-set" type="tns:Biostruc-annot-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Feature-evidence_comment" type="xs:string"/>
+	<xs:complexType name="Feature-evidence_referenceType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Feature-evidence_seqfeatType">
+		<xs:sequence>
+			<xs:element name="Seq-feat" type="tns:Seq-featType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="FeatureDescrType">
+		<xs:sequence>
+			<xs:element ref="tns:FeatureDescr_id"/>
+			<xs:element ref="tns:FeatureDescr_name"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="FeatureDescr_id" type="xs:string"/>
+	<xs:element name="FeatureDescr_name" type="xs:string"/>
+	<xs:complexType name="FeatureDictSetType">
+		<xs:sequence>
+			<xs:element name="FeatureDescr" type="tns:FeatureDescrType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="FormatRpsDbParametersType">
+		<xs:sequence>
+			<xs:element ref="tns:FormatRpsDbParameters_matrixName"/>
+			<xs:element ref="tns:FormatRpsDbParameters_gapOpen" minOccurs="0"/>
+			<xs:element ref="tns:FormatRpsDbParameters_gapExtend" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="FormatRpsDbParameters_gapExtend" type="xs:string"/>
+	<xs:element name="FormatRpsDbParameters_gapOpen" type="xs:string"/>
+	<xs:element name="FormatRpsDbParameters_matrixName" type="xs:string"/>
+	<xs:complexType name="FxnSetType">
+		<xs:sequence>
+			<xs:element ref="tns:FxnSet_geneId" minOccurs="0"/>
+			<xs:element ref="tns:FxnSet_symbol" minOccurs="0"/>
+			<xs:element ref="tns:FxnSet_mrnaAcc" minOccurs="0"/>
+			<xs:element ref="tns:FxnSet_mrnaVer" minOccurs="0"/>
+			<xs:element ref="tns:FxnSet_protAcc" minOccurs="0"/>
+			<xs:element ref="tns:FxnSet_protVer" minOccurs="0"/>
+			<xs:element name="FxnSet_fxnClass" type="tns:FxnSet_fxnClassType" minOccurs="0"/>
+			<xs:element ref="tns:FxnSet_readingFrame" minOccurs="0"/>
+			<xs:element ref="tns:FxnSet_allele" minOccurs="0"/>
+			<xs:element ref="tns:FxnSet_residue" minOccurs="0"/>
+			<xs:element ref="tns:FxnSet_aaPosition" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="FxnSet_aaPosition" type="xs:string"/>
+	<xs:element name="FxnSet_allele" type="xs:string"/>
+	<xs:complexType name="FxnSet_fxnClassType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="locus-region"/>
+					<xs:enumeration value="coding-unknown"/>
+					<xs:enumeration value="coding-synonymous"/>
+					<xs:enumeration value="coding-nonsynonymous"/>
+					<xs:enumeration value="mrna-utr"/>
+					<xs:enumeration value="intron"/>
+					<xs:enumeration value="splice-site"/>
+					<xs:enumeration value="reference"/>
+					<xs:enumeration value="coding-exception"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="FxnSet_geneId" type="xs:string"/>
+	<xs:element name="FxnSet_mrnaAcc" type="xs:string"/>
+	<xs:element name="FxnSet_mrnaVer" type="xs:string"/>
+	<xs:element name="FxnSet_protAcc" type="xs:string"/>
+	<xs:element name="FxnSet_protVer" type="xs:string"/>
+	<xs:element name="FxnSet_readingFrame" type="xs:string"/>
+	<xs:element name="FxnSet_residue" type="xs:string"/>
+	<xs:element name="FxnSet_symbol" type="xs:string"/>
+	<xs:complexType name="GB-blockType">
+		<xs:sequence>
+			<xs:element name="GB-block_extra-accessions" type="tns:GB-block_extra-accessionsType" minOccurs="0"/>
+			<xs:element ref="tns:GB-block_source" minOccurs="0"/>
+			<xs:element name="GB-block_keywords" type="tns:GB-block_keywordsType" minOccurs="0"/>
+			<xs:element ref="tns:GB-block_origin" minOccurs="0"/>
+			<xs:element ref="tns:GB-block_date" minOccurs="0"/>
+			<xs:element name="GB-block_entry-date" type="tns:GB-block_entry-dateType" minOccurs="0"/>
+			<xs:element ref="tns:GB-block_div" minOccurs="0"/>
+			<xs:element ref="tns:GB-block_taxonomy" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GB-block_date" type="xs:string"/>
+	<xs:element name="GB-block_div" type="xs:string"/>
+	<xs:complexType name="GB-block_entry-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="GB-block_extra-accessionsType">
+		<xs:sequence>
+			<xs:element ref="tns:GB-block_extra-accessions_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GB-block_extra-accessions_E" type="xs:string"/>
+	<xs:complexType name="GB-block_keywordsType">
+		<xs:sequence>
+			<xs:element ref="tns:GB-block_keywords_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GB-block_keywords_E" type="xs:string"/>
+	<xs:element name="GB-block_origin" type="xs:string"/>
+	<xs:element name="GB-block_source" type="xs:string"/>
+	<xs:element name="GB-block_taxonomy" type="xs:string"/>
+	<xs:element name="GBAuthor" type="xs:string"/>
+	<xs:complexType name="GBFeatureType">
+		<xs:sequence>
+			<xs:element ref="tns:GBFeature_key"/>
+			<xs:element ref="tns:GBFeature_location"/>
+			<xs:element name="GBFeature_intervals" type="tns:GBFeature_intervalsType" minOccurs="0"/>
+			<xs:element ref="tns:GBFeature_operator" minOccurs="0"/>
+			<xs:element name="GBFeature_partial5" type="tns:GBFeature_partial5Type" minOccurs="0"/>
+			<xs:element name="GBFeature_partial3" type="tns:GBFeature_partial3Type" minOccurs="0"/>
+			<xs:element name="GBFeature_quals" type="tns:GBFeature_qualsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="GBFeature_intervalsType">
+		<xs:sequence>
+			<xs:element name="GBInterval" type="tns:GBIntervalType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GBFeature_key" type="xs:string"/>
+	<xs:element name="GBFeature_location" type="xs:string"/>
+	<xs:element name="GBFeature_operator" type="xs:string"/>
+	<xs:complexType name="GBFeature_partial3Type">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="GBFeature_partial5Type">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="GBFeature_qualsType">
+		<xs:sequence>
+			<xs:element name="GBQualifier" type="tns:GBQualifierType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="GBIntervalType">
+		<xs:sequence>
+			<xs:element ref="tns:GBInterval_from" minOccurs="0"/>
+			<xs:element ref="tns:GBInterval_to" minOccurs="0"/>
+			<xs:element ref="tns:GBInterval_point" minOccurs="0"/>
+			<xs:element name="GBInterval_iscomp" type="tns:GBInterval_iscompType" minOccurs="0"/>
+			<xs:element name="GBInterval_interbp" type="tns:GBInterval_interbpType" minOccurs="0"/>
+			<xs:element ref="tns:GBInterval_accession"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GBInterval_accession" type="xs:string"/>
+	<xs:element name="GBInterval_from" type="xs:string"/>
+	<xs:complexType name="GBInterval_interbpType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="GBInterval_iscompType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="GBInterval_point" type="xs:string"/>
+	<xs:element name="GBInterval_to" type="xs:string"/>
+	<xs:element name="GBKeyword" type="xs:string"/>
+	<xs:complexType name="GBQualifierType">
+		<xs:sequence>
+			<xs:element ref="tns:GBQualifier_name"/>
+			<xs:element ref="tns:GBQualifier_value" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GBQualifier_name" type="xs:string"/>
+	<xs:element name="GBQualifier_value" type="xs:string"/>
+	<xs:complexType name="GBReferenceType">
+		<xs:sequence>
+			<xs:element ref="tns:GBReference_reference"/>
+			<xs:element ref="tns:GBReference_position" minOccurs="0"/>
+			<xs:element name="GBReference_authors" type="tns:GBReference_authorsType" minOccurs="0"/>
+			<xs:element ref="tns:GBReference_consortium" minOccurs="0"/>
+			<xs:element ref="tns:GBReference_title" minOccurs="0"/>
+			<xs:element ref="tns:GBReference_journal"/>
+			<xs:element name="GBReference_xref" type="tns:GBReference_xrefType" minOccurs="0"/>
+			<xs:element ref="tns:GBReference_pubmed" minOccurs="0"/>
+			<xs:element ref="tns:GBReference_remark" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="GBReference_authorsType">
+		<xs:sequence>
+			<xs:element ref="tns:GBAuthor" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GBReference_consortium" type="xs:string"/>
+	<xs:element name="GBReference_journal" type="xs:string"/>
+	<xs:element name="GBReference_position" type="xs:string"/>
+	<xs:element name="GBReference_pubmed" type="xs:string"/>
+	<xs:element name="GBReference_reference" type="xs:string"/>
+	<xs:element name="GBReference_remark" type="xs:string"/>
+	<xs:element name="GBReference_title" type="xs:string"/>
+	<xs:complexType name="GBReference_xrefType">
+		<xs:sequence>
+			<xs:element name="GBXref" type="tns:GBXrefType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GBSecondary-accn" type="xs:string"/>
+	<xs:complexType name="GBSeqType">
+		<xs:sequence>
+			<xs:element ref="tns:GBSeq_locus"/>
+			<xs:element ref="tns:GBSeq_length"/>
+			<xs:element ref="tns:GBSeq_strandedness" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_moltype"/>
+			<xs:element ref="tns:GBSeq_topology" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_division"/>
+			<xs:element ref="tns:GBSeq_update-date"/>
+			<xs:element ref="tns:GBSeq_create-date" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_update-release" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_create-release" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_definition"/>
+			<xs:element ref="tns:GBSeq_primary-accession" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_entry-version" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_accession-version" minOccurs="0"/>
+			<xs:element name="GBSeq_other-seqids" type="tns:GBSeq_other-seqidsType" minOccurs="0"/>
+			<xs:element name="GBSeq_secondary-accessions" type="tns:GBSeq_secondary-accessionsType" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_project" minOccurs="0"/>
+			<xs:element name="GBSeq_keywords" type="tns:GBSeq_keywordsType" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_segment" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_source" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_organism" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_taxonomy" minOccurs="0"/>
+			<xs:element name="GBSeq_references" type="tns:GBSeq_referencesType" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_comment" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_primary" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_source-db" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_database-reference" minOccurs="0"/>
+			<xs:element name="GBSeq_feature-table" type="tns:GBSeq_feature-tableType" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_sequence" minOccurs="0"/>
+			<xs:element ref="tns:GBSeq_contig" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GBSeq_accession-version" type="xs:string"/>
+	<xs:element name="GBSeq_comment" type="xs:string"/>
+	<xs:element name="GBSeq_contig" type="xs:string"/>
+	<xs:element name="GBSeq_create-date" type="xs:string"/>
+	<xs:element name="GBSeq_create-release" type="xs:string"/>
+	<xs:element name="GBSeq_database-reference" type="xs:string"/>
+	<xs:element name="GBSeq_definition" type="xs:string"/>
+	<xs:element name="GBSeq_division" type="xs:string"/>
+	<xs:element name="GBSeq_entry-version" type="xs:string"/>
+	<xs:complexType name="GBSeq_feature-tableType">
+		<xs:sequence>
+			<xs:element name="GBFeature" type="tns:GBFeatureType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="GBSeq_keywordsType">
+		<xs:sequence>
+			<xs:element ref="tns:GBKeyword" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GBSeq_length" type="xs:string"/>
+	<xs:element name="GBSeq_locus" type="xs:string"/>
+	<xs:element name="GBSeq_moltype" type="xs:string"/>
+	<xs:element name="GBSeq_organism" type="xs:string"/>
+	<xs:complexType name="GBSeq_other-seqidsType">
+		<xs:sequence>
+			<xs:element ref="tns:GBSeqid" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GBSeq_primary" type="xs:string"/>
+	<xs:element name="GBSeq_primary-accession" type="xs:string"/>
+	<xs:element name="GBSeq_project" type="xs:string"/>
+	<xs:complexType name="GBSeq_referencesType">
+		<xs:sequence>
+			<xs:element name="GBReference" type="tns:GBReferenceType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="GBSeq_secondary-accessionsType">
+		<xs:sequence>
+			<xs:element ref="tns:GBSecondary-accn" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GBSeq_segment" type="xs:string"/>
+	<xs:element name="GBSeq_sequence" type="xs:string"/>
+	<xs:element name="GBSeq_source" type="xs:string"/>
+	<xs:element name="GBSeq_source-db" type="xs:string"/>
+	<xs:element name="GBSeq_strandedness" type="xs:string"/>
+	<xs:element name="GBSeq_taxonomy" type="xs:string"/>
+	<xs:element name="GBSeq_topology" type="xs:string"/>
+	<xs:element name="GBSeq_update-date" type="xs:string"/>
+	<xs:element name="GBSeq_update-release" type="xs:string"/>
+	<xs:element name="GBSeqid" type="xs:string"/>
+	<xs:element name="GBSet">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="GBSeq" type="tns:GBSeqType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="GBXrefType">
+		<xs:sequence>
+			<xs:element ref="tns:GBXref_dbname"/>
+			<xs:element ref="tns:GBXref_id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GBXref_dbname" type="xs:string"/>
+	<xs:element name="GBXref_id" type="xs:string"/>
+	<xs:complexType name="GIBB-methodType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="concept-trans"/>
+					<xs:enumeration value="seq-pept"/>
+					<xs:enumeration value="both"/>
+					<xs:enumeration value="seq-pept-overlap"/>
+					<xs:enumeration value="seq-pept-homol"/>
+					<xs:enumeration value="concept-trans-a"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="GIBB-modType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="dna"/>
+					<xs:enumeration value="rna"/>
+					<xs:enumeration value="extrachrom"/>
+					<xs:enumeration value="plasmid"/>
+					<xs:enumeration value="mitochondrial"/>
+					<xs:enumeration value="chloroplast"/>
+					<xs:enumeration value="kinetoplast"/>
+					<xs:enumeration value="cyanelle"/>
+					<xs:enumeration value="synthetic"/>
+					<xs:enumeration value="recombinant"/>
+					<xs:enumeration value="partial"/>
+					<xs:enumeration value="complete"/>
+					<xs:enumeration value="mutagen"/>
+					<xs:enumeration value="natmut"/>
+					<xs:enumeration value="transposon"/>
+					<xs:enumeration value="insertion-seq"/>
+					<xs:enumeration value="no-left"/>
+					<xs:enumeration value="no-right"/>
+					<xs:enumeration value="macronuclear"/>
+					<xs:enumeration value="proviral"/>
+					<xs:enumeration value="est"/>
+					<xs:enumeration value="sts"/>
+					<xs:enumeration value="survey"/>
+					<xs:enumeration value="chromoplast"/>
+					<xs:enumeration value="genemap"/>
+					<xs:enumeration value="restmap"/>
+					<xs:enumeration value="physmap"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="GIBB-molType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="unknown"/>
+					<xs:enumeration value="genomic"/>
+					<xs:enumeration value="pre-mRNA"/>
+					<xs:enumeration value="mRNA"/>
+					<xs:enumeration value="rRNA"/>
+					<xs:enumeration value="tRNA"/>
+					<xs:enumeration value="snRNA"/>
+					<xs:enumeration value="scRNA"/>
+					<xs:enumeration value="peptide"/>
+					<xs:enumeration value="other-genetic"/>
+					<xs:enumeration value="genomic-mRNA"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="GL-matrixType">
+		<xs:sequence>
+			<xs:element ref="tns:GL-matrix_scale"/>
+			<xs:element ref="tns:GL-matrix_m11"/>
+			<xs:element ref="tns:GL-matrix_m12"/>
+			<xs:element ref="tns:GL-matrix_m13"/>
+			<xs:element ref="tns:GL-matrix_m14"/>
+			<xs:element ref="tns:GL-matrix_m21"/>
+			<xs:element ref="tns:GL-matrix_m22"/>
+			<xs:element ref="tns:GL-matrix_m23"/>
+			<xs:element ref="tns:GL-matrix_m24"/>
+			<xs:element ref="tns:GL-matrix_m31"/>
+			<xs:element ref="tns:GL-matrix_m32"/>
+			<xs:element ref="tns:GL-matrix_m33"/>
+			<xs:element ref="tns:GL-matrix_m34"/>
+			<xs:element ref="tns:GL-matrix_m41"/>
+			<xs:element ref="tns:GL-matrix_m42"/>
+			<xs:element ref="tns:GL-matrix_m43"/>
+			<xs:element ref="tns:GL-matrix_m44"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GL-matrix_m11" type="xs:string"/>
+	<xs:element name="GL-matrix_m12" type="xs:string"/>
+	<xs:element name="GL-matrix_m13" type="xs:string"/>
+	<xs:element name="GL-matrix_m14" type="xs:string"/>
+	<xs:element name="GL-matrix_m21" type="xs:string"/>
+	<xs:element name="GL-matrix_m22" type="xs:string"/>
+	<xs:element name="GL-matrix_m23" type="xs:string"/>
+	<xs:element name="GL-matrix_m24" type="xs:string"/>
+	<xs:element name="GL-matrix_m31" type="xs:string"/>
+	<xs:element name="GL-matrix_m32" type="xs:string"/>
+	<xs:element name="GL-matrix_m33" type="xs:string"/>
+	<xs:element name="GL-matrix_m34" type="xs:string"/>
+	<xs:element name="GL-matrix_m41" type="xs:string"/>
+	<xs:element name="GL-matrix_m42" type="xs:string"/>
+	<xs:element name="GL-matrix_m43" type="xs:string"/>
+	<xs:element name="GL-matrix_m44" type="xs:string"/>
+	<xs:element name="GL-matrix_scale" type="xs:string"/>
+	<xs:complexType name="Gb-qualType">
+		<xs:sequence>
+			<xs:element ref="tns:Gb-qual_qual"/>
+			<xs:element ref="tns:Gb-qual_val"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Gb-qual_qual" type="xs:string"/>
+	<xs:element name="Gb-qual_val" type="xs:string"/>
+	<xs:complexType name="Gene-commentaryType">
+		<xs:sequence>
+			<xs:element name="Gene-commentary_type" type="tns:Gene-commentary_typeType"/>
+			<xs:element ref="tns:Gene-commentary_heading" minOccurs="0"/>
+			<xs:element ref="tns:Gene-commentary_label" minOccurs="0"/>
+			<xs:element ref="tns:Gene-commentary_text" minOccurs="0"/>
+			<xs:element ref="tns:Gene-commentary_accession" minOccurs="0"/>
+			<xs:element ref="tns:Gene-commentary_version" minOccurs="0"/>
+			<xs:element name="Gene-commentary_xtra-properties" type="tns:Gene-commentary_xtra-propertiesType" minOccurs="0"/>
+			<xs:element name="Gene-commentary_refs" type="tns:Gene-commentary_refsType" minOccurs="0"/>
+			<xs:element name="Gene-commentary_source" type="tns:Gene-commentary_sourceType" minOccurs="0"/>
+			<xs:element name="Gene-commentary_genomic-coords" type="tns:Gene-commentary_genomic-coordsType" minOccurs="0"/>
+			<xs:element name="Gene-commentary_seqs" type="tns:Gene-commentary_seqsType" minOccurs="0"/>
+			<xs:element name="Gene-commentary_products" type="tns:Gene-commentary_productsType" minOccurs="0"/>
+			<xs:element name="Gene-commentary_properties" type="tns:Gene-commentary_propertiesType" minOccurs="0"/>
+			<xs:element name="Gene-commentary_comment" type="tns:Gene-commentary_commentType" minOccurs="0"/>
+			<xs:element name="Gene-commentary_create-date" type="tns:Gene-commentary_create-dateType" minOccurs="0"/>
+			<xs:element name="Gene-commentary_update-date" type="tns:Gene-commentary_update-dateType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Gene-commentary_accession" type="xs:string"/>
+	<xs:complexType name="Gene-commentary_commentType">
+		<xs:sequence>
+			<xs:element name="Gene-commentary" type="tns:Gene-commentaryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Gene-commentary_create-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Gene-commentary_genomic-coordsType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Gene-commentary_heading" type="xs:string"/>
+	<xs:element name="Gene-commentary_label" type="xs:string"/>
+	<xs:complexType name="Gene-commentary_productsType">
+		<xs:sequence>
+			<xs:element name="Gene-commentary" type="tns:Gene-commentaryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Gene-commentary_propertiesType">
+		<xs:sequence>
+			<xs:element name="Gene-commentary" type="tns:Gene-commentaryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Gene-commentary_refsType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Gene-commentary_seqsType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Gene-commentary_sourceType">
+		<xs:sequence>
+			<xs:element name="Other-source" type="tns:Other-sourceType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Gene-commentary_text" type="xs:string"/>
+	<xs:complexType name="Gene-commentary_typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="genomic"/>
+							<xs:enumeration value="pre-RNA"/>
+							<xs:enumeration value="mRNA"/>
+							<xs:enumeration value="rRNA"/>
+							<xs:enumeration value="tRNA"/>
+							<xs:enumeration value="snRNA"/>
+							<xs:enumeration value="scRNA"/>
+							<xs:enumeration value="peptide"/>
+							<xs:enumeration value="other-genetic"/>
+							<xs:enumeration value="genomic-mRNA"/>
+							<xs:enumeration value="cRNA"/>
+							<xs:enumeration value="mature-peptide"/>
+							<xs:enumeration value="pre-protein"/>
+							<xs:enumeration value="miscRNA"/>
+							<xs:enumeration value="snoRNA"/>
+							<xs:enumeration value="property"/>
+							<xs:enumeration value="reference"/>
+							<xs:enumeration value="generif"/>
+							<xs:enumeration value="phenotype"/>
+							<xs:enumeration value="complex"/>
+							<xs:enumeration value="compound"/>
+							<xs:enumeration value="comment"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Gene-commentary_update-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Gene-commentary_version" type="xs:string"/>
+	<xs:complexType name="Gene-commentary_xtra-propertiesType">
+		<xs:sequence>
+			<xs:element name="Xtra-Terms" type="tns:Xtra-TermsType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Gene-refType">
+		<xs:sequence>
+			<xs:element ref="tns:Gene-ref_locus" minOccurs="0"/>
+			<xs:element ref="tns:Gene-ref_allele" minOccurs="0"/>
+			<xs:element ref="tns:Gene-ref_desc" minOccurs="0"/>
+			<xs:element ref="tns:Gene-ref_maploc" minOccurs="0"/>
+			<xs:element name="Gene-ref_pseudo" type="tns:Gene-ref_pseudoType" minOccurs="0"/>
+			<xs:element name="Gene-ref_db" type="tns:Gene-ref_dbType" minOccurs="0"/>
+			<xs:element name="Gene-ref_syn" type="tns:Gene-ref_synType" minOccurs="0"/>
+			<xs:element ref="tns:Gene-ref_locus-tag" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Gene-ref_allele" type="xs:string"/>
+	<xs:complexType name="Gene-ref_dbType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Gene-ref_desc" type="xs:string"/>
+	<xs:element name="Gene-ref_locus" type="xs:string"/>
+	<xs:element name="Gene-ref_locus-tag" type="xs:string"/>
+	<xs:element name="Gene-ref_maploc" type="xs:string"/>
+	<xs:complexType name="Gene-ref_pseudoType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Gene-ref_synType">
+		<xs:sequence>
+			<xs:element ref="tns:Gene-ref_syn_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Gene-ref_syn_E" type="xs:string"/>
+	<xs:complexType name="Gene-sourceType">
+		<xs:sequence>
+			<xs:element ref="tns:Gene-source_src"/>
+			<xs:element ref="tns:Gene-source_src-int" minOccurs="0"/>
+			<xs:element ref="tns:Gene-source_src-str1" minOccurs="0"/>
+			<xs:element ref="tns:Gene-source_src-str2" minOccurs="0"/>
+			<xs:element name="Gene-source_gene-display" type="tns:Gene-source_gene-displayType" minOccurs="0"/>
+			<xs:element name="Gene-source_locus-display" type="tns:Gene-source_locus-displayType" minOccurs="0"/>
+			<xs:element name="Gene-source_extra-terms" type="tns:Gene-source_extra-termsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Gene-source_extra-termsType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Gene-source_gene-displayType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Gene-source_locus-displayType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Gene-source_src" type="xs:string"/>
+	<xs:element name="Gene-source_src-int" type="xs:string"/>
+	<xs:element name="Gene-source_src-str1" type="xs:string"/>
+	<xs:element name="Gene-source_src-str2" type="xs:string"/>
+	<xs:complexType name="Gene-trackType">
+		<xs:sequence>
+			<xs:element ref="tns:Gene-track_geneid"/>
+			<xs:element name="Gene-track_status" type="tns:Gene-track_statusType" minOccurs="0"/>
+			<xs:element name="Gene-track_current-id" type="tns:Gene-track_current-idType" minOccurs="0"/>
+			<xs:element name="Gene-track_create-date" type="tns:Gene-track_create-dateType"/>
+			<xs:element name="Gene-track_update-date" type="tns:Gene-track_update-dateType"/>
+			<xs:element name="Gene-track_discontinue-date" type="tns:Gene-track_discontinue-dateType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Gene-track_create-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Gene-track_current-idType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Gene-track_discontinue-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Gene-track_geneid" type="xs:string"/>
+	<xs:complexType name="Gene-track_statusType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="live"/>
+							<xs:enumeration value="secondary"/>
+							<xs:enumeration value="discontinued"/>
+							<xs:enumeration value="newentry"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Gene-track_update-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Genetic-codeType">
+		<xs:sequence>
+			<xs:element name="Genetic-code_E" type="tns:Genetic-code_EType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Genetic-code-table">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Genetic-code" type="tns:Genetic-codeType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Genetic-code_EType">
+		<xs:choice>
+			<xs:element ref="tns:Genetic-code_E_name"/>
+			<xs:element ref="tns:Genetic-code_E_id"/>
+			<xs:element ref="tns:Genetic-code_E_ncbieaa"/>
+			<xs:element ref="tns:Genetic-code_E_ncbi8aa"/>
+			<xs:element ref="tns:Genetic-code_E_ncbistdaa"/>
+			<xs:element ref="tns:Genetic-code_E_sncbieaa"/>
+			<xs:element ref="tns:Genetic-code_E_sncbi8aa"/>
+			<xs:element ref="tns:Genetic-code_E_sncbistdaa"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="Genetic-code_E_id" type="xs:string"/>
+	<xs:element name="Genetic-code_E_name" type="xs:string"/>
+	<xs:element name="Genetic-code_E_ncbi8aa" type="xs:string"/>
+	<xs:element name="Genetic-code_E_ncbieaa" type="xs:string"/>
+	<xs:element name="Genetic-code_E_ncbistdaa" type="xs:string"/>
+	<xs:element name="Genetic-code_E_sncbi8aa" type="xs:string"/>
+	<xs:element name="Genetic-code_E_sncbieaa" type="xs:string"/>
+	<xs:element name="Genetic-code_E_sncbistdaa" type="xs:string"/>
+	<xs:complexType name="Giimport-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Giimport-id_id"/>
+			<xs:element ref="tns:Giimport-id_db" minOccurs="0"/>
+			<xs:element ref="tns:Giimport-id_release" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Giimport-id_db" type="xs:string"/>
+	<xs:element name="Giimport-id_id" type="xs:string"/>
+	<xs:element name="Giimport-id_release" type="xs:string"/>
+	<xs:complexType name="Global-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Global-id_accession"/>
+			<xs:element ref="tns:Global-id_release" minOccurs="0"/>
+			<xs:element ref="tns:Global-id_version" minOccurs="0"/>
+			<xs:element ref="tns:Global-id_database" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Global-id_accession" type="xs:string"/>
+	<xs:element name="Global-id_database" type="xs:string"/>
+	<xs:element name="Global-id_release" type="xs:string"/>
+	<xs:element name="Global-id_version" type="xs:string"/>
+	<xs:complexType name="HG-AlignmentType">
+		<xs:sequence>
+			<xs:element ref="tns:HG-Alignment_hg-id"/>
+			<xs:element name="HG-Alignment_alignment" type="tns:HG-Alignment_alignmentType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-AlignmentSet">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="HG-Alignment" type="tns:HG-AlignmentType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="HG-Alignment_alignmentType">
+		<xs:sequence>
+			<xs:element name="Seq-align" type="tns:Seq-alignType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-Alignment_hg-id" type="xs:string"/>
+	<xs:complexType name="HG-CommentaryType">
+		<xs:sequence>
+			<xs:element name="HG-Commentary_link" type="tns:HG-Commentary_linkType"/>
+			<xs:element ref="tns:HG-Commentary_description" minOccurs="0"/>
+			<xs:element ref="tns:HG-Commentary_caption" minOccurs="0"/>
+			<xs:element ref="tns:HG-Commentary_provider" minOccurs="0"/>
+			<xs:element name="HG-Commentary_other-links" type="tns:HG-Commentary_other-linksType" minOccurs="0"/>
+			<xs:element name="HG-Commentary_other-commentaries" type="tns:HG-Commentary_other-commentariesType" minOccurs="0"/>
+			<xs:element ref="tns:HG-Commentary_taxid" minOccurs="0"/>
+			<xs:element ref="tns:HG-Commentary_geneid" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-CommentaryContainer">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="HG-CommentarySet" type="tns:HG-CommentarySetType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="HG-CommentarySetType">
+		<xs:sequence>
+			<xs:element ref="tns:HG-CommentarySet_hg-id" minOccurs="0"/>
+			<xs:element ref="tns:HG-CommentarySet_title"/>
+			<xs:element name="HG-CommentarySet_commentaries" type="tns:HG-CommentarySet_commentariesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="HG-CommentarySet_commentariesType">
+		<xs:sequence>
+			<xs:element name="HG-Commentary" type="tns:HG-CommentaryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-CommentarySet_hg-id" type="xs:string"/>
+	<xs:element name="HG-CommentarySet_title" type="xs:string"/>
+	<xs:element name="HG-Commentary_caption" type="xs:string"/>
+	<xs:element name="HG-Commentary_description" type="xs:string"/>
+	<xs:element name="HG-Commentary_geneid" type="xs:string"/>
+	<xs:complexType name="HG-Commentary_linkType">
+		<xs:sequence>
+			<xs:element name="HG-Link" type="tns:HG-LinkType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="HG-Commentary_other-commentariesType">
+		<xs:sequence>
+			<xs:element name="HG-Commentary" type="tns:HG-CommentaryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="HG-Commentary_other-linksType">
+		<xs:sequence>
+			<xs:element name="HG-Link" type="tns:HG-LinkType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-Commentary_provider" type="xs:string"/>
+	<xs:element name="HG-Commentary_taxid" type="xs:string"/>
+	<xs:complexType name="HG-DomainType">
+		<xs:sequence>
+			<xs:element ref="tns:HG-Domain_begin"/>
+			<xs:element ref="tns:HG-Domain_end"/>
+			<xs:element ref="tns:HG-Domain_pssm-id" minOccurs="0"/>
+			<xs:element ref="tns:HG-Domain_cdd-id" minOccurs="0"/>
+			<xs:element ref="tns:HG-Domain_cdd-name" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-Domain_begin" type="xs:string"/>
+	<xs:element name="HG-Domain_cdd-id" type="xs:string"/>
+	<xs:element name="HG-Domain_cdd-name" type="xs:string"/>
+	<xs:element name="HG-Domain_end" type="xs:string"/>
+	<xs:element name="HG-Domain_pssm-id" type="xs:string"/>
+	<xs:complexType name="HG-EntryType">
+		<xs:sequence>
+			<xs:element ref="tns:HG-Entry_hg-id"/>
+			<xs:element ref="tns:HG-Entry_version" minOccurs="0"/>
+			<xs:element ref="tns:HG-Entry_title" minOccurs="0"/>
+			<xs:element ref="tns:HG-Entry_caption" minOccurs="0"/>
+			<xs:element ref="tns:HG-Entry_taxid" minOccurs="0"/>
+			<xs:element name="HG-Entry_genes" type="tns:HG-Entry_genesType" minOccurs="0"/>
+			<xs:element name="HG-Entry_cr-date" type="tns:HG-Entry_cr-dateType" minOccurs="0"/>
+			<xs:element name="HG-Entry_up-date" type="tns:HG-Entry_up-dateType" minOccurs="0"/>
+			<xs:element name="HG-Entry_distances" type="tns:HG-Entry_distancesType" minOccurs="0"/>
+			<xs:element name="HG-Entry_commentaries" type="tns:HG-Entry_commentariesType" minOccurs="0"/>
+			<xs:element name="HG-Entry_warnings" type="tns:HG-Entry_warningsType" minOccurs="0"/>
+			<xs:element name="HG-Entry_node" type="tns:HG-Entry_nodeType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-EntrySet">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="HG-EntrySet_entries" type="tns:HG-EntrySet_entriesType"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="HG-EntrySet_entriesType">
+		<xs:sequence>
+			<xs:element name="HG-Entry" type="tns:HG-EntryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-Entry_caption" type="xs:string"/>
+	<xs:complexType name="HG-Entry_commentariesType">
+		<xs:sequence>
+			<xs:element name="HG-CommentarySet" type="tns:HG-CommentarySetType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="HG-Entry_cr-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="HG-Entry_distancesType">
+		<xs:sequence>
+			<xs:element name="HG-Stats" type="tns:HG-StatsType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="HG-Entry_genesType">
+		<xs:sequence>
+			<xs:element name="HG-Gene" type="tns:HG-GeneType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-Entry_hg-id" type="xs:string"/>
+	<xs:complexType name="HG-Entry_nodeType">
+		<xs:sequence>
+			<xs:element name="HG-Node" type="tns:HG-NodeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-Entry_taxid" type="xs:string"/>
+	<xs:element name="HG-Entry_title" type="xs:string"/>
+	<xs:complexType name="HG-Entry_up-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-Entry_version" type="xs:string"/>
+	<xs:complexType name="HG-Entry_warningsType">
+		<xs:sequence>
+			<xs:element ref="tns:HG-Entry_warnings_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-Entry_warnings_E" type="xs:string"/>
+	<xs:complexType name="HG-GeneType">
+		<xs:sequence>
+			<xs:element ref="tns:HG-Gene_geneid"/>
+			<xs:element ref="tns:HG-Gene_otherid" minOccurs="0"/>
+			<xs:element ref="tns:HG-Gene_symbol" minOccurs="0"/>
+			<xs:element name="HG-Gene_aliases" type="tns:HG-Gene_aliasesType" minOccurs="0"/>
+			<xs:element ref="tns:HG-Gene_title"/>
+			<xs:element ref="tns:HG-Gene_taxid"/>
+			<xs:element ref="tns:HG-Gene_prot-gi" minOccurs="0"/>
+			<xs:element ref="tns:HG-Gene_prot-acc" minOccurs="0"/>
+			<xs:element ref="tns:HG-Gene_prot-len" minOccurs="0"/>
+			<xs:element ref="tns:HG-Gene_nuc-gi" minOccurs="0"/>
+			<xs:element ref="tns:HG-Gene_nuc-acc" minOccurs="0"/>
+			<xs:element name="HG-Gene_gene-links" type="tns:HG-Gene_gene-linksType" minOccurs="0"/>
+			<xs:element name="HG-Gene_prot-links" type="tns:HG-Gene_prot-linksType" minOccurs="0"/>
+			<xs:element name="HG-Gene_domains" type="tns:HG-Gene_domainsType" minOccurs="0"/>
+			<xs:element ref="tns:HG-Gene_chr" minOccurs="0"/>
+			<xs:element name="HG-Gene_location" type="tns:HG-Gene_locationType" minOccurs="0"/>
+			<xs:element ref="tns:HG-Gene_locus-tag" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="HG-Gene_aliasesType">
+		<xs:sequence>
+			<xs:element ref="tns:HG-Gene_aliases_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-Gene_aliases_E" type="xs:string"/>
+	<xs:element name="HG-Gene_chr" type="xs:string"/>
+	<xs:complexType name="HG-Gene_domainsType">
+		<xs:sequence>
+			<xs:element name="HG-Domain" type="tns:HG-DomainType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="HG-Gene_gene-linksType">
+		<xs:sequence>
+			<xs:element name="HG-Link" type="tns:HG-LinkType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-Gene_geneid" type="xs:string"/>
+	<xs:complexType name="HG-Gene_locationType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-Gene_locus-tag" type="xs:string"/>
+	<xs:element name="HG-Gene_nuc-acc" type="xs:string"/>
+	<xs:element name="HG-Gene_nuc-gi" type="xs:string"/>
+	<xs:element name="HG-Gene_otherid" type="xs:string"/>
+	<xs:element name="HG-Gene_prot-acc" type="xs:string"/>
+	<xs:element name="HG-Gene_prot-gi" type="xs:string"/>
+	<xs:element name="HG-Gene_prot-len" type="xs:string"/>
+	<xs:complexType name="HG-Gene_prot-linksType">
+		<xs:sequence>
+			<xs:element name="HG-Link" type="tns:HG-LinkType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-Gene_symbol" type="xs:string"/>
+	<xs:element name="HG-Gene_taxid" type="xs:string"/>
+	<xs:element name="HG-Gene_title" type="xs:string"/>
+	<xs:complexType name="HG-LinkType">
+		<xs:sequence>
+			<xs:element ref="tns:HG-Link_hypertext"/>
+			<xs:element ref="tns:HG-Link_url" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-Link_hypertext" type="xs:string"/>
+	<xs:element name="HG-Link_url" type="xs:string"/>
+	<xs:complexType name="HG-NodeType">
+		<xs:sequence>
+			<xs:element name="HG-Node_type" type="tns:HG-Node_typeType"/>
+			<xs:element name="HG-Node_id" type="tns:HG-Node_idType"/>
+			<xs:element ref="tns:HG-Node_caption" minOccurs="0"/>
+			<xs:element name="HG-Node_current-node" type="tns:HG-Node_current-nodeType" minOccurs="0"/>
+			<xs:element name="HG-Node_children" type="tns:HG-Node_childrenType" minOccurs="0"/>
+			<xs:element ref="tns:HG-Node_branch-len" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="HG-Node-idType">
+		<xs:sequence>
+			<xs:element ref="tns:HG-Node-id_id" minOccurs="0"/>
+			<xs:element name="HG-Node-id_id-type" type="tns:HG-Node-id_id-typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-Node-id_id" type="xs:string"/>
+	<xs:complexType name="HG-Node-id_id-typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="none"/>
+					<xs:enumeration value="geneid"/>
+					<xs:enumeration value="hid"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="HG-Node_branch-len" type="xs:string"/>
+	<xs:element name="HG-Node_caption" type="xs:string"/>
+	<xs:complexType name="HG-Node_childrenType">
+		<xs:sequence>
+			<xs:element name="HG-Node" type="tns:HG-NodeType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="HG-Node_current-nodeType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="HG-Node_idType">
+		<xs:sequence>
+			<xs:element name="HG-Node-id" type="tns:HG-Node-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="HG-Node_typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="family"/>
+					<xs:enumeration value="ortholog"/>
+					<xs:enumeration value="paralog"/>
+					<xs:enumeration value="leaf"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="HG-StatsType">
+		<xs:sequence>
+			<xs:element ref="tns:HG-Stats_gi1"/>
+			<xs:element ref="tns:HG-Stats_gi2"/>
+			<xs:element ref="tns:HG-Stats_nuc-change"/>
+			<xs:element ref="tns:HG-Stats_nuc-change-jc"/>
+			<xs:element ref="tns:HG-Stats_prot-change"/>
+			<xs:element ref="tns:HG-Stats_ka"/>
+			<xs:element ref="tns:HG-Stats_ks"/>
+			<xs:element ref="tns:HG-Stats_knr"/>
+			<xs:element ref="tns:HG-Stats_knc"/>
+			<xs:element name="HG-Stats_recip-best" type="tns:HG-Stats_recip-bestType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="HG-Stats_gi1" type="xs:string"/>
+	<xs:element name="HG-Stats_gi2" type="xs:string"/>
+	<xs:element name="HG-Stats_ka" type="xs:string"/>
+	<xs:element name="HG-Stats_knc" type="xs:string"/>
+	<xs:element name="HG-Stats_knr" type="xs:string"/>
+	<xs:element name="HG-Stats_ks" type="xs:string"/>
+	<xs:element name="HG-Stats_nuc-change" type="xs:string"/>
+	<xs:element name="HG-Stats_nuc-change-jc" type="xs:string"/>
+	<xs:element name="HG-Stats_prot-change" type="xs:string"/>
+	<xs:complexType name="HG-Stats_recip-bestType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Heterogen" type="xs:string"/>
+	<xs:complexType name="HitType">
+		<xs:sequence>
+			<xs:element ref="tns:Hit_num"/>
+			<xs:element ref="tns:Hit_id"/>
+			<xs:element ref="tns:Hit_def"/>
+			<xs:element ref="tns:Hit_accession"/>
+			<xs:element ref="tns:Hit_len"/>
+			<xs:element name="Hit_hsps" type="tns:Hit_hspsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Hit_accession" type="xs:string"/>
+	<xs:element name="Hit_def" type="xs:string"/>
+	<xs:complexType name="Hit_hspsType">
+		<xs:sequence>
+			<xs:element name="Hsp" type="tns:HspType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Hit_id" type="xs:string"/>
+	<xs:element name="Hit_len" type="xs:string"/>
+	<xs:element name="Hit_num" type="xs:string"/>
+	<xs:complexType name="HspType">
+		<xs:sequence>
+			<xs:element ref="tns:Hsp_num"/>
+			<xs:element ref="tns:Hsp_bit-score"/>
+			<xs:element ref="tns:Hsp_score"/>
+			<xs:element ref="tns:Hsp_evalue"/>
+			<xs:element ref="tns:Hsp_query-from"/>
+			<xs:element ref="tns:Hsp_query-to"/>
+			<xs:element ref="tns:Hsp_hit-from"/>
+			<xs:element ref="tns:Hsp_hit-to"/>
+			<xs:element ref="tns:Hsp_pattern-from" minOccurs="0"/>
+			<xs:element ref="tns:Hsp_pattern-to" minOccurs="0"/>
+			<xs:element ref="tns:Hsp_query-frame" minOccurs="0"/>
+			<xs:element ref="tns:Hsp_hit-frame" minOccurs="0"/>
+			<xs:element ref="tns:Hsp_identity" minOccurs="0"/>
+			<xs:element ref="tns:Hsp_positive" minOccurs="0"/>
+			<xs:element ref="tns:Hsp_gaps" minOccurs="0"/>
+			<xs:element ref="tns:Hsp_align-len" minOccurs="0"/>
+			<xs:element ref="tns:Hsp_density" minOccurs="0"/>
+			<xs:element ref="tns:Hsp_qseq"/>
+			<xs:element ref="tns:Hsp_hseq"/>
+			<xs:element ref="tns:Hsp_midline" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Hsp_align-len" type="xs:string"/>
+	<xs:element name="Hsp_bit-score" type="xs:string"/>
+	<xs:element name="Hsp_density" type="xs:string"/>
+	<xs:element name="Hsp_evalue" type="xs:string"/>
+	<xs:element name="Hsp_gaps" type="xs:string"/>
+	<xs:element name="Hsp_hit-frame" type="xs:string"/>
+	<xs:element name="Hsp_hit-from" type="xs:string"/>
+	<xs:element name="Hsp_hit-to" type="xs:string"/>
+	<xs:element name="Hsp_hseq" type="xs:string"/>
+	<xs:element name="Hsp_identity" type="xs:string"/>
+	<xs:element name="Hsp_midline" type="xs:string"/>
+	<xs:element name="Hsp_num" type="xs:string"/>
+	<xs:element name="Hsp_pattern-from" type="xs:string"/>
+	<xs:element name="Hsp_pattern-to" type="xs:string"/>
+	<xs:element name="Hsp_positive" type="xs:string"/>
+	<xs:element name="Hsp_qseq" type="xs:string"/>
+	<xs:element name="Hsp_query-frame" type="xs:string"/>
+	<xs:element name="Hsp_query-from" type="xs:string"/>
+	<xs:element name="Hsp_query-to" type="xs:string"/>
+	<xs:element name="Hsp_score" type="xs:string"/>
+	<xs:complexType name="ID1Seq-histType">
+		<xs:sequence>
+			<xs:element name="ID1Seq-hist_hist" type="tns:ID1Seq-hist_histType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID1Seq-hist_histType">
+		<xs:sequence>
+			<xs:element name="Seq-hist" type="tns:Seq-histType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID1SeqEntry-infoType">
+		<xs:sequence>
+			<xs:element name="ID1SeqEntry-info_blob-info" type="tns:ID1SeqEntry-info_blob-infoType"/>
+			<xs:element name="ID1SeqEntry-info_blob" type="tns:ID1SeqEntry-info_blobType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID1SeqEntry-info_blobType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID1SeqEntry-info_blob-infoType">
+		<xs:sequence>
+			<xs:element name="ID1blob-info" type="tns:ID1blob-infoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID1blob-infoType">
+		<xs:sequence>
+			<xs:element ref="tns:ID1blob-info_gi"/>
+			<xs:element ref="tns:ID1blob-info_sat"/>
+			<xs:element ref="tns:ID1blob-info_sat-key"/>
+			<xs:element ref="tns:ID1blob-info_satname"/>
+			<xs:element ref="tns:ID1blob-info_suppress"/>
+			<xs:element ref="tns:ID1blob-info_withdrawn"/>
+			<xs:element ref="tns:ID1blob-info_confidential"/>
+			<xs:element ref="tns:ID1blob-info_blob-state"/>
+			<xs:element ref="tns:ID1blob-info_comment" minOccurs="0"/>
+			<xs:element ref="tns:ID1blob-info_extfeatmask" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID1blob-info_blob-state" type="xs:string"/>
+	<xs:element name="ID1blob-info_comment" type="xs:string"/>
+	<xs:element name="ID1blob-info_confidential" type="xs:string"/>
+	<xs:element name="ID1blob-info_extfeatmask" type="xs:string"/>
+	<xs:element name="ID1blob-info_gi" type="xs:string"/>
+	<xs:element name="ID1blob-info_sat" type="xs:string"/>
+	<xs:element name="ID1blob-info_sat-key" type="xs:string"/>
+	<xs:element name="ID1blob-info_satname" type="xs:string"/>
+	<xs:element name="ID1blob-info_suppress" type="xs:string"/>
+	<xs:element name="ID1blob-info_withdrawn" type="xs:string"/>
+	<xs:complexType name="ID1server-backType">
+		<xs:choice>
+			<xs:element ref="tns:ID1server-back_init"/>
+			<xs:element ref="tns:ID1server-back_error"/>
+			<xs:element ref="tns:ID1server-back_gotgi"/>
+			<xs:element name="ID1server-back_gotseqentry" type="tns:ID1server-back_gotseqentryType"/>
+			<xs:element name="ID1server-back_gotdeadseqentry" type="tns:ID1server-back_gotdeadseqentryType"/>
+			<xs:element ref="tns:ID1server-back_fini"/>
+			<xs:element ref="tns:ID1server-back_gistate"/>
+			<xs:element name="ID1server-back_ids" type="tns:ID1server-back_idsType"/>
+			<xs:element name="ID1server-back_gihist" type="tns:ID1server-back_gihistType"/>
+			<xs:element name="ID1server-back_girevhist" type="tns:ID1server-back_girevhistType"/>
+			<xs:element name="ID1server-back_gotsewithinfo" type="tns:ID1server-back_gotsewithinfoType"/>
+			<xs:element name="ID1server-back_gotblobinfo" type="tns:ID1server-back_gotblobinfoType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="ID1server-back_error" type="xs:string"/>
+	<xs:element name="ID1server-back_fini">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="ID1server-back_gihistType">
+		<xs:sequence>
+			<xs:element name="ID1Seq-hist" type="tns:ID1Seq-histType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID1server-back_girevhistType">
+		<xs:sequence>
+			<xs:element name="ID1Seq-hist" type="tns:ID1Seq-histType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID1server-back_gistate" type="xs:string"/>
+	<xs:complexType name="ID1server-back_gotblobinfoType">
+		<xs:sequence>
+			<xs:element name="ID1blob-info" type="tns:ID1blob-infoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID1server-back_gotdeadseqentryType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID1server-back_gotgi" type="xs:string"/>
+	<xs:complexType name="ID1server-back_gotseqentryType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID1server-back_gotsewithinfoType">
+		<xs:sequence>
+			<xs:element name="ID1SeqEntry-info" type="tns:ID1SeqEntry-infoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID1server-back_idsType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID1server-back_init">
+		<xs:complexType/>
+	</xs:element>
+	<xs:element name="ID1server-debug">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="ID1server-back" type="tns:ID1server-backType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="ID1server-maxcomplexType">
+		<xs:sequence>
+			<xs:element name="ID1server-maxcomplex_maxplex" type="tns:ID1server-maxcomplex_maxplexType"/>
+			<xs:element ref="tns:ID1server-maxcomplex_gi"/>
+			<xs:element ref="tns:ID1server-maxcomplex_ent" minOccurs="0"/>
+			<xs:element ref="tns:ID1server-maxcomplex_sat" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID1server-maxcomplex_ent" type="xs:string"/>
+	<xs:element name="ID1server-maxcomplex_gi" type="xs:string"/>
+	<xs:complexType name="ID1server-maxcomplex_maxplexType">
+		<xs:sequence>
+			<xs:element name="Entry-complexities" type="tns:Entry-complexitiesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID1server-maxcomplex_sat" type="xs:string"/>
+	<xs:element name="ID1server-request">
+		<xs:complexType>
+			<xs:choice>
+				<xs:element ref="tns:ID1server-request_init"/>
+				<xs:element name="ID1server-request_getgi" type="tns:ID1server-request_getgiType"/>
+				<xs:element name="ID1server-request_getsefromgi" type="tns:ID1server-request_getsefromgiType"/>
+				<xs:element ref="tns:ID1server-request_fini"/>
+				<xs:element ref="tns:ID1server-request_getseqidsfromgi"/>
+				<xs:element ref="tns:ID1server-request_getgihist"/>
+				<xs:element ref="tns:ID1server-request_getgirev"/>
+				<xs:element ref="tns:ID1server-request_getgistate"/>
+				<xs:element name="ID1server-request_getsewithinfo" type="tns:ID1server-request_getsewithinfoType"/>
+				<xs:element name="ID1server-request_getblobinfo" type="tns:ID1server-request_getblobinfoType"/>
+			</xs:choice>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="ID1server-request_fini">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="ID1server-request_getblobinfoType">
+		<xs:sequence>
+			<xs:element name="ID1server-maxcomplex" type="tns:ID1server-maxcomplexType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID1server-request_getgiType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID1server-request_getgihist" type="xs:string"/>
+	<xs:element name="ID1server-request_getgirev" type="xs:string"/>
+	<xs:element name="ID1server-request_getgistate" type="xs:string"/>
+	<xs:complexType name="ID1server-request_getsefromgiType">
+		<xs:sequence>
+			<xs:element name="ID1server-maxcomplex" type="tns:ID1server-maxcomplexType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID1server-request_getseqidsfromgi" type="xs:string"/>
+	<xs:complexType name="ID1server-request_getsewithinfoType">
+		<xs:sequence>
+			<xs:element name="ID1server-maxcomplex" type="tns:ID1server-maxcomplexType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID1server-request_init">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="ID2-Blob-IdType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2-Blob-Id_sat"/>
+			<xs:element name="ID2-Blob-Id_sub-sat" type="tns:ID2-Blob-Id_sub-satType" minOccurs="0"/>
+			<xs:element ref="tns:ID2-Blob-Id_sat-key"/>
+			<xs:element ref="tns:ID2-Blob-Id_version" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Blob-Id_sat" type="xs:string"/>
+	<xs:element name="ID2-Blob-Id_sat-key" type="xs:string"/>
+	<xs:complexType name="ID2-Blob-Id_sub-satType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="main"/>
+							<xs:enumeration value="snp"/>
+							<xs:enumeration value="snp-graph"/>
+							<xs:enumeration value="cdd"/>
+							<xs:enumeration value="mgc"/>
+							<xs:enumeration value="hprd"/>
+							<xs:enumeration value="sts"/>
+							<xs:enumeration value="trna"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="ID2-Blob-Id_version" type="xs:string"/>
+	<xs:complexType name="ID2-Blob-Seq-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Blob-Seq-id_seq-id" type="tns:ID2-Blob-Seq-id_seq-idType"/>
+			<xs:element ref="tns:ID2-Blob-Seq-id_replaced" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Blob-Seq-id_replaced">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="ID2-Blob-Seq-id_seq-idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Blob-Seq-ids">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="ID2-Blob-Seq-id" type="tns:ID2-Blob-Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="ID2-Blob-StateType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="live"/>
+					<xs:enumeration value="suppressed-temp"/>
+					<xs:enumeration value="suppressed"/>
+					<xs:enumeration value="dead"/>
+					<xs:enumeration value="protected"/>
+					<xs:enumeration value="withdrawn"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="ID2-ErrorType">
+		<xs:sequence>
+			<xs:element name="ID2-Error_severity" type="tns:ID2-Error_severityType"/>
+			<xs:element ref="tns:ID2-Error_retry-delay" minOccurs="0"/>
+			<xs:element ref="tns:ID2-Error_message" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Error_message" type="xs:string"/>
+	<xs:element name="ID2-Error_retry-delay" type="xs:string"/>
+	<xs:complexType name="ID2-Error_severityType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="warning"/>
+					<xs:enumeration value="failed-command"/>
+					<xs:enumeration value="failed-connection"/>
+					<xs:enumeration value="failed-server"/>
+					<xs:enumeration value="no-data"/>
+					<xs:enumeration value="restricted-data"/>
+					<xs:enumeration value="unsupported-command"/>
+					<xs:enumeration value="invalid-arguments"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="ID2-Get-Blob-DetailsType">
+		<xs:sequence>
+			<xs:element name="ID2-Get-Blob-Details_location" type="tns:ID2-Get-Blob-Details_locationType" minOccurs="0"/>
+			<xs:element ref="tns:ID2-Get-Blob-Details_seq-class-level" minOccurs="0"/>
+			<xs:element ref="tns:ID2-Get-Blob-Details_descr-level" minOccurs="0"/>
+			<xs:element ref="tns:ID2-Get-Blob-Details_descr-type-mask" minOccurs="0"/>
+			<xs:element ref="tns:ID2-Get-Blob-Details_annot-type-mask" minOccurs="0"/>
+			<xs:element ref="tns:ID2-Get-Blob-Details_feat-type-mask" minOccurs="0"/>
+			<xs:element name="ID2-Get-Blob-Details_sequence-level" type="tns:ID2-Get-Blob-Details_sequence-levelType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Get-Blob-Details_annot-type-mask" type="xs:string"/>
+	<xs:element name="ID2-Get-Blob-Details_descr-level" type="xs:string"/>
+	<xs:element name="ID2-Get-Blob-Details_descr-type-mask" type="xs:string"/>
+	<xs:element name="ID2-Get-Blob-Details_feat-type-mask" type="xs:string"/>
+	<xs:complexType name="ID2-Get-Blob-Details_locationType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Get-Blob-Details_seq-class-level" type="xs:string"/>
+	<xs:complexType name="ID2-Get-Blob-Details_sequence-levelType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="none"/>
+					<xs:enumeration value="seq-map"/>
+					<xs:enumeration value="seq-data"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="ID2-ParamType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2-Param_name"/>
+			<xs:element name="ID2-Param_value" type="tns:ID2-Param_valueType" minOccurs="0"/>
+			<xs:element name="ID2-Param_type" type="tns:ID2-Param_typeType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Param_name" type="xs:string"/>
+	<xs:complexType name="ID2-Param_typeType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="set-value"/>
+					<xs:enumeration value="get-value"/>
+					<xs:enumeration value="force-value"/>
+					<xs:enumeration value="use-package"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="ID2-Param_valueType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2-Param_value_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Param_value_E" type="xs:string"/>
+	<xs:complexType name="ID2-ParamsType">
+		<xs:sequence>
+			<xs:element name="ID2-Param" type="tns:ID2-ParamType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Reply">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="tns:ID2-Reply_serial-number" minOccurs="0"/>
+				<xs:element name="ID2-Reply_params" type="tns:ID2-Reply_paramsType" minOccurs="0"/>
+				<xs:element name="ID2-Reply_error" type="tns:ID2-Reply_errorType" minOccurs="0"/>
+				<xs:element ref="tns:ID2-Reply_end-of-reply" minOccurs="0"/>
+				<xs:element name="ID2-Reply_reply" type="tns:ID2-Reply_replyType"/>
+				<xs:element name="ID2-Reply_discard" type="tns:ID2-Reply_discardType" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="ID2-Reply-DataType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-Data_data-type" type="tns:ID2-Reply-Data_data-typeType" minOccurs="0"/>
+			<xs:element name="ID2-Reply-Data_data-format" type="tns:ID2-Reply-Data_data-formatType" minOccurs="0"/>
+			<xs:element name="ID2-Reply-Data_data-compression" type="tns:ID2-Reply-Data_data-compressionType" minOccurs="0"/>
+			<xs:element name="ID2-Reply-Data_data" type="tns:ID2-Reply-Data_dataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-Data_dataType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2-Reply-Data_data_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-Data_data-compressionType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="none"/>
+							<xs:enumeration value="gzip"/>
+							<xs:enumeration value="nlmzip"/>
+							<xs:enumeration value="bzip2"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-Data_data-formatType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="asn-binary"/>
+							<xs:enumeration value="asn-text"/>
+							<xs:enumeration value="xml"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-Data_data-typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="seq-entry"/>
+							<xs:enumeration value="seq-annot"/>
+							<xs:enumeration value="id2s-split-info"/>
+							<xs:enumeration value="id2s-chunk"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="ID2-Reply-Data_data_E" type="xs:string"/>
+	<xs:complexType name="ID2-Reply-Get-BlobType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-Get-Blob_blob-id" type="tns:ID2-Reply-Get-Blob_blob-idType"/>
+			<xs:element ref="tns:ID2-Reply-Get-Blob_split-version" minOccurs="0"/>
+			<xs:element name="ID2-Reply-Get-Blob_data" type="tns:ID2-Reply-Get-Blob_dataType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-Get-Blob-IdType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-Get-Blob-Id_seq-id" type="tns:ID2-Reply-Get-Blob-Id_seq-idType"/>
+			<xs:element name="ID2-Reply-Get-Blob-Id_blob-id" type="tns:ID2-Reply-Get-Blob-Id_blob-idType" minOccurs="0"/>
+			<xs:element ref="tns:ID2-Reply-Get-Blob-Id_split-version" minOccurs="0"/>
+			<xs:element name="ID2-Reply-Get-Blob-Id_annot-info" type="tns:ID2-Reply-Get-Blob-Id_annot-infoType" minOccurs="0"/>
+			<xs:element ref="tns:ID2-Reply-Get-Blob-Id_end-of-reply" minOccurs="0"/>
+			<xs:element name="ID2-Reply-Get-Blob-Id_blob-state" type="tns:ID2-Reply-Get-Blob-Id_blob-stateType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-Get-Blob-Id_annot-infoType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-annot-Info" type="tns:ID2S-Seq-annot-InfoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-Get-Blob-Id_blob-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Blob-Id" type="tns:ID2-Blob-IdType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-Get-Blob-Id_blob-stateType">
+		<xs:sequence>
+			<xs:element name="ID2-Blob-State" type="tns:ID2-Blob-StateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Reply-Get-Blob-Id_end-of-reply">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="ID2-Reply-Get-Blob-Id_seq-idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Reply-Get-Blob-Id_split-version" type="xs:string"/>
+	<xs:complexType name="ID2-Reply-Get-Blob-Seq-idsType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-Get-Blob-Seq-ids_blob-id" type="tns:ID2-Reply-Get-Blob-Seq-ids_blob-idType"/>
+			<xs:element name="ID2-Reply-Get-Blob-Seq-ids_ids" type="tns:ID2-Reply-Get-Blob-Seq-ids_idsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-Get-Blob-Seq-ids_blob-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Blob-Id" type="tns:ID2-Blob-IdType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-Get-Blob-Seq-ids_idsType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-Data" type="tns:ID2-Reply-DataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-Get-Blob_blob-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Blob-Id" type="tns:ID2-Blob-IdType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-Get-Blob_dataType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-Data" type="tns:ID2-Reply-DataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Reply-Get-Blob_split-version" type="xs:string"/>
+	<xs:complexType name="ID2-Reply-Get-PackageType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2-Reply-Get-Package_name"/>
+			<xs:element name="ID2-Reply-Get-Package_params" type="tns:ID2-Reply-Get-Package_paramsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Reply-Get-Package_name" type="xs:string"/>
+	<xs:complexType name="ID2-Reply-Get-Package_paramsType">
+		<xs:sequence>
+			<xs:element name="ID2-Params" type="tns:ID2-ParamsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-Get-Seq-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-Get-Seq-id_request" type="tns:ID2-Reply-Get-Seq-id_requestType"/>
+			<xs:element name="ID2-Reply-Get-Seq-id_seq-id" type="tns:ID2-Reply-Get-Seq-id_seq-idType" minOccurs="0"/>
+			<xs:element ref="tns:ID2-Reply-Get-Seq-id_end-of-reply" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Reply-Get-Seq-id_end-of-reply">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="ID2-Reply-Get-Seq-id_requestType">
+		<xs:sequence>
+			<xs:element name="ID2-Request-Get-Seq-id" type="tns:ID2-Request-Get-Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-Get-Seq-id_seq-idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-ReGet-BlobType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-ReGet-Blob_blob-id" type="tns:ID2-Reply-ReGet-Blob_blob-idType"/>
+			<xs:element ref="tns:ID2-Reply-ReGet-Blob_split-version"/>
+			<xs:element ref="tns:ID2-Reply-ReGet-Blob_offset"/>
+			<xs:element name="ID2-Reply-ReGet-Blob_data" type="tns:ID2-Reply-ReGet-Blob_dataType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-ReGet-Blob_blob-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Blob-Id" type="tns:ID2-Blob-IdType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply-ReGet-Blob_dataType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-Data" type="tns:ID2-Reply-DataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Reply-ReGet-Blob_offset" type="xs:string"/>
+	<xs:element name="ID2-Reply-ReGet-Blob_split-version" type="xs:string"/>
+	<xs:complexType name="ID2-Reply_discardType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="reply"/>
+					<xs:enumeration value="last-octet-string"/>
+					<xs:enumeration value="nothing"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="ID2-Reply_end-of-reply">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="ID2-Reply_errorType">
+		<xs:sequence>
+			<xs:element name="ID2-Error" type="tns:ID2-ErrorType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply_paramsType">
+		<xs:sequence>
+			<xs:element name="ID2-Params" type="tns:ID2-ParamsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply_replyType">
+		<xs:choice>
+			<xs:element ref="tns:ID2-Reply_reply_init"/>
+			<xs:element ref="tns:ID2-Reply_reply_empty"/>
+			<xs:element name="ID2-Reply_reply_get-package" type="tns:ID2-Reply_reply_get-packageType"/>
+			<xs:element name="ID2-Reply_reply_get-seq-id" type="tns:ID2-Reply_reply_get-seq-idType"/>
+			<xs:element name="ID2-Reply_reply_get-blob-id" type="tns:ID2-Reply_reply_get-blob-idType"/>
+			<xs:element name="ID2-Reply_reply_get-blob-seq-ids" type="tns:ID2-Reply_reply_get-blob-seq-idsType"/>
+			<xs:element name="ID2-Reply_reply_get-blob" type="tns:ID2-Reply_reply_get-blobType"/>
+			<xs:element name="ID2-Reply_reply_reget-blob" type="tns:ID2-Reply_reply_reget-blobType"/>
+			<xs:element name="ID2-Reply_reply_get-split-info" type="tns:ID2-Reply_reply_get-split-infoType"/>
+			<xs:element name="ID2-Reply_reply_get-chunk" type="tns:ID2-Reply_reply_get-chunkType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="ID2-Reply_reply_empty">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="ID2-Reply_reply_get-blobType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-Get-Blob" type="tns:ID2-Reply-Get-BlobType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply_reply_get-blob-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-Get-Blob-Id" type="tns:ID2-Reply-Get-Blob-IdType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply_reply_get-blob-seq-idsType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-Get-Blob-Seq-ids" type="tns:ID2-Reply-Get-Blob-Seq-idsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply_reply_get-chunkType">
+		<xs:sequence>
+			<xs:element name="ID2S-Reply-Get-Chunk" type="tns:ID2S-Reply-Get-ChunkType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply_reply_get-packageType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-Get-Package" type="tns:ID2-Reply-Get-PackageType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply_reply_get-seq-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-Get-Seq-id" type="tns:ID2-Reply-Get-Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Reply_reply_get-split-infoType">
+		<xs:sequence>
+			<xs:element name="ID2S-Reply-Get-Split-Info" type="tns:ID2S-Reply-Get-Split-InfoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Reply_reply_init">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="ID2-Reply_reply_reget-blobType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-ReGet-Blob" type="tns:ID2-Reply-ReGet-BlobType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Reply_serial-number" type="xs:string"/>
+	<xs:complexType name="ID2-RequestType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2-Request_serial-number" minOccurs="0"/>
+			<xs:element name="ID2-Request_params" type="tns:ID2-Request_paramsType" minOccurs="0"/>
+			<xs:element name="ID2-Request_request" type="tns:ID2-Request_requestType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request-Get-Blob-IdType">
+		<xs:sequence>
+			<xs:element name="ID2-Request-Get-Blob-Id_seq-id" type="tns:ID2-Request-Get-Blob-Id_seq-idType"/>
+			<xs:element name="ID2-Request-Get-Blob-Id_sources" type="tns:ID2-Request-Get-Blob-Id_sourcesType" minOccurs="0"/>
+			<xs:element ref="tns:ID2-Request-Get-Blob-Id_external" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Request-Get-Blob-Id_external">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="ID2-Request-Get-Blob-Id_seq-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Request-Get-Seq-id" type="tns:ID2-Request-Get-Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request-Get-Blob-Id_sourcesType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2-Request-Get-Blob-Id_sources_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Request-Get-Blob-Id_sources_E" type="xs:string"/>
+	<xs:complexType name="ID2-Request-Get-Blob-InfoType">
+		<xs:sequence>
+			<xs:element name="ID2-Request-Get-Blob-Info_blob-id" type="tns:ID2-Request-Get-Blob-Info_blob-idType"/>
+			<xs:element ref="tns:ID2-Request-Get-Blob-Info_get-seq-ids" minOccurs="0"/>
+			<xs:element name="ID2-Request-Get-Blob-Info_get-data" type="tns:ID2-Request-Get-Blob-Info_get-dataType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request-Get-Blob-Info_blob-idType">
+		<xs:choice>
+			<xs:element name="ID2-Request-Get-Blob-Info_blob-id_blob-id" type="tns:ID2-Request-Get-Blob-Info_blob-id_blob-idType"/>
+			<xs:element name="ID2-Request-Get-Blob-Info_blob-id_resolve" type="tns:ID2-Request-Get-Blob-Info_blob-id_resolveType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request-Get-Blob-Info_blob-id_blob-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Blob-Id" type="tns:ID2-Blob-IdType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request-Get-Blob-Info_blob-id_resolveType">
+		<xs:sequence>
+			<xs:element name="ID2-Request-Get-Blob-Info_blob-id_resolve_request" type="tns:ID2-Request-Get-Blob-Info_blob-id_resolve_requestType"/>
+			<xs:element name="ID2-Request-Get-Blob-Info_blob-id_resolve_exclude-blobs" type="tns:ID2-Request-Get-Blob-Info_blob-id_resolve_exclude-blobsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request-Get-Blob-Info_blob-id_resolve_exclude-blobsType">
+		<xs:sequence>
+			<xs:element name="ID2-Blob-Id" type="tns:ID2-Blob-IdType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request-Get-Blob-Info_blob-id_resolve_requestType">
+		<xs:sequence>
+			<xs:element name="ID2-Request-Get-Blob-Id" type="tns:ID2-Request-Get-Blob-IdType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request-Get-Blob-Info_get-dataType">
+		<xs:sequence>
+			<xs:element name="ID2-Get-Blob-Details" type="tns:ID2-Get-Blob-DetailsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Request-Get-Blob-Info_get-seq-ids">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="ID2-Request-Get-PackagesType">
+		<xs:sequence>
+			<xs:element name="ID2-Request-Get-Packages_names" type="tns:ID2-Request-Get-Packages_namesType" minOccurs="0"/>
+			<xs:element ref="tns:ID2-Request-Get-Packages_no-contents" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request-Get-Packages_namesType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2-Request-Get-Packages_names_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Request-Get-Packages_names_E" type="xs:string"/>
+	<xs:element name="ID2-Request-Get-Packages_no-contents">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="ID2-Request-Get-Seq-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Request-Get-Seq-id_seq-id" type="tns:ID2-Request-Get-Seq-id_seq-idType"/>
+			<xs:element name="ID2-Request-Get-Seq-id_seq-id-type" type="tns:ID2-Request-Get-Seq-id_seq-id-typeType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request-Get-Seq-id_seq-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Seq-id" type="tns:ID2-Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request-Get-Seq-id_seq-id-typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="any"/>
+							<xs:enumeration value="gi"/>
+							<xs:enumeration value="text"/>
+							<xs:enumeration value="general"/>
+							<xs:enumeration value="all"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="ID2-Request-Packet">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="ID2-Request" type="tns:ID2-RequestType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="ID2-Request-ReGet-BlobType">
+		<xs:sequence>
+			<xs:element name="ID2-Request-ReGet-Blob_blob-id" type="tns:ID2-Request-ReGet-Blob_blob-idType"/>
+			<xs:element ref="tns:ID2-Request-ReGet-Blob_split-version"/>
+			<xs:element ref="tns:ID2-Request-ReGet-Blob_offset"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request-ReGet-Blob_blob-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Blob-Id" type="tns:ID2-Blob-IdType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Request-ReGet-Blob_offset" type="xs:string"/>
+	<xs:element name="ID2-Request-ReGet-Blob_split-version" type="xs:string"/>
+	<xs:complexType name="ID2-Request_paramsType">
+		<xs:sequence>
+			<xs:element name="ID2-Params" type="tns:ID2-ParamsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request_requestType">
+		<xs:choice>
+			<xs:element ref="tns:ID2-Request_request_init"/>
+			<xs:element name="ID2-Request_request_get-packages" type="tns:ID2-Request_request_get-packagesType"/>
+			<xs:element name="ID2-Request_request_get-seq-id" type="tns:ID2-Request_request_get-seq-idType"/>
+			<xs:element name="ID2-Request_request_get-blob-id" type="tns:ID2-Request_request_get-blob-idType"/>
+			<xs:element name="ID2-Request_request_get-blob-info" type="tns:ID2-Request_request_get-blob-infoType"/>
+			<xs:element name="ID2-Request_request_reget-blob" type="tns:ID2-Request_request_reget-blobType"/>
+			<xs:element name="ID2-Request_request_get-chunks" type="tns:ID2-Request_request_get-chunksType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request_request_get-blob-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Request-Get-Blob-Id" type="tns:ID2-Request-Get-Blob-IdType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request_request_get-blob-infoType">
+		<xs:sequence>
+			<xs:element name="ID2-Request-Get-Blob-Info" type="tns:ID2-Request-Get-Blob-InfoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request_request_get-chunksType">
+		<xs:sequence>
+			<xs:element name="ID2S-Request-Get-Chunks" type="tns:ID2S-Request-Get-ChunksType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request_request_get-packagesType">
+		<xs:sequence>
+			<xs:element name="ID2-Request-Get-Packages" type="tns:ID2-Request-Get-PackagesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2-Request_request_get-seq-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Request-Get-Seq-id" type="tns:ID2-Request-Get-Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Request_request_init">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="ID2-Request_request_reget-blobType">
+		<xs:sequence>
+			<xs:element name="ID2-Request-ReGet-Blob" type="tns:ID2-Request-ReGet-BlobType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Request_serial-number" type="xs:string"/>
+	<xs:complexType name="ID2-Seq-idType">
+		<xs:choice>
+			<xs:element ref="tns:ID2-Seq-id_string"/>
+			<xs:element name="ID2-Seq-id_seq-id" type="tns:ID2-Seq-id_seq-idType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="ID2-Seq-id_seq-idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2-Seq-id_string" type="xs:string"/>
+	<xs:complexType name="ID2S-Bioseq-IdsType">
+		<xs:sequence>
+			<xs:element name="ID2S-Bioseq-Ids_E" type="tns:ID2S-Bioseq-Ids_EType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Bioseq-Ids_EType">
+		<xs:choice>
+			<xs:element ref="tns:ID2S-Bioseq-Ids_E_gi"/>
+			<xs:element name="ID2S-Bioseq-Ids_E_seq-id" type="tns:ID2S-Bioseq-Ids_E_seq-idType"/>
+			<xs:element name="ID2S-Bioseq-Ids_E_gi-range" type="tns:ID2S-Bioseq-Ids_E_gi-rangeType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="ID2S-Bioseq-Ids_E_gi" type="xs:string"/>
+	<xs:complexType name="ID2S-Bioseq-Ids_E_gi-rangeType">
+		<xs:sequence>
+			<xs:element name="ID2S-Gi-Range" type="tns:ID2S-Gi-RangeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Bioseq-Ids_E_seq-idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Bioseq-InfoType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Bioseq-Info_gap-count" minOccurs="0"/>
+			<xs:element name="ID2S-Bioseq-Info_seq-map-has-ref" type="tns:ID2S-Bioseq-Info_seq-map-has-refType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Bioseq-Info_gap-count" type="xs:string"/>
+	<xs:complexType name="ID2S-Bioseq-Info_seq-map-has-refType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Bioseq-place-InfoType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Bioseq-place-Info_bioseq-set"/>
+			<xs:element name="ID2S-Bioseq-place-Info_seq-ids" type="tns:ID2S-Bioseq-place-Info_seq-idsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Bioseq-place-Info_bioseq-set" type="xs:string"/>
+	<xs:complexType name="ID2S-Bioseq-place-Info_seq-idsType">
+		<xs:sequence>
+			<xs:element name="ID2S-Bioseq-Ids" type="tns:ID2S-Bioseq-IdsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Bioseq-set-IdsType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Bioseq-set-Ids_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Bioseq-set-Ids_E" type="xs:string"/>
+	<xs:complexType name="ID2S-Bioseqs-InfoType">
+		<xs:sequence>
+			<xs:element name="ID2S-Bioseqs-Info_info" type="tns:ID2S-Bioseqs-Info_infoType"/>
+			<xs:element name="ID2S-Bioseqs-Info_bioseqs" type="tns:ID2S-Bioseqs-Info_bioseqsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Bioseqs-Info_bioseqsType">
+		<xs:sequence>
+			<xs:element name="ID2S-Bioseq-Ids" type="tns:ID2S-Bioseq-IdsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Bioseqs-Info_infoType">
+		<xs:sequence>
+			<xs:element name="ID2S-Bioseq-Info" type="tns:ID2S-Bioseq-InfoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Chunk">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="ID2S-Chunk_data" type="tns:ID2S-Chunk_dataType"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="ID2S-Chunk-ContentType">
+		<xs:choice>
+			<xs:element name="ID2S-Chunk-Content_seq-descr" type="tns:ID2S-Chunk-Content_seq-descrType"/>
+			<xs:element name="ID2S-Chunk-Content_seq-annot" type="tns:ID2S-Chunk-Content_seq-annotType"/>
+			<xs:element name="ID2S-Chunk-Content_seq-assembly" type="tns:ID2S-Chunk-Content_seq-assemblyType"/>
+			<xs:element name="ID2S-Chunk-Content_seq-map" type="tns:ID2S-Chunk-Content_seq-mapType"/>
+			<xs:element name="ID2S-Chunk-Content_seq-data" type="tns:ID2S-Chunk-Content_seq-dataType"/>
+			<xs:element name="ID2S-Chunk-Content_seq-annot-place" type="tns:ID2S-Chunk-Content_seq-annot-placeType"/>
+			<xs:element name="ID2S-Chunk-Content_bioseq-place" type="tns:ID2S-Chunk-Content_bioseq-placeType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Content_bioseq-placeType">
+		<xs:sequence>
+			<xs:element name="ID2S-Bioseq-place-Info" type="tns:ID2S-Bioseq-place-InfoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Content_seq-annotType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-annot-Info" type="tns:ID2S-Seq-annot-InfoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Content_seq-annot-placeType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-annot-place-Info" type="tns:ID2S-Seq-annot-place-InfoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Content_seq-assemblyType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-assembly-Info" type="tns:ID2S-Seq-assembly-InfoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Content_seq-dataType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-data-Info" type="tns:ID2S-Seq-data-InfoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Content_seq-descrType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-descr-Info" type="tns:ID2S-Seq-descr-InfoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Content_seq-mapType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-map-Info" type="tns:ID2S-Seq-map-InfoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-DataType">
+		<xs:sequence>
+			<xs:element name="ID2S-Chunk-Data_id" type="tns:ID2S-Chunk-Data_idType"/>
+			<xs:element name="ID2S-Chunk-Data_descr" type="tns:ID2S-Chunk-Data_descrType" minOccurs="0"/>
+			<xs:element name="ID2S-Chunk-Data_annots" type="tns:ID2S-Chunk-Data_annotsType" minOccurs="0"/>
+			<xs:element name="ID2S-Chunk-Data_assembly" type="tns:ID2S-Chunk-Data_assemblyType" minOccurs="0"/>
+			<xs:element name="ID2S-Chunk-Data_seq-map" type="tns:ID2S-Chunk-Data_seq-mapType" minOccurs="0"/>
+			<xs:element name="ID2S-Chunk-Data_seq-data" type="tns:ID2S-Chunk-Data_seq-dataType" minOccurs="0"/>
+			<xs:element name="ID2S-Chunk-Data_bioseqs" type="tns:ID2S-Chunk-Data_bioseqsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Data_annotsType">
+		<xs:sequence>
+			<xs:element name="Seq-annot" type="tns:Seq-annotType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Data_assemblyType">
+		<xs:sequence>
+			<xs:element name="Seq-align" type="tns:Seq-alignType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Data_bioseqsType">
+		<xs:sequence>
+			<xs:element name="Bioseq" type="tns:BioseqType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Data_descrType">
+		<xs:sequence>
+			<xs:element name="Seq-descr" type="tns:Seq-descrType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Data_idType">
+		<xs:choice>
+			<xs:element ref="tns:ID2S-Chunk-Data_id_bioseq-set"/>
+			<xs:element ref="tns:ID2S-Chunk-Data_id_gi"/>
+			<xs:element name="ID2S-Chunk-Data_id_seq-id" type="tns:ID2S-Chunk-Data_id_seq-idType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="ID2S-Chunk-Data_id_bioseq-set" type="xs:string"/>
+	<xs:element name="ID2S-Chunk-Data_id_gi" type="xs:string"/>
+	<xs:complexType name="ID2S-Chunk-Data_id_seq-idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Data_seq-dataType">
+		<xs:sequence>
+			<xs:element name="ID2S-Sequence-Piece" type="tns:ID2S-Sequence-PieceType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Data_seq-mapType">
+		<xs:sequence>
+			<xs:element name="ID2S-Sequence-Piece" type="tns:ID2S-Sequence-PieceType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Chunk-Id" type="xs:string"/>
+	<xs:complexType name="ID2S-Chunk-InfoType">
+		<xs:sequence>
+			<xs:element name="ID2S-Chunk-Info_id" type="tns:ID2S-Chunk-Info_idType"/>
+			<xs:element name="ID2S-Chunk-Info_content" type="tns:ID2S-Chunk-Info_contentType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Info_contentType">
+		<xs:sequence>
+			<xs:element name="ID2S-Chunk-Content" type="tns:ID2S-Chunk-ContentType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk-Info_idType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Chunk-Id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Chunk_dataType">
+		<xs:sequence>
+			<xs:element name="ID2S-Chunk-Data" type="tns:ID2S-Chunk-DataType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Feat-type-InfoType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Feat-type-Info_type"/>
+			<xs:element name="ID2S-Feat-type-Info_subtypes" type="tns:ID2S-Feat-type-Info_subtypesType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Feat-type-Info_subtypesType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Feat-type-Info_subtypes_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Feat-type-Info_subtypes_E" type="xs:string"/>
+	<xs:element name="ID2S-Feat-type-Info_type" type="xs:string"/>
+	<xs:complexType name="ID2S-Gi-IntervalType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Gi-Interval_gi"/>
+			<xs:element ref="tns:ID2S-Gi-Interval_start"/>
+			<xs:element ref="tns:ID2S-Gi-Interval_length" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Gi-Interval_gi" type="xs:string"/>
+	<xs:element name="ID2S-Gi-Interval_length" type="xs:string"/>
+	<xs:element name="ID2S-Gi-Interval_start" type="xs:string"/>
+	<xs:complexType name="ID2S-Gi-IntsType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Gi-Ints_gi"/>
+			<xs:element name="ID2S-Gi-Ints_ints" type="tns:ID2S-Gi-Ints_intsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Gi-Ints_gi" type="xs:string"/>
+	<xs:complexType name="ID2S-Gi-Ints_intsType">
+		<xs:sequence>
+			<xs:element name="ID2S-Interval" type="tns:ID2S-IntervalType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Gi-RangeType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Gi-Range_start"/>
+			<xs:element ref="tns:ID2S-Gi-Range_count" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Gi-Range_count" type="xs:string"/>
+	<xs:element name="ID2S-Gi-Range_start" type="xs:string"/>
+	<xs:complexType name="ID2S-IntervalType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Interval_start"/>
+			<xs:element ref="tns:ID2S-Interval_length" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Interval_length" type="xs:string"/>
+	<xs:element name="ID2S-Interval_start" type="xs:string"/>
+	<xs:complexType name="ID2S-Reply-Get-ChunkType">
+		<xs:sequence>
+			<xs:element name="ID2S-Reply-Get-Chunk_blob-id" type="tns:ID2S-Reply-Get-Chunk_blob-idType"/>
+			<xs:element name="ID2S-Reply-Get-Chunk_chunk-id" type="tns:ID2S-Reply-Get-Chunk_chunk-idType"/>
+			<xs:element name="ID2S-Reply-Get-Chunk_data" type="tns:ID2S-Reply-Get-Chunk_dataType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Reply-Get-Chunk_blob-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Blob-Id" type="tns:ID2-Blob-IdType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Reply-Get-Chunk_chunk-idType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Chunk-Id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Reply-Get-Chunk_dataType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-Data" type="tns:ID2-Reply-DataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Reply-Get-Split-InfoType">
+		<xs:sequence>
+			<xs:element name="ID2S-Reply-Get-Split-Info_blob-id" type="tns:ID2S-Reply-Get-Split-Info_blob-idType"/>
+			<xs:element ref="tns:ID2S-Reply-Get-Split-Info_split-version"/>
+			<xs:element name="ID2S-Reply-Get-Split-Info_data" type="tns:ID2S-Reply-Get-Split-Info_dataType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Reply-Get-Split-Info_blob-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Blob-Id" type="tns:ID2-Blob-IdType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Reply-Get-Split-Info_dataType">
+		<xs:sequence>
+			<xs:element name="ID2-Reply-Data" type="tns:ID2-Reply-DataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Reply-Get-Split-Info_split-version" type="xs:string"/>
+	<xs:complexType name="ID2S-Request-Get-ChunksType">
+		<xs:sequence>
+			<xs:element name="ID2S-Request-Get-Chunks_blob-id" type="tns:ID2S-Request-Get-Chunks_blob-idType"/>
+			<xs:element name="ID2S-Request-Get-Chunks_chunks" type="tns:ID2S-Request-Get-Chunks_chunksType"/>
+			<xs:element ref="tns:ID2S-Request-Get-Chunks_split-version" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Request-Get-Chunks_blob-idType">
+		<xs:sequence>
+			<xs:element name="ID2-Blob-Id" type="tns:ID2-Blob-IdType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Request-Get-Chunks_chunksType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Chunk-Id" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Request-Get-Chunks_split-version" type="xs:string"/>
+	<xs:complexType name="ID2S-Seq-annot-InfoType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Seq-annot-Info_name" minOccurs="0"/>
+			<xs:element ref="tns:ID2S-Seq-annot-Info_align" minOccurs="0"/>
+			<xs:element ref="tns:ID2S-Seq-annot-Info_graph" minOccurs="0"/>
+			<xs:element name="ID2S-Seq-annot-Info_feat" type="tns:ID2S-Seq-annot-Info_featType" minOccurs="0"/>
+			<xs:element name="ID2S-Seq-annot-Info_seq-loc" type="tns:ID2S-Seq-annot-Info_seq-locType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Seq-annot-Info_align">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="ID2S-Seq-annot-Info_featType">
+		<xs:sequence>
+			<xs:element name="ID2S-Feat-type-Info" type="tns:ID2S-Feat-type-InfoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Seq-annot-Info_graph">
+		<xs:complexType/>
+	</xs:element>
+	<xs:element name="ID2S-Seq-annot-Info_name" type="xs:string"/>
+	<xs:complexType name="ID2S-Seq-annot-Info_seq-locType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-loc" type="tns:ID2S-Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-annot-place-InfoType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Seq-annot-place-Info_name" minOccurs="0"/>
+			<xs:element name="ID2S-Seq-annot-place-Info_bioseqs" type="tns:ID2S-Seq-annot-place-Info_bioseqsType" minOccurs="0"/>
+			<xs:element name="ID2S-Seq-annot-place-Info_bioseq-sets" type="tns:ID2S-Seq-annot-place-Info_bioseq-setsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-annot-place-Info_bioseq-setsType">
+		<xs:sequence>
+			<xs:element name="ID2S-Bioseq-set-Ids" type="tns:ID2S-Bioseq-set-IdsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-annot-place-Info_bioseqsType">
+		<xs:sequence>
+			<xs:element name="ID2S-Bioseq-Ids" type="tns:ID2S-Bioseq-IdsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Seq-annot-place-Info_name" type="xs:string"/>
+	<xs:complexType name="ID2S-Seq-assembly-InfoType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-assembly-Info_bioseqs" type="tns:ID2S-Seq-assembly-Info_bioseqsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-assembly-Info_bioseqsType">
+		<xs:sequence>
+			<xs:element name="ID2S-Bioseq-Ids" type="tns:ID2S-Bioseq-IdsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-data-InfoType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-loc" type="tns:ID2S-Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-descr-InfoType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Seq-descr-Info_type-mask"/>
+			<xs:element name="ID2S-Seq-descr-Info_bioseqs" type="tns:ID2S-Seq-descr-Info_bioseqsType" minOccurs="0"/>
+			<xs:element name="ID2S-Seq-descr-Info_bioseq-sets" type="tns:ID2S-Seq-descr-Info_bioseq-setsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-descr-Info_bioseq-setsType">
+		<xs:sequence>
+			<xs:element name="ID2S-Bioseq-set-Ids" type="tns:ID2S-Bioseq-set-IdsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-descr-Info_bioseqsType">
+		<xs:sequence>
+			<xs:element name="ID2S-Bioseq-Ids" type="tns:ID2S-Bioseq-IdsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Seq-descr-Info_type-mask" type="xs:string"/>
+	<xs:complexType name="ID2S-Seq-id-IntervalType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-id-Interval_seq-id" type="tns:ID2S-Seq-id-Interval_seq-idType"/>
+			<xs:element ref="tns:ID2S-Seq-id-Interval_start"/>
+			<xs:element ref="tns:ID2S-Seq-id-Interval_length" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Seq-id-Interval_length" type="xs:string"/>
+	<xs:complexType name="ID2S-Seq-id-Interval_seq-idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Seq-id-Interval_start" type="xs:string"/>
+	<xs:complexType name="ID2S-Seq-id-IntsType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-id-Ints_seq-id" type="tns:ID2S-Seq-id-Ints_seq-idType"/>
+			<xs:element name="ID2S-Seq-id-Ints_ints" type="tns:ID2S-Seq-id-Ints_intsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-id-Ints_intsType">
+		<xs:sequence>
+			<xs:element name="ID2S-Interval" type="tns:ID2S-IntervalType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-id-Ints_seq-idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-locType">
+		<xs:choice>
+			<xs:element ref="tns:ID2S-Seq-loc_whole-gi"/>
+			<xs:element name="ID2S-Seq-loc_whole-seq-id" type="tns:ID2S-Seq-loc_whole-seq-idType"/>
+			<xs:element name="ID2S-Seq-loc_whole-gi-range" type="tns:ID2S-Seq-loc_whole-gi-rangeType"/>
+			<xs:element name="ID2S-Seq-loc_gi-interval" type="tns:ID2S-Seq-loc_gi-intervalType"/>
+			<xs:element name="ID2S-Seq-loc_seq-id-interval" type="tns:ID2S-Seq-loc_seq-id-intervalType"/>
+			<xs:element name="ID2S-Seq-loc_gi-ints" type="tns:ID2S-Seq-loc_gi-intsType"/>
+			<xs:element name="ID2S-Seq-loc_seq-id-ints" type="tns:ID2S-Seq-loc_seq-id-intsType"/>
+			<xs:element name="ID2S-Seq-loc_loc-set" type="tns:ID2S-Seq-loc_loc-setType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-loc_gi-intervalType">
+		<xs:sequence>
+			<xs:element name="ID2S-Gi-Interval" type="tns:ID2S-Gi-IntervalType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-loc_gi-intsType">
+		<xs:sequence>
+			<xs:element name="ID2S-Gi-Ints" type="tns:ID2S-Gi-IntsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-loc_loc-setType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-loc" type="tns:ID2S-Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-loc_seq-id-intervalType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-id-Interval" type="tns:ID2S-Seq-id-IntervalType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-loc_seq-id-intsType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-id-Ints" type="tns:ID2S-Seq-id-IntsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Seq-loc_whole-gi" type="xs:string"/>
+	<xs:complexType name="ID2S-Seq-loc_whole-gi-rangeType">
+		<xs:sequence>
+			<xs:element name="ID2S-Gi-Range" type="tns:ID2S-Gi-RangeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-loc_whole-seq-idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Seq-map-InfoType">
+		<xs:sequence>
+			<xs:element name="ID2S-Seq-loc" type="tns:ID2S-Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Sequence-PieceType">
+		<xs:sequence>
+			<xs:element ref="tns:ID2S-Sequence-Piece_start"/>
+			<xs:element name="ID2S-Sequence-Piece_data" type="tns:ID2S-Sequence-Piece_dataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Sequence-Piece_dataType">
+		<xs:sequence>
+			<xs:element name="Seq-literal" type="tns:Seq-literalType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ID2S-Sequence-Piece_start" type="xs:string"/>
+	<xs:element name="ID2S-Split-Info">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="ID2S-Split-Info_bioseqs-info" type="tns:ID2S-Split-Info_bioseqs-infoType" minOccurs="0"/>
+				<xs:element name="ID2S-Split-Info_chunks" type="tns:ID2S-Split-Info_chunksType"/>
+				<xs:element name="ID2S-Split-Info_skeleton" type="tns:ID2S-Split-Info_skeletonType" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="ID2S-Split-Info_bioseqs-infoType">
+		<xs:sequence>
+			<xs:element name="ID2S-Bioseqs-Info" type="tns:ID2S-Bioseqs-InfoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Split-Info_chunksType">
+		<xs:sequence>
+			<xs:element name="ID2S-Chunk-Info" type="tns:ID2S-Chunk-InfoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ID2S-Split-Info_skeletonType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="INSDAuthor" type="xs:string"/>
+	<xs:complexType name="INSDFeatureType">
+		<xs:sequence>
+			<xs:element ref="tns:INSDFeature_key"/>
+			<xs:element ref="tns:INSDFeature_location"/>
+			<xs:element name="INSDFeature_intervals" type="tns:INSDFeature_intervalsType" minOccurs="0"/>
+			<xs:element ref="tns:INSDFeature_operator" minOccurs="0"/>
+			<xs:element name="INSDFeature_partial5" type="tns:INSDFeature_partial5Type" minOccurs="0"/>
+			<xs:element name="INSDFeature_partial3" type="tns:INSDFeature_partial3Type" minOccurs="0"/>
+			<xs:element name="INSDFeature_quals" type="tns:INSDFeature_qualsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="INSDFeature_intervalsType">
+		<xs:sequence>
+			<xs:element name="INSDInterval" type="tns:INSDIntervalType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="INSDFeature_key" type="xs:string"/>
+	<xs:element name="INSDFeature_location" type="xs:string"/>
+	<xs:element name="INSDFeature_operator" type="xs:string"/>
+	<xs:complexType name="INSDFeature_partial3Type">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="INSDFeature_partial5Type">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="INSDFeature_qualsType">
+		<xs:sequence>
+			<xs:element name="INSDQualifier" type="tns:INSDQualifierType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="INSDIntervalType">
+		<xs:sequence>
+			<xs:element ref="tns:INSDInterval_from" minOccurs="0"/>
+			<xs:element ref="tns:INSDInterval_to" minOccurs="0"/>
+			<xs:element ref="tns:INSDInterval_point" minOccurs="0"/>
+			<xs:element name="INSDInterval_iscomp" type="tns:INSDInterval_iscompType" minOccurs="0"/>
+			<xs:element name="INSDInterval_interbp" type="tns:INSDInterval_interbpType" minOccurs="0"/>
+			<xs:element ref="tns:INSDInterval_accession"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="INSDInterval_accession" type="xs:string"/>
+	<xs:element name="INSDInterval_from" type="xs:string"/>
+	<xs:complexType name="INSDInterval_interbpType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="INSDInterval_iscompType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="INSDInterval_point" type="xs:string"/>
+	<xs:element name="INSDInterval_to" type="xs:string"/>
+	<xs:element name="INSDKeyword" type="xs:string"/>
+	<xs:complexType name="INSDQualifierType">
+		<xs:sequence>
+			<xs:element ref="tns:INSDQualifier_name"/>
+			<xs:element ref="tns:INSDQualifier_value" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="INSDQualifier_name" type="xs:string"/>
+	<xs:element name="INSDQualifier_value" type="xs:string"/>
+	<xs:complexType name="INSDReferenceType">
+		<xs:sequence>
+			<xs:element ref="tns:INSDReference_reference"/>
+			<xs:element ref="tns:INSDReference_position" minOccurs="0"/>
+			<xs:element name="INSDReference_authors" type="tns:INSDReference_authorsType" minOccurs="0"/>
+			<xs:element ref="tns:INSDReference_consortium" minOccurs="0"/>
+			<xs:element ref="tns:INSDReference_title" minOccurs="0"/>
+			<xs:element ref="tns:INSDReference_journal"/>
+			<xs:element name="INSDReference_xref" type="tns:INSDReference_xrefType" minOccurs="0"/>
+			<xs:element ref="tns:INSDReference_pubmed" minOccurs="0"/>
+			<xs:element ref="tns:INSDReference_remark" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="INSDReference_authorsType">
+		<xs:sequence>
+			<xs:element ref="tns:INSDAuthor" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="INSDReference_consortium" type="xs:string"/>
+	<xs:element name="INSDReference_journal" type="xs:string"/>
+	<xs:element name="INSDReference_position" type="xs:string"/>
+	<xs:element name="INSDReference_pubmed" type="xs:string"/>
+	<xs:element name="INSDReference_reference" type="xs:string"/>
+	<xs:element name="INSDReference_remark" type="xs:string"/>
+	<xs:element name="INSDReference_title" type="xs:string"/>
+	<xs:complexType name="INSDReference_xrefType">
+		<xs:sequence>
+			<xs:element name="INSDXref" type="tns:INSDXrefType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="INSDSecondary-accn" type="xs:string"/>
+	<xs:complexType name="INSDSeqType">
+		<xs:sequence>
+			<xs:element ref="tns:INSDSeq_locus"/>
+			<xs:element ref="tns:INSDSeq_length"/>
+			<xs:element ref="tns:INSDSeq_strandedness" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_moltype"/>
+			<xs:element ref="tns:INSDSeq_topology" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_division"/>
+			<xs:element ref="tns:INSDSeq_update-date"/>
+			<xs:element ref="tns:INSDSeq_create-date" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_update-release" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_create-release" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_definition"/>
+			<xs:element ref="tns:INSDSeq_primary-accession" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_entry-version" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_accession-version" minOccurs="0"/>
+			<xs:element name="INSDSeq_other-seqids" type="tns:INSDSeq_other-seqidsType" minOccurs="0"/>
+			<xs:element name="INSDSeq_secondary-accessions" type="tns:INSDSeq_secondary-accessionsType" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_project" minOccurs="0"/>
+			<xs:element name="INSDSeq_keywords" type="tns:INSDSeq_keywordsType" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_segment" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_source" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_organism" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_taxonomy" minOccurs="0"/>
+			<xs:element name="INSDSeq_references" type="tns:INSDSeq_referencesType" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_comment" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_primary" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_source-db" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_database-reference" minOccurs="0"/>
+			<xs:element name="INSDSeq_feature-table" type="tns:INSDSeq_feature-tableType" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_sequence" minOccurs="0"/>
+			<xs:element ref="tns:INSDSeq_contig" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="INSDSeq_accession-version" type="xs:string"/>
+	<xs:element name="INSDSeq_comment" type="xs:string"/>
+	<xs:element name="INSDSeq_contig" type="xs:string"/>
+	<xs:element name="INSDSeq_create-date" type="xs:string"/>
+	<xs:element name="INSDSeq_create-release" type="xs:string"/>
+	<xs:element name="INSDSeq_database-reference" type="xs:string"/>
+	<xs:element name="INSDSeq_definition" type="xs:string"/>
+	<xs:element name="INSDSeq_division" type="xs:string"/>
+	<xs:element name="INSDSeq_entry-version" type="xs:string"/>
+	<xs:complexType name="INSDSeq_feature-tableType">
+		<xs:sequence>
+			<xs:element name="INSDFeature" type="tns:INSDFeatureType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="INSDSeq_keywordsType">
+		<xs:sequence>
+			<xs:element ref="tns:INSDKeyword" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="INSDSeq_length" type="xs:string"/>
+	<xs:element name="INSDSeq_locus" type="xs:string"/>
+	<xs:element name="INSDSeq_moltype" type="xs:string"/>
+	<xs:element name="INSDSeq_organism" type="xs:string"/>
+	<xs:complexType name="INSDSeq_other-seqidsType">
+		<xs:sequence>
+			<xs:element ref="tns:INSDSeqid" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="INSDSeq_primary" type="xs:string"/>
+	<xs:element name="INSDSeq_primary-accession" type="xs:string"/>
+	<xs:element name="INSDSeq_project" type="xs:string"/>
+	<xs:complexType name="INSDSeq_referencesType">
+		<xs:sequence>
+			<xs:element name="INSDReference" type="tns:INSDReferenceType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="INSDSeq_secondary-accessionsType">
+		<xs:sequence>
+			<xs:element ref="tns:INSDSecondary-accn" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="INSDSeq_segment" type="xs:string"/>
+	<xs:element name="INSDSeq_sequence" type="xs:string"/>
+	<xs:element name="INSDSeq_source" type="xs:string"/>
+	<xs:element name="INSDSeq_source-db" type="xs:string"/>
+	<xs:element name="INSDSeq_strandedness" type="xs:string"/>
+	<xs:element name="INSDSeq_taxonomy" type="xs:string"/>
+	<xs:element name="INSDSeq_topology" type="xs:string"/>
+	<xs:element name="INSDSeq_update-date" type="xs:string"/>
+	<xs:element name="INSDSeq_update-release" type="xs:string"/>
+	<xs:element name="INSDSeqid" type="xs:string"/>
+	<xs:element name="INSDSet">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="INSDSeq" type="tns:INSDSeqType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="INSDXrefType">
+		<xs:sequence>
+			<xs:element ref="tns:INSDXref_dbname"/>
+			<xs:element ref="tns:INSDXref_id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="INSDXref_dbname" type="xs:string"/>
+	<xs:element name="INSDXref_id" type="xs:string"/>
+	<xs:element name="IUPACaa" type="xs:string"/>
+	<xs:element name="IUPACna" type="xs:string"/>
+	<xs:complexType name="Id-patType">
+		<xs:sequence>
+			<xs:element ref="tns:Id-pat_country"/>
+			<xs:element name="Id-pat_id" type="tns:Id-pat_idType"/>
+			<xs:element ref="tns:Id-pat_doc-type" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Id-pat_country" type="xs:string"/>
+	<xs:element name="Id-pat_doc-type" type="xs:string"/>
+	<xs:complexType name="Id-pat_idType">
+		<xs:choice>
+			<xs:element ref="tns:Id-pat_id_number"/>
+			<xs:element ref="tns:Id-pat_id_app-number"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="Id-pat_id_app-number" type="xs:string"/>
+	<xs:element name="Id-pat_id_number" type="xs:string"/>
+	<xs:complexType name="Imp-featType">
+		<xs:sequence>
+			<xs:element ref="tns:Imp-feat_key"/>
+			<xs:element ref="tns:Imp-feat_loc" minOccurs="0"/>
+			<xs:element ref="tns:Imp-feat_descr" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Imp-feat_descr" type="xs:string"/>
+	<xs:element name="Imp-feat_key" type="xs:string"/>
+	<xs:element name="Imp-feat_loc" type="xs:string"/>
+	<xs:complexType name="ImprintType">
+		<xs:sequence>
+			<xs:element name="Imprint_date" type="tns:Imprint_dateType"/>
+			<xs:element ref="tns:Imprint_volume" minOccurs="0"/>
+			<xs:element ref="tns:Imprint_issue" minOccurs="0"/>
+			<xs:element ref="tns:Imprint_pages" minOccurs="0"/>
+			<xs:element ref="tns:Imprint_section" minOccurs="0"/>
+			<xs:element name="Imprint_pub" type="tns:Imprint_pubType" minOccurs="0"/>
+			<xs:element name="Imprint_cprt" type="tns:Imprint_cprtType" minOccurs="0"/>
+			<xs:element ref="tns:Imprint_part-sup" minOccurs="0"/>
+			<xs:element ref="tns:Imprint_language" minOccurs="0"/>
+			<xs:element name="Imprint_prepub" type="tns:Imprint_prepubType" minOccurs="0"/>
+			<xs:element ref="tns:Imprint_part-supi" minOccurs="0"/>
+			<xs:element name="Imprint_retract" type="tns:Imprint_retractType" minOccurs="0"/>
+			<xs:element name="Imprint_pubstatus" type="tns:Imprint_pubstatusType" minOccurs="0"/>
+			<xs:element name="Imprint_history" type="tns:Imprint_historyType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Imprint_cprtType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Imprint_dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Imprint_historyType">
+		<xs:sequence>
+			<xs:element name="PubStatusDateSet" type="tns:PubStatusDateSetType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Imprint_issue" type="xs:string"/>
+	<xs:element name="Imprint_language" type="xs:string"/>
+	<xs:element name="Imprint_pages" type="xs:string"/>
+	<xs:element name="Imprint_part-sup" type="xs:string"/>
+	<xs:element name="Imprint_part-supi" type="xs:string"/>
+	<xs:complexType name="Imprint_prepubType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="submitted"/>
+					<xs:enumeration value="in-press"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Imprint_pubType">
+		<xs:sequence>
+			<xs:element name="Affil" type="tns:AffilType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Imprint_pubstatusType">
+		<xs:sequence>
+			<xs:element name="PubStatus" type="tns:PubStatusType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Imprint_retractType">
+		<xs:sequence>
+			<xs:element name="CitRetract" type="tns:CitRetractType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Imprint_section" type="xs:string"/>
+	<xs:element name="Imprint_volume" type="xs:string"/>
+	<xs:complexType name="Int-fuzzType">
+		<xs:choice>
+			<xs:element ref="tns:Int-fuzz_p-m"/>
+			<xs:element name="Int-fuzz_range" type="tns:Int-fuzz_rangeType"/>
+			<xs:element ref="tns:Int-fuzz_pct"/>
+			<xs:element name="Int-fuzz_lim" type="tns:Int-fuzz_limType"/>
+			<xs:element name="Int-fuzz_alt" type="tns:Int-fuzz_altType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Int-fuzz_altType">
+		<xs:sequence>
+			<xs:element ref="tns:Int-fuzz_alt_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Int-fuzz_alt_E" type="xs:string"/>
+	<xs:complexType name="Int-fuzz_limType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="unk"/>
+					<xs:enumeration value="gt"/>
+					<xs:enumeration value="lt"/>
+					<xs:enumeration value="tr"/>
+					<xs:enumeration value="tl"/>
+					<xs:enumeration value="circle"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Int-fuzz_p-m" type="xs:string"/>
+	<xs:element name="Int-fuzz_pct" type="xs:string"/>
+	<xs:complexType name="Int-fuzz_rangeType">
+		<xs:sequence>
+			<xs:element ref="tns:Int-fuzz_range_max"/>
+			<xs:element ref="tns:Int-fuzz_range_min"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Int-fuzz_range_max" type="xs:string"/>
+	<xs:element name="Int-fuzz_range_min" type="xs:string"/>
+	<xs:complexType name="Int-graphType">
+		<xs:sequence>
+			<xs:element ref="tns:Int-graph_max"/>
+			<xs:element ref="tns:Int-graph_min"/>
+			<xs:element ref="tns:Int-graph_axis"/>
+			<xs:element name="Int-graph_values" type="tns:Int-graph_valuesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Int-graph_axis" type="xs:string"/>
+	<xs:element name="Int-graph_max" type="xs:string"/>
+	<xs:element name="Int-graph_min" type="xs:string"/>
+	<xs:complexType name="Int-graph_valuesType">
+		<xs:sequence>
+			<xs:element ref="tns:Int-graph_values_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Int-graph_values_E" type="xs:string"/>
+	<xs:complexType name="Inter-residue-bondType">
+		<xs:sequence>
+			<xs:element name="Inter-residue-bond_atom-id-1" type="tns:Inter-residue-bond_atom-id-1Type"/>
+			<xs:element name="Inter-residue-bond_atom-id-2" type="tns:Inter-residue-bond_atom-id-2Type"/>
+			<xs:element name="Inter-residue-bond_bond-order" type="tns:Inter-residue-bond_bond-orderType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Inter-residue-bond_atom-id-1Type">
+		<xs:sequence>
+			<xs:element name="Atom-pntr" type="tns:Atom-pntrType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Inter-residue-bond_atom-id-2Type">
+		<xs:sequence>
+			<xs:element name="Atom-pntr" type="tns:Atom-pntrType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Inter-residue-bond_bond-orderType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="single"/>
+							<xs:enumeration value="partial-double"/>
+							<xs:enumeration value="aromatic"/>
+							<xs:enumeration value="double"/>
+							<xs:enumeration value="triple"/>
+							<xs:enumeration value="other"/>
+							<xs:enumeration value="unknown"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Intra-residue-bondType">
+		<xs:sequence>
+			<xs:element name="Intra-residue-bond_atom-id-1" type="tns:Intra-residue-bond_atom-id-1Type"/>
+			<xs:element name="Intra-residue-bond_atom-id-2" type="tns:Intra-residue-bond_atom-id-2Type"/>
+			<xs:element name="Intra-residue-bond_bond-order" type="tns:Intra-residue-bond_bond-orderType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Intra-residue-bond_atom-id-1Type">
+		<xs:sequence>
+			<xs:element ref="tns:Atom-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Intra-residue-bond_atom-id-2Type">
+		<xs:sequence>
+			<xs:element ref="tns:Atom-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Intra-residue-bond_bond-orderType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="single"/>
+							<xs:enumeration value="partial-double"/>
+							<xs:enumeration value="aromatic"/>
+							<xs:enumeration value="double"/>
+							<xs:enumeration value="triple"/>
+							<xs:enumeration value="other"/>
+							<xs:enumeration value="unknown"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Isotropic-temperature-factorsType">
+		<xs:sequence>
+			<xs:element ref="tns:Isotropic-temperature-factors_scale-factor"/>
+			<xs:element name="Isotropic-temperature-factors_b" type="tns:Isotropic-temperature-factors_bType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Isotropic-temperature-factors_bType">
+		<xs:sequence>
+			<xs:element ref="tns:Isotropic-temperature-factors_b_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Isotropic-temperature-factors_b_E" type="xs:string"/>
+	<xs:element name="Isotropic-temperature-factors_scale-factor" type="xs:string"/>
+	<xs:complexType name="IterationType">
+		<xs:sequence>
+			<xs:element ref="tns:Iteration_iter-num"/>
+			<xs:element ref="tns:Iteration_query-ID" minOccurs="0"/>
+			<xs:element ref="tns:Iteration_query-def" minOccurs="0"/>
+			<xs:element ref="tns:Iteration_query-len" minOccurs="0"/>
+			<xs:element name="Iteration_hits" type="tns:Iteration_hitsType" minOccurs="0"/>
+			<xs:element name="Iteration_stat" type="tns:Iteration_statType" minOccurs="0"/>
+			<xs:element ref="tns:Iteration_message" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Iteration_hitsType">
+		<xs:sequence>
+			<xs:element name="Hit" type="tns:HitType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Iteration_iter-num" type="xs:string"/>
+	<xs:element name="Iteration_message" type="xs:string"/>
+	<xs:element name="Iteration_query-ID" type="xs:string"/>
+	<xs:element name="Iteration_query-def" type="xs:string"/>
+	<xs:element name="Iteration_query-len" type="xs:string"/>
+	<xs:complexType name="Iteration_statType">
+		<xs:sequence>
+			<xs:element name="Statistics" type="tns:StatisticsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Link-set">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="tns:Link-set_num"/>
+				<xs:element name="Link-set_uids" type="tns:Link-set_uidsType" minOccurs="0"/>
+				<xs:element name="Link-set_weights" type="tns:Link-set_weightsType" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Link-set_num" type="xs:string"/>
+	<xs:complexType name="Link-set_uidsType">
+		<xs:sequence>
+			<xs:element ref="tns:Link-set_uids_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Link-set_uids_E" type="xs:string"/>
+	<xs:complexType name="Link-set_weightsType">
+		<xs:sequence>
+			<xs:element ref="tns:Link-set_weights_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Link-set_weights_E" type="xs:string"/>
+	<xs:complexType name="LoopConstraintType">
+		<xs:sequence>
+			<xs:element ref="tns:LoopConstraint_minlength" minOccurs="0"/>
+			<xs:element ref="tns:LoopConstraint_maxlength" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="LoopConstraint_maxlength" type="xs:string"/>
+	<xs:element name="LoopConstraint_minlength" type="xs:string"/>
+	<xs:complexType name="MSBioseqType">
+		<xs:sequence>
+			<xs:element ref="tns:MSBioseq_oid"/>
+			<xs:element name="MSBioseq_seq" type="tns:MSBioseq_seqType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSBioseqSetType">
+		<xs:sequence>
+			<xs:element name="MSBioseq" type="tns:MSBioseqType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSBioseq_oid" type="xs:string"/>
+	<xs:complexType name="MSBioseq_seqType">
+		<xs:sequence>
+			<xs:element name="Bioseq" type="tns:BioseqType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSCalcChargeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="calculate"/>
+							<xs:enumeration value="usefile"/>
+							<xs:enumeration value="userange"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="MSCalcPlusOneType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="dontcalc"/>
+							<xs:enumeration value="calc"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="MSChargeHandleType">
+		<xs:sequence>
+			<xs:element name="MSChargeHandle_calcplusone" type="tns:MSChargeHandle_calcplusoneType" minOccurs="0"/>
+			<xs:element name="MSChargeHandle_calccharge" type="tns:MSChargeHandle_calcchargeType" minOccurs="0"/>
+			<xs:element ref="tns:MSChargeHandle_mincharge" minOccurs="0"/>
+			<xs:element ref="tns:MSChargeHandle_maxcharge" minOccurs="0"/>
+			<xs:element ref="tns:MSChargeHandle_considermult" minOccurs="0"/>
+			<xs:element ref="tns:MSChargeHandle_plusone"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSChargeHandle_calcchargeType">
+		<xs:sequence>
+			<xs:element name="MSCalcCharge" type="tns:MSCalcChargeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSChargeHandle_calcplusoneType">
+		<xs:sequence>
+			<xs:element name="MSCalcPlusOne" type="tns:MSCalcPlusOneType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSChargeHandle_considermult" type="xs:string"/>
+	<xs:element name="MSChargeHandle_maxcharge" type="xs:string"/>
+	<xs:element name="MSChargeHandle_mincharge" type="xs:string"/>
+	<xs:element name="MSChargeHandle_plusone" type="xs:string"/>
+	<xs:complexType name="MSEnzymesType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="trypsin"/>
+							<xs:enumeration value="argc"/>
+							<xs:enumeration value="cnbr"/>
+							<xs:enumeration value="chymotrypsin"/>
+							<xs:enumeration value="formicacid"/>
+							<xs:enumeration value="lysc"/>
+							<xs:enumeration value="lysc-p"/>
+							<xs:enumeration value="pepsin-a"/>
+							<xs:enumeration value="tryp-cnbr"/>
+							<xs:enumeration value="tryp-chymo"/>
+							<xs:enumeration value="trypsin-p"/>
+							<xs:enumeration value="whole-protein"/>
+							<xs:enumeration value="aspn"/>
+							<xs:enumeration value="gluc"/>
+							<xs:enumeration value="aspngluc"/>
+							<xs:enumeration value="top-down"/>
+							<xs:enumeration value="semi-tryptic"/>
+							<xs:enumeration value="no-enzyme"/>
+							<xs:enumeration value="chymotrypsin-p"/>
+							<xs:enumeration value="aspn-de"/>
+							<xs:enumeration value="gluc-de"/>
+							<xs:enumeration value="max"/>
+							<xs:enumeration value="none"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="MSHitErrorType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="none"/>
+							<xs:enumeration value="generalerr"/>
+							<xs:enumeration value="unable2read"/>
+							<xs:enumeration value="notenuffpeaks"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="MSHitSetType">
+		<xs:sequence>
+			<xs:element ref="tns:MSHitSet_number"/>
+			<xs:element name="MSHitSet_error" type="tns:MSHitSet_errorType" minOccurs="0"/>
+			<xs:element name="MSHitSet_hits" type="tns:MSHitSet_hitsType" minOccurs="0"/>
+			<xs:element name="MSHitSet_ids" type="tns:MSHitSet_idsType" minOccurs="0"/>
+			<xs:element name="MSHitSet_namevalue" type="tns:MSHitSet_namevalueType" minOccurs="0"/>
+			<xs:element ref="tns:MSHitSet_settingid" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSHitSet_errorType">
+		<xs:sequence>
+			<xs:element name="MSHitError" type="tns:MSHitErrorType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSHitSet_hitsType">
+		<xs:sequence>
+			<xs:element name="MSHits" type="tns:MSHitsType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSHitSet_idsType">
+		<xs:sequence>
+			<xs:element ref="tns:MSHitSet_ids_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSHitSet_ids_E" type="xs:string"/>
+	<xs:complexType name="MSHitSet_namevalueType">
+		<xs:sequence>
+			<xs:element name="NameValue" type="tns:NameValueType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSHitSet_number" type="xs:string"/>
+	<xs:element name="MSHitSet_settingid" type="xs:string"/>
+	<xs:complexType name="MSHitsType">
+		<xs:sequence>
+			<xs:element ref="tns:MSHits_evalue"/>
+			<xs:element ref="tns:MSHits_pvalue"/>
+			<xs:element ref="tns:MSHits_charge"/>
+			<xs:element name="MSHits_pephits" type="tns:MSHits_pephitsType"/>
+			<xs:element name="MSHits_mzhits" type="tns:MSHits_mzhitsType" minOccurs="0"/>
+			<xs:element ref="tns:MSHits_pepstring" minOccurs="0"/>
+			<xs:element ref="tns:MSHits_mass" minOccurs="0"/>
+			<xs:element name="MSHits_mods" type="tns:MSHits_modsType" minOccurs="0"/>
+			<xs:element ref="tns:MSHits_pepstart" minOccurs="0"/>
+			<xs:element ref="tns:MSHits_pepstop" minOccurs="0"/>
+			<xs:element ref="tns:MSHits_protlength" minOccurs="0"/>
+			<xs:element ref="tns:MSHits_theomass" minOccurs="0"/>
+			<xs:element ref="tns:MSHits_oid" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSHits_charge" type="xs:string"/>
+	<xs:element name="MSHits_evalue" type="xs:string"/>
+	<xs:element name="MSHits_mass" type="xs:string"/>
+	<xs:complexType name="MSHits_modsType">
+		<xs:sequence>
+			<xs:element name="MSModHit" type="tns:MSModHitType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSHits_mzhitsType">
+		<xs:sequence>
+			<xs:element name="MSMZHit" type="tns:MSMZHitType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSHits_oid" type="xs:string"/>
+	<xs:complexType name="MSHits_pephitsType">
+		<xs:sequence>
+			<xs:element name="MSPepHit" type="tns:MSPepHitType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSHits_pepstart" type="xs:string"/>
+	<xs:element name="MSHits_pepstop" type="xs:string"/>
+	<xs:element name="MSHits_pepstring" type="xs:string"/>
+	<xs:element name="MSHits_protlength" type="xs:string"/>
+	<xs:element name="MSHits_pvalue" type="xs:string"/>
+	<xs:element name="MSHits_theomass" type="xs:string"/>
+	<xs:complexType name="MSIonTypeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="a"/>
+							<xs:enumeration value="b"/>
+							<xs:enumeration value="c"/>
+							<xs:enumeration value="x"/>
+							<xs:enumeration value="y"/>
+							<xs:enumeration value="z"/>
+							<xs:enumeration value="max"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="MSIterativeSettingsType">
+		<xs:sequence>
+			<xs:element ref="tns:MSIterativeSettings_researchthresh"/>
+			<xs:element ref="tns:MSIterativeSettings_subsetthresh"/>
+			<xs:element ref="tns:MSIterativeSettings_replacethresh"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSIterativeSettings_replacethresh" type="xs:string"/>
+	<xs:element name="MSIterativeSettings_researchthresh" type="xs:string"/>
+	<xs:element name="MSIterativeSettings_subsetthresh" type="xs:string"/>
+	<xs:complexType name="MSMZHitType">
+		<xs:sequence>
+			<xs:element name="MSMZHit_ion" type="tns:MSMZHit_ionType"/>
+			<xs:element ref="tns:MSMZHit_charge"/>
+			<xs:element ref="tns:MSMZHit_number"/>
+			<xs:element ref="tns:MSMZHit_mz"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSMZHit_charge" type="xs:string"/>
+	<xs:complexType name="MSMZHit_ionType">
+		<xs:sequence>
+			<xs:element name="MSIonType" type="tns:MSIonTypeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSMZHit_mz" type="xs:string"/>
+	<xs:element name="MSMZHit_number" type="xs:string"/>
+	<xs:complexType name="MSMassSetType">
+		<xs:sequence>
+			<xs:element ref="tns:MSMassSet_monomass"/>
+			<xs:element ref="tns:MSMassSet_averagemass"/>
+			<xs:element ref="tns:MSMassSet_n15mass"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSMassSet_averagemass" type="xs:string"/>
+	<xs:element name="MSMassSet_monomass" type="xs:string"/>
+	<xs:element name="MSMassSet_n15mass" type="xs:string"/>
+	<xs:complexType name="MSModType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="methylk"/>
+							<xs:enumeration value="oxym"/>
+							<xs:enumeration value="carboxymethylc"/>
+							<xs:enumeration value="carbamidomethylc"/>
+							<xs:enumeration value="deamidationkq"/>
+							<xs:enumeration value="propionamidec"/>
+							<xs:enumeration value="phosphorylations"/>
+							<xs:enumeration value="phosphorylationt"/>
+							<xs:enumeration value="phosphorylationy"/>
+							<xs:enumeration value="ntermmcleave"/>
+							<xs:enumeration value="ntermacetyl"/>
+							<xs:enumeration value="ntermmethyl"/>
+							<xs:enumeration value="ntermtrimethyl"/>
+							<xs:enumeration value="methythiold"/>
+							<xs:enumeration value="methylq"/>
+							<xs:enumeration value="trimethylk"/>
+							<xs:enumeration value="methyld"/>
+							<xs:enumeration value="methyle"/>
+							<xs:enumeration value="ctermpepmethyl"/>
+							<xs:enumeration value="trideuteromethyld"/>
+							<xs:enumeration value="trideuteromethyle"/>
+							<xs:enumeration value="ctermpeptrideuteromethyl"/>
+							<xs:enumeration value="nformylmet"/>
+							<xs:enumeration value="twoamino3oxobutanoicacid"/>
+							<xs:enumeration value="acetylk"/>
+							<xs:enumeration value="ctermamide"/>
+							<xs:enumeration value="bmethylthiold"/>
+							<xs:enumeration value="carbamidomethylk"/>
+							<xs:enumeration value="carbamidometylh"/>
+							<xs:enumeration value="carbamidomethyld"/>
+							<xs:enumeration value="carbamidomethyle"/>
+							<xs:enumeration value="carbamylk"/>
+							<xs:enumeration value="ntermcarbamyl"/>
+							<xs:enumeration value="citrullinationr"/>
+							<xs:enumeration value="cysteicacidc"/>
+							<xs:enumeration value="diiodinationy"/>
+							<xs:enumeration value="dimethylk"/>
+							<xs:enumeration value="dimethylr"/>
+							<xs:enumeration value="ntermpepdimethyl"/>
+							<xs:enumeration value="dihydroxyf"/>
+							<xs:enumeration value="thioacetylk"/>
+							<xs:enumeration value="ntermpeptioacetyl"/>
+							<xs:enumeration value="farnesylationc"/>
+							<xs:enumeration value="formylk"/>
+							<xs:enumeration value="ntermpepformyl"/>
+							<xs:enumeration value="formylkynureninw"/>
+							<xs:enumeration value="phef"/>
+							<xs:enumeration value="gammacarboxyld"/>
+							<xs:enumeration value="gammacarboxyle"/>
+							<xs:enumeration value="geranylgeranylc"/>
+							<xs:enumeration value="ntermpepglucuronylg"/>
+							<xs:enumeration value="glutathionec"/>
+							<xs:enumeration value="glyglyk"/>
+							<xs:enumeration value="guanidinationk"/>
+							<xs:enumeration value="his2asnh"/>
+							<xs:enumeration value="his2asph"/>
+							<xs:enumeration value="ctermpephsem"/>
+							<xs:enumeration value="ctermpephselactm"/>
+							<xs:enumeration value="hydroxykynureninw"/>
+							<xs:enumeration value="hydroxylationd"/>
+							<xs:enumeration value="hydroxylationk"/>
+							<xs:enumeration value="hydroxylationn"/>
+							<xs:enumeration value="hydroxylationp"/>
+							<xs:enumeration value="hydroxylationf"/>
+							<xs:enumeration value="hydroxylationy"/>
+							<xs:enumeration value="iodinationy"/>
+							<xs:enumeration value="kynureninw"/>
+							<xs:enumeration value="lipoylk"/>
+							<xs:enumeration value="ctermpepmeester"/>
+							<xs:enumeration value="meesterd"/>
+							<xs:enumeration value="meestere"/>
+							<xs:enumeration value="meesters"/>
+							<xs:enumeration value="meestery"/>
+							<xs:enumeration value="methylc"/>
+							<xs:enumeration value="methylh"/>
+							<xs:enumeration value="methyln"/>
+							<xs:enumeration value="ntermpepmethyl"/>
+							<xs:enumeration value="methylr"/>
+							<xs:enumeration value="ntermpepmyristoyeylationg"/>
+							<xs:enumeration value="ntermpepmyristoyl4hg"/>
+							<xs:enumeration value="ntermpepmyristoylationg"/>
+							<xs:enumeration value="myristoylationk"/>
+							<xs:enumeration value="ntermformyl"/>
+							<xs:enumeration value="nemc"/>
+							<xs:enumeration value="nipcam"/>
+							<xs:enumeration value="nitrow"/>
+							<xs:enumeration value="nitroy"/>
+							<xs:enumeration value="ctermpepo18"/>
+							<xs:enumeration value="ctermpepdio18"/>
+							<xs:enumeration value="oxyh"/>
+							<xs:enumeration value="oxyw"/>
+							<xs:enumeration value="ppantetheines"/>
+							<xs:enumeration value="palmitoylationc"/>
+							<xs:enumeration value="palmitoylationk"/>
+							<xs:enumeration value="palmitoylations"/>
+							<xs:enumeration value="palmitoylationt"/>
+							<xs:enumeration value="phospholosss"/>
+							<xs:enumeration value="phospholosst"/>
+							<xs:enumeration value="phospholossy"/>
+							<xs:enumeration value="phosphoneutrallossc"/>
+							<xs:enumeration value="phosphoneutrallossd"/>
+							<xs:enumeration value="phosphoneutrallossh"/>
+							<xs:enumeration value="propionylk"/>
+							<xs:enumeration value="ntermpeppropionyl"/>
+							<xs:enumeration value="propionylheavyk"/>
+							<xs:enumeration value="ntermpeppropionylheavy"/>
+							<xs:enumeration value="pyridylk"/>
+							<xs:enumeration value="ntermpeppyridyl"/>
+							<xs:enumeration value="ntermpeppyrocmc"/>
+							<xs:enumeration value="ntermpeppyroe"/>
+							<xs:enumeration value="ntermpeppyroq"/>
+							<xs:enumeration value="pyroglutamicp"/>
+							<xs:enumeration value="spyridylethylc"/>
+							<xs:enumeration value="semetm"/>
+							<xs:enumeration value="sulfationy"/>
+							<xs:enumeration value="suphonem"/>
+							<xs:enumeration value="triiodinationy"/>
+							<xs:enumeration value="trimethylationr"/>
+							<xs:enumeration value="ntermpeptripalmitatec"/>
+							<xs:enumeration value="usermod1"/>
+							<xs:enumeration value="usermod2"/>
+							<xs:enumeration value="usermod3"/>
+							<xs:enumeration value="usermod4"/>
+							<xs:enumeration value="usermod5"/>
+							<xs:enumeration value="usermod6"/>
+							<xs:enumeration value="usermod7"/>
+							<xs:enumeration value="usermod8"/>
+							<xs:enumeration value="usermod9"/>
+							<xs:enumeration value="usermod10"/>
+							<xs:enumeration value="icatlight"/>
+							<xs:enumeration value="icatheavy"/>
+							<xs:enumeration value="camthiopropanoylk"/>
+							<xs:enumeration value="phosphoneutrallosss"/>
+							<xs:enumeration value="phosphoneutrallosst"/>
+							<xs:enumeration value="phosphoetdlosss"/>
+							<xs:enumeration value="phosphoetdlosst"/>
+							<xs:enumeration value="max"/>
+							<xs:enumeration value="none"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="MSModHitType">
+		<xs:sequence>
+			<xs:element ref="tns:MSModHit_site"/>
+			<xs:element name="MSModHit_modtype" type="tns:MSModHit_modtypeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSModHit_modtypeType">
+		<xs:sequence>
+			<xs:element name="MSMod" type="tns:MSModType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSModHit_site" type="xs:string"/>
+	<xs:complexType name="MSModSpecType">
+		<xs:sequence>
+			<xs:element name="MSModSpec_mod" type="tns:MSModSpec_modType"/>
+			<xs:element name="MSModSpec_type" type="tns:MSModSpec_typeType"/>
+			<xs:element ref="tns:MSModSpec_name"/>
+			<xs:element ref="tns:MSModSpec_monomass"/>
+			<xs:element ref="tns:MSModSpec_averagemass"/>
+			<xs:element ref="tns:MSModSpec_n15mass"/>
+			<xs:element name="MSModSpec_residues" type="tns:MSModSpec_residuesType" minOccurs="0"/>
+			<xs:element name="MSModSpec_neutralloss" type="tns:MSModSpec_neutrallossType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSModSpecSetType">
+		<xs:sequence>
+			<xs:element name="MSModSpec" type="tns:MSModSpecType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSModSpec_averagemass" type="xs:string"/>
+	<xs:complexType name="MSModSpec_modType">
+		<xs:sequence>
+			<xs:element name="MSMod" type="tns:MSModType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSModSpec_monomass" type="xs:string"/>
+	<xs:element name="MSModSpec_n15mass" type="xs:string"/>
+	<xs:element name="MSModSpec_name" type="xs:string"/>
+	<xs:complexType name="MSModSpec_neutrallossType">
+		<xs:sequence>
+			<xs:element name="MSMassSet" type="tns:MSMassSetType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSModSpec_residuesType">
+		<xs:sequence>
+			<xs:element ref="tns:MSModSpec_residues_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSModSpec_residues_E" type="xs:string"/>
+	<xs:complexType name="MSModSpec_typeType">
+		<xs:sequence>
+			<xs:element name="MSModType" type="tns:MSModTypeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSModTypeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="modaa"/>
+							<xs:enumeration value="modn"/>
+							<xs:enumeration value="modnaa"/>
+							<xs:enumeration value="modc"/>
+							<xs:enumeration value="modcaa"/>
+							<xs:enumeration value="modnp"/>
+							<xs:enumeration value="modnpaa"/>
+							<xs:enumeration value="modcp"/>
+							<xs:enumeration value="modcpaa"/>
+							<xs:enumeration value="modmax"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="MSPepHitType">
+		<xs:sequence>
+			<xs:element ref="tns:MSPepHit_start"/>
+			<xs:element ref="tns:MSPepHit_stop"/>
+			<xs:element ref="tns:MSPepHit_gi" minOccurs="0"/>
+			<xs:element ref="tns:MSPepHit_accession" minOccurs="0"/>
+			<xs:element ref="tns:MSPepHit_defline" minOccurs="0"/>
+			<xs:element ref="tns:MSPepHit_protlength" minOccurs="0"/>
+			<xs:element ref="tns:MSPepHit_oid" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSPepHit_accession" type="xs:string"/>
+	<xs:element name="MSPepHit_defline" type="xs:string"/>
+	<xs:element name="MSPepHit_gi" type="xs:string"/>
+	<xs:element name="MSPepHit_oid" type="xs:string"/>
+	<xs:element name="MSPepHit_protlength" type="xs:string"/>
+	<xs:element name="MSPepHit_start" type="xs:string"/>
+	<xs:element name="MSPepHit_stop" type="xs:string"/>
+	<xs:complexType name="MSRequestType">
+		<xs:sequence>
+			<xs:element name="MSRequest_spectra" type="tns:MSRequest_spectraType"/>
+			<xs:element name="MSRequest_settings" type="tns:MSRequest_settingsType"/>
+			<xs:element ref="tns:MSRequest_rid" minOccurs="0"/>
+			<xs:element name="MSRequest_moresettings" type="tns:MSRequest_moresettingsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSRequest_moresettingsType">
+		<xs:sequence>
+			<xs:element name="MSSearchSettingsSet" type="tns:MSSearchSettingsSetType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSRequest_rid" type="xs:string"/>
+	<xs:complexType name="MSRequest_settingsType">
+		<xs:sequence>
+			<xs:element name="MSSearchSettings" type="tns:MSSearchSettingsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSRequest_spectraType">
+		<xs:sequence>
+			<xs:element name="MSSpectrumset" type="tns:MSSpectrumsetType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSResponseType">
+		<xs:sequence>
+			<xs:element name="MSResponse_hitsets" type="tns:MSResponse_hitsetsType"/>
+			<xs:element ref="tns:MSResponse_scale" minOccurs="0"/>
+			<xs:element ref="tns:MSResponse_rid" minOccurs="0"/>
+			<xs:element name="MSResponse_error" type="tns:MSResponse_errorType" minOccurs="0"/>
+			<xs:element ref="tns:MSResponse_version" minOccurs="0"/>
+			<xs:element ref="tns:MSResponse_email" minOccurs="0"/>
+			<xs:element ref="tns:MSResponse_dbversion" minOccurs="0"/>
+			<xs:element name="MSResponse_bioseqs" type="tns:MSResponse_bioseqsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSResponseErrorType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="none"/>
+							<xs:enumeration value="generalerr"/>
+							<xs:enumeration value="noblastdb"/>
+							<xs:enumeration value="noinput"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="MSResponse_bioseqsType">
+		<xs:sequence>
+			<xs:element name="MSBioseqSet" type="tns:MSBioseqSetType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSResponse_dbversion" type="xs:string"/>
+	<xs:element name="MSResponse_email" type="xs:string"/>
+	<xs:complexType name="MSResponse_errorType">
+		<xs:sequence>
+			<xs:element name="MSResponseError" type="tns:MSResponseErrorType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSResponse_hitsetsType">
+		<xs:sequence>
+			<xs:element name="MSHitSet" type="tns:MSHitSetType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSResponse_rid" type="xs:string"/>
+	<xs:element name="MSResponse_scale" type="xs:string"/>
+	<xs:element name="MSResponse_version" type="xs:string"/>
+	<xs:element name="MSSearch">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="MSSearch_request" type="tns:MSSearch_requestType" minOccurs="0"/>
+				<xs:element name="MSSearch_response" type="tns:MSSearch_responseType" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="MSSearchSettingsType">
+		<xs:sequence>
+			<xs:element name="MSSearchSettings_precursorsearchtype" type="tns:MSSearchSettings_precursorsearchtypeType"/>
+			<xs:element name="MSSearchSettings_productsearchtype" type="tns:MSSearchSettings_productsearchtypeType"/>
+			<xs:element name="MSSearchSettings_ionstosearch" type="tns:MSSearchSettings_ionstosearchType"/>
+			<xs:element ref="tns:MSSearchSettings_peptol"/>
+			<xs:element ref="tns:MSSearchSettings_msmstol"/>
+			<xs:element name="MSSearchSettings_zdep" type="tns:MSSearchSettings_zdepType"/>
+			<xs:element ref="tns:MSSearchSettings_cutoff"/>
+			<xs:element ref="tns:MSSearchSettings_cutlo"/>
+			<xs:element ref="tns:MSSearchSettings_cuthi"/>
+			<xs:element ref="tns:MSSearchSettings_cutinc"/>
+			<xs:element ref="tns:MSSearchSettings_singlewin"/>
+			<xs:element ref="tns:MSSearchSettings_doublewin"/>
+			<xs:element ref="tns:MSSearchSettings_singlenum"/>
+			<xs:element ref="tns:MSSearchSettings_doublenum"/>
+			<xs:element name="MSSearchSettings_fixed" type="tns:MSSearchSettings_fixedType"/>
+			<xs:element name="MSSearchSettings_variable" type="tns:MSSearchSettings_variableType"/>
+			<xs:element name="MSSearchSettings_enzyme" type="tns:MSSearchSettings_enzymeType"/>
+			<xs:element ref="tns:MSSearchSettings_missedcleave"/>
+			<xs:element ref="tns:MSSearchSettings_hitlistlen" minOccurs="0"/>
+			<xs:element ref="tns:MSSearchSettings_db"/>
+			<xs:element ref="tns:MSSearchSettings_tophitnum"/>
+			<xs:element ref="tns:MSSearchSettings_minhit" minOccurs="0"/>
+			<xs:element ref="tns:MSSearchSettings_minspectra" minOccurs="0"/>
+			<xs:element ref="tns:MSSearchSettings_scale" minOccurs="0"/>
+			<xs:element ref="tns:MSSearchSettings_maxmods" minOccurs="0"/>
+			<xs:element name="MSSearchSettings_taxids" type="tns:MSSearchSettings_taxidsType" minOccurs="0"/>
+			<xs:element name="MSSearchSettings_chargehandling" type="tns:MSSearchSettings_chargehandlingType" minOccurs="0"/>
+			<xs:element name="MSSearchSettings_usermods" type="tns:MSSearchSettings_usermodsType" minOccurs="0"/>
+			<xs:element ref="tns:MSSearchSettings_pseudocount" minOccurs="0"/>
+			<xs:element ref="tns:MSSearchSettings_searchb1" minOccurs="0"/>
+			<xs:element ref="tns:MSSearchSettings_searchctermproduct" minOccurs="0"/>
+			<xs:element ref="tns:MSSearchSettings_maxproductions" minOccurs="0"/>
+			<xs:element ref="tns:MSSearchSettings_minnoenzyme" minOccurs="0"/>
+			<xs:element ref="tns:MSSearchSettings_maxnoenzyme" minOccurs="0"/>
+			<xs:element ref="tns:MSSearchSettings_exactmass" minOccurs="0"/>
+			<xs:element ref="tns:MSSearchSettings_settingid" minOccurs="0"/>
+			<xs:element name="MSSearchSettings_iterativesettings" type="tns:MSSearchSettings_iterativesettingsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSSearchSettingsSetType">
+		<xs:sequence>
+			<xs:element name="MSSearchSettings" type="tns:MSSearchSettingsType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSSearchSettings_chargehandlingType">
+		<xs:sequence>
+			<xs:element name="MSChargeHandle" type="tns:MSChargeHandleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSSearchSettings_cuthi" type="xs:string"/>
+	<xs:element name="MSSearchSettings_cutinc" type="xs:string"/>
+	<xs:element name="MSSearchSettings_cutlo" type="xs:string"/>
+	<xs:element name="MSSearchSettings_cutoff" type="xs:string"/>
+	<xs:element name="MSSearchSettings_db" type="xs:string"/>
+	<xs:element name="MSSearchSettings_doublenum" type="xs:string"/>
+	<xs:element name="MSSearchSettings_doublewin" type="xs:string"/>
+	<xs:complexType name="MSSearchSettings_enzymeType">
+		<xs:sequence>
+			<xs:element name="MSEnzymes" type="tns:MSEnzymesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSSearchSettings_exactmass" type="xs:string"/>
+	<xs:complexType name="MSSearchSettings_fixedType">
+		<xs:sequence>
+			<xs:element name="MSMod" type="tns:MSModType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSSearchSettings_hitlistlen" type="xs:string"/>
+	<xs:complexType name="MSSearchSettings_ionstosearchType">
+		<xs:sequence>
+			<xs:element name="MSIonType" type="tns:MSIonTypeType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSSearchSettings_iterativesettingsType">
+		<xs:sequence>
+			<xs:element name="MSIterativeSettings" type="tns:MSIterativeSettingsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSSearchSettings_maxmods" type="xs:string"/>
+	<xs:element name="MSSearchSettings_maxnoenzyme" type="xs:string"/>
+	<xs:element name="MSSearchSettings_maxproductions" type="xs:string"/>
+	<xs:element name="MSSearchSettings_minhit" type="xs:string"/>
+	<xs:element name="MSSearchSettings_minnoenzyme" type="xs:string"/>
+	<xs:element name="MSSearchSettings_minspectra" type="xs:string"/>
+	<xs:element name="MSSearchSettings_missedcleave" type="xs:string"/>
+	<xs:element name="MSSearchSettings_msmstol" type="xs:string"/>
+	<xs:element name="MSSearchSettings_peptol" type="xs:string"/>
+	<xs:complexType name="MSSearchSettings_precursorsearchtypeType">
+		<xs:sequence>
+			<xs:element name="MSSearchType" type="tns:MSSearchTypeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSSearchSettings_productsearchtypeType">
+		<xs:sequence>
+			<xs:element name="MSSearchType" type="tns:MSSearchTypeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSSearchSettings_pseudocount" type="xs:string"/>
+	<xs:element name="MSSearchSettings_scale" type="xs:string"/>
+	<xs:element name="MSSearchSettings_searchb1" type="xs:string"/>
+	<xs:element name="MSSearchSettings_searchctermproduct" type="xs:string"/>
+	<xs:element name="MSSearchSettings_settingid" type="xs:string"/>
+	<xs:element name="MSSearchSettings_singlenum" type="xs:string"/>
+	<xs:element name="MSSearchSettings_singlewin" type="xs:string"/>
+	<xs:complexType name="MSSearchSettings_taxidsType">
+		<xs:sequence>
+			<xs:element ref="tns:MSSearchSettings_taxids_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSSearchSettings_taxids_E" type="xs:string"/>
+	<xs:element name="MSSearchSettings_tophitnum" type="xs:string"/>
+	<xs:complexType name="MSSearchSettings_usermodsType">
+		<xs:sequence>
+			<xs:element name="MSModSpecSet" type="tns:MSModSpecSetType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSSearchSettings_variableType">
+		<xs:sequence>
+			<xs:element name="MSMod" type="tns:MSModType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSSearchSettings_zdepType">
+		<xs:sequence>
+			<xs:element name="MSZdependence" type="tns:MSZdependenceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSSearchTypeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="monoisotopic"/>
+							<xs:enumeration value="average"/>
+							<xs:enumeration value="monon15"/>
+							<xs:enumeration value="exact"/>
+							<xs:enumeration value="max"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="MSSearch_requestType">
+		<xs:sequence>
+			<xs:element name="MSRequest" type="tns:MSRequestType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSSearch_responseType">
+		<xs:sequence>
+			<xs:element name="MSResponse" type="tns:MSResponseType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSSpectrumType">
+		<xs:sequence>
+			<xs:element ref="tns:MSSpectrum_number"/>
+			<xs:element name="MSSpectrum_charge" type="tns:MSSpectrum_chargeType"/>
+			<xs:element ref="tns:MSSpectrum_precursormz"/>
+			<xs:element name="MSSpectrum_mz" type="tns:MSSpectrum_mzType"/>
+			<xs:element name="MSSpectrum_abundance" type="tns:MSSpectrum_abundanceType"/>
+			<xs:element ref="tns:MSSpectrum_iscale"/>
+			<xs:element name="MSSpectrum_ids" type="tns:MSSpectrum_idsType" minOccurs="0"/>
+			<xs:element name="MSSpectrum_namevalue" type="tns:MSSpectrum_namevalueType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSSpectrum_abundanceType">
+		<xs:sequence>
+			<xs:element ref="tns:MSSpectrum_abundance_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSSpectrum_abundance_E" type="xs:string"/>
+	<xs:complexType name="MSSpectrum_chargeType">
+		<xs:sequence>
+			<xs:element ref="tns:MSSpectrum_charge_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSSpectrum_charge_E" type="xs:string"/>
+	<xs:complexType name="MSSpectrum_idsType">
+		<xs:sequence>
+			<xs:element ref="tns:MSSpectrum_ids_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSSpectrum_ids_E" type="xs:string"/>
+	<xs:element name="MSSpectrum_iscale" type="xs:string"/>
+	<xs:complexType name="MSSpectrum_mzType">
+		<xs:sequence>
+			<xs:element ref="tns:MSSpectrum_mz_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSSpectrum_mz_E" type="xs:string"/>
+	<xs:complexType name="MSSpectrum_namevalueType">
+		<xs:sequence>
+			<xs:element name="NameValue" type="tns:NameValueType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MSSpectrum_number" type="xs:string"/>
+	<xs:element name="MSSpectrum_precursormz" type="xs:string"/>
+	<xs:complexType name="MSSpectrumsetType">
+		<xs:sequence>
+			<xs:element name="MSSpectrum" type="tns:MSSpectrumType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MSZdependenceType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="independent"/>
+							<xs:enumeration value="linearwithz"/>
+							<xs:enumeration value="max"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Map-extType">
+		<xs:sequence>
+			<xs:element name="Seq-feat" type="tns:Seq-featType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MapLocType">
+		<xs:sequence>
+			<xs:element ref="tns:MapLoc_asnFrom"/>
+			<xs:element ref="tns:MapLoc_asnTo"/>
+			<xs:element name="MapLoc_locType" type="tns:MapLoc_locTypeType"/>
+			<xs:element ref="tns:MapLoc_alnQuality" minOccurs="0"/>
+			<xs:element name="MapLoc_orient" type="tns:MapLoc_orientType" minOccurs="0"/>
+			<xs:element ref="tns:MapLoc_physMapStr" minOccurs="0"/>
+			<xs:element ref="tns:MapLoc_physMapInt" minOccurs="0"/>
+			<xs:element ref="tns:MapLoc_leftFlankNeighborPos" minOccurs="0"/>
+			<xs:element ref="tns:MapLoc_rightFlankNeighborPos" minOccurs="0"/>
+			<xs:element ref="tns:MapLoc_leftContigNeighborPos" minOccurs="0"/>
+			<xs:element ref="tns:MapLoc_rightContigNeighborPos" minOccurs="0"/>
+			<xs:element ref="tns:MapLoc_numberOfMismatches" minOccurs="0"/>
+			<xs:element ref="tns:MapLoc_numberOfDeletions" minOccurs="0"/>
+			<xs:element ref="tns:MapLoc_numberOfInsertions" minOccurs="0"/>
+			<xs:element name="MapLoc_fxnSet" type="tns:MapLoc_fxnSetType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MapLoc_alnQuality" type="xs:string"/>
+	<xs:element name="MapLoc_asnFrom" type="xs:string"/>
+	<xs:element name="MapLoc_asnTo" type="xs:string"/>
+	<xs:complexType name="MapLoc_fxnSetType">
+		<xs:sequence>
+			<xs:element name="FxnSet" type="tns:FxnSetType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MapLoc_leftContigNeighborPos" type="xs:string"/>
+	<xs:element name="MapLoc_leftFlankNeighborPos" type="xs:string"/>
+	<xs:complexType name="MapLoc_locTypeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="insertion"/>
+					<xs:enumeration value="exact"/>
+					<xs:enumeration value="deletion"/>
+					<xs:enumeration value="range-ins"/>
+					<xs:enumeration value="range-exact"/>
+					<xs:enumeration value="range-del"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="MapLoc_numberOfDeletions" type="xs:string"/>
+	<xs:element name="MapLoc_numberOfInsertions" type="xs:string"/>
+	<xs:element name="MapLoc_numberOfMismatches" type="xs:string"/>
+	<xs:complexType name="MapLoc_orientType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="forward"/>
+					<xs:enumeration value="reverse"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="MapLoc_physMapInt" type="xs:string"/>
+	<xs:element name="MapLoc_physMapStr" type="xs:string"/>
+	<xs:element name="MapLoc_rightContigNeighborPos" type="xs:string"/>
+	<xs:element name="MapLoc_rightFlankNeighborPos" type="xs:string"/>
+	<xs:complexType name="MapsType">
+		<xs:sequence>
+			<xs:element ref="tns:Maps_display-str"/>
+			<xs:element name="Maps_method" type="tns:Maps_methodType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Maps_display-str" type="xs:string"/>
+	<xs:complexType name="Maps_methodType">
+		<xs:choice>
+			<xs:element ref="tns:Maps_method_proxy"/>
+			<xs:element name="Maps_method_map-type" type="tns:Maps_method_map-typeType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Maps_method_map-typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="cyto"/>
+					<xs:enumeration value="bp"/>
+					<xs:enumeration value="cM"/>
+					<xs:enumeration value="cR"/>
+					<xs:enumeration value="min"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Maps_method_proxy" type="xs:string"/>
+	<xs:complexType name="MatrixType">
+		<xs:sequence>
+			<xs:element ref="tns:Matrix_ncolumns"/>
+			<xs:element ref="tns:Matrix_nrows"/>
+			<xs:element name="Matrix_row-labels" type="tns:Matrix_row-labelsType" minOccurs="0"/>
+			<xs:element ref="tns:Matrix_scale-factor"/>
+			<xs:element name="Matrix_columns" type="tns:Matrix_columnsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Matrix_columnsType">
+		<xs:sequence>
+			<xs:element ref="tns:Matrix_columns_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Matrix_columns_E" type="xs:string"/>
+	<xs:element name="Matrix_ncolumns" type="xs:string"/>
+	<xs:element name="Matrix_nrows" type="xs:string"/>
+	<xs:complexType name="Matrix_row-labelsType">
+		<xs:sequence>
+			<xs:element ref="tns:Matrix_row-labels_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Matrix_row-labels_E" type="xs:string"/>
+	<xs:element name="Matrix_scale-factor" type="xs:string"/>
+	<xs:complexType name="Medlars-entryType">
+		<xs:sequence>
+			<xs:element name="Medlars-entry_pmid" type="tns:Medlars-entry_pmidType"/>
+			<xs:element ref="tns:Medlars-entry_muid" minOccurs="0"/>
+			<xs:element name="Medlars-entry_recs" type="tns:Medlars-entry_recsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Medlars-entry_muid" type="xs:string"/>
+	<xs:complexType name="Medlars-entry_pmidType">
+		<xs:sequence>
+			<xs:element ref="tns:PubMedId"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Medlars-entry_recsType">
+		<xs:sequence>
+			<xs:element name="Medlars-record" type="tns:Medlars-recordType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Medlars-recordType">
+		<xs:sequence>
+			<xs:element ref="tns:Medlars-record_code"/>
+			<xs:element ref="tns:Medlars-record_abbr" minOccurs="0"/>
+			<xs:element ref="tns:Medlars-record_data"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Medlars-record_abbr" type="xs:string"/>
+	<xs:element name="Medlars-record_code" type="xs:string"/>
+	<xs:element name="Medlars-record_data" type="xs:string"/>
+	<xs:complexType name="Medline-entryType">
+		<xs:sequence>
+			<xs:element ref="tns:Medline-entry_uid" minOccurs="0"/>
+			<xs:element name="Medline-entry_em" type="tns:Medline-entry_emType"/>
+			<xs:element name="Medline-entry_cit" type="tns:Medline-entry_citType"/>
+			<xs:element ref="tns:Medline-entry_abstract" minOccurs="0"/>
+			<xs:element name="Medline-entry_mesh" type="tns:Medline-entry_meshType" minOccurs="0"/>
+			<xs:element name="Medline-entry_substance" type="tns:Medline-entry_substanceType" minOccurs="0"/>
+			<xs:element name="Medline-entry_xref" type="tns:Medline-entry_xrefType" minOccurs="0"/>
+			<xs:element name="Medline-entry_idnum" type="tns:Medline-entry_idnumType" minOccurs="0"/>
+			<xs:element name="Medline-entry_gene" type="tns:Medline-entry_geneType" minOccurs="0"/>
+			<xs:element name="Medline-entry_pmid" type="tns:Medline-entry_pmidType" minOccurs="0"/>
+			<xs:element name="Medline-entry_pub-type" type="tns:Medline-entry_pub-typeType" minOccurs="0"/>
+			<xs:element name="Medline-entry_mlfield" type="tns:Medline-entry_mlfieldType" minOccurs="0"/>
+			<xs:element name="Medline-entry_status" type="tns:Medline-entry_statusType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Medline-entry_abstract" type="xs:string"/>
+	<xs:complexType name="Medline-entry_citType">
+		<xs:sequence>
+			<xs:element name="Cit-art" type="tns:Cit-artType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Medline-entry_emType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Medline-entry_geneType">
+		<xs:sequence>
+			<xs:element ref="tns:Medline-entry_gene_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Medline-entry_gene_E" type="xs:string"/>
+	<xs:complexType name="Medline-entry_idnumType">
+		<xs:sequence>
+			<xs:element ref="tns:Medline-entry_idnum_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Medline-entry_idnum_E" type="xs:string"/>
+	<xs:complexType name="Medline-entry_meshType">
+		<xs:sequence>
+			<xs:element name="Medline-mesh" type="tns:Medline-meshType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Medline-entry_mlfieldType">
+		<xs:sequence>
+			<xs:element name="Medline-field" type="tns:Medline-fieldType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Medline-entry_pmidType">
+		<xs:sequence>
+			<xs:element ref="tns:PubMedId"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Medline-entry_pub-typeType">
+		<xs:sequence>
+			<xs:element ref="tns:Medline-entry_pub-type_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Medline-entry_pub-type_E" type="xs:string"/>
+	<xs:complexType name="Medline-entry_statusType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="publisher"/>
+							<xs:enumeration value="premedline"/>
+							<xs:enumeration value="medline"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Medline-entry_substanceType">
+		<xs:sequence>
+			<xs:element name="Medline-rn" type="tns:Medline-rnType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Medline-entry_uid" type="xs:string"/>
+	<xs:complexType name="Medline-entry_xrefType">
+		<xs:sequence>
+			<xs:element name="Medline-si" type="tns:Medline-siType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Medline-fieldType">
+		<xs:sequence>
+			<xs:element name="Medline-field_type" type="tns:Medline-field_typeType"/>
+			<xs:element ref="tns:Medline-field_str"/>
+			<xs:element name="Medline-field_ids" type="tns:Medline-field_idsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Medline-field_idsType">
+		<xs:sequence>
+			<xs:element name="DocRef" type="tns:DocRefType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Medline-field_str" type="xs:string"/>
+	<xs:complexType name="Medline-field_typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="other"/>
+							<xs:enumeration value="comment"/>
+							<xs:enumeration value="erratum"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Medline-meshType">
+		<xs:sequence>
+			<xs:element name="Medline-mesh_mp" type="tns:Medline-mesh_mpType" minOccurs="0"/>
+			<xs:element ref="tns:Medline-mesh_term"/>
+			<xs:element name="Medline-mesh_qual" type="tns:Medline-mesh_qualType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Medline-mesh_mpType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Medline-mesh_qualType">
+		<xs:sequence>
+			<xs:element name="Medline-qual" type="tns:Medline-qualType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Medline-mesh_term" type="xs:string"/>
+	<xs:complexType name="Medline-qualType">
+		<xs:sequence>
+			<xs:element name="Medline-qual_mp" type="tns:Medline-qual_mpType" minOccurs="0"/>
+			<xs:element ref="tns:Medline-qual_subh"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Medline-qual_mpType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Medline-qual_subh" type="xs:string"/>
+	<xs:complexType name="Medline-rnType">
+		<xs:sequence>
+			<xs:element name="Medline-rn_type" type="tns:Medline-rn_typeType"/>
+			<xs:element ref="tns:Medline-rn_cit" minOccurs="0"/>
+			<xs:element ref="tns:Medline-rn_name"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Medline-rn_cit" type="xs:string"/>
+	<xs:element name="Medline-rn_name" type="xs:string"/>
+	<xs:complexType name="Medline-rn_typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="nameonly"/>
+					<xs:enumeration value="cas"/>
+					<xs:enumeration value="ec"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Medline-siType">
+		<xs:sequence>
+			<xs:element name="Medline-si_type" type="tns:Medline-si_typeType"/>
+			<xs:element ref="tns:Medline-si_cit" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Medline-si_cit" type="xs:string"/>
+	<xs:complexType name="Medline-si_typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="ddbj"/>
+					<xs:enumeration value="carbbank"/>
+					<xs:enumeration value="embl"/>
+					<xs:enumeration value="hdb"/>
+					<xs:enumeration value="genbank"/>
+					<xs:enumeration value="hgml"/>
+					<xs:enumeration value="mim"/>
+					<xs:enumeration value="msd"/>
+					<xs:enumeration value="pdb"/>
+					<xs:enumeration value="pir"/>
+					<xs:enumeration value="prfseqdb"/>
+					<xs:enumeration value="psd"/>
+					<xs:enumeration value="swissprot"/>
+					<xs:enumeration value="gdb"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="MedlineUID" type="xs:string"/>
+	<xs:complexType name="MeetingType">
+		<xs:sequence>
+			<xs:element ref="tns:Meeting_number"/>
+			<xs:element name="Meeting_date" type="tns:Meeting_dateType"/>
+			<xs:element name="Meeting_place" type="tns:Meeting_placeType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Meeting_dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Meeting_number" type="xs:string"/>
+	<xs:complexType name="Meeting_placeType">
+		<xs:sequence>
+			<xs:element name="Affil" type="tns:AffilType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-allelic-variantType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-allelic-variant_number"/>
+			<xs:element ref="tns:Mim-allelic-variant_name"/>
+			<xs:element name="Mim-allelic-variant_aliases" type="tns:Mim-allelic-variant_aliasesType" minOccurs="0"/>
+			<xs:element name="Mim-allelic-variant_mutation" type="tns:Mim-allelic-variant_mutationType" minOccurs="0"/>
+			<xs:element name="Mim-allelic-variant_description" type="tns:Mim-allelic-variant_descriptionType" minOccurs="0"/>
+			<xs:element name="Mim-allelic-variant_snpLinks" type="tns:Mim-allelic-variant_snpLinksType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-allelic-variant_aliasesType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-allelic-variant_aliases_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-allelic-variant_aliases_E" type="xs:string"/>
+	<xs:complexType name="Mim-allelic-variant_descriptionType">
+		<xs:sequence>
+			<xs:element name="Mim-text" type="tns:Mim-textType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-allelic-variant_mutationType">
+		<xs:sequence>
+			<xs:element name="Mim-text" type="tns:Mim-textType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-allelic-variant_name" type="xs:string"/>
+	<xs:element name="Mim-allelic-variant_number" type="xs:string"/>
+	<xs:complexType name="Mim-allelic-variant_snpLinksType">
+		<xs:sequence>
+			<xs:element name="Mim-link" type="tns:Mim-linkType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-authorType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-author_name"/>
+			<xs:element ref="tns:Mim-author_index"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-author_index" type="xs:string"/>
+	<xs:element name="Mim-author_name" type="xs:string"/>
+	<xs:complexType name="Mim-citType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-cit_number"/>
+			<xs:element ref="tns:Mim-cit_author"/>
+			<xs:element ref="tns:Mim-cit_others"/>
+			<xs:element ref="tns:Mim-cit_year"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-cit_author" type="xs:string"/>
+	<xs:element name="Mim-cit_number" type="xs:string"/>
+	<xs:element name="Mim-cit_others" type="xs:string"/>
+	<xs:element name="Mim-cit_year" type="xs:string"/>
+	<xs:complexType name="Mim-dateType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-date_year"/>
+			<xs:element ref="tns:Mim-date_month" minOccurs="0"/>
+			<xs:element ref="tns:Mim-date_day" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-date_day" type="xs:string"/>
+	<xs:element name="Mim-date_month" type="xs:string"/>
+	<xs:element name="Mim-date_year" type="xs:string"/>
+	<xs:complexType name="Mim-edit-itemType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-edit-item_author"/>
+			<xs:element name="Mim-edit-item_modDate" type="tns:Mim-edit-item_modDateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-edit-item_author" type="xs:string"/>
+	<xs:complexType name="Mim-edit-item_modDateType">
+		<xs:sequence>
+			<xs:element name="Mim-date" type="tns:Mim-dateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-entries">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Mim-entry" type="tns:Mim-entryType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Mim-entryType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-entry_mimNumber"/>
+			<xs:element name="Mim-entry_mimType" type="tns:Mim-entry_mimTypeType"/>
+			<xs:element ref="tns:Mim-entry_title"/>
+			<xs:element ref="tns:Mim-entry_copyright" minOccurs="0"/>
+			<xs:element ref="tns:Mim-entry_symbol" minOccurs="0"/>
+			<xs:element ref="tns:Mim-entry_locus" minOccurs="0"/>
+			<xs:element name="Mim-entry_synonyms" type="tns:Mim-entry_synonymsType" minOccurs="0"/>
+			<xs:element name="Mim-entry_aliases" type="tns:Mim-entry_aliasesType" minOccurs="0"/>
+			<xs:element name="Mim-entry_included" type="tns:Mim-entry_includedType" minOccurs="0"/>
+			<xs:element name="Mim-entry_seeAlso" type="tns:Mim-entry_seeAlsoType" minOccurs="0"/>
+			<xs:element name="Mim-entry_text" type="tns:Mim-entry_textType" minOccurs="0"/>
+			<xs:element name="Mim-entry_textfields" type="tns:Mim-entry_textfieldsType" minOccurs="0"/>
+			<xs:element name="Mim-entry_hasSummary" type="tns:Mim-entry_hasSummaryType" minOccurs="0"/>
+			<xs:element name="Mim-entry_summary" type="tns:Mim-entry_summaryType" minOccurs="0"/>
+			<xs:element name="Mim-entry_summaryAttribution" type="tns:Mim-entry_summaryAttributionType" minOccurs="0"/>
+			<xs:element name="Mim-entry_summaryEditHistory" type="tns:Mim-entry_summaryEditHistoryType" minOccurs="0"/>
+			<xs:element name="Mim-entry_summaryCreationDate" type="tns:Mim-entry_summaryCreationDateType" minOccurs="0"/>
+			<xs:element name="Mim-entry_allelicVariants" type="tns:Mim-entry_allelicVariantsType" minOccurs="0"/>
+			<xs:element name="Mim-entry_hasSynopsis" type="tns:Mim-entry_hasSynopsisType" minOccurs="0"/>
+			<xs:element name="Mim-entry_clinicalSynopsis" type="tns:Mim-entry_clinicalSynopsisType" minOccurs="0"/>
+			<xs:element name="Mim-entry_synopsisAttribution" type="tns:Mim-entry_synopsisAttributionType" minOccurs="0"/>
+			<xs:element name="Mim-entry_synopsisEditHistory" type="tns:Mim-entry_synopsisEditHistoryType" minOccurs="0"/>
+			<xs:element name="Mim-entry_synopsisCreationDate" type="tns:Mim-entry_synopsisCreationDateType" minOccurs="0"/>
+			<xs:element name="Mim-entry_editHistory" type="tns:Mim-entry_editHistoryType" minOccurs="0"/>
+			<xs:element name="Mim-entry_creationDate" type="tns:Mim-entry_creationDateType" minOccurs="0"/>
+			<xs:element name="Mim-entry_references" type="tns:Mim-entry_referencesType" minOccurs="0"/>
+			<xs:element name="Mim-entry_attribution" type="tns:Mim-entry_attributionType" minOccurs="0"/>
+			<xs:element ref="tns:Mim-entry_numGeneMaps"/>
+			<xs:element name="Mim-entry_medlineLinks" type="tns:Mim-entry_medlineLinksType" minOccurs="0"/>
+			<xs:element name="Mim-entry_proteinLinks" type="tns:Mim-entry_proteinLinksType" minOccurs="0"/>
+			<xs:element name="Mim-entry_nucleotideLinks" type="tns:Mim-entry_nucleotideLinksType" minOccurs="0"/>
+			<xs:element name="Mim-entry_structureLinks" type="tns:Mim-entry_structureLinksType" minOccurs="0"/>
+			<xs:element name="Mim-entry_genomeLinks" type="tns:Mim-entry_genomeLinksType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_aliasesType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-entry_aliases_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-entry_aliases_E" type="xs:string"/>
+	<xs:complexType name="Mim-entry_allelicVariantsType">
+		<xs:sequence>
+			<xs:element name="Mim-allelic-variant" type="tns:Mim-allelic-variantType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_attributionType">
+		<xs:sequence>
+			<xs:element name="Mim-edit-item" type="tns:Mim-edit-itemType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_clinicalSynopsisType">
+		<xs:sequence>
+			<xs:element name="Mim-index-term" type="tns:Mim-index-termType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-entry_copyright" type="xs:string"/>
+	<xs:complexType name="Mim-entry_creationDateType">
+		<xs:sequence>
+			<xs:element name="Mim-edit-item" type="tns:Mim-edit-itemType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_editHistoryType">
+		<xs:sequence>
+			<xs:element name="Mim-edit-item" type="tns:Mim-edit-itemType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_genomeLinksType">
+		<xs:sequence>
+			<xs:element name="Mim-link" type="tns:Mim-linkType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_hasSummaryType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_hasSynopsisType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_includedType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-entry_included_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-entry_included_E" type="xs:string"/>
+	<xs:element name="Mim-entry_locus" type="xs:string"/>
+	<xs:complexType name="Mim-entry_medlineLinksType">
+		<xs:sequence>
+			<xs:element name="Mim-link" type="tns:Mim-linkType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-entry_mimNumber" type="xs:string"/>
+	<xs:complexType name="Mim-entry_mimTypeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="none"/>
+							<xs:enumeration value="star"/>
+							<xs:enumeration value="caret"/>
+							<xs:enumeration value="pound"/>
+							<xs:enumeration value="plus"/>
+							<xs:enumeration value="perc"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_nucleotideLinksType">
+		<xs:sequence>
+			<xs:element name="Mim-link" type="tns:Mim-linkType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-entry_numGeneMaps" type="xs:string"/>
+	<xs:complexType name="Mim-entry_proteinLinksType">
+		<xs:sequence>
+			<xs:element name="Mim-link" type="tns:Mim-linkType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_referencesType">
+		<xs:sequence>
+			<xs:element name="Mim-reference" type="tns:Mim-referenceType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_seeAlsoType">
+		<xs:sequence>
+			<xs:element name="Mim-cit" type="tns:Mim-citType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_structureLinksType">
+		<xs:sequence>
+			<xs:element name="Mim-link" type="tns:Mim-linkType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_summaryType">
+		<xs:sequence>
+			<xs:element name="Mim-text" type="tns:Mim-textType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_summaryAttributionType">
+		<xs:sequence>
+			<xs:element name="Mim-edit-item" type="tns:Mim-edit-itemType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_summaryCreationDateType">
+		<xs:sequence>
+			<xs:element name="Mim-edit-item" type="tns:Mim-edit-itemType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_summaryEditHistoryType">
+		<xs:sequence>
+			<xs:element name="Mim-edit-item" type="tns:Mim-edit-itemType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-entry_symbol" type="xs:string"/>
+	<xs:complexType name="Mim-entry_synonymsType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-entry_synonyms_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-entry_synonyms_E" type="xs:string"/>
+	<xs:complexType name="Mim-entry_synopsisAttributionType">
+		<xs:sequence>
+			<xs:element name="Mim-edit-item" type="tns:Mim-edit-itemType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_synopsisCreationDateType">
+		<xs:sequence>
+			<xs:element name="Mim-edit-item" type="tns:Mim-edit-itemType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_synopsisEditHistoryType">
+		<xs:sequence>
+			<xs:element name="Mim-edit-item" type="tns:Mim-edit-itemType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_textType">
+		<xs:sequence>
+			<xs:element name="Mim-text" type="tns:Mim-textType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-entry_textfieldsType">
+		<xs:sequence>
+			<xs:element name="Mim-text" type="tns:Mim-textType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-entry_title" type="xs:string"/>
+	<xs:complexType name="Mim-index-termType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-index-term_key"/>
+			<xs:element name="Mim-index-term_terms" type="tns:Mim-index-term_termsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-index-term_key" type="xs:string"/>
+	<xs:complexType name="Mim-index-term_termsType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-index-term_terms_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-index-term_terms_E" type="xs:string"/>
+	<xs:complexType name="Mim-linkType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-link_num"/>
+			<xs:element ref="tns:Mim-link_uids"/>
+			<xs:element ref="tns:Mim-link_numRelevant" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-link_num" type="xs:string"/>
+	<xs:element name="Mim-link_numRelevant" type="xs:string"/>
+	<xs:element name="Mim-link_uids" type="xs:string"/>
+	<xs:complexType name="Mim-pageType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-page_from"/>
+			<xs:element ref="tns:Mim-page_to" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-page_from" type="xs:string"/>
+	<xs:element name="Mim-page_to" type="xs:string"/>
+	<xs:complexType name="Mim-referenceType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-reference_number"/>
+			<xs:element ref="tns:Mim-reference_origNumber" minOccurs="0"/>
+			<xs:element name="Mim-reference_type" type="tns:Mim-reference_typeType" minOccurs="0"/>
+			<xs:element name="Mim-reference_authors" type="tns:Mim-reference_authorsType"/>
+			<xs:element ref="tns:Mim-reference_primaryAuthor"/>
+			<xs:element ref="tns:Mim-reference_otherAuthors"/>
+			<xs:element ref="tns:Mim-reference_citationTitle"/>
+			<xs:element ref="tns:Mim-reference_citationType" minOccurs="0"/>
+			<xs:element ref="tns:Mim-reference_bookTitle" minOccurs="0"/>
+			<xs:element name="Mim-reference_editors" type="tns:Mim-reference_editorsType" minOccurs="0"/>
+			<xs:element ref="tns:Mim-reference_volume" minOccurs="0"/>
+			<xs:element ref="tns:Mim-reference_edition" minOccurs="0"/>
+			<xs:element ref="tns:Mim-reference_journal" minOccurs="0"/>
+			<xs:element ref="tns:Mim-reference_series" minOccurs="0"/>
+			<xs:element ref="tns:Mim-reference_publisher" minOccurs="0"/>
+			<xs:element ref="tns:Mim-reference_place" minOccurs="0"/>
+			<xs:element ref="tns:Mim-reference_commNote" minOccurs="0"/>
+			<xs:element name="Mim-reference_pubDate" type="tns:Mim-reference_pubDateType"/>
+			<xs:element name="Mim-reference_pages" type="tns:Mim-reference_pagesType" minOccurs="0"/>
+			<xs:element ref="tns:Mim-reference_miscInfo" minOccurs="0"/>
+			<xs:element ref="tns:Mim-reference_pubmedUID" minOccurs="0"/>
+			<xs:element name="Mim-reference_ambiguous" type="tns:Mim-reference_ambiguousType"/>
+			<xs:element name="Mim-reference_noLink" type="tns:Mim-reference_noLinkType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-reference_ambiguousType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Mim-reference_authorsType">
+		<xs:sequence>
+			<xs:element name="Mim-author" type="tns:Mim-authorType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-reference_bookTitle" type="xs:string"/>
+	<xs:element name="Mim-reference_citationTitle" type="xs:string"/>
+	<xs:element name="Mim-reference_citationType" type="xs:string"/>
+	<xs:element name="Mim-reference_commNote" type="xs:string"/>
+	<xs:element name="Mim-reference_edition" type="xs:string"/>
+	<xs:complexType name="Mim-reference_editorsType">
+		<xs:sequence>
+			<xs:element name="Mim-author" type="tns:Mim-authorType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-reference_journal" type="xs:string"/>
+	<xs:element name="Mim-reference_miscInfo" type="xs:string"/>
+	<xs:complexType name="Mim-reference_noLinkType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Mim-reference_number" type="xs:string"/>
+	<xs:element name="Mim-reference_origNumber" type="xs:string"/>
+	<xs:element name="Mim-reference_otherAuthors" type="xs:string"/>
+	<xs:complexType name="Mim-reference_pagesType">
+		<xs:sequence>
+			<xs:element name="Mim-page" type="tns:Mim-pageType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-reference_place" type="xs:string"/>
+	<xs:element name="Mim-reference_primaryAuthor" type="xs:string"/>
+	<xs:complexType name="Mim-reference_pubDateType">
+		<xs:sequence>
+			<xs:element name="Mim-date" type="tns:Mim-dateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-reference_publisher" type="xs:string"/>
+	<xs:element name="Mim-reference_pubmedUID" type="xs:string"/>
+	<xs:element name="Mim-reference_series" type="xs:string"/>
+	<xs:complexType name="Mim-reference_typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="not-set"/>
+					<xs:enumeration value="citation"/>
+					<xs:enumeration value="book"/>
+					<xs:enumeration value="personal-communication"/>
+					<xs:enumeration value="book-citation"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Mim-reference_volume" type="xs:string"/>
+	<xs:element name="Mim-set">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Mim-set_releaseDate" type="tns:Mim-set_releaseDateType"/>
+				<xs:element name="Mim-set_mimEntries" type="tns:Mim-set_mimEntriesType"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Mim-set_mimEntriesType">
+		<xs:sequence>
+			<xs:element name="Mim-entry" type="tns:Mim-entryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-set_releaseDateType">
+		<xs:sequence>
+			<xs:element name="Mim-date" type="tns:Mim-dateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mim-textType">
+		<xs:sequence>
+			<xs:element ref="tns:Mim-text_label"/>
+			<xs:element ref="tns:Mim-text_text"/>
+			<xs:element name="Mim-text_neighbors" type="tns:Mim-text_neighborsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-text_label" type="xs:string"/>
+	<xs:complexType name="Mim-text_neighborsType">
+		<xs:sequence>
+			<xs:element name="Mim-link" type="tns:Mim-linkType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mim-text_text" type="xs:string"/>
+	<xs:element name="Mla-back">
+		<xs:complexType>
+			<xs:choice>
+				<xs:element ref="tns:Mla-back_init"/>
+				<xs:element name="Mla-back_error" type="tns:Mla-back_errorType"/>
+				<xs:element name="Mla-back_getmle" type="tns:Mla-back_getmleType"/>
+				<xs:element name="Mla-back_getpub" type="tns:Mla-back_getpubType"/>
+				<xs:element name="Mla-back_gettitle" type="tns:Mla-back_gettitleType"/>
+				<xs:element ref="tns:Mla-back_citmatch"/>
+				<xs:element ref="tns:Mla-back_fini"/>
+				<xs:element name="Mla-back_getuids" type="tns:Mla-back_getuidsType"/>
+				<xs:element name="Mla-back_getpmids" type="tns:Mla-back_getpmidsType"/>
+				<xs:element ref="tns:Mla-back_outuid"/>
+				<xs:element name="Mla-back_outpmid" type="tns:Mla-back_outpmidType"/>
+				<xs:element name="Mla-back_getpme" type="tns:Mla-back_getpmeType"/>
+				<xs:element name="Mla-back_getmlr" type="tns:Mla-back_getmlrType"/>
+			</xs:choice>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Mla-back_citmatch" type="xs:string"/>
+	<xs:complexType name="Mla-back_errorType">
+		<xs:sequence>
+			<xs:element name="Error-val" type="tns:Error-valType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mla-back_fini">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="Mla-back_getmleType">
+		<xs:sequence>
+			<xs:element name="Medline-entry" type="tns:Medline-entryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mla-back_getmlrType">
+		<xs:sequence>
+			<xs:element name="Medlars-entry" type="tns:Medlars-entryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mla-back_getpmeType">
+		<xs:sequence>
+			<xs:element name="Pubmed-entry" type="tns:Pubmed-entryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mla-back_getpmidsType">
+		<xs:sequence>
+			<xs:element ref="tns:Mla-back_getpmids_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mla-back_getpmids_E" type="xs:string"/>
+	<xs:complexType name="Mla-back_getpubType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mla-back_gettitleType">
+		<xs:sequence>
+			<xs:element name="Title-msg-list" type="tns:Title-msg-listType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mla-back_getuidsType">
+		<xs:sequence>
+			<xs:element ref="tns:Mla-back_getuids_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mla-back_getuids_E" type="xs:string"/>
+	<xs:element name="Mla-back_init">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="Mla-back_outpmidType">
+		<xs:sequence>
+			<xs:element ref="tns:PubMedId"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mla-back_outuid" type="xs:string"/>
+	<xs:element name="Mla-request">
+		<xs:complexType>
+			<xs:choice>
+				<xs:element ref="tns:Mla-request_init"/>
+				<xs:element ref="tns:Mla-request_getmle"/>
+				<xs:element ref="tns:Mla-request_getpub"/>
+				<xs:element name="Mla-request_gettitle" type="tns:Mla-request_gettitleType"/>
+				<xs:element name="Mla-request_citmatch" type="tns:Mla-request_citmatchType"/>
+				<xs:element ref="tns:Mla-request_fini"/>
+				<xs:element ref="tns:Mla-request_getmriuids"/>
+				<xs:element name="Mla-request_getaccuids" type="tns:Mla-request_getaccuidsType"/>
+				<xs:element ref="tns:Mla-request_uidtopmid"/>
+				<xs:element name="Mla-request_pmidtouid" type="tns:Mla-request_pmidtouidType"/>
+				<xs:element name="Mla-request_getmlepmid" type="tns:Mla-request_getmlepmidType"/>
+				<xs:element name="Mla-request_getpubpmid" type="tns:Mla-request_getpubpmidType"/>
+				<xs:element name="Mla-request_citmatchpmid" type="tns:Mla-request_citmatchpmidType"/>
+				<xs:element ref="tns:Mla-request_getmripmids"/>
+				<xs:element name="Mla-request_getaccpmids" type="tns:Mla-request_getaccpmidsType"/>
+				<xs:element name="Mla-request_citlstpmids" type="tns:Mla-request_citlstpmidsType"/>
+				<xs:element ref="tns:Mla-request_getmleuid"/>
+				<xs:element name="Mla-request_getmlrpmid" type="tns:Mla-request_getmlrpmidType"/>
+				<xs:element ref="tns:Mla-request_getmlruid"/>
+			</xs:choice>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Mla-request_citlstpmidsType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mla-request_citmatchType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mla-request_citmatchpmidType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mla-request_fini">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="Mla-request_getaccpmidsType">
+		<xs:sequence>
+			<xs:element name="Medline-si" type="tns:Medline-siType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mla-request_getaccuidsType">
+		<xs:sequence>
+			<xs:element name="Medline-si" type="tns:Medline-siType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mla-request_getmle" type="xs:string"/>
+	<xs:complexType name="Mla-request_getmlepmidType">
+		<xs:sequence>
+			<xs:element ref="tns:PubMedId"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mla-request_getmleuid" type="xs:string"/>
+	<xs:complexType name="Mla-request_getmlrpmidType">
+		<xs:sequence>
+			<xs:element ref="tns:PubMedId"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mla-request_getmlruid" type="xs:string"/>
+	<xs:element name="Mla-request_getmripmids" type="xs:string"/>
+	<xs:element name="Mla-request_getmriuids" type="xs:string"/>
+	<xs:element name="Mla-request_getpub" type="xs:string"/>
+	<xs:complexType name="Mla-request_getpubpmidType">
+		<xs:sequence>
+			<xs:element ref="tns:PubMedId"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Mla-request_gettitleType">
+		<xs:sequence>
+			<xs:element name="Title-msg" type="tns:Title-msgType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mla-request_init">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="Mla-request_pmidtouidType">
+		<xs:sequence>
+			<xs:element ref="tns:PubMedId"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Mla-request_uidtopmid" type="xs:string"/>
+	<xs:element name="Mmdb-id" type="xs:string"/>
+	<xs:complexType name="Model-coordinate-setType">
+		<xs:sequence>
+			<xs:element name="Model-coordinate-set_id" type="tns:Model-coordinate-set_idType" minOccurs="0"/>
+			<xs:element name="Model-coordinate-set_descr" type="tns:Model-coordinate-set_descrType" minOccurs="0"/>
+			<xs:element name="Model-coordinate-set_coordinates" type="tns:Model-coordinate-set_coordinatesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Model-coordinate-set-id" type="xs:string"/>
+	<xs:complexType name="Model-coordinate-set_coordinatesType">
+		<xs:choice>
+			<xs:element name="Model-coordinate-set_coordinates_literal" type="tns:Model-coordinate-set_coordinates_literalType"/>
+			<xs:element name="Model-coordinate-set_coordinates_reference" type="tns:Model-coordinate-set_coordinates_referenceType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Model-coordinate-set_coordinates_literalType">
+		<xs:sequence>
+			<xs:element name="Coordinates" type="tns:CoordinatesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Model-coordinate-set_coordinates_referenceType">
+		<xs:sequence>
+			<xs:element name="Chem-graph-alignment" type="tns:Chem-graph-alignmentType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Model-coordinate-set_descrType">
+		<xs:sequence>
+			<xs:element name="Model-descr" type="tns:Model-descrType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Model-coordinate-set_idType">
+		<xs:sequence>
+			<xs:element ref="tns:Model-coordinate-set-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Model-descrType">
+		<xs:choice>
+			<xs:element ref="tns:Model-descr_name"/>
+			<xs:element ref="tns:Model-descr_pdb-reso"/>
+			<xs:element ref="tns:Model-descr_pdb-method"/>
+			<xs:element ref="tns:Model-descr_pdb-comment"/>
+			<xs:element ref="tns:Model-descr_other-comment"/>
+			<xs:element name="Model-descr_attribution" type="tns:Model-descr_attributionType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Model-descr_attributionType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Model-descr_name" type="xs:string"/>
+	<xs:element name="Model-descr_other-comment" type="xs:string"/>
+	<xs:element name="Model-descr_pdb-comment" type="xs:string"/>
+	<xs:element name="Model-descr_pdb-method" type="xs:string"/>
+	<xs:element name="Model-descr_pdb-reso" type="xs:string"/>
+	<xs:element name="Model-id" type="xs:string"/>
+	<xs:complexType name="Model-spaceType">
+		<xs:sequence>
+			<xs:element name="Model-space_coordinate-units" type="tns:Model-space_coordinate-unitsType"/>
+			<xs:element name="Model-space_thermal-factor-units" type="tns:Model-space_thermal-factor-unitsType" minOccurs="0"/>
+			<xs:element name="Model-space_occupancy-factor-units" type="tns:Model-space_occupancy-factor-unitsType" minOccurs="0"/>
+			<xs:element name="Model-space_density-units" type="tns:Model-space_density-unitsType" minOccurs="0"/>
+			<xs:element name="Model-space_reference-frame" type="tns:Model-space_reference-frameType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Model-space-pointType">
+		<xs:sequence>
+			<xs:element ref="tns:Model-space-point_scale-factor"/>
+			<xs:element ref="tns:Model-space-point_x"/>
+			<xs:element ref="tns:Model-space-point_y"/>
+			<xs:element ref="tns:Model-space-point_z"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Model-space-point_scale-factor" type="xs:string"/>
+	<xs:element name="Model-space-point_x" type="xs:string"/>
+	<xs:element name="Model-space-point_y" type="xs:string"/>
+	<xs:element name="Model-space-point_z" type="xs:string"/>
+	<xs:complexType name="Model-space-pointsType">
+		<xs:sequence>
+			<xs:element ref="tns:Model-space-points_scale-factor"/>
+			<xs:element name="Model-space-points_x" type="tns:Model-space-points_xType"/>
+			<xs:element name="Model-space-points_y" type="tns:Model-space-points_yType"/>
+			<xs:element name="Model-space-points_z" type="tns:Model-space-points_zType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Model-space-points_scale-factor" type="xs:string"/>
+	<xs:complexType name="Model-space-points_xType">
+		<xs:sequence>
+			<xs:element ref="tns:Model-space-points_x_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Model-space-points_x_E" type="xs:string"/>
+	<xs:complexType name="Model-space-points_yType">
+		<xs:sequence>
+			<xs:element ref="tns:Model-space-points_y_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Model-space-points_y_E" type="xs:string"/>
+	<xs:complexType name="Model-space-points_zType">
+		<xs:sequence>
+			<xs:element ref="tns:Model-space-points_z_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Model-space-points_z_E" type="xs:string"/>
+	<xs:complexType name="Model-space_coordinate-unitsType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="angstroms"/>
+					<xs:enumeration value="nanometers"/>
+					<xs:enumeration value="other"/>
+					<xs:enumeration value="unknown"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Model-space_density-unitsType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="electrons-per-unit-volume"/>
+					<xs:enumeration value="arbitrary-scale"/>
+					<xs:enumeration value="other"/>
+					<xs:enumeration value="unknown"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Model-space_occupancy-factor-unitsType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="fractional"/>
+					<xs:enumeration value="electrons"/>
+					<xs:enumeration value="other"/>
+					<xs:enumeration value="unknown"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Model-space_reference-frameType">
+		<xs:sequence>
+			<xs:element name="Reference-frame" type="tns:Reference-frameType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Model-space_thermal-factor-unitsType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="b"/>
+					<xs:enumeration value="u"/>
+					<xs:enumeration value="other"/>
+					<xs:enumeration value="unknown"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Model-typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="ncbi-vector"/>
+							<xs:enumeration value="ncbi-backbone"/>
+							<xs:enumeration value="ncbi-all-atom"/>
+							<xs:enumeration value="pdb-model"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="MolInfoType">
+		<xs:sequence>
+			<xs:element name="MolInfo_biomol" type="tns:MolInfo_biomolType" minOccurs="0"/>
+			<xs:element name="MolInfo_tech" type="tns:MolInfo_techType" minOccurs="0"/>
+			<xs:element ref="tns:MolInfo_techexp" minOccurs="0"/>
+			<xs:element name="MolInfo_completeness" type="tns:MolInfo_completenessType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MolInfo_biomolType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unknown"/>
+							<xs:enumeration value="genomic"/>
+							<xs:enumeration value="pre-RNA"/>
+							<xs:enumeration value="mRNA"/>
+							<xs:enumeration value="rRNA"/>
+							<xs:enumeration value="tRNA"/>
+							<xs:enumeration value="snRNA"/>
+							<xs:enumeration value="scRNA"/>
+							<xs:enumeration value="peptide"/>
+							<xs:enumeration value="other-genetic"/>
+							<xs:enumeration value="genomic-mRNA"/>
+							<xs:enumeration value="cRNA"/>
+							<xs:enumeration value="snoRNA"/>
+							<xs:enumeration value="transcribed-RNA"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="MolInfo_completenessType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unknown"/>
+							<xs:enumeration value="complete"/>
+							<xs:enumeration value="partial"/>
+							<xs:enumeration value="no-left"/>
+							<xs:enumeration value="no-right"/>
+							<xs:enumeration value="no-ends"/>
+							<xs:enumeration value="has-left"/>
+							<xs:enumeration value="has-right"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="MolInfo_techType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unknown"/>
+							<xs:enumeration value="standard"/>
+							<xs:enumeration value="est"/>
+							<xs:enumeration value="sts"/>
+							<xs:enumeration value="survey"/>
+							<xs:enumeration value="genemap"/>
+							<xs:enumeration value="physmap"/>
+							<xs:enumeration value="derived"/>
+							<xs:enumeration value="concept-trans"/>
+							<xs:enumeration value="seq-pept"/>
+							<xs:enumeration value="both"/>
+							<xs:enumeration value="seq-pept-overlap"/>
+							<xs:enumeration value="seq-pept-homol"/>
+							<xs:enumeration value="concept-trans-a"/>
+							<xs:enumeration value="htgs-1"/>
+							<xs:enumeration value="htgs-2"/>
+							<xs:enumeration value="htgs-3"/>
+							<xs:enumeration value="fli-cdna"/>
+							<xs:enumeration value="htgs-0"/>
+							<xs:enumeration value="htc"/>
+							<xs:enumeration value="wgs"/>
+							<xs:enumeration value="barcode"/>
+							<xs:enumeration value="composite-wgs-htgs"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="MolInfo_techexp" type="xs:string"/>
+	<xs:complexType name="Molecule-graphType">
+		<xs:sequence>
+			<xs:element name="Molecule-graph_id" type="tns:Molecule-graph_idType"/>
+			<xs:element name="Molecule-graph_descr" type="tns:Molecule-graph_descrType" minOccurs="0"/>
+			<xs:element name="Molecule-graph_seq-id" type="tns:Molecule-graph_seq-idType" minOccurs="0"/>
+			<xs:element name="Molecule-graph_residue-sequence" type="tns:Molecule-graph_residue-sequenceType"/>
+			<xs:element name="Molecule-graph_inter-residue-bonds" type="tns:Molecule-graph_inter-residue-bondsType" minOccurs="0"/>
+			<xs:element name="Molecule-graph_sid" type="tns:Molecule-graph_sidType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Molecule-graph_descrType">
+		<xs:sequence>
+			<xs:element name="Biomol-descr" type="tns:Biomol-descrType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Molecule-graph_idType">
+		<xs:sequence>
+			<xs:element ref="tns:Molecule-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Molecule-graph_inter-residue-bondsType">
+		<xs:sequence>
+			<xs:element name="Inter-residue-bond" type="tns:Inter-residue-bondType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Molecule-graph_residue-sequenceType">
+		<xs:sequence>
+			<xs:element name="Residue" type="tns:ResidueType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Molecule-graph_seq-idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Molecule-graph_sidType">
+		<xs:sequence>
+			<xs:element ref="tns:PCSubstance-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Molecule-id" type="xs:string"/>
+	<xs:complexType name="Molecule-pntrsType">
+		<xs:sequence>
+			<xs:element ref="tns:Molecule-pntrs_number-of-ptrs"/>
+			<xs:element name="Molecule-pntrs_molecule-ids" type="tns:Molecule-pntrs_molecule-idsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Molecule-pntrs_molecule-idsType">
+		<xs:sequence>
+			<xs:element ref="tns:Molecule-id" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Molecule-pntrs_number-of-ptrs" type="xs:string"/>
+	<xs:complexType name="MoveType">
+		<xs:choice>
+			<xs:element name="Move_rotate" type="tns:Move_rotateType"/>
+			<xs:element name="Move_translate" type="tns:Move_translateType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Move_rotateType">
+		<xs:sequence>
+			<xs:element name="Rot-matrix" type="tns:Rot-matrixType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Move_translateType">
+		<xs:sequence>
+			<xs:element name="Trans-matrix" type="tns:Trans-matrixType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MultiOrgNameType">
+		<xs:sequence>
+			<xs:element name="OrgName" type="tns:OrgNameType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="NCBI2na" type="xs:string"/>
+	<xs:element name="NCBI4na" type="xs:string"/>
+	<xs:element name="NCBI8aa" type="xs:string"/>
+	<xs:element name="NCBI8na" type="xs:string"/>
+	<xs:element name="NCBIeaa" type="xs:string"/>
+	<xs:element name="NCBIpaa" type="xs:string"/>
+	<xs:element name="NCBIpna" type="xs:string"/>
+	<xs:element name="NCBIstdaa" type="xs:string"/>
+	<xs:complexType name="Na-strandType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="unknown"/>
+					<xs:enumeration value="plus"/>
+					<xs:enumeration value="minus"/>
+					<xs:enumeration value="both"/>
+					<xs:enumeration value="both-rev"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Name-stdType">
+		<xs:sequence>
+			<xs:element ref="tns:Name-std_last"/>
+			<xs:element ref="tns:Name-std_first" minOccurs="0"/>
+			<xs:element ref="tns:Name-std_middle" minOccurs="0"/>
+			<xs:element ref="tns:Name-std_full" minOccurs="0"/>
+			<xs:element ref="tns:Name-std_initials" minOccurs="0"/>
+			<xs:element ref="tns:Name-std_suffix" minOccurs="0"/>
+			<xs:element ref="tns:Name-std_title" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Name-std_first" type="xs:string"/>
+	<xs:element name="Name-std_full" type="xs:string"/>
+	<xs:element name="Name-std_initials" type="xs:string"/>
+	<xs:element name="Name-std_last" type="xs:string"/>
+	<xs:element name="Name-std_middle" type="xs:string"/>
+	<xs:element name="Name-std_suffix" type="xs:string"/>
+	<xs:element name="Name-std_title" type="xs:string"/>
+	<xs:complexType name="NameValueType">
+		<xs:sequence>
+			<xs:element ref="tns:NameValue_name"/>
+			<xs:element ref="tns:NameValue_value"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="NameValue_name" type="xs:string"/>
+	<xs:element name="NameValue_value" type="xs:string"/>
+	<xs:element name="Ncbi-mime-asn1">
+		<xs:complexType>
+			<xs:choice>
+				<xs:element name="Ncbi-mime-asn1_entrez" type="tns:Ncbi-mime-asn1_entrezType"/>
+				<xs:element name="Ncbi-mime-asn1_alignstruc" type="tns:Ncbi-mime-asn1_alignstrucType"/>
+				<xs:element name="Ncbi-mime-asn1_alignseq" type="tns:Ncbi-mime-asn1_alignseqType"/>
+				<xs:element name="Ncbi-mime-asn1_strucseq" type="tns:Ncbi-mime-asn1_strucseqType"/>
+				<xs:element name="Ncbi-mime-asn1_strucseqs" type="tns:Ncbi-mime-asn1_strucseqsType"/>
+				<xs:element name="Ncbi-mime-asn1_general" type="tns:Ncbi-mime-asn1_generalType"/>
+			</xs:choice>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Ncbi-mime-asn1_alignseqType">
+		<xs:sequence>
+			<xs:element name="Biostruc-align-seq" type="tns:Biostruc-align-seqType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Ncbi-mime-asn1_alignstrucType">
+		<xs:sequence>
+			<xs:element name="Biostruc-align" type="tns:Biostruc-alignType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Ncbi-mime-asn1_entrezType">
+		<xs:sequence>
+			<xs:element name="Entrez-general" type="tns:Entrez-generalType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Ncbi-mime-asn1_generalType">
+		<xs:sequence>
+			<xs:element name="Biostruc-seqs-aligns-cdd" type="tns:Biostruc-seqs-aligns-cddType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Ncbi-mime-asn1_strucseqType">
+		<xs:sequence>
+			<xs:element name="Biostruc-seq" type="tns:Biostruc-seqType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Ncbi-mime-asn1_strucseqsType">
+		<xs:sequence>
+			<xs:element name="Biostruc-seqs" type="tns:Biostruc-seqsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="NodeType">
+		<xs:sequence>
+			<xs:element ref="tns:Node_id"/>
+			<xs:element ref="tns:Node_parent" minOccurs="0"/>
+			<xs:element name="Node_features" type="tns:Node_featuresType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Node-annotationType">
+		<xs:sequence>
+			<xs:element ref="tns:Node-annotation_presentInChildCD" minOccurs="0"/>
+			<xs:element ref="tns:Node-annotation_note" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Node-annotation_note" type="xs:string"/>
+	<xs:element name="Node-annotation_presentInChildCD" type="xs:string"/>
+	<xs:complexType name="NodeFeatureType">
+		<xs:sequence>
+			<xs:element ref="tns:NodeFeature_featureid"/>
+			<xs:element ref="tns:NodeFeature_value"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="NodeFeatureSetType">
+		<xs:sequence>
+			<xs:element name="NodeFeature" type="tns:NodeFeatureType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="NodeFeature_featureid" type="xs:string"/>
+	<xs:element name="NodeFeature_value" type="xs:string"/>
+	<xs:complexType name="NodeSetType">
+		<xs:sequence>
+			<xs:element name="Node" type="tns:NodeType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Node_featuresType">
+		<xs:sequence>
+			<xs:element name="NodeFeatureSet" type="tns:NodeFeatureSetType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Node_id" type="xs:string"/>
+	<xs:element name="Node_parent" type="xs:string"/>
+	<xs:complexType name="Num-contType">
+		<xs:sequence>
+			<xs:element ref="tns:Num-cont_refnum" minOccurs="0"/>
+			<xs:element name="Num-cont_has-zero" type="tns:Num-cont_has-zeroType" minOccurs="0"/>
+			<xs:element name="Num-cont_ascending" type="tns:Num-cont_ascendingType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Num-cont_ascendingType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Num-cont_has-zeroType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Num-cont_refnum" type="xs:string"/>
+	<xs:complexType name="Num-enumType">
+		<xs:sequence>
+			<xs:element ref="tns:Num-enum_num"/>
+			<xs:element name="Num-enum_names" type="tns:Num-enum_namesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Num-enum_namesType">
+		<xs:sequence>
+			<xs:element ref="tns:Num-enum_names_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Num-enum_names_E" type="xs:string"/>
+	<xs:element name="Num-enum_num" type="xs:string"/>
+	<xs:complexType name="Num-realType">
+		<xs:sequence>
+			<xs:element ref="tns:Num-real_a"/>
+			<xs:element ref="tns:Num-real_b"/>
+			<xs:element ref="tns:Num-real_units" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Num-real_a" type="xs:string"/>
+	<xs:element name="Num-real_b" type="xs:string"/>
+	<xs:element name="Num-real_units" type="xs:string"/>
+	<xs:complexType name="Num-refType">
+		<xs:sequence>
+			<xs:element name="Num-ref_type" type="tns:Num-ref_typeType"/>
+			<xs:element name="Num-ref_aligns" type="tns:Num-ref_alignsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Num-ref_alignsType">
+		<xs:sequence>
+			<xs:element name="Seq-align" type="tns:Seq-alignType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Num-ref_typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="not-set"/>
+					<xs:enumeration value="sources"/>
+					<xs:enumeration value="aligns"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="NumberingType">
+		<xs:choice>
+			<xs:element name="Numbering_cont" type="tns:Numbering_contType"/>
+			<xs:element name="Numbering_enum" type="tns:Numbering_enumType"/>
+			<xs:element name="Numbering_ref" type="tns:Numbering_refType"/>
+			<xs:element name="Numbering_real" type="tns:Numbering_realType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Numbering_contType">
+		<xs:sequence>
+			<xs:element name="Num-cont" type="tns:Num-contType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Numbering_enumType">
+		<xs:sequence>
+			<xs:element name="Num-enum" type="tns:Num-enumType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Numbering_realType">
+		<xs:sequence>
+			<xs:element name="Num-real" type="tns:Num-realType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Numbering_refType">
+		<xs:sequence>
+			<xs:element name="Num-ref" type="tns:Num-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Object-idType">
+		<xs:choice>
+			<xs:element ref="tns:Object-id_id"/>
+			<xs:element ref="tns:Object-id_str"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="Object-id_id" type="xs:string"/>
+	<xs:element name="Object-id_str" type="xs:string"/>
+	<xs:complexType name="Org-refType">
+		<xs:sequence>
+			<xs:element ref="tns:Org-ref_taxname" minOccurs="0"/>
+			<xs:element ref="tns:Org-ref_common" minOccurs="0"/>
+			<xs:element name="Org-ref_mod" type="tns:Org-ref_modType" minOccurs="0"/>
+			<xs:element name="Org-ref_db" type="tns:Org-ref_dbType" minOccurs="0"/>
+			<xs:element name="Org-ref_syn" type="tns:Org-ref_synType" minOccurs="0"/>
+			<xs:element name="Org-ref_orgname" type="tns:Org-ref_orgnameType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Org-ref_common" type="xs:string"/>
+	<xs:complexType name="Org-ref_dbType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Org-ref_modType">
+		<xs:sequence>
+			<xs:element ref="tns:Org-ref_mod_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Org-ref_mod_E" type="xs:string"/>
+	<xs:complexType name="Org-ref_orgnameType">
+		<xs:sequence>
+			<xs:element name="OrgName" type="tns:OrgNameType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Org-ref_synType">
+		<xs:sequence>
+			<xs:element ref="tns:Org-ref_syn_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Org-ref_syn_E" type="xs:string"/>
+	<xs:element name="Org-ref_taxname" type="xs:string"/>
+	<xs:complexType name="OrgModType">
+		<xs:sequence>
+			<xs:element name="OrgMod_subtype" type="tns:OrgMod_subtypeType"/>
+			<xs:element ref="tns:OrgMod_subname"/>
+			<xs:element ref="tns:OrgMod_attrib" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="OrgMod_attrib" type="xs:string"/>
+	<xs:element name="OrgMod_subname" type="xs:string"/>
+	<xs:complexType name="OrgMod_subtypeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="strain"/>
+							<xs:enumeration value="substrain"/>
+							<xs:enumeration value="type"/>
+							<xs:enumeration value="subtype"/>
+							<xs:enumeration value="variety"/>
+							<xs:enumeration value="serotype"/>
+							<xs:enumeration value="serogroup"/>
+							<xs:enumeration value="serovar"/>
+							<xs:enumeration value="cultivar"/>
+							<xs:enumeration value="pathovar"/>
+							<xs:enumeration value="chemovar"/>
+							<xs:enumeration value="biovar"/>
+							<xs:enumeration value="biotype"/>
+							<xs:enumeration value="group"/>
+							<xs:enumeration value="subgroup"/>
+							<xs:enumeration value="isolate"/>
+							<xs:enumeration value="common"/>
+							<xs:enumeration value="acronym"/>
+							<xs:enumeration value="dosage"/>
+							<xs:enumeration value="nat-host"/>
+							<xs:enumeration value="sub-species"/>
+							<xs:enumeration value="specimen-voucher"/>
+							<xs:enumeration value="authority"/>
+							<xs:enumeration value="forma"/>
+							<xs:enumeration value="forma-specialis"/>
+							<xs:enumeration value="ecotype"/>
+							<xs:enumeration value="synonym"/>
+							<xs:enumeration value="anamorph"/>
+							<xs:enumeration value="teleomorph"/>
+							<xs:enumeration value="breed"/>
+							<xs:enumeration value="gb-acronym"/>
+							<xs:enumeration value="gb-anamorph"/>
+							<xs:enumeration value="gb-synonym"/>
+							<xs:enumeration value="old-lineage"/>
+							<xs:enumeration value="old-name"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="OrgNameType">
+		<xs:sequence>
+			<xs:element name="OrgName_name" type="tns:OrgName_nameType" minOccurs="0"/>
+			<xs:element ref="tns:OrgName_attrib" minOccurs="0"/>
+			<xs:element name="OrgName_mod" type="tns:OrgName_modType" minOccurs="0"/>
+			<xs:element ref="tns:OrgName_lineage" minOccurs="0"/>
+			<xs:element ref="tns:OrgName_gcode" minOccurs="0"/>
+			<xs:element ref="tns:OrgName_mgcode" minOccurs="0"/>
+			<xs:element ref="tns:OrgName_div" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="OrgName_attrib" type="xs:string"/>
+	<xs:element name="OrgName_div" type="xs:string"/>
+	<xs:element name="OrgName_gcode" type="xs:string"/>
+	<xs:element name="OrgName_lineage" type="xs:string"/>
+	<xs:element name="OrgName_mgcode" type="xs:string"/>
+	<xs:complexType name="OrgName_modType">
+		<xs:sequence>
+			<xs:element name="OrgMod" type="tns:OrgModType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="OrgName_nameType">
+		<xs:choice>
+			<xs:element name="OrgName_name_binomial" type="tns:OrgName_name_binomialType"/>
+			<xs:element ref="tns:OrgName_name_virus"/>
+			<xs:element name="OrgName_name_hybrid" type="tns:OrgName_name_hybridType"/>
+			<xs:element name="OrgName_name_namedhybrid" type="tns:OrgName_name_namedhybridType"/>
+			<xs:element name="OrgName_name_partial" type="tns:OrgName_name_partialType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="OrgName_name_binomialType">
+		<xs:sequence>
+			<xs:element name="BinomialOrgName" type="tns:BinomialOrgNameType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="OrgName_name_hybridType">
+		<xs:sequence>
+			<xs:element name="MultiOrgName" type="tns:MultiOrgNameType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="OrgName_name_namedhybridType">
+		<xs:sequence>
+			<xs:element name="BinomialOrgName" type="tns:BinomialOrgNameType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="OrgName_name_partialType">
+		<xs:sequence>
+			<xs:element name="PartialOrgName" type="tns:PartialOrgNameType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="OrgName_name_virus" type="xs:string"/>
+	<xs:complexType name="Other-featureType">
+		<xs:sequence>
+			<xs:element name="Other-feature_biostruc-id" type="tns:Other-feature_biostruc-idType"/>
+			<xs:element name="Other-feature_set" type="tns:Other-feature_setType"/>
+			<xs:element name="Other-feature_feature" type="tns:Other-feature_featureType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Other-feature_biostruc-idType">
+		<xs:sequence>
+			<xs:element name="Biostruc-id" type="tns:Biostruc-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Other-feature_featureType">
+		<xs:sequence>
+			<xs:element ref="tns:Biostruc-feature-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Other-feature_setType">
+		<xs:sequence>
+			<xs:element ref="tns:Biostruc-feature-set-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Other-sourceType">
+		<xs:sequence>
+			<xs:element name="Other-source_src" type="tns:Other-source_srcType" minOccurs="0"/>
+			<xs:element ref="tns:Other-source_pre-text" minOccurs="0"/>
+			<xs:element ref="tns:Other-source_anchor" minOccurs="0"/>
+			<xs:element ref="tns:Other-source_url" minOccurs="0"/>
+			<xs:element ref="tns:Other-source_post-text" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Other-source_anchor" type="xs:string"/>
+	<xs:element name="Other-source_post-text" type="xs:string"/>
+	<xs:element name="Other-source_pre-text" type="xs:string"/>
+	<xs:complexType name="Other-source_srcType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Other-source_url" type="xs:string"/>
+	<xs:complexType name="PC-AnnotatedXRefType">
+		<xs:sequence>
+			<xs:element name="PC-AnnotatedXRef_xref" type="tns:PC-AnnotatedXRef_xrefType"/>
+			<xs:element ref="tns:PC-AnnotatedXRef_comment" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-AnnotatedXRef_comment" type="xs:string"/>
+	<xs:complexType name="PC-AnnotatedXRef_xrefType">
+		<xs:sequence>
+			<xs:element name="PC-XRefData" type="tns:PC-XRefDataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-AssayContainer">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="PC-AssaySubmit" type="tns:PC-AssaySubmitType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="PC-AssayDataType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-AssayData_tid"/>
+			<xs:element name="PC-AssayData_value" type="tns:PC-AssayData_valueType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-AssayData_tid" type="xs:string"/>
+	<xs:complexType name="PC-AssayData_valueType">
+		<xs:choice>
+			<xs:element ref="tns:PC-AssayData_value_ival"/>
+			<xs:element ref="tns:PC-AssayData_value_fval"/>
+			<xs:element name="PC-AssayData_value_bval" type="tns:PC-AssayData_value_bvalType"/>
+			<xs:element ref="tns:PC-AssayData_value_sval"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="PC-AssayData_value_bvalType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="PC-AssayData_value_fval" type="xs:string"/>
+	<xs:element name="PC-AssayData_value_ival" type="xs:string"/>
+	<xs:element name="PC-AssayData_value_sval" type="xs:string"/>
+	<xs:complexType name="PC-AssayDescriptionType">
+		<xs:sequence>
+			<xs:element name="PC-AssayDescription_aid" type="tns:PC-AssayDescription_aidType"/>
+			<xs:element name="PC-AssayDescription_aid-source" type="tns:PC-AssayDescription_aid-sourceType" minOccurs="0"/>
+			<xs:element ref="tns:PC-AssayDescription_name"/>
+			<xs:element name="PC-AssayDescription_description" type="tns:PC-AssayDescription_descriptionType" minOccurs="0"/>
+			<xs:element name="PC-AssayDescription_protocol" type="tns:PC-AssayDescription_protocolType" minOccurs="0"/>
+			<xs:element name="PC-AssayDescription_comment" type="tns:PC-AssayDescription_commentType" minOccurs="0"/>
+			<xs:element name="PC-AssayDescription_xref" type="tns:PC-AssayDescription_xrefType" minOccurs="0"/>
+			<xs:element name="PC-AssayDescription_results" type="tns:PC-AssayDescription_resultsType"/>
+			<xs:element name="PC-AssayDescription_pub" type="tns:PC-AssayDescription_pubType" minOccurs="0"/>
+			<xs:element ref="tns:PC-AssayDescription_revision" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-AssayDescription_aidType">
+		<xs:sequence>
+			<xs:element name="PC-ID" type="tns:PC-IDType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-AssayDescription_aid-sourceType">
+		<xs:sequence>
+			<xs:element name="PC-Source" type="tns:PC-SourceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-AssayDescription_commentType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-AssayDescription_comment_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-AssayDescription_comment_E" type="xs:string"/>
+	<xs:complexType name="PC-AssayDescription_descriptionType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-AssayDescription_description_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-AssayDescription_description_E" type="xs:string"/>
+	<xs:element name="PC-AssayDescription_name" type="xs:string"/>
+	<xs:complexType name="PC-AssayDescription_protocolType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-AssayDescription_protocol_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-AssayDescription_protocol_E" type="xs:string"/>
+	<xs:complexType name="PC-AssayDescription_pubType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-AssayDescription_resultsType">
+		<xs:sequence>
+			<xs:element name="PC-ResultType" type="tns:PC-ResultTypeType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-AssayDescription_revision" type="xs:string"/>
+	<xs:complexType name="PC-AssayDescription_xrefType">
+		<xs:sequence>
+			<xs:element name="PC-AnnotatedXRef" type="tns:PC-AnnotatedXRefType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-AssayResultsType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-AssayResults_sid"/>
+			<xs:element name="PC-AssayResults_sid-source" type="tns:PC-AssayResults_sid-sourceType" minOccurs="0"/>
+			<xs:element ref="tns:PC-AssayResults_version" minOccurs="0"/>
+			<xs:element ref="tns:PC-AssayResults_comment" minOccurs="0"/>
+			<xs:element name="PC-AssayResults_outcome" type="tns:PC-AssayResults_outcomeType" minOccurs="0"/>
+			<xs:element ref="tns:PC-AssayResults_rank" minOccurs="0"/>
+			<xs:element name="PC-AssayResults_data" type="tns:PC-AssayResults_dataType" minOccurs="0"/>
+			<xs:element ref="tns:PC-AssayResults_url" minOccurs="0"/>
+			<xs:element name="PC-AssayResults_xref" type="tns:PC-AssayResults_xrefType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-AssayResultsSet">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="PC-AssayResults" type="tns:PC-AssayResultsType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="PC-AssayResults_comment" type="xs:string"/>
+	<xs:complexType name="PC-AssayResults_dataType">
+		<xs:sequence>
+			<xs:element name="PC-AssayData" type="tns:PC-AssayDataType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-AssayResults_outcomeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="inactive"/>
+							<xs:enumeration value="active"/>
+							<xs:enumeration value="inconclusive"/>
+							<xs:enumeration value="unspecified"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="PC-AssayResults_rank" type="xs:string"/>
+	<xs:element name="PC-AssayResults_sid" type="xs:string"/>
+	<xs:complexType name="PC-AssayResults_sid-sourceType">
+		<xs:sequence>
+			<xs:element name="PC-Source" type="tns:PC-SourceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-AssayResults_url" type="xs:string"/>
+	<xs:element name="PC-AssayResults_version" type="xs:string"/>
+	<xs:complexType name="PC-AssayResults_xrefType">
+		<xs:sequence>
+			<xs:element name="PC-AnnotatedXRef" type="tns:PC-AnnotatedXRefType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-AssaySubmitType">
+		<xs:sequence>
+			<xs:element name="PC-AssaySubmit_assay" type="tns:PC-AssaySubmit_assayType"/>
+			<xs:element name="PC-AssaySubmit_data" type="tns:PC-AssaySubmit_dataType" minOccurs="0"/>
+			<xs:element name="PC-AssaySubmit_revoke" type="tns:PC-AssaySubmit_revokeType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-AssaySubmit_assayType">
+		<xs:choice>
+			<xs:element ref="tns:PC-AssaySubmit_assay_aid"/>
+			<xs:element name="PC-AssaySubmit_assay_aid-source" type="tns:PC-AssaySubmit_assay_aid-sourceType"/>
+			<xs:element name="PC-AssaySubmit_assay_descr" type="tns:PC-AssaySubmit_assay_descrType"/>
+			<xs:element name="PC-AssaySubmit_assay_aidver" type="tns:PC-AssaySubmit_assay_aidverType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="PC-AssaySubmit_assay_aid" type="xs:string"/>
+	<xs:complexType name="PC-AssaySubmit_assay_aid-sourceType">
+		<xs:sequence>
+			<xs:element name="PC-Source" type="tns:PC-SourceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-AssaySubmit_assay_aidverType">
+		<xs:sequence>
+			<xs:element name="PC-ID" type="tns:PC-IDType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-AssaySubmit_assay_descrType">
+		<xs:sequence>
+			<xs:element name="PC-AssayDescription" type="tns:PC-AssayDescriptionType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-AssaySubmit_dataType">
+		<xs:sequence>
+			<xs:element name="PC-AssayResults" type="tns:PC-AssayResultsType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-AssaySubmit_revokeType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-AssaySubmit_revoke_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-AssaySubmit_revoke_E" type="xs:string"/>
+	<xs:complexType name="PC-AtomIntType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-AtomInt_aid"/>
+			<xs:element ref="tns:PC-AtomInt_value"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-AtomInt_aid" type="xs:string"/>
+	<xs:element name="PC-AtomInt_value" type="xs:string"/>
+	<xs:complexType name="PC-AtomRadicalType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-AtomRadical_aid"/>
+			<xs:element name="PC-AtomRadical_type" type="tns:PC-AtomRadical_typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-AtomRadical_aid" type="xs:string"/>
+	<xs:complexType name="PC-AtomRadical_typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="singlet"/>
+							<xs:enumeration value="doublet"/>
+							<xs:enumeration value="triplet"/>
+							<xs:enumeration value="quartet"/>
+							<xs:enumeration value="quintet"/>
+							<xs:enumeration value="hextet"/>
+							<xs:enumeration value="heptet"/>
+							<xs:enumeration value="octet"/>
+							<xs:enumeration value="none"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="PC-AtomSourceType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-AtomSource_aid"/>
+			<xs:element name="PC-AtomSource_source" type="tns:PC-AtomSource_sourceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-AtomSource_aid" type="xs:string"/>
+	<xs:complexType name="PC-AtomSource_sourceType">
+		<xs:sequence>
+			<xs:element name="PC-MMDBSource" type="tns:PC-MMDBSourceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-AtomStringType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-AtomString_aid"/>
+			<xs:element ref="tns:PC-AtomString_value"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-AtomString_aid" type="xs:string"/>
+	<xs:element name="PC-AtomString_value" type="xs:string"/>
+	<xs:complexType name="PC-AtomsType">
+		<xs:sequence>
+			<xs:element name="PC-Atoms_aid" type="tns:PC-Atoms_aidType"/>
+			<xs:element name="PC-Atoms_element" type="tns:PC-Atoms_elementType"/>
+			<xs:element name="PC-Atoms_label" type="tns:PC-Atoms_labelType" minOccurs="0"/>
+			<xs:element name="PC-Atoms_isotope" type="tns:PC-Atoms_isotopeType" minOccurs="0"/>
+			<xs:element name="PC-Atoms_charge" type="tns:PC-Atoms_chargeType" minOccurs="0"/>
+			<xs:element name="PC-Atoms_radical" type="tns:PC-Atoms_radicalType" minOccurs="0"/>
+			<xs:element name="PC-Atoms_source" type="tns:PC-Atoms_sourceType" minOccurs="0"/>
+			<xs:element name="PC-Atoms_comment" type="tns:PC-Atoms_commentType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Atoms_aidType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-Atoms_aid_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-Atoms_aid_E" type="xs:string"/>
+	<xs:complexType name="PC-Atoms_chargeType">
+		<xs:sequence>
+			<xs:element name="PC-AtomInt" type="tns:PC-AtomIntType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Atoms_commentType">
+		<xs:sequence>
+			<xs:element name="PC-AtomString" type="tns:PC-AtomStringType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Atoms_elementType">
+		<xs:sequence>
+			<xs:element name="PC-Element" type="tns:PC-ElementType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Atoms_isotopeType">
+		<xs:sequence>
+			<xs:element name="PC-AtomInt" type="tns:PC-AtomIntType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Atoms_labelType">
+		<xs:sequence>
+			<xs:element name="PC-AtomString" type="tns:PC-AtomStringType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Atoms_radicalType">
+		<xs:sequence>
+			<xs:element name="PC-AtomRadical" type="tns:PC-AtomRadicalType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Atoms_sourceType">
+		<xs:sequence>
+			<xs:element name="PC-AtomSource" type="tns:PC-AtomSourceType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-BondAnnotationType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="crossed"/>
+							<xs:enumeration value="dashed"/>
+							<xs:enumeration value="wavy"/>
+							<xs:enumeration value="dotted"/>
+							<xs:enumeration value="wedge-up"/>
+							<xs:enumeration value="wedge-down"/>
+							<xs:enumeration value="arrow"/>
+							<xs:enumeration value="aromatic"/>
+							<xs:enumeration value="resonance"/>
+							<xs:enumeration value="bold"/>
+							<xs:enumeration value="fischer"/>
+							<xs:enumeration value="closeContact"/>
+							<xs:enumeration value="unknown"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="PC-BondTypeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="single"/>
+							<xs:enumeration value="double"/>
+							<xs:enumeration value="triple"/>
+							<xs:enumeration value="quadruple"/>
+							<xs:enumeration value="dative"/>
+							<xs:enumeration value="complex"/>
+							<xs:enumeration value="ionic"/>
+							<xs:enumeration value="unknown"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="PC-BondsType">
+		<xs:sequence>
+			<xs:element name="PC-Bonds_aid1" type="tns:PC-Bonds_aid1Type"/>
+			<xs:element name="PC-Bonds_aid2" type="tns:PC-Bonds_aid2Type"/>
+			<xs:element name="PC-Bonds_order" type="tns:PC-Bonds_orderType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Bonds_aid1Type">
+		<xs:sequence>
+			<xs:element ref="tns:PC-Bonds_aid1_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-Bonds_aid1_E" type="xs:string"/>
+	<xs:complexType name="PC-Bonds_aid2Type">
+		<xs:sequence>
+			<xs:element ref="tns:PC-Bonds_aid2_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-Bonds_aid2_E" type="xs:string"/>
+	<xs:complexType name="PC-Bonds_orderType">
+		<xs:sequence>
+			<xs:element name="PC-BondType" type="tns:PC-BondTypeType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-CompoundType">
+		<xs:sequence>
+			<xs:element name="PC-Compound_id" type="tns:PC-Compound_idType"/>
+			<xs:element name="PC-Compound_atoms" type="tns:PC-Compound_atomsType" minOccurs="0"/>
+			<xs:element name="PC-Compound_bonds" type="tns:PC-Compound_bondsType" minOccurs="0"/>
+			<xs:element name="PC-Compound_stereo" type="tns:PC-Compound_stereoType" minOccurs="0"/>
+			<xs:element name="PC-Compound_coords" type="tns:PC-Compound_coordsType" minOccurs="0"/>
+			<xs:element ref="tns:PC-Compound_charge" minOccurs="0"/>
+			<xs:element name="PC-Compound_props" type="tns:PC-Compound_propsType" minOccurs="0"/>
+			<xs:element name="PC-Compound_stereogroups" type="tns:PC-Compound_stereogroupsType" minOccurs="0"/>
+			<xs:element name="PC-Compound_count" type="tns:PC-Compound_countType" minOccurs="0"/>
+			<xs:element name="PC-Compound_vbalt" type="tns:PC-Compound_vbaltType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-CompoundTypeType">
+		<xs:sequence>
+			<xs:element name="PC-CompoundType_type" type="tns:PC-CompoundType_typeType" minOccurs="0"/>
+			<xs:element name="PC-CompoundType_id" type="tns:PC-CompoundType_idType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-CompoundType_idType">
+		<xs:choice>
+			<xs:element ref="tns:PC-CompoundType_id_cid"/>
+			<xs:element ref="tns:PC-CompoundType_id_sid"/>
+			<xs:element ref="tns:PC-CompoundType_id_xid"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="PC-CompoundType_id_cid" type="xs:string"/>
+	<xs:element name="PC-CompoundType_id_sid" type="xs:string"/>
+	<xs:element name="PC-CompoundType_id_xid" type="xs:string"/>
+	<xs:complexType name="PC-CompoundType_typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="deposited"/>
+							<xs:enumeration value="standardized"/>
+							<xs:enumeration value="component"/>
+							<xs:enumeration value="neutralized"/>
+							<xs:enumeration value="mixture"/>
+							<xs:enumeration value="tautomer"/>
+							<xs:enumeration value="pka-state"/>
+							<xs:enumeration value="unknown"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="PC-Compound_atomsType">
+		<xs:sequence>
+			<xs:element name="PC-Atoms" type="tns:PC-AtomsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Compound_bondsType">
+		<xs:sequence>
+			<xs:element name="PC-Bonds" type="tns:PC-BondsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-Compound_charge" type="xs:string"/>
+	<xs:complexType name="PC-Compound_coordsType">
+		<xs:sequence>
+			<xs:element name="PC-Coordinates" type="tns:PC-CoordinatesType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Compound_countType">
+		<xs:sequence>
+			<xs:element name="PC-Count" type="tns:PC-CountType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Compound_idType">
+		<xs:sequence>
+			<xs:element name="PC-CompoundType" type="tns:PC-CompoundTypeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Compound_propsType">
+		<xs:sequence>
+			<xs:element name="PC-InfoData" type="tns:PC-InfoDataType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Compound_stereoType">
+		<xs:sequence>
+			<xs:element name="PC-StereoCenter" type="tns:PC-StereoCenterType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Compound_stereogroupsType">
+		<xs:sequence>
+			<xs:element name="PC-StereoGroup" type="tns:PC-StereoGroupType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Compound_vbaltType">
+		<xs:sequence>
+			<xs:element name="PC-Compounds" type="tns:PC-CompoundsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-CompoundsType">
+		<xs:sequence>
+			<xs:element name="PC-Compound" type="tns:PC-CompoundType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-ConformerType">
+		<xs:sequence>
+			<xs:element name="PC-Conformer_x" type="tns:PC-Conformer_xType"/>
+			<xs:element name="PC-Conformer_y" type="tns:PC-Conformer_yType"/>
+			<xs:element name="PC-Conformer_z" type="tns:PC-Conformer_zType" minOccurs="0"/>
+			<xs:element name="PC-Conformer_style" type="tns:PC-Conformer_styleType" minOccurs="0"/>
+			<xs:element name="PC-Conformer_data" type="tns:PC-Conformer_dataType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Conformer_dataType">
+		<xs:sequence>
+			<xs:element name="PC-InfoData" type="tns:PC-InfoDataType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Conformer_styleType">
+		<xs:sequence>
+			<xs:element name="PC-DrawAnnotations" type="tns:PC-DrawAnnotationsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Conformer_xType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-Conformer_x_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-Conformer_x_E" type="xs:string"/>
+	<xs:complexType name="PC-Conformer_yType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-Conformer_y_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-Conformer_y_E" type="xs:string"/>
+	<xs:complexType name="PC-Conformer_zType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-Conformer_z_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-Conformer_z_E" type="xs:string"/>
+	<xs:complexType name="PC-CoordinateTypeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="twod"/>
+							<xs:enumeration value="threed"/>
+							<xs:enumeration value="submitted"/>
+							<xs:enumeration value="experimental"/>
+							<xs:enumeration value="computed"/>
+							<xs:enumeration value="standardized"/>
+							<xs:enumeration value="augmented"/>
+							<xs:enumeration value="aligned"/>
+							<xs:enumeration value="compact"/>
+							<xs:enumeration value="units-angstroms"/>
+							<xs:enumeration value="units-nanometers"/>
+							<xs:enumeration value="units-pixel"/>
+							<xs:enumeration value="units-points"/>
+							<xs:enumeration value="units-stdbonds"/>
+							<xs:enumeration value="units-unknown"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="PC-CoordinatesType">
+		<xs:sequence>
+			<xs:element name="PC-Coordinates_type" type="tns:PC-Coordinates_typeType"/>
+			<xs:element name="PC-Coordinates_aid" type="tns:PC-Coordinates_aidType"/>
+			<xs:element name="PC-Coordinates_conformers" type="tns:PC-Coordinates_conformersType"/>
+			<xs:element name="PC-Coordinates_atomlabels" type="tns:PC-Coordinates_atomlabelsType" minOccurs="0"/>
+			<xs:element name="PC-Coordinates_data" type="tns:PC-Coordinates_dataType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Coordinates_aidType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-Coordinates_aid_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-Coordinates_aid_E" type="xs:string"/>
+	<xs:complexType name="PC-Coordinates_atomlabelsType">
+		<xs:sequence>
+			<xs:element name="PC-AtomString" type="tns:PC-AtomStringType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Coordinates_conformersType">
+		<xs:sequence>
+			<xs:element name="PC-Conformer" type="tns:PC-ConformerType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Coordinates_dataType">
+		<xs:sequence>
+			<xs:element name="PC-InfoData" type="tns:PC-InfoDataType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Coordinates_typeType">
+		<xs:sequence>
+			<xs:element name="PC-CoordinateType" type="tns:PC-CoordinateTypeType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-CountType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-Count_heavy-atom"/>
+			<xs:element ref="tns:PC-Count_atom-chiral"/>
+			<xs:element ref="tns:PC-Count_atom-chiral-def"/>
+			<xs:element ref="tns:PC-Count_atom-chiral-undef"/>
+			<xs:element ref="tns:PC-Count_bond-chiral"/>
+			<xs:element ref="tns:PC-Count_bond-chiral-def"/>
+			<xs:element ref="tns:PC-Count_bond-chiral-undef"/>
+			<xs:element ref="tns:PC-Count_isotope-atom"/>
+			<xs:element ref="tns:PC-Count_covalent-unit"/>
+			<xs:element ref="tns:PC-Count_tautomers"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-Count_atom-chiral" type="xs:string"/>
+	<xs:element name="PC-Count_atom-chiral-def" type="xs:string"/>
+	<xs:element name="PC-Count_atom-chiral-undef" type="xs:string"/>
+	<xs:element name="PC-Count_bond-chiral" type="xs:string"/>
+	<xs:element name="PC-Count_bond-chiral-def" type="xs:string"/>
+	<xs:element name="PC-Count_bond-chiral-undef" type="xs:string"/>
+	<xs:element name="PC-Count_covalent-unit" type="xs:string"/>
+	<xs:element name="PC-Count_heavy-atom" type="xs:string"/>
+	<xs:element name="PC-Count_isotope-atom" type="xs:string"/>
+	<xs:element name="PC-Count_tautomers" type="xs:string"/>
+	<xs:complexType name="PC-DBTrackingType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-DBTracking_name"/>
+			<xs:element name="PC-DBTracking_source-id" type="tns:PC-DBTracking_source-idType"/>
+			<xs:element name="PC-DBTracking_date" type="tns:PC-DBTracking_dateType" minOccurs="0"/>
+			<xs:element ref="tns:PC-DBTracking_description" minOccurs="0"/>
+			<xs:element name="PC-DBTracking_pub" type="tns:PC-DBTracking_pubType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-DBTracking_dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-DBTracking_description" type="xs:string"/>
+	<xs:element name="PC-DBTracking_name" type="xs:string"/>
+	<xs:complexType name="PC-DBTracking_pubType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-DBTracking_source-idType">
+		<xs:sequence>
+			<xs:element name="Object-id" type="tns:Object-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-DrawAnnotationsType">
+		<xs:sequence>
+			<xs:element name="PC-DrawAnnotations_annotation" type="tns:PC-DrawAnnotations_annotationType"/>
+			<xs:element name="PC-DrawAnnotations_aid1" type="tns:PC-DrawAnnotations_aid1Type"/>
+			<xs:element name="PC-DrawAnnotations_aid2" type="tns:PC-DrawAnnotations_aid2Type"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-DrawAnnotations_aid1Type">
+		<xs:sequence>
+			<xs:element ref="tns:PC-DrawAnnotations_aid1_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-DrawAnnotations_aid1_E" type="xs:string"/>
+	<xs:complexType name="PC-DrawAnnotations_aid2Type">
+		<xs:sequence>
+			<xs:element ref="tns:PC-DrawAnnotations_aid2_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-DrawAnnotations_aid2_E" type="xs:string"/>
+	<xs:complexType name="PC-DrawAnnotations_annotationType">
+		<xs:sequence>
+			<xs:element name="PC-BondAnnotation" type="tns:PC-BondAnnotationType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-ElementType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="a"/>
+							<xs:enumeration value="d"/>
+							<xs:enumeration value="r"/>
+							<xs:enumeration value="lp"/>
+							<xs:enumeration value="h"/>
+							<xs:enumeration value="he"/>
+							<xs:enumeration value="li"/>
+							<xs:enumeration value="be"/>
+							<xs:enumeration value="b"/>
+							<xs:enumeration value="c"/>
+							<xs:enumeration value="n"/>
+							<xs:enumeration value="o"/>
+							<xs:enumeration value="f"/>
+							<xs:enumeration value="ne"/>
+							<xs:enumeration value="na"/>
+							<xs:enumeration value="mg"/>
+							<xs:enumeration value="al"/>
+							<xs:enumeration value="si"/>
+							<xs:enumeration value="p"/>
+							<xs:enumeration value="s"/>
+							<xs:enumeration value="cl"/>
+							<xs:enumeration value="ar"/>
+							<xs:enumeration value="k"/>
+							<xs:enumeration value="ca"/>
+							<xs:enumeration value="sc"/>
+							<xs:enumeration value="ti"/>
+							<xs:enumeration value="v"/>
+							<xs:enumeration value="cr"/>
+							<xs:enumeration value="mn"/>
+							<xs:enumeration value="fe"/>
+							<xs:enumeration value="co"/>
+							<xs:enumeration value="ni"/>
+							<xs:enumeration value="cu"/>
+							<xs:enumeration value="zn"/>
+							<xs:enumeration value="ga"/>
+							<xs:enumeration value="ge"/>
+							<xs:enumeration value="as"/>
+							<xs:enumeration value="se"/>
+							<xs:enumeration value="br"/>
+							<xs:enumeration value="kr"/>
+							<xs:enumeration value="rb"/>
+							<xs:enumeration value="sr"/>
+							<xs:enumeration value="y"/>
+							<xs:enumeration value="zr"/>
+							<xs:enumeration value="nb"/>
+							<xs:enumeration value="mo"/>
+							<xs:enumeration value="tc"/>
+							<xs:enumeration value="ru"/>
+							<xs:enumeration value="rh"/>
+							<xs:enumeration value="pd"/>
+							<xs:enumeration value="ag"/>
+							<xs:enumeration value="cd"/>
+							<xs:enumeration value="in"/>
+							<xs:enumeration value="sn"/>
+							<xs:enumeration value="sb"/>
+							<xs:enumeration value="te"/>
+							<xs:enumeration value="i"/>
+							<xs:enumeration value="xe"/>
+							<xs:enumeration value="cs"/>
+							<xs:enumeration value="ba"/>
+							<xs:enumeration value="la"/>
+							<xs:enumeration value="ce"/>
+							<xs:enumeration value="pr"/>
+							<xs:enumeration value="nd"/>
+							<xs:enumeration value="pm"/>
+							<xs:enumeration value="sm"/>
+							<xs:enumeration value="eu"/>
+							<xs:enumeration value="gd"/>
+							<xs:enumeration value="tb"/>
+							<xs:enumeration value="dy"/>
+							<xs:enumeration value="ho"/>
+							<xs:enumeration value="er"/>
+							<xs:enumeration value="tm"/>
+							<xs:enumeration value="yb"/>
+							<xs:enumeration value="lu"/>
+							<xs:enumeration value="hf"/>
+							<xs:enumeration value="ta"/>
+							<xs:enumeration value="w"/>
+							<xs:enumeration value="re"/>
+							<xs:enumeration value="os"/>
+							<xs:enumeration value="ir"/>
+							<xs:enumeration value="pt"/>
+							<xs:enumeration value="au"/>
+							<xs:enumeration value="hg"/>
+							<xs:enumeration value="tl"/>
+							<xs:enumeration value="pb"/>
+							<xs:enumeration value="bi"/>
+							<xs:enumeration value="po"/>
+							<xs:enumeration value="at"/>
+							<xs:enumeration value="rn"/>
+							<xs:enumeration value="fr"/>
+							<xs:enumeration value="ra"/>
+							<xs:enumeration value="ac"/>
+							<xs:enumeration value="th"/>
+							<xs:enumeration value="pa"/>
+							<xs:enumeration value="u"/>
+							<xs:enumeration value="np"/>
+							<xs:enumeration value="pu"/>
+							<xs:enumeration value="am"/>
+							<xs:enumeration value="cm"/>
+							<xs:enumeration value="bk"/>
+							<xs:enumeration value="cf"/>
+							<xs:enumeration value="es"/>
+							<xs:enumeration value="fm"/>
+							<xs:enumeration value="md"/>
+							<xs:enumeration value="no"/>
+							<xs:enumeration value="lr"/>
+							<xs:enumeration value="rf"/>
+							<xs:enumeration value="db"/>
+							<xs:enumeration value="sg"/>
+							<xs:enumeration value="bh"/>
+							<xs:enumeration value="hs"/>
+							<xs:enumeration value="mt"/>
+							<xs:enumeration value="ds"/>
+							<xs:enumeration value="rg"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="PC-IDType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-ID_id"/>
+			<xs:element ref="tns:PC-ID_version"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-ID_id" type="xs:string"/>
+	<xs:element name="PC-ID_version" type="xs:string"/>
+	<xs:complexType name="PC-InfoDataType">
+		<xs:sequence>
+			<xs:element name="PC-InfoData_urn" type="tns:PC-InfoData_urnType"/>
+			<xs:element name="PC-InfoData_value" type="tns:PC-InfoData_valueType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-InfoData_urnType">
+		<xs:sequence>
+			<xs:element name="PC-Urn" type="tns:PC-UrnType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-InfoData_valueType">
+		<xs:choice>
+			<xs:element name="PC-InfoData_value_bval" type="tns:PC-InfoData_value_bvalType"/>
+			<xs:element name="PC-InfoData_value_bvec" type="tns:PC-InfoData_value_bvecType"/>
+			<xs:element ref="tns:PC-InfoData_value_ival"/>
+			<xs:element name="PC-InfoData_value_ivec" type="tns:PC-InfoData_value_ivecType"/>
+			<xs:element ref="tns:PC-InfoData_value_fval"/>
+			<xs:element name="PC-InfoData_value_fvec" type="tns:PC-InfoData_value_fvecType"/>
+			<xs:element ref="tns:PC-InfoData_value_sval"/>
+			<xs:element name="PC-InfoData_value_slist" type="tns:PC-InfoData_value_slistType"/>
+			<xs:element name="PC-InfoData_value_date" type="tns:PC-InfoData_value_dateType"/>
+			<xs:element ref="tns:PC-InfoData_value_binary"/>
+			<xs:element ref="tns:PC-InfoData_value_bitlist"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="PC-InfoData_value_binary" type="xs:string"/>
+	<xs:element name="PC-InfoData_value_bitlist" type="xs:string"/>
+	<xs:complexType name="PC-InfoData_value_bvalType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="PC-InfoData_value_bvecType">
+		<xs:sequence>
+			<xs:element name="PC-InfoData_value_bvec_E" type="tns:PC-InfoData_value_bvec_EType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-InfoData_value_bvec_EType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="PC-InfoData_value_dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-InfoData_value_fval" type="xs:string"/>
+	<xs:complexType name="PC-InfoData_value_fvecType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-InfoData_value_fvec_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-InfoData_value_fvec_E" type="xs:string"/>
+	<xs:element name="PC-InfoData_value_ival" type="xs:string"/>
+	<xs:complexType name="PC-InfoData_value_ivecType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-InfoData_value_ivec_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-InfoData_value_ivec_E" type="xs:string"/>
+	<xs:complexType name="PC-InfoData_value_slistType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-InfoData_value_slist_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-InfoData_value_slist_E" type="xs:string"/>
+	<xs:element name="PC-InfoData_value_sval" type="xs:string"/>
+	<xs:complexType name="PC-IntegerMinMaxType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-IntegerMinMax_min"/>
+			<xs:element ref="tns:PC-IntegerMinMax_max"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-IntegerMinMax_max" type="xs:string"/>
+	<xs:element name="PC-IntegerMinMax_min" type="xs:string"/>
+	<xs:complexType name="PC-MMDBSourceType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-MMDBSource_mmdb-id"/>
+			<xs:element ref="tns:PC-MMDBSource_molecule-id"/>
+			<xs:element name="PC-MMDBSource_molecule-name" type="tns:PC-MMDBSource_molecule-nameType"/>
+			<xs:element ref="tns:PC-MMDBSource_residue-id" minOccurs="0"/>
+			<xs:element ref="tns:PC-MMDBSource_residue-name" minOccurs="0"/>
+			<xs:element ref="tns:PC-MMDBSource_atom-id" minOccurs="0"/>
+			<xs:element ref="tns:PC-MMDBSource_atom-name" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-MMDBSource_atom-id" type="xs:string"/>
+	<xs:element name="PC-MMDBSource_atom-name" type="xs:string"/>
+	<xs:element name="PC-MMDBSource_mmdb-id" type="xs:string"/>
+	<xs:element name="PC-MMDBSource_molecule-id" type="xs:string"/>
+	<xs:complexType name="PC-MMDBSource_molecule-nameType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-MMDBSource_molecule-name_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-MMDBSource_molecule-name_E" type="xs:string"/>
+	<xs:element name="PC-MMDBSource_residue-id" type="xs:string"/>
+	<xs:element name="PC-MMDBSource_residue-name" type="xs:string"/>
+	<xs:complexType name="PC-RealMinMaxType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-RealMinMax_min"/>
+			<xs:element ref="tns:PC-RealMinMax_max"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-RealMinMax_max" type="xs:string"/>
+	<xs:element name="PC-RealMinMax_min" type="xs:string"/>
+	<xs:complexType name="PC-ResultTypeType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-ResultType_tid"/>
+			<xs:element ref="tns:PC-ResultType_name"/>
+			<xs:element name="PC-ResultType_description" type="tns:PC-ResultType_descriptionType" minOccurs="0"/>
+			<xs:element name="PC-ResultType_type" type="tns:PC-ResultType_typeType"/>
+			<xs:element name="PC-ResultType_constraints" type="tns:PC-ResultType_constraintsType" minOccurs="0"/>
+			<xs:element name="PC-ResultType_unit" type="tns:PC-ResultType_unitType" minOccurs="0"/>
+			<xs:element ref="tns:PC-ResultType_sunit" minOccurs="0"/>
+			<xs:element name="PC-ResultType_transform" type="tns:PC-ResultType_transformType" minOccurs="0"/>
+			<xs:element ref="tns:PC-ResultType_stransform" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-ResultType_constraintsType">
+		<xs:choice>
+			<xs:element name="PC-ResultType_constraints_fset" type="tns:PC-ResultType_constraints_fsetType"/>
+			<xs:element ref="tns:PC-ResultType_constraints_fmin"/>
+			<xs:element ref="tns:PC-ResultType_constraints_fmax"/>
+			<xs:element name="PC-ResultType_constraints_frange" type="tns:PC-ResultType_constraints_frangeType"/>
+			<xs:element name="PC-ResultType_constraints_iset" type="tns:PC-ResultType_constraints_isetType"/>
+			<xs:element ref="tns:PC-ResultType_constraints_imin"/>
+			<xs:element ref="tns:PC-ResultType_constraints_imax"/>
+			<xs:element name="PC-ResultType_constraints_irange" type="tns:PC-ResultType_constraints_irangeType"/>
+			<xs:element name="PC-ResultType_constraints_sset" type="tns:PC-ResultType_constraints_ssetType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="PC-ResultType_constraints_fmax" type="xs:string"/>
+	<xs:element name="PC-ResultType_constraints_fmin" type="xs:string"/>
+	<xs:complexType name="PC-ResultType_constraints_frangeType">
+		<xs:sequence>
+			<xs:element name="PC-RealMinMax" type="tns:PC-RealMinMaxType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-ResultType_constraints_fsetType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-ResultType_constraints_fset_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-ResultType_constraints_fset_E" type="xs:string"/>
+	<xs:element name="PC-ResultType_constraints_imax" type="xs:string"/>
+	<xs:element name="PC-ResultType_constraints_imin" type="xs:string"/>
+	<xs:complexType name="PC-ResultType_constraints_irangeType">
+		<xs:sequence>
+			<xs:element name="PC-IntegerMinMax" type="tns:PC-IntegerMinMaxType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-ResultType_constraints_isetType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-ResultType_constraints_iset_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-ResultType_constraints_iset_E" type="xs:string"/>
+	<xs:complexType name="PC-ResultType_constraints_ssetType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-ResultType_constraints_sset_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-ResultType_constraints_sset_E" type="xs:string"/>
+	<xs:complexType name="PC-ResultType_descriptionType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-ResultType_description_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-ResultType_description_E" type="xs:string"/>
+	<xs:element name="PC-ResultType_name" type="xs:string"/>
+	<xs:element name="PC-ResultType_stransform" type="xs:string"/>
+	<xs:element name="PC-ResultType_sunit" type="xs:string"/>
+	<xs:element name="PC-ResultType_tid" type="xs:string"/>
+	<xs:complexType name="PC-ResultType_transformType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="linear"/>
+							<xs:enumeration value="ln"/>
+							<xs:enumeration value="log"/>
+							<xs:enumeration value="reciprocal"/>
+							<xs:enumeration value="negative"/>
+							<xs:enumeration value="nlog"/>
+							<xs:enumeration value="nln"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="PC-ResultType_typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="float"/>
+							<xs:enumeration value="int"/>
+							<xs:enumeration value="bool"/>
+							<xs:enumeration value="string"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="PC-ResultType_unitType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="ppt"/>
+							<xs:enumeration value="ppm"/>
+							<xs:enumeration value="ppb"/>
+							<xs:enumeration value="mm"/>
+							<xs:enumeration value="um"/>
+							<xs:enumeration value="nm"/>
+							<xs:enumeration value="pm"/>
+							<xs:enumeration value="fm"/>
+							<xs:enumeration value="mgml"/>
+							<xs:enumeration value="ugml"/>
+							<xs:enumeration value="ngml"/>
+							<xs:enumeration value="pgml"/>
+							<xs:enumeration value="fgml"/>
+							<xs:enumeration value="m"/>
+							<xs:enumeration value="percent"/>
+							<xs:enumeration value="ratio"/>
+							<xs:enumeration value="sec"/>
+							<xs:enumeration value="rsec"/>
+							<xs:enumeration value="min"/>
+							<xs:enumeration value="rmin"/>
+							<xs:enumeration value="day"/>
+							<xs:enumeration value="rday"/>
+							<xs:enumeration value="none"/>
+							<xs:enumeration value="unspecified"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="PC-SourceType">
+		<xs:choice>
+			<xs:element name="PC-Source_individual" type="tns:PC-Source_individualType"/>
+			<xs:element name="PC-Source_db" type="tns:PC-Source_dbType"/>
+			<xs:element name="PC-Source_mmdb" type="tns:PC-Source_mmdbType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="PC-Source_dbType">
+		<xs:sequence>
+			<xs:element name="PC-DBTracking" type="tns:PC-DBTrackingType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Source_individualType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Source_mmdbType">
+		<xs:sequence>
+			<xs:element name="PC-MMDBSource" type="tns:PC-MMDBSourceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-StereoCenterType">
+		<xs:choice>
+			<xs:element name="PC-StereoCenter_tetrahedral" type="tns:PC-StereoCenter_tetrahedralType"/>
+			<xs:element name="PC-StereoCenter_planar" type="tns:PC-StereoCenter_planarType"/>
+			<xs:element name="PC-StereoCenter_squareplanar" type="tns:PC-StereoCenter_squareplanarType"/>
+			<xs:element name="PC-StereoCenter_octahedral" type="tns:PC-StereoCenter_octahedralType"/>
+			<xs:element name="PC-StereoCenter_bipyramid" type="tns:PC-StereoCenter_bipyramidType"/>
+			<xs:element name="PC-StereoCenter_tshape" type="tns:PC-StereoCenter_tshapeType"/>
+			<xs:element name="PC-StereoCenter_pentagonal" type="tns:PC-StereoCenter_pentagonalType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="PC-StereoCenter_bipyramidType">
+		<xs:sequence>
+			<xs:element name="PC-StereoTrigonalBiPyramid" type="tns:PC-StereoTrigonalBiPyramidType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-StereoCenter_octahedralType">
+		<xs:sequence>
+			<xs:element name="PC-StereoOctahedral" type="tns:PC-StereoOctahedralType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-StereoCenter_pentagonalType">
+		<xs:sequence>
+			<xs:element name="PC-StereoPentagonalBiPyramid" type="tns:PC-StereoPentagonalBiPyramidType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-StereoCenter_planarType">
+		<xs:sequence>
+			<xs:element name="PC-StereoPlanar" type="tns:PC-StereoPlanarType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-StereoCenter_squareplanarType">
+		<xs:sequence>
+			<xs:element name="PC-StereoSquarePlanar" type="tns:PC-StereoSquarePlanarType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-StereoCenter_tetrahedralType">
+		<xs:sequence>
+			<xs:element name="PC-StereoTetrahedral" type="tns:PC-StereoTetrahedralType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-StereoCenter_tshapeType">
+		<xs:sequence>
+			<xs:element name="PC-StereoTShape" type="tns:PC-StereoTShapeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-StereoGroupType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-StereoGroup_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-StereoGroup_E" type="xs:string"/>
+	<xs:complexType name="PC-StereoOctahedralType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-StereoOctahedral_center"/>
+			<xs:element ref="tns:PC-StereoOctahedral_top"/>
+			<xs:element ref="tns:PC-StereoOctahedral_bottom"/>
+			<xs:element ref="tns:PC-StereoOctahedral_labove"/>
+			<xs:element ref="tns:PC-StereoOctahedral_lbelow"/>
+			<xs:element ref="tns:PC-StereoOctahedral_rabove"/>
+			<xs:element ref="tns:PC-StereoOctahedral_rbelow"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-StereoOctahedral_bottom" type="xs:string"/>
+	<xs:element name="PC-StereoOctahedral_center" type="xs:string"/>
+	<xs:element name="PC-StereoOctahedral_labove" type="xs:string"/>
+	<xs:element name="PC-StereoOctahedral_lbelow" type="xs:string"/>
+	<xs:element name="PC-StereoOctahedral_rabove" type="xs:string"/>
+	<xs:element name="PC-StereoOctahedral_rbelow" type="xs:string"/>
+	<xs:element name="PC-StereoOctahedral_top" type="xs:string"/>
+	<xs:complexType name="PC-StereoPentagonalBiPyramidType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-StereoPentagonalBiPyramid_center"/>
+			<xs:element ref="tns:PC-StereoPentagonalBiPyramid_top"/>
+			<xs:element ref="tns:PC-StereoPentagonalBiPyramid_bottom"/>
+			<xs:element ref="tns:PC-StereoPentagonalBiPyramid_left"/>
+			<xs:element ref="tns:PC-StereoPentagonalBiPyramid_labove"/>
+			<xs:element ref="tns:PC-StereoPentagonalBiPyramid_lbelow"/>
+			<xs:element ref="tns:PC-StereoPentagonalBiPyramid_rabove"/>
+			<xs:element ref="tns:PC-StereoPentagonalBiPyramid_rbelow"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-StereoPentagonalBiPyramid_bottom" type="xs:string"/>
+	<xs:element name="PC-StereoPentagonalBiPyramid_center" type="xs:string"/>
+	<xs:element name="PC-StereoPentagonalBiPyramid_labove" type="xs:string"/>
+	<xs:element name="PC-StereoPentagonalBiPyramid_lbelow" type="xs:string"/>
+	<xs:element name="PC-StereoPentagonalBiPyramid_left" type="xs:string"/>
+	<xs:element name="PC-StereoPentagonalBiPyramid_rabove" type="xs:string"/>
+	<xs:element name="PC-StereoPentagonalBiPyramid_rbelow" type="xs:string"/>
+	<xs:element name="PC-StereoPentagonalBiPyramid_top" type="xs:string"/>
+	<xs:complexType name="PC-StereoPlanarType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-StereoPlanar_left"/>
+			<xs:element ref="tns:PC-StereoPlanar_ltop"/>
+			<xs:element ref="tns:PC-StereoPlanar_lbottom"/>
+			<xs:element ref="tns:PC-StereoPlanar_right"/>
+			<xs:element ref="tns:PC-StereoPlanar_rtop"/>
+			<xs:element ref="tns:PC-StereoPlanar_rbottom"/>
+			<xs:element name="PC-StereoPlanar_parity" type="tns:PC-StereoPlanar_parityType" minOccurs="0"/>
+			<xs:element name="PC-StereoPlanar_type" type="tns:PC-StereoPlanar_typeType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-StereoPlanar_lbottom" type="xs:string"/>
+	<xs:element name="PC-StereoPlanar_left" type="xs:string"/>
+	<xs:element name="PC-StereoPlanar_ltop" type="xs:string"/>
+	<xs:complexType name="PC-StereoPlanar_parityType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="same"/>
+							<xs:enumeration value="opposite"/>
+							<xs:enumeration value="any"/>
+							<xs:enumeration value="unknown"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="PC-StereoPlanar_rbottom" type="xs:string"/>
+	<xs:element name="PC-StereoPlanar_right" type="xs:string"/>
+	<xs:element name="PC-StereoPlanar_rtop" type="xs:string"/>
+	<xs:complexType name="PC-StereoPlanar_typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="planar"/>
+							<xs:enumeration value="cumulenic"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="PC-StereoSquarePlanarType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-StereoSquarePlanar_center"/>
+			<xs:element ref="tns:PC-StereoSquarePlanar_lbelow"/>
+			<xs:element ref="tns:PC-StereoSquarePlanar_rbelow"/>
+			<xs:element ref="tns:PC-StereoSquarePlanar_labove"/>
+			<xs:element ref="tns:PC-StereoSquarePlanar_rabove"/>
+			<xs:element name="PC-StereoSquarePlanar_parity" type="tns:PC-StereoSquarePlanar_parityType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-StereoSquarePlanar_center" type="xs:string"/>
+	<xs:element name="PC-StereoSquarePlanar_labove" type="xs:string"/>
+	<xs:element name="PC-StereoSquarePlanar_lbelow" type="xs:string"/>
+	<xs:complexType name="PC-StereoSquarePlanar_parityType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="u-shape"/>
+							<xs:enumeration value="z-shape"/>
+							<xs:enumeration value="x-shape"/>
+							<xs:enumeration value="any"/>
+							<xs:enumeration value="unknown"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="PC-StereoSquarePlanar_rabove" type="xs:string"/>
+	<xs:element name="PC-StereoSquarePlanar_rbelow" type="xs:string"/>
+	<xs:complexType name="PC-StereoTShapeType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-StereoTShape_center"/>
+			<xs:element ref="tns:PC-StereoTShape_top"/>
+			<xs:element ref="tns:PC-StereoTShape_bottom"/>
+			<xs:element ref="tns:PC-StereoTShape_above"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-StereoTShape_above" type="xs:string"/>
+	<xs:element name="PC-StereoTShape_bottom" type="xs:string"/>
+	<xs:element name="PC-StereoTShape_center" type="xs:string"/>
+	<xs:element name="PC-StereoTShape_top" type="xs:string"/>
+	<xs:complexType name="PC-StereoTetrahedralType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-StereoTetrahedral_center"/>
+			<xs:element ref="tns:PC-StereoTetrahedral_above"/>
+			<xs:element ref="tns:PC-StereoTetrahedral_top"/>
+			<xs:element ref="tns:PC-StereoTetrahedral_bottom"/>
+			<xs:element ref="tns:PC-StereoTetrahedral_below"/>
+			<xs:element name="PC-StereoTetrahedral_parity" type="tns:PC-StereoTetrahedral_parityType" minOccurs="0"/>
+			<xs:element name="PC-StereoTetrahedral_type" type="tns:PC-StereoTetrahedral_typeType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-StereoTetrahedral_above" type="xs:string"/>
+	<xs:element name="PC-StereoTetrahedral_below" type="xs:string"/>
+	<xs:element name="PC-StereoTetrahedral_bottom" type="xs:string"/>
+	<xs:element name="PC-StereoTetrahedral_center" type="xs:string"/>
+	<xs:complexType name="PC-StereoTetrahedral_parityType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="clockwise"/>
+							<xs:enumeration value="counterclockwise"/>
+							<xs:enumeration value="any"/>
+							<xs:enumeration value="unknown"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="PC-StereoTetrahedral_top" type="xs:string"/>
+	<xs:complexType name="PC-StereoTetrahedral_typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="tetrahedral"/>
+							<xs:enumeration value="cumulenic"/>
+							<xs:enumeration value="biaryl"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="PC-StereoTrigonalBiPyramidType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-StereoTrigonalBiPyramid_center"/>
+			<xs:element ref="tns:PC-StereoTrigonalBiPyramid_above"/>
+			<xs:element ref="tns:PC-StereoTrigonalBiPyramid_below"/>
+			<xs:element ref="tns:PC-StereoTrigonalBiPyramid_top"/>
+			<xs:element ref="tns:PC-StereoTrigonalBiPyramid_bottom"/>
+			<xs:element ref="tns:PC-StereoTrigonalBiPyramid_right"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-StereoTrigonalBiPyramid_above" type="xs:string"/>
+	<xs:element name="PC-StereoTrigonalBiPyramid_below" type="xs:string"/>
+	<xs:element name="PC-StereoTrigonalBiPyramid_bottom" type="xs:string"/>
+	<xs:element name="PC-StereoTrigonalBiPyramid_center" type="xs:string"/>
+	<xs:element name="PC-StereoTrigonalBiPyramid_right" type="xs:string"/>
+	<xs:element name="PC-StereoTrigonalBiPyramid_top" type="xs:string"/>
+	<xs:complexType name="PC-SubstanceType">
+		<xs:sequence>
+			<xs:element name="PC-Substance_sid" type="tns:PC-Substance_sidType"/>
+			<xs:element name="PC-Substance_source" type="tns:PC-Substance_sourceType"/>
+			<xs:element name="PC-Substance_pub" type="tns:PC-Substance_pubType" minOccurs="0"/>
+			<xs:element name="PC-Substance_synonyms" type="tns:PC-Substance_synonymsType" minOccurs="0"/>
+			<xs:element name="PC-Substance_comment" type="tns:PC-Substance_commentType" minOccurs="0"/>
+			<xs:element name="PC-Substance_xref" type="tns:PC-Substance_xrefType" minOccurs="0"/>
+			<xs:element name="PC-Substance_compound" type="tns:PC-Substance_compoundType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Substance_commentType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-Substance_comment_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-Substance_comment_E" type="xs:string"/>
+	<xs:complexType name="PC-Substance_compoundType">
+		<xs:sequence>
+			<xs:element name="PC-Compounds" type="tns:PC-CompoundsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Substance_pubType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Substance_sidType">
+		<xs:sequence>
+			<xs:element name="PC-ID" type="tns:PC-IDType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Substance_sourceType">
+		<xs:sequence>
+			<xs:element name="PC-Source" type="tns:PC-SourceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-Substance_synonymsType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-Substance_synonyms_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-Substance_synonyms_E" type="xs:string"/>
+	<xs:complexType name="PC-Substance_xrefType">
+		<xs:sequence>
+			<xs:element name="PC-XRefData" type="tns:PC-XRefDataType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-Substances">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="PC-Substance" type="tns:PC-SubstanceType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="PC-UrnType">
+		<xs:sequence>
+			<xs:element ref="tns:PC-Urn_label"/>
+			<xs:element ref="tns:PC-Urn_name" minOccurs="0"/>
+			<xs:element name="PC-Urn_datatype" type="tns:PC-Urn_datatypeType" minOccurs="0"/>
+			<xs:element ref="tns:PC-Urn_parameters" minOccurs="0"/>
+			<xs:element ref="tns:PC-Urn_implementation" minOccurs="0"/>
+			<xs:element ref="tns:PC-Urn_version" minOccurs="0"/>
+			<xs:element ref="tns:PC-Urn_software" minOccurs="0"/>
+			<xs:element ref="tns:PC-Urn_source" minOccurs="0"/>
+			<xs:element ref="tns:PC-Urn_release" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PC-UrnDataTypeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="string"/>
+							<xs:enumeration value="stringlist"/>
+							<xs:enumeration value="int"/>
+							<xs:enumeration value="intvec"/>
+							<xs:enumeration value="uint"/>
+							<xs:enumeration value="uintvec"/>
+							<xs:enumeration value="double"/>
+							<xs:enumeration value="doublevec"/>
+							<xs:enumeration value="bool"/>
+							<xs:enumeration value="boolvec"/>
+							<xs:enumeration value="uint64"/>
+							<xs:enumeration value="binary"/>
+							<xs:enumeration value="url"/>
+							<xs:enumeration value="unicode"/>
+							<xs:enumeration value="date"/>
+							<xs:enumeration value="fingerprint"/>
+							<xs:enumeration value="unknown"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="PC-Urn_datatypeType">
+		<xs:sequence>
+			<xs:element name="PC-UrnDataType" type="tns:PC-UrnDataTypeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PC-Urn_implementation" type="xs:string"/>
+	<xs:element name="PC-Urn_label" type="xs:string"/>
+	<xs:element name="PC-Urn_name" type="xs:string"/>
+	<xs:element name="PC-Urn_parameters" type="xs:string"/>
+	<xs:element name="PC-Urn_release" type="xs:string"/>
+	<xs:element name="PC-Urn_software" type="xs:string"/>
+	<xs:element name="PC-Urn_source" type="xs:string"/>
+	<xs:element name="PC-Urn_version" type="xs:string"/>
+	<xs:complexType name="PC-XRefDataType">
+		<xs:choice>
+			<xs:element ref="tns:PC-XRefData_regid"/>
+			<xs:element ref="tns:PC-XRefData_rn"/>
+			<xs:element ref="tns:PC-XRefData_mesh"/>
+			<xs:element ref="tns:PC-XRefData_pmid"/>
+			<xs:element ref="tns:PC-XRefData_gi"/>
+			<xs:element ref="tns:PC-XRefData_mmdb"/>
+			<xs:element ref="tns:PC-XRefData_sid"/>
+			<xs:element ref="tns:PC-XRefData_cid"/>
+			<xs:element ref="tns:PC-XRefData_dburl"/>
+			<xs:element ref="tns:PC-XRefData_sburl"/>
+			<xs:element ref="tns:PC-XRefData_asurl"/>
+			<xs:element ref="tns:PC-XRefData_protein-gi"/>
+			<xs:element ref="tns:PC-XRefData_nucleotide-gi"/>
+			<xs:element ref="tns:PC-XRefData_taxonomy"/>
+			<xs:element ref="tns:PC-XRefData_aid"/>
+			<xs:element ref="tns:PC-XRefData_mim"/>
+			<xs:element ref="tns:PC-XRefData_gene"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="PC-XRefData_aid" type="xs:string"/>
+	<xs:element name="PC-XRefData_asurl" type="xs:string"/>
+	<xs:element name="PC-XRefData_cid" type="xs:string"/>
+	<xs:element name="PC-XRefData_dburl" type="xs:string"/>
+	<xs:element name="PC-XRefData_gene" type="xs:string"/>
+	<xs:element name="PC-XRefData_gi" type="xs:string"/>
+	<xs:element name="PC-XRefData_mesh" type="xs:string"/>
+	<xs:element name="PC-XRefData_mim" type="xs:string"/>
+	<xs:element name="PC-XRefData_mmdb" type="xs:string"/>
+	<xs:element name="PC-XRefData_nucleotide-gi" type="xs:string"/>
+	<xs:element name="PC-XRefData_pmid" type="xs:string"/>
+	<xs:element name="PC-XRefData_protein-gi" type="xs:string"/>
+	<xs:element name="PC-XRefData_regid" type="xs:string"/>
+	<xs:element name="PC-XRefData_rn" type="xs:string"/>
+	<xs:element name="PC-XRefData_sburl" type="xs:string"/>
+	<xs:element name="PC-XRefData_sid" type="xs:string"/>
+	<xs:element name="PC-XRefData_taxonomy" type="xs:string"/>
+	<xs:element name="PCSubstance-id" type="xs:string"/>
+	<xs:complexType name="PDB-blockType">
+		<xs:sequence>
+			<xs:element name="PDB-block_deposition" type="tns:PDB-block_depositionType"/>
+			<xs:element ref="tns:PDB-block_class"/>
+			<xs:element name="PDB-block_compound" type="tns:PDB-block_compoundType"/>
+			<xs:element name="PDB-block_source" type="tns:PDB-block_sourceType"/>
+			<xs:element ref="tns:PDB-block_exp-method" minOccurs="0"/>
+			<xs:element name="PDB-block_replace" type="tns:PDB-block_replaceType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PDB-block_class" type="xs:string"/>
+	<xs:complexType name="PDB-block_compoundType">
+		<xs:sequence>
+			<xs:element ref="tns:PDB-block_compound_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PDB-block_compound_E" type="xs:string"/>
+	<xs:complexType name="PDB-block_depositionType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PDB-block_exp-method" type="xs:string"/>
+	<xs:complexType name="PDB-block_replaceType">
+		<xs:sequence>
+			<xs:element name="PDB-replace" type="tns:PDB-replaceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PDB-block_sourceType">
+		<xs:sequence>
+			<xs:element ref="tns:PDB-block_source_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PDB-block_source_E" type="xs:string"/>
+	<xs:element name="PDB-mol-id" type="xs:string"/>
+	<xs:complexType name="PDB-replaceType">
+		<xs:sequence>
+			<xs:element name="PDB-replace_date" type="tns:PDB-replace_dateType"/>
+			<xs:element name="PDB-replace_ids" type="tns:PDB-replace_idsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PDB-replace_dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PDB-replace_idsType">
+		<xs:sequence>
+			<xs:element ref="tns:PDB-replace_ids_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PDB-replace_ids_E" type="xs:string"/>
+	<xs:complexType name="PDB-seq-idType">
+		<xs:sequence>
+			<xs:element name="PDB-seq-id_mol" type="tns:PDB-seq-id_molType"/>
+			<xs:element ref="tns:PDB-seq-id_chain" minOccurs="0"/>
+			<xs:element name="PDB-seq-id_rel" type="tns:PDB-seq-id_relType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PDB-seq-id_chain" type="xs:string"/>
+	<xs:complexType name="PDB-seq-id_molType">
+		<xs:sequence>
+			<xs:element ref="tns:PDB-mol-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PDB-seq-id_relType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PII" type="xs:string"/>
+	<xs:complexType name="PIR-blockType">
+		<xs:sequence>
+			<xs:element name="PIR-block_had-punct" type="tns:PIR-block_had-punctType" minOccurs="0"/>
+			<xs:element ref="tns:PIR-block_host" minOccurs="0"/>
+			<xs:element ref="tns:PIR-block_source" minOccurs="0"/>
+			<xs:element ref="tns:PIR-block_summary" minOccurs="0"/>
+			<xs:element ref="tns:PIR-block_genetic" minOccurs="0"/>
+			<xs:element ref="tns:PIR-block_includes" minOccurs="0"/>
+			<xs:element ref="tns:PIR-block_placement" minOccurs="0"/>
+			<xs:element ref="tns:PIR-block_superfamily" minOccurs="0"/>
+			<xs:element name="PIR-block_keywords" type="tns:PIR-block_keywordsType" minOccurs="0"/>
+			<xs:element ref="tns:PIR-block_cross-reference" minOccurs="0"/>
+			<xs:element ref="tns:PIR-block_date" minOccurs="0"/>
+			<xs:element ref="tns:PIR-block_seq-raw" minOccurs="0"/>
+			<xs:element name="PIR-block_seqref" type="tns:PIR-block_seqrefType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PIR-block_cross-reference" type="xs:string"/>
+	<xs:element name="PIR-block_date" type="xs:string"/>
+	<xs:element name="PIR-block_genetic" type="xs:string"/>
+	<xs:complexType name="PIR-block_had-punctType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="PIR-block_host" type="xs:string"/>
+	<xs:element name="PIR-block_includes" type="xs:string"/>
+	<xs:complexType name="PIR-block_keywordsType">
+		<xs:sequence>
+			<xs:element ref="tns:PIR-block_keywords_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PIR-block_keywords_E" type="xs:string"/>
+	<xs:element name="PIR-block_placement" type="xs:string"/>
+	<xs:element name="PIR-block_seq-raw" type="xs:string"/>
+	<xs:complexType name="PIR-block_seqrefType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PIR-block_source" type="xs:string"/>
+	<xs:element name="PIR-block_summary" type="xs:string"/>
+	<xs:element name="PIR-block_superfamily" type="xs:string"/>
+	<xs:complexType name="PRF-ExtraSrcType">
+		<xs:sequence>
+			<xs:element ref="tns:PRF-ExtraSrc_host" minOccurs="0"/>
+			<xs:element ref="tns:PRF-ExtraSrc_part" minOccurs="0"/>
+			<xs:element ref="tns:PRF-ExtraSrc_state" minOccurs="0"/>
+			<xs:element ref="tns:PRF-ExtraSrc_strain" minOccurs="0"/>
+			<xs:element ref="tns:PRF-ExtraSrc_taxon" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PRF-ExtraSrc_host" type="xs:string"/>
+	<xs:element name="PRF-ExtraSrc_part" type="xs:string"/>
+	<xs:element name="PRF-ExtraSrc_state" type="xs:string"/>
+	<xs:element name="PRF-ExtraSrc_strain" type="xs:string"/>
+	<xs:element name="PRF-ExtraSrc_taxon" type="xs:string"/>
+	<xs:complexType name="PRF-blockType">
+		<xs:sequence>
+			<xs:element name="PRF-block_extra-src" type="tns:PRF-block_extra-srcType" minOccurs="0"/>
+			<xs:element name="PRF-block_keywords" type="tns:PRF-block_keywordsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PRF-block_extra-srcType">
+		<xs:sequence>
+			<xs:element name="PRF-ExtraSrc" type="tns:PRF-ExtraSrcType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PRF-block_keywordsType">
+		<xs:sequence>
+			<xs:element ref="tns:PRF-block_keywords_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PRF-block_keywords_E" type="xs:string"/>
+	<xs:complexType name="Packed-segType">
+		<xs:sequence>
+			<xs:element ref="tns:Packed-seg_dim" minOccurs="0"/>
+			<xs:element ref="tns:Packed-seg_numseg"/>
+			<xs:element name="Packed-seg_ids" type="tns:Packed-seg_idsType"/>
+			<xs:element name="Packed-seg_starts" type="tns:Packed-seg_startsType"/>
+			<xs:element ref="tns:Packed-seg_present"/>
+			<xs:element name="Packed-seg_lens" type="tns:Packed-seg_lensType"/>
+			<xs:element name="Packed-seg_strands" type="tns:Packed-seg_strandsType" minOccurs="0"/>
+			<xs:element name="Packed-seg_scores" type="tns:Packed-seg_scoresType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Packed-seg_dim" type="xs:string"/>
+	<xs:complexType name="Packed-seg_idsType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Packed-seg_lensType">
+		<xs:sequence>
+			<xs:element ref="tns:Packed-seg_lens_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Packed-seg_lens_E" type="xs:string"/>
+	<xs:element name="Packed-seg_numseg" type="xs:string"/>
+	<xs:element name="Packed-seg_present" type="xs:string"/>
+	<xs:complexType name="Packed-seg_scoresType">
+		<xs:sequence>
+			<xs:element name="Score" type="tns:ScoreType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Packed-seg_startsType">
+		<xs:sequence>
+			<xs:element ref="tns:Packed-seg_starts_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Packed-seg_starts_E" type="xs:string"/>
+	<xs:complexType name="Packed-seg_strandsType">
+		<xs:sequence>
+			<xs:element name="Na-strand" type="tns:Na-strandType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Packed-seqintType">
+		<xs:sequence>
+			<xs:element name="Seq-interval" type="tns:Seq-intervalType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Packed-seqpntType">
+		<xs:sequence>
+			<xs:element name="Packed-seqpnt_strand" type="tns:Packed-seqpnt_strandType" minOccurs="0"/>
+			<xs:element name="Packed-seqpnt_id" type="tns:Packed-seqpnt_idType"/>
+			<xs:element name="Packed-seqpnt_fuzz" type="tns:Packed-seqpnt_fuzzType" minOccurs="0"/>
+			<xs:element name="Packed-seqpnt_points" type="tns:Packed-seqpnt_pointsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Packed-seqpnt_fuzzType">
+		<xs:sequence>
+			<xs:element name="Int-fuzz" type="tns:Int-fuzzType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Packed-seqpnt_idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Packed-seqpnt_pointsType">
+		<xs:sequence>
+			<xs:element ref="tns:Packed-seqpnt_points_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Packed-seqpnt_points_E" type="xs:string"/>
+	<xs:complexType name="Packed-seqpnt_strandType">
+		<xs:sequence>
+			<xs:element name="Na-strand" type="tns:Na-strandType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ParametersType">
+		<xs:sequence>
+			<xs:element ref="tns:Parameters_matrix" minOccurs="0"/>
+			<xs:element ref="tns:Parameters_expect"/>
+			<xs:element ref="tns:Parameters_include" minOccurs="0"/>
+			<xs:element ref="tns:Parameters_sc-match" minOccurs="0"/>
+			<xs:element ref="tns:Parameters_sc-mismatch" minOccurs="0"/>
+			<xs:element ref="tns:Parameters_gap-open"/>
+			<xs:element ref="tns:Parameters_gap-extend"/>
+			<xs:element ref="tns:Parameters_filter" minOccurs="0"/>
+			<xs:element ref="tns:Parameters_pattern" minOccurs="0"/>
+			<xs:element ref="tns:Parameters_entrez-query" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Parameters_entrez-query" type="xs:string"/>
+	<xs:element name="Parameters_expect" type="xs:string"/>
+	<xs:element name="Parameters_filter" type="xs:string"/>
+	<xs:element name="Parameters_gap-extend" type="xs:string"/>
+	<xs:element name="Parameters_gap-open" type="xs:string"/>
+	<xs:element name="Parameters_include" type="xs:string"/>
+	<xs:element name="Parameters_matrix" type="xs:string"/>
+	<xs:element name="Parameters_pattern" type="xs:string"/>
+	<xs:element name="Parameters_sc-match" type="xs:string"/>
+	<xs:element name="Parameters_sc-mismatch" type="xs:string"/>
+	<xs:complexType name="PartialOrgNameType">
+		<xs:sequence>
+			<xs:element name="TaxElement" type="tns:TaxElementType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Patent-priorityType">
+		<xs:sequence>
+			<xs:element ref="tns:Patent-priority_country"/>
+			<xs:element ref="tns:Patent-priority_number"/>
+			<xs:element name="Patent-priority_date" type="tns:Patent-priority_dateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Patent-priority_country" type="xs:string"/>
+	<xs:complexType name="Patent-priority_dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Patent-priority_number" type="xs:string"/>
+	<xs:complexType name="Patent-seq-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Patent-seq-id_seqid"/>
+			<xs:element name="Patent-seq-id_cit" type="tns:Patent-seq-id_citType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Patent-seq-id_citType">
+		<xs:sequence>
+			<xs:element name="Id-pat" type="tns:Id-patType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Patent-seq-id_seqid" type="xs:string"/>
+	<xs:complexType name="Person-idType">
+		<xs:choice>
+			<xs:element name="Person-id_dbtag" type="tns:Person-id_dbtagType"/>
+			<xs:element name="Person-id_name" type="tns:Person-id_nameType"/>
+			<xs:element ref="tns:Person-id_ml"/>
+			<xs:element ref="tns:Person-id_str"/>
+			<xs:element ref="tns:Person-id_consortium"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="Person-id_consortium" type="xs:string"/>
+	<xs:complexType name="Person-id_dbtagType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Person-id_ml" type="xs:string"/>
+	<xs:complexType name="Person-id_nameType">
+		<xs:sequence>
+			<xs:element name="Name-std" type="tns:Name-stdType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Person-id_str" type="xs:string"/>
+	<xs:element name="PmPid" type="xs:string"/>
+	<xs:element name="PmcID" type="xs:string"/>
+	<xs:element name="PmcPid" type="xs:string"/>
+	<xs:complexType name="PrimarySequenceType">
+		<xs:sequence>
+			<xs:element ref="tns:PrimarySequence_dbSnpBuild"/>
+			<xs:element ref="tns:PrimarySequence_gi"/>
+			<xs:element name="PrimarySequence_source" type="tns:PrimarySequence_sourceType" minOccurs="0"/>
+			<xs:element name="PrimarySequence_mapLoc" type="tns:PrimarySequence_mapLocType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PrimarySequence_dbSnpBuild" type="xs:string"/>
+	<xs:element name="PrimarySequence_gi" type="xs:string"/>
+	<xs:complexType name="PrimarySequence_mapLocType">
+		<xs:sequence>
+			<xs:element name="MapLoc" type="tns:MapLocType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PrimarySequence_sourceType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="submitter"/>
+					<xs:enumeration value="blastmb"/>
+					<xs:enumeration value="xm"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="PrintFormType">
+		<xs:choice>
+			<xs:element name="PrintForm_block" type="tns:PrintForm_blockType"/>
+			<xs:element name="PrintForm_boolean" type="tns:PrintForm_booleanType"/>
+			<xs:element name="PrintForm_enum" type="tns:PrintForm_enumType"/>
+			<xs:element name="PrintForm_text" type="tns:PrintForm_textType"/>
+			<xs:element name="PrintForm_use-template" type="tns:PrintForm_use-templateType"/>
+			<xs:element name="PrintForm_user" type="tns:PrintForm_userType"/>
+			<xs:element ref="tns:PrintForm_null"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="PrintFormBlockType">
+		<xs:sequence>
+			<xs:element ref="tns:PrintFormBlock_separator" minOccurs="0"/>
+			<xs:element name="PrintFormBlock_components" type="tns:PrintFormBlock_componentsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PrintFormBlock_componentsType">
+		<xs:sequence>
+			<xs:element name="PrintFormat" type="tns:PrintFormatType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PrintFormBlock_separator" type="xs:string"/>
+	<xs:complexType name="PrintFormBooleanType">
+		<xs:sequence>
+			<xs:element ref="tns:PrintFormBoolean_true" minOccurs="0"/>
+			<xs:element ref="tns:PrintFormBoolean_false" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PrintFormBoolean_false" type="xs:string"/>
+	<xs:element name="PrintFormBoolean_true" type="xs:string"/>
+	<xs:complexType name="PrintFormEnumType">
+		<xs:sequence>
+			<xs:element name="PrintFormEnum_values" type="tns:PrintFormEnum_valuesType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PrintFormEnum_valuesType">
+		<xs:sequence>
+			<xs:element ref="tns:PrintFormEnum_values_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PrintFormEnum_values_E" type="xs:string"/>
+	<xs:complexType name="PrintFormTextType">
+		<xs:sequence>
+			<xs:element ref="tns:PrintFormText_textfunc" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PrintFormText_textfunc" type="xs:string"/>
+	<xs:complexType name="PrintForm_blockType">
+		<xs:sequence>
+			<xs:element name="PrintFormBlock" type="tns:PrintFormBlockType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PrintForm_booleanType">
+		<xs:sequence>
+			<xs:element name="PrintFormBoolean" type="tns:PrintFormBooleanType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PrintForm_enumType">
+		<xs:sequence>
+			<xs:element name="PrintFormEnum" type="tns:PrintFormEnumType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PrintForm_null">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="PrintForm_textType">
+		<xs:sequence>
+			<xs:element name="PrintFormText" type="tns:PrintFormTextType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PrintForm_use-templateType">
+		<xs:sequence>
+			<xs:element ref="tns:TemplateName"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PrintForm_userType">
+		<xs:sequence>
+			<xs:element name="UserFormat" type="tns:UserFormatType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PrintFormatType">
+		<xs:sequence>
+			<xs:element ref="tns:PrintFormat_asn1"/>
+			<xs:element ref="tns:PrintFormat_label" minOccurs="0"/>
+			<xs:element ref="tns:PrintFormat_prefix" minOccurs="0"/>
+			<xs:element ref="tns:PrintFormat_suffix" minOccurs="0"/>
+			<xs:element name="PrintFormat_form" type="tns:PrintFormat_formType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PrintFormat_asn1" type="xs:string"/>
+	<xs:complexType name="PrintFormat_formType">
+		<xs:sequence>
+			<xs:element name="PrintForm" type="tns:PrintFormType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PrintFormat_label" type="xs:string"/>
+	<xs:element name="PrintFormat_prefix" type="xs:string"/>
+	<xs:element name="PrintFormat_suffix" type="xs:string"/>
+	<xs:complexType name="PrintTemplateType">
+		<xs:sequence>
+			<xs:element name="PrintTemplate_name" type="tns:PrintTemplate_nameType"/>
+			<xs:element ref="tns:PrintTemplate_labelfrom" minOccurs="0"/>
+			<xs:element name="PrintTemplate_format" type="tns:PrintTemplate_formatType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PrintTemplateSet">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="PrintTemplate" type="tns:PrintTemplateType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="PrintTemplate_formatType">
+		<xs:sequence>
+			<xs:element name="PrintFormat" type="tns:PrintFormatType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PrintTemplate_labelfrom" type="xs:string"/>
+	<xs:complexType name="PrintTemplate_nameType">
+		<xs:sequence>
+			<xs:element ref="tns:TemplateName"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ProjdescType">
+		<xs:choice>
+			<xs:element name="Projdesc_pub" type="tns:Projdesc_pubType"/>
+			<xs:element name="Projdesc_date" type="tns:Projdesc_dateType"/>
+			<xs:element ref="tns:Projdesc_comment"/>
+			<xs:element ref="tns:Projdesc_title"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="Projdesc_comment" type="xs:string"/>
+	<xs:complexType name="Projdesc_dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Projdesc_pubType">
+		<xs:sequence>
+			<xs:element name="Pubdesc" type="tns:PubdescType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Projdesc_title" type="xs:string"/>
+	<xs:complexType name="ProjectType">
+		<xs:sequence>
+			<xs:element name="Project_descr" type="tns:Project_descrType" minOccurs="0"/>
+			<xs:element name="Project_data" type="tns:Project_dataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-descrType">
+		<xs:sequence>
+			<xs:element name="Project-descr_id" type="tns:Project-descr_idType"/>
+			<xs:element ref="tns:Project-descr_name" minOccurs="0"/>
+			<xs:element name="Project-descr_descr" type="tns:Project-descr_descrType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-descr_descrType">
+		<xs:sequence>
+			<xs:element name="Projdesc" type="tns:ProjdescType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-descr_idType">
+		<xs:sequence>
+			<xs:element ref="tns:Project-id" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Project-descr_name" type="xs:string"/>
+	<xs:element name="Project-id" type="xs:string"/>
+	<xs:complexType name="Project-itemType">
+		<xs:choice>
+			<xs:element name="Project-item_pmuid" type="tns:Project-item_pmuidType"/>
+			<xs:element name="Project-item_protuid" type="tns:Project-item_protuidType"/>
+			<xs:element name="Project-item_nucuid" type="tns:Project-item_nucuidType"/>
+			<xs:element name="Project-item_sequid" type="tns:Project-item_sequidType"/>
+			<xs:element name="Project-item_genomeuid" type="tns:Project-item_genomeuidType"/>
+			<xs:element name="Project-item_structuid" type="tns:Project-item_structuidType"/>
+			<xs:element name="Project-item_pmid" type="tns:Project-item_pmidType"/>
+			<xs:element name="Project-item_protid" type="tns:Project-item_protidType"/>
+			<xs:element name="Project-item_nucid" type="tns:Project-item_nucidType"/>
+			<xs:element name="Project-item_seqid" type="tns:Project-item_seqidType"/>
+			<xs:element name="Project-item_genomeid" type="tns:Project-item_genomeidType"/>
+			<xs:element ref="tns:Project-item_structid"/>
+			<xs:element name="Project-item_pment" type="tns:Project-item_pmentType"/>
+			<xs:element name="Project-item_protent" type="tns:Project-item_protentType"/>
+			<xs:element name="Project-item_nucent" type="tns:Project-item_nucentType"/>
+			<xs:element name="Project-item_seqent" type="tns:Project-item_seqentType"/>
+			<xs:element name="Project-item_genomeent" type="tns:Project-item_genomeentType"/>
+			<xs:element ref="tns:Project-item_structent"/>
+			<xs:element name="Project-item_seqannot" type="tns:Project-item_seqannotType"/>
+			<xs:element name="Project-item_loc" type="tns:Project-item_locType"/>
+			<xs:element name="Project-item_proj" type="tns:Project-item_projType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Project-item_genomeentType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-item_genomeidType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-item_genomeuidType">
+		<xs:sequence>
+			<xs:element ref="tns:Project-item_genomeuid_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Project-item_genomeuid_E" type="xs:string"/>
+	<xs:complexType name="Project-item_locType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-item_nucentType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-item_nucidType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-item_nucuidType">
+		<xs:sequence>
+			<xs:element ref="tns:Project-item_nucuid_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Project-item_nucuid_E" type="xs:string"/>
+	<xs:complexType name="Project-item_pmentType">
+		<xs:sequence>
+			<xs:element name="Pubmed-entry" type="tns:Pubmed-entryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-item_pmidType">
+		<xs:sequence>
+			<xs:element ref="tns:PubMedId" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-item_pmuidType">
+		<xs:sequence>
+			<xs:element ref="tns:Project-item_pmuid_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Project-item_pmuid_E" type="xs:string"/>
+	<xs:complexType name="Project-item_projType">
+		<xs:sequence>
+			<xs:element name="Project" type="tns:ProjectType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-item_protentType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-item_protidType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-item_protuidType">
+		<xs:sequence>
+			<xs:element ref="tns:Project-item_protuid_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Project-item_protuid_E" type="xs:string"/>
+	<xs:complexType name="Project-item_seqannotType">
+		<xs:sequence>
+			<xs:element name="Seq-annot" type="tns:Seq-annotType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-item_seqentType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-item_seqidType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project-item_sequidType">
+		<xs:sequence>
+			<xs:element ref="tns:Project-item_sequid_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Project-item_sequid_E" type="xs:string"/>
+	<xs:element name="Project-item_structent">
+		<xs:complexType/>
+	</xs:element>
+	<xs:element name="Project-item_structid">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="Project-item_structuidType">
+		<xs:sequence>
+			<xs:element ref="tns:Project-item_structuid_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Project-item_structuid_E" type="xs:string"/>
+	<xs:complexType name="Project_dataType">
+		<xs:sequence>
+			<xs:element name="Project-item" type="tns:Project-itemType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Project_descrType">
+		<xs:sequence>
+			<xs:element name="Project-descr" type="tns:Project-descrType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Prot-refType">
+		<xs:sequence>
+			<xs:element name="Prot-ref_name" type="tns:Prot-ref_nameType" minOccurs="0"/>
+			<xs:element ref="tns:Prot-ref_desc" minOccurs="0"/>
+			<xs:element name="Prot-ref_ec" type="tns:Prot-ref_ecType" minOccurs="0"/>
+			<xs:element name="Prot-ref_activity" type="tns:Prot-ref_activityType" minOccurs="0"/>
+			<xs:element name="Prot-ref_db" type="tns:Prot-ref_dbType" minOccurs="0"/>
+			<xs:element name="Prot-ref_processed" type="tns:Prot-ref_processedType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Prot-ref_activityType">
+		<xs:sequence>
+			<xs:element ref="tns:Prot-ref_activity_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Prot-ref_activity_E" type="xs:string"/>
+	<xs:complexType name="Prot-ref_dbType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Prot-ref_desc" type="xs:string"/>
+	<xs:complexType name="Prot-ref_ecType">
+		<xs:sequence>
+			<xs:element ref="tns:Prot-ref_ec_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Prot-ref_ec_E" type="xs:string"/>
+	<xs:complexType name="Prot-ref_nameType">
+		<xs:sequence>
+			<xs:element ref="tns:Prot-ref_name_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Prot-ref_name_E" type="xs:string"/>
+	<xs:complexType name="Prot-ref_processedType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="not-set"/>
+					<xs:enumeration value="preprotein"/>
+					<xs:enumeration value="mature"/>
+					<xs:enumeration value="signal-peptide"/>
+					<xs:enumeration value="transit-peptide"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="PssmType">
+		<xs:sequence>
+			<xs:element name="Pssm_isProtein" type="tns:Pssm_isProteinType" minOccurs="0"/>
+			<xs:element name="Pssm_identifier" type="tns:Pssm_identifierType" minOccurs="0"/>
+			<xs:element ref="tns:Pssm_numRows"/>
+			<xs:element ref="tns:Pssm_numColumns"/>
+			<xs:element name="Pssm_rowLabels" type="tns:Pssm_rowLabelsType" minOccurs="0"/>
+			<xs:element name="Pssm_byRow" type="tns:Pssm_byRowType" minOccurs="0"/>
+			<xs:element name="Pssm_query" type="tns:Pssm_queryType" minOccurs="0"/>
+			<xs:element name="Pssm_intermediateData" type="tns:Pssm_intermediateDataType" minOccurs="0"/>
+			<xs:element name="Pssm_finalData" type="tns:Pssm_finalDataType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PssmFinalDataType">
+		<xs:sequence>
+			<xs:element name="PssmFinalData_scores" type="tns:PssmFinalData_scoresType"/>
+			<xs:element ref="tns:PssmFinalData_lambda"/>
+			<xs:element ref="tns:PssmFinalData_kappa"/>
+			<xs:element ref="tns:PssmFinalData_h"/>
+			<xs:element ref="tns:PssmFinalData_scalingFactor" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PssmFinalData_h" type="xs:string"/>
+	<xs:element name="PssmFinalData_kappa" type="xs:string"/>
+	<xs:element name="PssmFinalData_lambda" type="xs:string"/>
+	<xs:element name="PssmFinalData_scalingFactor" type="xs:string"/>
+	<xs:complexType name="PssmFinalData_scoresType">
+		<xs:sequence>
+			<xs:element ref="tns:PssmFinalData_scores_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PssmFinalData_scores_E" type="xs:string"/>
+	<xs:complexType name="PssmIntermediateDataType">
+		<xs:sequence>
+			<xs:element name="PssmIntermediateData_resFreqsPerPos" type="tns:PssmIntermediateData_resFreqsPerPosType" minOccurs="0"/>
+			<xs:element name="PssmIntermediateData_weightedResFreqsPerPos" type="tns:PssmIntermediateData_weightedResFreqsPerPosType" minOccurs="0"/>
+			<xs:element name="PssmIntermediateData_freqRatios" type="tns:PssmIntermediateData_freqRatiosType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PssmIntermediateData_freqRatiosType">
+		<xs:sequence>
+			<xs:element ref="tns:PssmIntermediateData_freqRatios_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PssmIntermediateData_freqRatios_E" type="xs:string"/>
+	<xs:complexType name="PssmIntermediateData_resFreqsPerPosType">
+		<xs:sequence>
+			<xs:element ref="tns:PssmIntermediateData_resFreqsPerPos_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PssmIntermediateData_resFreqsPerPos_E" type="xs:string"/>
+	<xs:complexType name="PssmIntermediateData_weightedResFreqsPerPosType">
+		<xs:sequence>
+			<xs:element ref="tns:PssmIntermediateData_weightedResFreqsPerPos_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PssmIntermediateData_weightedResFreqsPerPos_E" type="xs:string"/>
+	<xs:complexType name="PssmParametersType">
+		<xs:sequence>
+			<xs:element ref="tns:PssmParameters_pseudocount" minOccurs="0"/>
+			<xs:element name="PssmParameters_rpsdbparams" type="tns:PssmParameters_rpsdbparamsType" minOccurs="0"/>
+			<xs:element name="PssmParameters_constraints" type="tns:PssmParameters_constraintsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PssmParameters_constraintsType">
+		<xs:sequence>
+			<xs:element name="CoreDef" type="tns:CoreDefType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PssmParameters_pseudocount" type="xs:string"/>
+	<xs:complexType name="PssmParameters_rpsdbparamsType">
+		<xs:sequence>
+			<xs:element name="FormatRpsDbParameters" type="tns:FormatRpsDbParametersType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PssmWithParametersType">
+		<xs:sequence>
+			<xs:element name="PssmWithParameters_pssm" type="tns:PssmWithParameters_pssmType"/>
+			<xs:element name="PssmWithParameters_params" type="tns:PssmWithParameters_paramsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PssmWithParameters_paramsType">
+		<xs:sequence>
+			<xs:element name="PssmParameters" type="tns:PssmParametersType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PssmWithParameters_pssmType">
+		<xs:sequence>
+			<xs:element name="Pssm" type="tns:PssmType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pssm_byRowType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Pssm_finalDataType">
+		<xs:sequence>
+			<xs:element name="PssmFinalData" type="tns:PssmFinalDataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pssm_identifierType">
+		<xs:sequence>
+			<xs:element name="Object-id" type="tns:Object-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pssm_intermediateDataType">
+		<xs:sequence>
+			<xs:element name="PssmIntermediateData" type="tns:PssmIntermediateDataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pssm_isProteinType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Pssm_numColumns" type="xs:string"/>
+	<xs:element name="Pssm_numRows" type="xs:string"/>
+	<xs:complexType name="Pssm_queryType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pssm_rowLabelsType">
+		<xs:sequence>
+			<xs:element ref="tns:Pssm_rowLabels_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Pssm_rowLabels_E" type="xs:string"/>
+	<xs:complexType name="PubType">
+		<xs:choice>
+			<xs:element name="Pub_gen" type="tns:Pub_genType"/>
+			<xs:element name="Pub_sub" type="tns:Pub_subType"/>
+			<xs:element name="Pub_medline" type="tns:Pub_medlineType"/>
+			<xs:element ref="tns:Pub_muid"/>
+			<xs:element name="Pub_article" type="tns:Pub_articleType"/>
+			<xs:element name="Pub_journal" type="tns:Pub_journalType"/>
+			<xs:element name="Pub_book" type="tns:Pub_bookType"/>
+			<xs:element name="Pub_proc" type="tns:Pub_procType"/>
+			<xs:element name="Pub_patent" type="tns:Pub_patentType"/>
+			<xs:element name="Pub_pat-id" type="tns:Pub_pat-idType"/>
+			<xs:element name="Pub_man" type="tns:Pub_manType"/>
+			<xs:element name="Pub_equiv" type="tns:Pub_equivType"/>
+			<xs:element name="Pub_pmid" type="tns:Pub_pmidType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Pub-equivType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub-setType">
+		<xs:choice>
+			<xs:element name="Pub-set_pub" type="tns:Pub-set_pubType"/>
+			<xs:element name="Pub-set_medline" type="tns:Pub-set_medlineType"/>
+			<xs:element name="Pub-set_article" type="tns:Pub-set_articleType"/>
+			<xs:element name="Pub-set_journal" type="tns:Pub-set_journalType"/>
+			<xs:element name="Pub-set_book" type="tns:Pub-set_bookType"/>
+			<xs:element name="Pub-set_proc" type="tns:Pub-set_procType"/>
+			<xs:element name="Pub-set_patent" type="tns:Pub-set_patentType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Pub-set_articleType">
+		<xs:sequence>
+			<xs:element name="Cit-art" type="tns:Cit-artType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub-set_bookType">
+		<xs:sequence>
+			<xs:element name="Cit-book" type="tns:Cit-bookType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub-set_journalType">
+		<xs:sequence>
+			<xs:element name="Cit-jour" type="tns:Cit-jourType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub-set_medlineType">
+		<xs:sequence>
+			<xs:element name="Medline-entry" type="tns:Medline-entryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub-set_patentType">
+		<xs:sequence>
+			<xs:element name="Cit-pat" type="tns:Cit-patType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub-set_procType">
+		<xs:sequence>
+			<xs:element name="Cit-proc" type="tns:Cit-procType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub-set_pubType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PubMedId" type="xs:string"/>
+	<xs:complexType name="PubStatusType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="received"/>
+							<xs:enumeration value="accepted"/>
+							<xs:enumeration value="epublish"/>
+							<xs:enumeration value="ppublish"/>
+							<xs:enumeration value="revised"/>
+							<xs:enumeration value="pmc"/>
+							<xs:enumeration value="pmcr"/>
+							<xs:enumeration value="pubmed"/>
+							<xs:enumeration value="pubmedr"/>
+							<xs:enumeration value="aheadofprint"/>
+							<xs:enumeration value="premedline"/>
+							<xs:enumeration value="medline"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="PubStatusDateType">
+		<xs:sequence>
+			<xs:element name="PubStatusDate_pubstatus" type="tns:PubStatusDate_pubstatusType"/>
+			<xs:element name="PubStatusDate_date" type="tns:PubStatusDate_dateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PubStatusDateSetType">
+		<xs:sequence>
+			<xs:element name="PubStatusDate" type="tns:PubStatusDateType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PubStatusDate_dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PubStatusDate_pubstatusType">
+		<xs:sequence>
+			<xs:element name="PubStatus" type="tns:PubStatusType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub_articleType">
+		<xs:sequence>
+			<xs:element name="Cit-art" type="tns:Cit-artType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub_bookType">
+		<xs:sequence>
+			<xs:element name="Cit-book" type="tns:Cit-bookType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub_equivType">
+		<xs:sequence>
+			<xs:element name="Pub-equiv" type="tns:Pub-equivType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub_genType">
+		<xs:sequence>
+			<xs:element name="Cit-gen" type="tns:Cit-genType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub_journalType">
+		<xs:sequence>
+			<xs:element name="Cit-jour" type="tns:Cit-jourType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub_manType">
+		<xs:sequence>
+			<xs:element name="Cit-let" type="tns:Cit-letType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub_medlineType">
+		<xs:sequence>
+			<xs:element name="Medline-entry" type="tns:Medline-entryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Pub_muid" type="xs:string"/>
+	<xs:complexType name="Pub_pat-idType">
+		<xs:sequence>
+			<xs:element name="Id-pat" type="tns:Id-patType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub_patentType">
+		<xs:sequence>
+			<xs:element name="Cit-pat" type="tns:Cit-patType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub_pmidType">
+		<xs:sequence>
+			<xs:element ref="tns:PubMedId"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub_procType">
+		<xs:sequence>
+			<xs:element name="Cit-proc" type="tns:Cit-procType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pub_subType">
+		<xs:sequence>
+			<xs:element name="Cit-sub" type="tns:Cit-subType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PubdescType">
+		<xs:sequence>
+			<xs:element name="Pubdesc_pub" type="tns:Pubdesc_pubType"/>
+			<xs:element ref="tns:Pubdesc_name" minOccurs="0"/>
+			<xs:element ref="tns:Pubdesc_fig" minOccurs="0"/>
+			<xs:element name="Pubdesc_num" type="tns:Pubdesc_numType" minOccurs="0"/>
+			<xs:element name="Pubdesc_numexc" type="tns:Pubdesc_numexcType" minOccurs="0"/>
+			<xs:element name="Pubdesc_poly-a" type="tns:Pubdesc_poly-aType" minOccurs="0"/>
+			<xs:element ref="tns:Pubdesc_maploc" minOccurs="0"/>
+			<xs:element ref="tns:Pubdesc_seq-raw" minOccurs="0"/>
+			<xs:element ref="tns:Pubdesc_align-group" minOccurs="0"/>
+			<xs:element ref="tns:Pubdesc_comment" minOccurs="0"/>
+			<xs:element name="Pubdesc_reftype" type="tns:Pubdesc_reftypeType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Pubdesc_align-group" type="xs:string"/>
+	<xs:element name="Pubdesc_comment" type="xs:string"/>
+	<xs:element name="Pubdesc_fig" type="xs:string"/>
+	<xs:element name="Pubdesc_maploc" type="xs:string"/>
+	<xs:element name="Pubdesc_name" type="xs:string"/>
+	<xs:complexType name="Pubdesc_numType">
+		<xs:sequence>
+			<xs:element name="Numbering" type="tns:NumberingType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pubdesc_numexcType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Pubdesc_poly-aType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Pubdesc_pubType">
+		<xs:sequence>
+			<xs:element name="Pub-equiv" type="tns:Pub-equivType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pubdesc_reftypeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="seq"/>
+							<xs:enumeration value="sites"/>
+							<xs:enumeration value="feats"/>
+							<xs:enumeration value="no-target"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="Pubdesc_seq-raw" type="xs:string"/>
+	<xs:complexType name="Pubmed-entryType">
+		<xs:sequence>
+			<xs:element name="Pubmed-entry_pmid" type="tns:Pubmed-entry_pmidType"/>
+			<xs:element name="Pubmed-entry_medent" type="tns:Pubmed-entry_medentType" minOccurs="0"/>
+			<xs:element ref="tns:Pubmed-entry_publisher" minOccurs="0"/>
+			<xs:element name="Pubmed-entry_urls" type="tns:Pubmed-entry_urlsType" minOccurs="0"/>
+			<xs:element ref="tns:Pubmed-entry_pubid" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pubmed-entry_medentType">
+		<xs:sequence>
+			<xs:element name="Medline-entry" type="tns:Medline-entryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pubmed-entry_pmidType">
+		<xs:sequence>
+			<xs:element ref="tns:PubMedId"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Pubmed-entry_pubid" type="xs:string"/>
+	<xs:element name="Pubmed-entry_publisher" type="xs:string"/>
+	<xs:complexType name="Pubmed-entry_urlsType">
+		<xs:sequence>
+			<xs:element name="Pubmed-url" type="tns:Pubmed-urlType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Pubmed-urlType">
+		<xs:sequence>
+			<xs:element ref="tns:Pubmed-url_location" minOccurs="0"/>
+			<xs:element ref="tns:Pubmed-url_url"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Pubmed-url_location" type="xs:string"/>
+	<xs:element name="Pubmed-url_url" type="xs:string"/>
+	<xs:complexType name="RMReplyType">
+		<xs:choice>
+			<xs:element ref="tns:RMReply_error"/>
+			<xs:element name="RMReply_remap" type="tns:RMReply_remapType"/>
+			<xs:element name="RMReply_maps-to-builds" type="tns:RMReply_maps-to-buildsType"/>
+			<xs:element name="RMReply_maps-from-builds" type="tns:RMReply_maps-from-buildsType"/>
+			<xs:element name="RMReply_all-builds" type="tns:RMReply_all-buildsType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="RMReply_all-buildsType">
+		<xs:sequence>
+			<xs:element ref="tns:RMReply_all-builds_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="RMReply_all-builds_E" type="xs:string"/>
+	<xs:element name="RMReply_error" type="xs:string"/>
+	<xs:complexType name="RMReply_maps-from-buildsType">
+		<xs:sequence>
+			<xs:element ref="tns:RMReply_maps-from-builds_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="RMReply_maps-from-builds_E" type="xs:string"/>
+	<xs:complexType name="RMReply_maps-to-buildsType">
+		<xs:sequence>
+			<xs:element ref="tns:RMReply_maps-to-builds_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="RMReply_maps-to-builds_E" type="xs:string"/>
+	<xs:complexType name="RMReply_remapType">
+		<xs:sequence>
+			<xs:element name="Remap-result" type="tns:Remap-resultType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="RMRequestType">
+		<xs:choice>
+			<xs:element name="RMRequest_remap" type="tns:RMRequest_remapType"/>
+			<xs:element ref="tns:RMRequest_maps-to-builds"/>
+			<xs:element ref="tns:RMRequest_maps-from-builds"/>
+			<xs:element ref="tns:RMRequest_all-builds"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="RMRequest_all-builds">
+		<xs:complexType/>
+	</xs:element>
+	<xs:element name="RMRequest_maps-from-builds" type="xs:string"/>
+	<xs:element name="RMRequest_maps-to-builds" type="xs:string"/>
+	<xs:complexType name="RMRequest_remapType">
+		<xs:sequence>
+			<xs:element name="Remap-query" type="tns:Remap-queryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="RNA-refType">
+		<xs:sequence>
+			<xs:element name="RNA-ref_type" type="tns:RNA-ref_typeType"/>
+			<xs:element name="RNA-ref_pseudo" type="tns:RNA-ref_pseudoType" minOccurs="0"/>
+			<xs:element name="RNA-ref_ext" type="tns:RNA-ref_extType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="RNA-ref_extType">
+		<xs:choice>
+			<xs:element ref="tns:RNA-ref_ext_name"/>
+			<xs:element name="RNA-ref_ext_tRNA" type="tns:RNA-ref_ext_tRNAType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="RNA-ref_ext_name" type="xs:string"/>
+	<xs:complexType name="RNA-ref_ext_tRNAType">
+		<xs:sequence>
+			<xs:element name="Trna-ext" type="tns:Trna-extType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="RNA-ref_pseudoType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="RNA-ref_typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="unknown"/>
+					<xs:enumeration value="premsg"/>
+					<xs:enumeration value="mRNA"/>
+					<xs:enumeration value="tRNA"/>
+					<xs:enumeration value="rRNA"/>
+					<xs:enumeration value="snRNA"/>
+					<xs:enumeration value="scRNA"/>
+					<xs:enumeration value="snoRNA"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Real-graphType">
+		<xs:sequence>
+			<xs:element ref="tns:Real-graph_max"/>
+			<xs:element ref="tns:Real-graph_min"/>
+			<xs:element ref="tns:Real-graph_axis"/>
+			<xs:element name="Real-graph_values" type="tns:Real-graph_valuesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Real-graph_axis" type="xs:string"/>
+	<xs:element name="Real-graph_max" type="xs:string"/>
+	<xs:element name="Real-graph_min" type="xs:string"/>
+	<xs:complexType name="Real-graph_valuesType">
+		<xs:sequence>
+			<xs:element ref="tns:Real-graph_values_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Real-graph_values_E" type="xs:string"/>
+	<xs:complexType name="RealValueType">
+		<xs:sequence>
+			<xs:element ref="tns:RealValue_scale-factor"/>
+			<xs:element ref="tns:RealValue_scaled-integer-value"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="RealValue_scale-factor" type="xs:string"/>
+	<xs:element name="RealValue_scaled-integer-value" type="xs:string"/>
+	<xs:complexType name="Ref-extType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Reference-frameType">
+		<xs:sequence>
+			<xs:element name="Reference-frame_biostruc-id" type="tns:Reference-frame_biostruc-idType"/>
+			<xs:element name="Reference-frame_rotation-translation" type="tns:Reference-frame_rotation-translationType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Reference-frame_biostruc-idType">
+		<xs:sequence>
+			<xs:element name="Biostruc-id" type="tns:Biostruc-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Reference-frame_rotation-translationType">
+		<xs:sequence>
+			<xs:element name="Transform" type="tns:TransformType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Region-boundaryType">
+		<xs:choice>
+			<xs:element name="Region-boundary_sphere" type="tns:Region-boundary_sphereType"/>
+			<xs:element name="Region-boundary_cone" type="tns:Region-boundary_coneType"/>
+			<xs:element name="Region-boundary_cylinder" type="tns:Region-boundary_cylinderType"/>
+			<xs:element name="Region-boundary_brick" type="tns:Region-boundary_brickType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Region-boundary_brickType">
+		<xs:sequence>
+			<xs:element name="Brick" type="tns:BrickType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Region-boundary_coneType">
+		<xs:sequence>
+			<xs:element name="Cone" type="tns:ConeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Region-boundary_cylinderType">
+		<xs:sequence>
+			<xs:element name="Cylinder" type="tns:CylinderType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Region-boundary_sphereType">
+		<xs:sequence>
+			<xs:element name="Sphere" type="tns:SphereType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Region-coordinatesType">
+		<xs:sequence>
+			<xs:element name="Region-coordinates_model-coord-set-id" type="tns:Region-coordinates_model-coord-set-idType"/>
+			<xs:element ref="tns:Region-coordinates_number-of-coords" minOccurs="0"/>
+			<xs:element name="Region-coordinates_coordinate-indices" type="tns:Region-coordinates_coordinate-indicesType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Region-coordinates_coordinate-indicesType">
+		<xs:sequence>
+			<xs:element ref="tns:Region-coordinates_coordinate-indices_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Region-coordinates_coordinate-indices_E" type="xs:string"/>
+	<xs:complexType name="Region-coordinates_model-coord-set-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Model-coordinate-set-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Region-coordinates_number-of-coords" type="xs:string"/>
+	<xs:complexType name="Region-pntrsType">
+		<xs:sequence>
+			<xs:element name="Region-pntrs_model-id" type="tns:Region-pntrs_model-idType"/>
+			<xs:element name="Region-pntrs_region" type="tns:Region-pntrs_regionType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Region-pntrs_model-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Model-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Region-pntrs_regionType">
+		<xs:choice>
+			<xs:element name="Region-pntrs_region_site" type="tns:Region-pntrs_region_siteType"/>
+			<xs:element name="Region-pntrs_region_boundary" type="tns:Region-pntrs_region_boundaryType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Region-pntrs_region_boundaryType">
+		<xs:sequence>
+			<xs:element name="Region-boundary" type="tns:Region-boundaryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Region-pntrs_region_siteType">
+		<xs:sequence>
+			<xs:element name="Region-coordinates" type="tns:Region-coordinatesType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Region-similarityType">
+		<xs:sequence>
+			<xs:element ref="tns:Region-similarity_dimension" minOccurs="0"/>
+			<xs:element name="Region-similarity_biostruc-ids" type="tns:Region-similarity_biostruc-idsType"/>
+			<xs:element name="Region-similarity_similarity" type="tns:Region-similarity_similarityType"/>
+			<xs:element name="Region-similarity_transform" type="tns:Region-similarity_transformType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Region-similarity_biostruc-idsType">
+		<xs:sequence>
+			<xs:element name="Biostruc-id" type="tns:Biostruc-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Region-similarity_dimension" type="xs:string"/>
+	<xs:complexType name="Region-similarity_similarityType">
+		<xs:sequence>
+			<xs:element name="Region-pntrs" type="tns:Region-pntrsType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Region-similarity_transformType">
+		<xs:sequence>
+			<xs:element name="Transform" type="tns:TransformType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Reject-idType">
+		<xs:sequence>
+			<xs:element name="Reject-id_description" type="tns:Reject-id_descriptionType" minOccurs="0"/>
+			<xs:element name="Reject-id_ids" type="tns:Reject-id_idsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Reject-id_descriptionType">
+		<xs:sequence>
+			<xs:element name="Update-comment" type="tns:Update-commentType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Reject-id_idsType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Remap-db-id" type="xs:string"/>
+	<xs:element name="Remap-dt" type="xs:string"/>
+	<xs:complexType name="Remap-queryType">
+		<xs:sequence>
+			<xs:element ref="tns:Remap-query_from-build"/>
+			<xs:element ref="tns:Remap-query_to-build"/>
+			<xs:element name="Remap-query_locs" type="tns:Remap-query_locsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Remap-query_from-build" type="xs:string"/>
+	<xs:complexType name="Remap-query_locsType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Remap-query_to-build" type="xs:string"/>
+	<xs:element name="Remap-reply">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Remap-reply_reply" type="tns:Remap-reply_replyType"/>
+				<xs:element name="Remap-reply_dt" type="tns:Remap-reply_dtType"/>
+				<xs:element ref="tns:Remap-reply_server"/>
+				<xs:element ref="tns:Remap-reply_msg" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Remap-reply_dtType">
+		<xs:sequence>
+			<xs:element ref="tns:Remap-dt"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Remap-reply_msg" type="xs:string"/>
+	<xs:complexType name="Remap-reply_replyType">
+		<xs:sequence>
+			<xs:element name="RMReply" type="tns:RMReplyType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Remap-reply_server" type="xs:string"/>
+	<xs:element name="Remap-request">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Remap-request_request" type="tns:Remap-request_requestType"/>
+				<xs:element ref="tns:Remap-request_version"/>
+				<xs:element ref="tns:Remap-request_tool" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Remap-request_requestType">
+		<xs:sequence>
+			<xs:element name="RMRequest" type="tns:RMRequestType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Remap-request_tool" type="xs:string"/>
+	<xs:element name="Remap-request_version" type="xs:string"/>
+	<xs:complexType name="Remap-resultType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Render-propType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="default"/>
+							<xs:enumeration value="wire"/>
+							<xs:enumeration value="space"/>
+							<xs:enumeration value="stick"/>
+							<xs:enumeration value="ballNStick"/>
+							<xs:enumeration value="thickWire"/>
+							<xs:enumeration value="hide"/>
+							<xs:enumeration value="name"/>
+							<xs:enumeration value="number"/>
+							<xs:enumeration value="pdbNumber"/>
+							<xs:enumeration value="objWireFrame"/>
+							<xs:enumeration value="objPolygons"/>
+							<xs:enumeration value="colorsetCPK"/>
+							<xs:enumeration value="colorsetbyChain"/>
+							<xs:enumeration value="colorsetbyTemp"/>
+							<xs:enumeration value="colorsetbyRes"/>
+							<xs:enumeration value="colorsetbyLen"/>
+							<xs:enumeration value="colorsetbySStru"/>
+							<xs:enumeration value="colorsetbyHydro"/>
+							<xs:enumeration value="colorsetbyObject"/>
+							<xs:enumeration value="colorsetbyDomain"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="ResidueType">
+		<xs:sequence>
+			<xs:element name="Residue_id" type="tns:Residue_idType"/>
+			<xs:element ref="tns:Residue_name" minOccurs="0"/>
+			<xs:element name="Residue_residue-graph" type="tns:Residue_residue-graphType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-explicit-pntrsType">
+		<xs:sequence>
+			<xs:element ref="tns:Residue-explicit-pntrs_number-of-ptrs"/>
+			<xs:element name="Residue-explicit-pntrs_molecule-ids" type="tns:Residue-explicit-pntrs_molecule-idsType"/>
+			<xs:element name="Residue-explicit-pntrs_residue-ids" type="tns:Residue-explicit-pntrs_residue-idsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-explicit-pntrs_molecule-idsType">
+		<xs:sequence>
+			<xs:element ref="tns:Molecule-id" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Residue-explicit-pntrs_number-of-ptrs" type="xs:string"/>
+	<xs:complexType name="Residue-explicit-pntrs_residue-idsType">
+		<xs:sequence>
+			<xs:element ref="tns:Residue-id" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-graphType">
+		<xs:sequence>
+			<xs:element name="Residue-graph_id" type="tns:Residue-graph_idType"/>
+			<xs:element name="Residue-graph_descr" type="tns:Residue-graph_descrType" minOccurs="0"/>
+			<xs:element name="Residue-graph_residue-type" type="tns:Residue-graph_residue-typeType" minOccurs="0"/>
+			<xs:element name="Residue-graph_iupac-code" type="tns:Residue-graph_iupac-codeType" minOccurs="0"/>
+			<xs:element name="Residue-graph_atoms" type="tns:Residue-graph_atomsType"/>
+			<xs:element name="Residue-graph_bonds" type="tns:Residue-graph_bondsType"/>
+			<xs:element name="Residue-graph_chiral-centers" type="tns:Residue-graph_chiral-centersType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Residue-graph-id" type="xs:string"/>
+	<xs:complexType name="Residue-graph-pntrType">
+		<xs:choice>
+			<xs:element name="Residue-graph-pntr_local" type="tns:Residue-graph-pntr_localType"/>
+			<xs:element name="Residue-graph-pntr_biostruc" type="tns:Residue-graph-pntr_biostrucType"/>
+			<xs:element name="Residue-graph-pntr_standard" type="tns:Residue-graph-pntr_standardType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Residue-graph-pntr_biostrucType">
+		<xs:sequence>
+			<xs:element name="Biostruc-graph-pntr" type="tns:Biostruc-graph-pntrType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-graph-pntr_localType">
+		<xs:sequence>
+			<xs:element ref="tns:Residue-graph-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-graph-pntr_standardType">
+		<xs:sequence>
+			<xs:element name="Biostruc-residue-graph-set-pntr" type="tns:Biostruc-residue-graph-set-pntrType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-graph_atomsType">
+		<xs:sequence>
+			<xs:element name="Atom" type="tns:AtomType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-graph_bondsType">
+		<xs:sequence>
+			<xs:element name="Intra-residue-bond" type="tns:Intra-residue-bondType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-graph_chiral-centersType">
+		<xs:sequence>
+			<xs:element name="Chiral-center" type="tns:Chiral-centerType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-graph_descrType">
+		<xs:sequence>
+			<xs:element name="Biomol-descr" type="tns:Biomol-descrType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-graph_idType">
+		<xs:sequence>
+			<xs:element ref="tns:Residue-graph-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-graph_iupac-codeType">
+		<xs:sequence>
+			<xs:element ref="tns:Residue-graph_iupac-code_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Residue-graph_iupac-code_E" type="xs:string"/>
+	<xs:complexType name="Residue-graph_residue-typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="deoxyribonucleotide"/>
+							<xs:enumeration value="ribonucleotide"/>
+							<xs:enumeration value="amino-acid"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="Residue-id" type="xs:string"/>
+	<xs:complexType name="Residue-interval-pntrType">
+		<xs:sequence>
+			<xs:element name="Residue-interval-pntr_molecule-id" type="tns:Residue-interval-pntr_molecule-idType"/>
+			<xs:element name="Residue-interval-pntr_from" type="tns:Residue-interval-pntr_fromType"/>
+			<xs:element name="Residue-interval-pntr_to" type="tns:Residue-interval-pntr_toType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-interval-pntr_fromType">
+		<xs:sequence>
+			<xs:element ref="tns:Residue-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-interval-pntr_molecule-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Molecule-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-interval-pntr_toType">
+		<xs:sequence>
+			<xs:element ref="tns:Residue-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-pntrsType">
+		<xs:choice>
+			<xs:element name="Residue-pntrs_explicit" type="tns:Residue-pntrs_explicitType"/>
+			<xs:element name="Residue-pntrs_interval" type="tns:Residue-pntrs_intervalType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Residue-pntrs_explicitType">
+		<xs:sequence>
+			<xs:element name="Residue-explicit-pntrs" type="tns:Residue-explicit-pntrsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue-pntrs_intervalType">
+		<xs:sequence>
+			<xs:element name="Residue-interval-pntr" type="tns:Residue-interval-pntrType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Residue_idType">
+		<xs:sequence>
+			<xs:element ref="tns:Residue-id"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Residue_name" type="xs:string"/>
+	<xs:complexType name="Residue_residue-graphType">
+		<xs:sequence>
+			<xs:element name="Residue-graph-pntr" type="tns:Residue-graph-pntrType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Rot-matrixType">
+		<xs:sequence>
+			<xs:element ref="tns:Rot-matrix_scale-factor"/>
+			<xs:element ref="tns:Rot-matrix_rot-11"/>
+			<xs:element ref="tns:Rot-matrix_rot-12"/>
+			<xs:element ref="tns:Rot-matrix_rot-13"/>
+			<xs:element ref="tns:Rot-matrix_rot-21"/>
+			<xs:element ref="tns:Rot-matrix_rot-22"/>
+			<xs:element ref="tns:Rot-matrix_rot-23"/>
+			<xs:element ref="tns:Rot-matrix_rot-31"/>
+			<xs:element ref="tns:Rot-matrix_rot-32"/>
+			<xs:element ref="tns:Rot-matrix_rot-33"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Rot-matrix_rot-11" type="xs:string"/>
+	<xs:element name="Rot-matrix_rot-12" type="xs:string"/>
+	<xs:element name="Rot-matrix_rot-13" type="xs:string"/>
+	<xs:element name="Rot-matrix_rot-21" type="xs:string"/>
+	<xs:element name="Rot-matrix_rot-22" type="xs:string"/>
+	<xs:element name="Rot-matrix_rot-23" type="xs:string"/>
+	<xs:element name="Rot-matrix_rot-31" type="xs:string"/>
+	<xs:element name="Rot-matrix_rot-32" type="xs:string"/>
+	<xs:element name="Rot-matrix_rot-33" type="xs:string"/>
+	<xs:element name="Rot-matrix_scale-factor" type="xs:string"/>
+	<xs:complexType name="RsType">
+		<xs:sequence>
+			<xs:element ref="tns:Rs_rsId"/>
+			<xs:element name="Rs_snpClass" type="tns:Rs_snpClassType"/>
+			<xs:element name="Rs_snpType" type="tns:Rs_snpTypeType"/>
+			<xs:element name="Rs_molType" type="tns:Rs_molTypeType"/>
+			<xs:element ref="tns:Rs_validProbMin" minOccurs="0"/>
+			<xs:element ref="tns:Rs_validProbMax" minOccurs="0"/>
+			<xs:element name="Rs_genotype" type="tns:Rs_genotypeType" minOccurs="0"/>
+			<xs:element name="Rs_het" type="tns:Rs_hetType" minOccurs="0"/>
+			<xs:element name="Rs_validation" type="tns:Rs_validationType"/>
+			<xs:element name="Rs_create" type="tns:Rs_createType"/>
+			<xs:element name="Rs_update" type="tns:Rs_updateType" minOccurs="0"/>
+			<xs:element name="Rs_sequence" type="tns:Rs_sequenceType"/>
+			<xs:element name="Rs_ss" type="tns:Rs_ssType"/>
+			<xs:element name="Rs_assembly" type="tns:Rs_assemblyType" minOccurs="0"/>
+			<xs:element name="Rs_primarySequence" type="tns:Rs_primarySequenceType" minOccurs="0"/>
+			<xs:element name="Rs_rsStruct" type="tns:Rs_rsStructType" minOccurs="0"/>
+			<xs:element name="Rs_rsLinkout" type="tns:Rs_rsLinkoutType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="RsLinkoutType">
+		<xs:sequence>
+			<xs:element ref="tns:RsLinkout_resourceId"/>
+			<xs:element ref="tns:RsLinkout_linkValue"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="RsLinkout_linkValue" type="xs:string"/>
+	<xs:element name="RsLinkout_resourceId" type="xs:string"/>
+	<xs:complexType name="RsStructType">
+		<xs:sequence>
+			<xs:element ref="tns:RsStruct_protAcc" minOccurs="0"/>
+			<xs:element ref="tns:RsStruct_protGi" minOccurs="0"/>
+			<xs:element ref="tns:RsStruct_protLoc" minOccurs="0"/>
+			<xs:element ref="tns:RsStruct_protResidue" minOccurs="0"/>
+			<xs:element ref="tns:RsStruct_rsResidue" minOccurs="0"/>
+			<xs:element ref="tns:RsStruct_structGi" minOccurs="0"/>
+			<xs:element ref="tns:RsStruct_structLoc" minOccurs="0"/>
+			<xs:element ref="tns:RsStruct_structResidue" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="RsStruct_protAcc" type="xs:string"/>
+	<xs:element name="RsStruct_protGi" type="xs:string"/>
+	<xs:element name="RsStruct_protLoc" type="xs:string"/>
+	<xs:element name="RsStruct_protResidue" type="xs:string"/>
+	<xs:element name="RsStruct_rsResidue" type="xs:string"/>
+	<xs:element name="RsStruct_structGi" type="xs:string"/>
+	<xs:element name="RsStruct_structLoc" type="xs:string"/>
+	<xs:element name="RsStruct_structResidue" type="xs:string"/>
+	<xs:complexType name="Rs_assemblyType">
+		<xs:sequence>
+			<xs:element name="Assembly" type="tns:AssemblyType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Rs_createType">
+		<xs:sequence>
+			<xs:element ref="tns:Rs_create_build" minOccurs="0"/>
+			<xs:element ref="tns:Rs_create_date" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Rs_create_build" type="xs:string"/>
+	<xs:element name="Rs_create_date" type="xs:string"/>
+	<xs:complexType name="Rs_genotypeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Rs_hetType">
+		<xs:sequence>
+			<xs:element name="Rs_het_type" type="tns:Rs_het_typeType"/>
+			<xs:element ref="tns:Rs_het_value"/>
+			<xs:element ref="tns:Rs_het_stdError" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Rs_het_stdError" type="xs:string"/>
+	<xs:complexType name="Rs_het_typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="est"/>
+					<xs:enumeration value="obs"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Rs_het_value" type="xs:string"/>
+	<xs:complexType name="Rs_molTypeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="genomic"/>
+					<xs:enumeration value="cDNA"/>
+					<xs:enumeration value="mito"/>
+					<xs:enumeration value="chloro"/>
+					<xs:enumeration value="unknown"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Rs_primarySequenceType">
+		<xs:sequence>
+			<xs:element name="PrimarySequence" type="tns:PrimarySequenceType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Rs_rsId" type="xs:string"/>
+	<xs:complexType name="Rs_rsLinkoutType">
+		<xs:sequence>
+			<xs:element name="RsLinkout" type="tns:RsLinkoutType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Rs_rsStructType">
+		<xs:sequence>
+			<xs:element name="RsStruct" type="tns:RsStructType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Rs_sequenceType">
+		<xs:sequence>
+			<xs:element ref="tns:Rs_sequence_exemplarSs"/>
+			<xs:element ref="tns:Rs_sequence_seq5" minOccurs="0"/>
+			<xs:element ref="tns:Rs_sequence_observed"/>
+			<xs:element ref="tns:Rs_sequence_seq3" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Rs_sequence_exemplarSs" type="xs:string"/>
+	<xs:element name="Rs_sequence_observed" type="xs:string"/>
+	<xs:element name="Rs_sequence_seq3" type="xs:string"/>
+	<xs:element name="Rs_sequence_seq5" type="xs:string"/>
+	<xs:complexType name="Rs_snpClassType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="snp"/>
+					<xs:enumeration value="in-del"/>
+					<xs:enumeration value="heterozygous"/>
+					<xs:enumeration value="microsatellite"/>
+					<xs:enumeration value="named-locus"/>
+					<xs:enumeration value="no-variation"/>
+					<xs:enumeration value="mixed"/>
+					<xs:enumeration value="multinucleotide-polymorphism"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Rs_snpTypeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="notwithdrawn"/>
+					<xs:enumeration value="artifact"/>
+					<xs:enumeration value="gene-duplication"/>
+					<xs:enumeration value="duplicate-submission"/>
+					<xs:enumeration value="notspecified"/>
+					<xs:enumeration value="ambiguous-location"/>
+					<xs:enumeration value="low-map-quality"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Rs_ssType">
+		<xs:sequence>
+			<xs:element name="Ss" type="tns:SsType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Rs_updateType">
+		<xs:sequence>
+			<xs:element ref="tns:Rs_update_build" minOccurs="0"/>
+			<xs:element ref="tns:Rs_update_date" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Rs_update_build" type="xs:string"/>
+	<xs:element name="Rs_update_date" type="xs:string"/>
+	<xs:element name="Rs_validProbMax" type="xs:string"/>
+	<xs:element name="Rs_validProbMin" type="xs:string"/>
+	<xs:complexType name="Rs_validationType">
+		<xs:sequence>
+			<xs:element name="Rs_validation_byCluster" type="tns:Rs_validation_byClusterType" minOccurs="0"/>
+			<xs:element name="Rs_validation_byFrequency" type="tns:Rs_validation_byFrequencyType" minOccurs="0"/>
+			<xs:element name="Rs_validation_byOtherPop" type="tns:Rs_validation_byOtherPopType" minOccurs="0"/>
+			<xs:element name="Rs_validation_by2Hit2Allele" type="tns:Rs_validation_by2Hit2AlleleType" minOccurs="0"/>
+			<xs:element name="Rs_validation_byHapMap" type="tns:Rs_validation_byHapMapType" minOccurs="0"/>
+			<xs:element name="Rs_validation_otherPopBatchId" type="tns:Rs_validation_otherPopBatchIdType" minOccurs="0"/>
+			<xs:element name="Rs_validation_twoHit2AlleleBatchId" type="tns:Rs_validation_twoHit2AlleleBatchIdType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Rs_validation_by2Hit2AlleleType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Rs_validation_byClusterType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Rs_validation_byFrequencyType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Rs_validation_byHapMapType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Rs_validation_byOtherPopType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Rs_validation_otherPopBatchIdType">
+		<xs:sequence>
+			<xs:element ref="tns:Rs_validation_otherPopBatchId_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Rs_validation_otherPopBatchId_E" type="xs:string"/>
+	<xs:complexType name="Rs_validation_twoHit2AlleleBatchIdType">
+		<xs:sequence>
+			<xs:element ref="tns:Rs_validation_twoHit2AlleleBatchId_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Rs_validation_twoHit2AlleleBatchId_E" type="xs:string"/>
+	<xs:complexType name="Rsite-refType">
+		<xs:choice>
+			<xs:element ref="tns:Rsite-ref_str"/>
+			<xs:element name="Rsite-ref_db" type="tns:Rsite-ref_dbType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Rsite-ref_dbType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Rsite-ref_str" type="xs:string"/>
+	<xs:complexType name="SP-blockType">
+		<xs:sequence>
+			<xs:element name="SP-block_class" type="tns:SP-block_classType"/>
+			<xs:element name="SP-block_extra-acc" type="tns:SP-block_extra-accType" minOccurs="0"/>
+			<xs:element name="SP-block_imeth" type="tns:SP-block_imethType" minOccurs="0"/>
+			<xs:element name="SP-block_plasnm" type="tns:SP-block_plasnmType" minOccurs="0"/>
+			<xs:element name="SP-block_seqref" type="tns:SP-block_seqrefType" minOccurs="0"/>
+			<xs:element name="SP-block_dbref" type="tns:SP-block_dbrefType" minOccurs="0"/>
+			<xs:element name="SP-block_keywords" type="tns:SP-block_keywordsType" minOccurs="0"/>
+			<xs:element name="SP-block_created" type="tns:SP-block_createdType" minOccurs="0"/>
+			<xs:element name="SP-block_sequpd" type="tns:SP-block_sequpdType" minOccurs="0"/>
+			<xs:element name="SP-block_annotupd" type="tns:SP-block_annotupdType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SP-block_annotupdType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SP-block_classType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="not-set"/>
+					<xs:enumeration value="standard"/>
+					<xs:enumeration value="prelim"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="SP-block_createdType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SP-block_dbrefType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SP-block_extra-accType">
+		<xs:sequence>
+			<xs:element ref="tns:SP-block_extra-acc_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="SP-block_extra-acc_E" type="xs:string"/>
+	<xs:complexType name="SP-block_imethType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="SP-block_keywordsType">
+		<xs:sequence>
+			<xs:element ref="tns:SP-block_keywords_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="SP-block_keywords_E" type="xs:string"/>
+	<xs:complexType name="SP-block_plasnmType">
+		<xs:sequence>
+			<xs:element ref="tns:SP-block_plasnm_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="SP-block_plasnm_E" type="xs:string"/>
+	<xs:complexType name="SP-block_seqrefType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SP-block_sequpdType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ScoreType">
+		<xs:sequence>
+			<xs:element name="Score_id" type="tns:Score_idType" minOccurs="0"/>
+			<xs:element name="Score_value" type="tns:Score_valueType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Score-setType">
+		<xs:sequence>
+			<xs:element name="Score" type="tns:ScoreType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Score_idType">
+		<xs:sequence>
+			<xs:element name="Object-id" type="tns:Object-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Score_valueType">
+		<xs:choice>
+			<xs:element ref="tns:Score_value_real"/>
+			<xs:element ref="tns:Score_value_int"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="Score_value_int" type="xs:string"/>
+	<xs:element name="Score_value_real" type="xs:string"/>
+	<xs:complexType name="Seg-extType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-alignType">
+		<xs:sequence>
+			<xs:element name="Seq-align_type" type="tns:Seq-align_typeType"/>
+			<xs:element ref="tns:Seq-align_dim" minOccurs="0"/>
+			<xs:element name="Seq-align_score" type="tns:Seq-align_scoreType" minOccurs="0"/>
+			<xs:element name="Seq-align_segs" type="tns:Seq-align_segsType"/>
+			<xs:element name="Seq-align_bounds" type="tns:Seq-align_boundsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-align-setType">
+		<xs:sequence>
+			<xs:element name="Seq-align" type="tns:Seq-alignType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-align_boundsType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-align_dim" type="xs:string"/>
+	<xs:complexType name="Seq-align_scoreType">
+		<xs:sequence>
+			<xs:element name="Score" type="tns:ScoreType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-align_segsType">
+		<xs:choice>
+			<xs:element name="Seq-align_segs_dendiag" type="tns:Seq-align_segs_dendiagType"/>
+			<xs:element name="Seq-align_segs_denseg" type="tns:Seq-align_segs_densegType"/>
+			<xs:element name="Seq-align_segs_std" type="tns:Seq-align_segs_stdType"/>
+			<xs:element name="Seq-align_segs_packed" type="tns:Seq-align_segs_packedType"/>
+			<xs:element name="Seq-align_segs_disc" type="tns:Seq-align_segs_discType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Seq-align_segs_dendiagType">
+		<xs:sequence>
+			<xs:element name="Dense-diag" type="tns:Dense-diagType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-align_segs_densegType">
+		<xs:sequence>
+			<xs:element name="Dense-seg" type="tns:Dense-segType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-align_segs_discType">
+		<xs:sequence>
+			<xs:element name="Seq-align-set" type="tns:Seq-align-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-align_segs_packedType">
+		<xs:sequence>
+			<xs:element name="Packed-seg" type="tns:Packed-segType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-align_segs_stdType">
+		<xs:sequence>
+			<xs:element name="Std-seg" type="tns:Std-segType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-align_typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="not-set"/>
+					<xs:enumeration value="global"/>
+					<xs:enumeration value="diags"/>
+					<xs:enumeration value="partial"/>
+					<xs:enumeration value="disc"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Seq-annotType">
+		<xs:sequence>
+			<xs:element name="Seq-annot_id" type="tns:Seq-annot_idType" minOccurs="0"/>
+			<xs:element name="Seq-annot_db" type="tns:Seq-annot_dbType" minOccurs="0"/>
+			<xs:element ref="tns:Seq-annot_name" minOccurs="0"/>
+			<xs:element name="Seq-annot_desc" type="tns:Seq-annot_descType" minOccurs="0"/>
+			<xs:element name="Seq-annot_data" type="tns:Seq-annot_dataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-annot_dataType">
+		<xs:choice>
+			<xs:element name="Seq-annot_data_ftable" type="tns:Seq-annot_data_ftableType"/>
+			<xs:element name="Seq-annot_data_align" type="tns:Seq-annot_data_alignType"/>
+			<xs:element name="Seq-annot_data_graph" type="tns:Seq-annot_data_graphType"/>
+			<xs:element name="Seq-annot_data_ids" type="tns:Seq-annot_data_idsType"/>
+			<xs:element name="Seq-annot_data_locs" type="tns:Seq-annot_data_locsType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Seq-annot_data_alignType">
+		<xs:sequence>
+			<xs:element name="Seq-align" type="tns:Seq-alignType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-annot_data_ftableType">
+		<xs:sequence>
+			<xs:element name="Seq-feat" type="tns:Seq-featType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-annot_data_graphType">
+		<xs:sequence>
+			<xs:element name="Seq-graph" type="tns:Seq-graphType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-annot_data_idsType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-annot_data_locsType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-annot_dbType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="genbank"/>
+							<xs:enumeration value="embl"/>
+							<xs:enumeration value="ddbj"/>
+							<xs:enumeration value="pir"/>
+							<xs:enumeration value="sp"/>
+							<xs:enumeration value="bbone"/>
+							<xs:enumeration value="pdb"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Seq-annot_descType">
+		<xs:sequence>
+			<xs:element name="Annot-descr" type="tns:Annot-descrType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-annot_idType">
+		<xs:sequence>
+			<xs:element name="Annot-id" type="tns:Annot-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-annot_name" type="xs:string"/>
+	<xs:complexType name="Seq-bondType">
+		<xs:sequence>
+			<xs:element name="Seq-bond_a" type="tns:Seq-bond_aType"/>
+			<xs:element name="Seq-bond_b" type="tns:Seq-bond_bType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-bond_aType">
+		<xs:sequence>
+			<xs:element name="Seq-point" type="tns:Seq-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-bond_bType">
+		<xs:sequence>
+			<xs:element name="Seq-point" type="tns:Seq-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-code-set">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Seq-code-set_codes" type="tns:Seq-code-set_codesType" minOccurs="0"/>
+				<xs:element name="Seq-code-set_maps" type="tns:Seq-code-set_mapsType" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Seq-code-set_codesType">
+		<xs:sequence>
+			<xs:element name="Seq-code-table" type="tns:Seq-code-tableType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-code-set_mapsType">
+		<xs:sequence>
+			<xs:element name="Seq-map-table" type="tns:Seq-map-tableType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-code-tableType">
+		<xs:sequence>
+			<xs:element name="Seq-code-table_code" type="tns:Seq-code-table_codeType"/>
+			<xs:element ref="tns:Seq-code-table_num"/>
+			<xs:element name="Seq-code-table_one-letter" type="tns:Seq-code-table_one-letterType"/>
+			<xs:element ref="tns:Seq-code-table_start-at" minOccurs="0"/>
+			<xs:element name="Seq-code-table_table" type="tns:Seq-code-table_tableType"/>
+			<xs:element name="Seq-code-table_comps" type="tns:Seq-code-table_compsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-code-table_codeType">
+		<xs:sequence>
+			<xs:element name="Seq-code-type" type="tns:Seq-code-typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-code-table_compsType">
+		<xs:sequence>
+			<xs:element ref="tns:Seq-code-table_comps_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-code-table_comps_E" type="xs:string"/>
+	<xs:element name="Seq-code-table_num" type="xs:string"/>
+	<xs:complexType name="Seq-code-table_one-letterType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Seq-code-table_start-at" type="xs:string"/>
+	<xs:complexType name="Seq-code-table_tableType">
+		<xs:sequence>
+			<xs:element name="Seq-code-table_table_E" type="tns:Seq-code-table_table_EType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-code-table_table_EType">
+		<xs:sequence>
+			<xs:element ref="tns:Seq-code-table_table_E_symbol"/>
+			<xs:element ref="tns:Seq-code-table_table_E_name"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-code-table_table_E_name" type="xs:string"/>
+	<xs:element name="Seq-code-table_table_E_symbol" type="xs:string"/>
+	<xs:complexType name="Seq-code-typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="iupacna"/>
+					<xs:enumeration value="iupacaa"/>
+					<xs:enumeration value="ncbi2na"/>
+					<xs:enumeration value="ncbi4na"/>
+					<xs:enumeration value="ncbi8na"/>
+					<xs:enumeration value="ncbipna"/>
+					<xs:enumeration value="ncbi8aa"/>
+					<xs:enumeration value="ncbieaa"/>
+					<xs:enumeration value="ncbipaa"/>
+					<xs:enumeration value="iupacaa3"/>
+					<xs:enumeration value="ncbistdaa"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Seq-dataType">
+		<xs:choice>
+			<xs:element name="Seq-data_iupacna" type="tns:Seq-data_iupacnaType"/>
+			<xs:element name="Seq-data_iupacaa" type="tns:Seq-data_iupacaaType"/>
+			<xs:element name="Seq-data_ncbi2na" type="tns:Seq-data_ncbi2naType"/>
+			<xs:element name="Seq-data_ncbi4na" type="tns:Seq-data_ncbi4naType"/>
+			<xs:element name="Seq-data_ncbi8na" type="tns:Seq-data_ncbi8naType"/>
+			<xs:element name="Seq-data_ncbipna" type="tns:Seq-data_ncbipnaType"/>
+			<xs:element name="Seq-data_ncbi8aa" type="tns:Seq-data_ncbi8aaType"/>
+			<xs:element name="Seq-data_ncbieaa" type="tns:Seq-data_ncbieaaType"/>
+			<xs:element name="Seq-data_ncbipaa" type="tns:Seq-data_ncbipaaType"/>
+			<xs:element name="Seq-data_ncbistdaa" type="tns:Seq-data_ncbistdaaType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Seq-data_iupacaaType">
+		<xs:sequence>
+			<xs:element ref="tns:IUPACaa"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-data_iupacnaType">
+		<xs:sequence>
+			<xs:element ref="tns:IUPACna"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-data_ncbi2naType">
+		<xs:sequence>
+			<xs:element ref="tns:NCBI2na"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-data_ncbi4naType">
+		<xs:sequence>
+			<xs:element ref="tns:NCBI4na"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-data_ncbi8aaType">
+		<xs:sequence>
+			<xs:element ref="tns:NCBI8aa"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-data_ncbi8naType">
+		<xs:sequence>
+			<xs:element ref="tns:NCBI8na"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-data_ncbieaaType">
+		<xs:sequence>
+			<xs:element ref="tns:NCBIeaa"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-data_ncbipaaType">
+		<xs:sequence>
+			<xs:element ref="tns:NCBIpaa"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-data_ncbipnaType">
+		<xs:sequence>
+			<xs:element ref="tns:NCBIpna"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-data_ncbistdaaType">
+		<xs:sequence>
+			<xs:element ref="tns:NCBIstdaa"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-descrType">
+		<xs:sequence>
+			<xs:element name="Seqdesc" type="tns:SeqdescType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-entryType">
+		<xs:choice>
+			<xs:element name="Seq-entry_seq" type="tns:Seq-entry_seqType"/>
+			<xs:element name="Seq-entry_set" type="tns:Seq-entry_setType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Seq-entry_seqType">
+		<xs:sequence>
+			<xs:element name="Bioseq" type="tns:BioseqType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-entry_setType">
+		<xs:sequence>
+			<xs:element name="Bioseq-set" type="tns:Bioseq-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-extType">
+		<xs:choice>
+			<xs:element name="Seq-ext_seg" type="tns:Seq-ext_segType"/>
+			<xs:element name="Seq-ext_ref" type="tns:Seq-ext_refType"/>
+			<xs:element name="Seq-ext_map" type="tns:Seq-ext_mapType"/>
+			<xs:element name="Seq-ext_delta" type="tns:Seq-ext_deltaType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Seq-ext_deltaType">
+		<xs:sequence>
+			<xs:element name="Delta-ext" type="tns:Delta-extType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-ext_mapType">
+		<xs:sequence>
+			<xs:element name="Map-ext" type="tns:Map-extType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-ext_refType">
+		<xs:sequence>
+			<xs:element name="Ref-ext" type="tns:Ref-extType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-ext_segType">
+		<xs:sequence>
+			<xs:element name="Seg-ext" type="tns:Seg-extType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-featType">
+		<xs:sequence>
+			<xs:element name="Seq-feat_id" type="tns:Seq-feat_idType" minOccurs="0"/>
+			<xs:element name="Seq-feat_data" type="tns:Seq-feat_dataType"/>
+			<xs:element name="Seq-feat_partial" type="tns:Seq-feat_partialType" minOccurs="0"/>
+			<xs:element name="Seq-feat_except" type="tns:Seq-feat_exceptType" minOccurs="0"/>
+			<xs:element ref="tns:Seq-feat_comment" minOccurs="0"/>
+			<xs:element name="Seq-feat_product" type="tns:Seq-feat_productType" minOccurs="0"/>
+			<xs:element name="Seq-feat_location" type="tns:Seq-feat_locationType"/>
+			<xs:element name="Seq-feat_qual" type="tns:Seq-feat_qualType" minOccurs="0"/>
+			<xs:element ref="tns:Seq-feat_title" minOccurs="0"/>
+			<xs:element name="Seq-feat_ext" type="tns:Seq-feat_extType" minOccurs="0"/>
+			<xs:element name="Seq-feat_cit" type="tns:Seq-feat_citType" minOccurs="0"/>
+			<xs:element name="Seq-feat_exp-ev" type="tns:Seq-feat_exp-evType" minOccurs="0"/>
+			<xs:element name="Seq-feat_xref" type="tns:Seq-feat_xrefType" minOccurs="0"/>
+			<xs:element name="Seq-feat_dbxref" type="tns:Seq-feat_dbxrefType" minOccurs="0"/>
+			<xs:element name="Seq-feat_pseudo" type="tns:Seq-feat_pseudoType" minOccurs="0"/>
+			<xs:element ref="tns:Seq-feat_except-text" minOccurs="0"/>
+			<xs:element name="Seq-feat_ids" type="tns:Seq-feat_idsType" minOccurs="0"/>
+			<xs:element name="Seq-feat_exts" type="tns:Seq-feat_extsType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-feat_citType">
+		<xs:sequence>
+			<xs:element name="Pub-set" type="tns:Pub-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-feat_comment" type="xs:string"/>
+	<xs:complexType name="Seq-feat_dataType">
+		<xs:sequence>
+			<xs:element name="SeqFeatData" type="tns:SeqFeatDataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-feat_dbxrefType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-feat_exceptType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Seq-feat_except-text" type="xs:string"/>
+	<xs:complexType name="Seq-feat_exp-evType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="experimental"/>
+					<xs:enumeration value="not-experimental"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Seq-feat_extType">
+		<xs:sequence>
+			<xs:element name="User-object" type="tns:User-objectType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-feat_extsType">
+		<xs:sequence>
+			<xs:element name="User-object" type="tns:User-objectType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-feat_idType">
+		<xs:sequence>
+			<xs:element name="Feat-id" type="tns:Feat-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-feat_idsType">
+		<xs:sequence>
+			<xs:element name="Feat-id" type="tns:Feat-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-feat_locationType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-feat_partialType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Seq-feat_productType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-feat_pseudoType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Seq-feat_qualType">
+		<xs:sequence>
+			<xs:element name="Gb-qual" type="tns:Gb-qualType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-feat_title" type="xs:string"/>
+	<xs:complexType name="Seq-feat_xrefType">
+		<xs:sequence>
+			<xs:element name="SeqFeatXref" type="tns:SeqFeatXrefType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-graphType">
+		<xs:sequence>
+			<xs:element ref="tns:Seq-graph_title" minOccurs="0"/>
+			<xs:element ref="tns:Seq-graph_comment" minOccurs="0"/>
+			<xs:element name="Seq-graph_loc" type="tns:Seq-graph_locType"/>
+			<xs:element ref="tns:Seq-graph_title-x" minOccurs="0"/>
+			<xs:element ref="tns:Seq-graph_title-y" minOccurs="0"/>
+			<xs:element ref="tns:Seq-graph_comp" minOccurs="0"/>
+			<xs:element ref="tns:Seq-graph_a" minOccurs="0"/>
+			<xs:element ref="tns:Seq-graph_b" minOccurs="0"/>
+			<xs:element ref="tns:Seq-graph_numval"/>
+			<xs:element name="Seq-graph_graph" type="tns:Seq-graph_graphType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-graph_a" type="xs:string"/>
+	<xs:element name="Seq-graph_b" type="xs:string"/>
+	<xs:element name="Seq-graph_comment" type="xs:string"/>
+	<xs:element name="Seq-graph_comp" type="xs:string"/>
+	<xs:complexType name="Seq-graph_graphType">
+		<xs:choice>
+			<xs:element name="Seq-graph_graph_real" type="tns:Seq-graph_graph_realType"/>
+			<xs:element name="Seq-graph_graph_int" type="tns:Seq-graph_graph_intType"/>
+			<xs:element name="Seq-graph_graph_byte" type="tns:Seq-graph_graph_byteType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Seq-graph_graph_byteType">
+		<xs:sequence>
+			<xs:element name="Byte-graph" type="tns:Byte-graphType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-graph_graph_intType">
+		<xs:sequence>
+			<xs:element name="Int-graph" type="tns:Int-graphType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-graph_graph_realType">
+		<xs:sequence>
+			<xs:element name="Real-graph" type="tns:Real-graphType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-graph_locType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-graph_numval" type="xs:string"/>
+	<xs:element name="Seq-graph_title" type="xs:string"/>
+	<xs:element name="Seq-graph_title-x" type="xs:string"/>
+	<xs:element name="Seq-graph_title-y" type="xs:string"/>
+	<xs:complexType name="Seq-histType">
+		<xs:sequence>
+			<xs:element name="Seq-hist_assembly" type="tns:Seq-hist_assemblyType" minOccurs="0"/>
+			<xs:element name="Seq-hist_replaces" type="tns:Seq-hist_replacesType" minOccurs="0"/>
+			<xs:element name="Seq-hist_replaced-by" type="tns:Seq-hist_replaced-byType" minOccurs="0"/>
+			<xs:element name="Seq-hist_deleted" type="tns:Seq-hist_deletedType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-hist-recType">
+		<xs:sequence>
+			<xs:element name="Seq-hist-rec_date" type="tns:Seq-hist-rec_dateType" minOccurs="0"/>
+			<xs:element name="Seq-hist-rec_ids" type="tns:Seq-hist-rec_idsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-hist-rec_dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-hist-rec_idsType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-hist_assemblyType">
+		<xs:sequence>
+			<xs:element name="Seq-align" type="tns:Seq-alignType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-hist_deletedType">
+		<xs:choice>
+			<xs:element name="Seq-hist_deleted_bool" type="tns:Seq-hist_deleted_boolType"/>
+			<xs:element name="Seq-hist_deleted_date" type="tns:Seq-hist_deleted_dateType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Seq-hist_deleted_boolType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Seq-hist_deleted_dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-hist_replaced-byType">
+		<xs:sequence>
+			<xs:element name="Seq-hist-rec" type="tns:Seq-hist-recType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-hist_replacesType">
+		<xs:sequence>
+			<xs:element name="Seq-hist-rec" type="tns:Seq-hist-recType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-idType">
+		<xs:choice>
+			<xs:element name="Seq-id_local" type="tns:Seq-id_localType"/>
+			<xs:element ref="tns:Seq-id_gibbsq"/>
+			<xs:element ref="tns:Seq-id_gibbmt"/>
+			<xs:element name="Seq-id_giim" type="tns:Seq-id_giimType"/>
+			<xs:element name="Seq-id_genbank" type="tns:Seq-id_genbankType"/>
+			<xs:element name="Seq-id_embl" type="tns:Seq-id_emblType"/>
+			<xs:element name="Seq-id_pir" type="tns:Seq-id_pirType"/>
+			<xs:element name="Seq-id_swissprot" type="tns:Seq-id_swissprotType"/>
+			<xs:element name="Seq-id_patent" type="tns:Seq-id_patentType"/>
+			<xs:element name="Seq-id_other" type="tns:Seq-id_otherType"/>
+			<xs:element name="Seq-id_general" type="tns:Seq-id_generalType"/>
+			<xs:element ref="tns:Seq-id_gi"/>
+			<xs:element name="Seq-id_ddbj" type="tns:Seq-id_ddbjType"/>
+			<xs:element name="Seq-id_prf" type="tns:Seq-id_prfType"/>
+			<xs:element name="Seq-id_pdb" type="tns:Seq-id_pdbType"/>
+			<xs:element name="Seq-id_tpg" type="tns:Seq-id_tpgType"/>
+			<xs:element name="Seq-id_tpe" type="tns:Seq-id_tpeType"/>
+			<xs:element name="Seq-id_tpd" type="tns:Seq-id_tpdType"/>
+			<xs:element name="Seq-id_gpipe" type="tns:Seq-id_gpipeType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Seq-id_ddbjType">
+		<xs:sequence>
+			<xs:element name="Textseq-id" type="tns:Textseq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-id_emblType">
+		<xs:sequence>
+			<xs:element name="Textseq-id" type="tns:Textseq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-id_genbankType">
+		<xs:sequence>
+			<xs:element name="Textseq-id" type="tns:Textseq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-id_generalType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-id_gi" type="xs:string"/>
+	<xs:element name="Seq-id_gibbmt" type="xs:string"/>
+	<xs:element name="Seq-id_gibbsq" type="xs:string"/>
+	<xs:complexType name="Seq-id_giimType">
+		<xs:sequence>
+			<xs:element name="Giimport-id" type="tns:Giimport-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-id_gpipeType">
+		<xs:sequence>
+			<xs:element name="Textseq-id" type="tns:Textseq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-id_localType">
+		<xs:sequence>
+			<xs:element name="Object-id" type="tns:Object-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-id_otherType">
+		<xs:sequence>
+			<xs:element name="Textseq-id" type="tns:Textseq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-id_patentType">
+		<xs:sequence>
+			<xs:element name="Patent-seq-id" type="tns:Patent-seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-id_pdbType">
+		<xs:sequence>
+			<xs:element name="PDB-seq-id" type="tns:PDB-seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-id_pirType">
+		<xs:sequence>
+			<xs:element name="Textseq-id" type="tns:Textseq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-id_prfType">
+		<xs:sequence>
+			<xs:element name="Textseq-id" type="tns:Textseq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-id_swissprotType">
+		<xs:sequence>
+			<xs:element name="Textseq-id" type="tns:Textseq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-id_tpdType">
+		<xs:sequence>
+			<xs:element name="Textseq-id" type="tns:Textseq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-id_tpeType">
+		<xs:sequence>
+			<xs:element name="Textseq-id" type="tns:Textseq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-id_tpgType">
+		<xs:sequence>
+			<xs:element name="Textseq-id" type="tns:Textseq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-instType">
+		<xs:sequence>
+			<xs:element name="Seq-inst_repr" type="tns:Seq-inst_reprType"/>
+			<xs:element name="Seq-inst_mol" type="tns:Seq-inst_molType"/>
+			<xs:element ref="tns:Seq-inst_length" minOccurs="0"/>
+			<xs:element name="Seq-inst_fuzz" type="tns:Seq-inst_fuzzType" minOccurs="0"/>
+			<xs:element name="Seq-inst_topology" type="tns:Seq-inst_topologyType" minOccurs="0"/>
+			<xs:element name="Seq-inst_strand" type="tns:Seq-inst_strandType" minOccurs="0"/>
+			<xs:element name="Seq-inst_seq-data" type="tns:Seq-inst_seq-dataType" minOccurs="0"/>
+			<xs:element name="Seq-inst_ext" type="tns:Seq-inst_extType" minOccurs="0"/>
+			<xs:element name="Seq-inst_hist" type="tns:Seq-inst_histType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-inst_extType">
+		<xs:sequence>
+			<xs:element name="Seq-ext" type="tns:Seq-extType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-inst_fuzzType">
+		<xs:sequence>
+			<xs:element name="Int-fuzz" type="tns:Int-fuzzType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-inst_histType">
+		<xs:sequence>
+			<xs:element name="Seq-hist" type="tns:Seq-histType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-inst_length" type="xs:string"/>
+	<xs:complexType name="Seq-inst_molType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="not-set"/>
+					<xs:enumeration value="dna"/>
+					<xs:enumeration value="rna"/>
+					<xs:enumeration value="aa"/>
+					<xs:enumeration value="na"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Seq-inst_reprType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="not-set"/>
+					<xs:enumeration value="virtual"/>
+					<xs:enumeration value="raw"/>
+					<xs:enumeration value="seg"/>
+					<xs:enumeration value="const"/>
+					<xs:enumeration value="ref"/>
+					<xs:enumeration value="consen"/>
+					<xs:enumeration value="map"/>
+					<xs:enumeration value="delta"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Seq-inst_seq-dataType">
+		<xs:sequence>
+			<xs:element name="Seq-data" type="tns:Seq-dataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-inst_strandType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="not-set"/>
+					<xs:enumeration value="ss"/>
+					<xs:enumeration value="ds"/>
+					<xs:enumeration value="mixed"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Seq-inst_topologyType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="not-set"/>
+					<xs:enumeration value="linear"/>
+					<xs:enumeration value="circular"/>
+					<xs:enumeration value="tandem"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Seq-intervalType">
+		<xs:sequence>
+			<xs:element ref="tns:Seq-interval_from"/>
+			<xs:element ref="tns:Seq-interval_to"/>
+			<xs:element name="Seq-interval_strand" type="tns:Seq-interval_strandType" minOccurs="0"/>
+			<xs:element name="Seq-interval_id" type="tns:Seq-interval_idType"/>
+			<xs:element name="Seq-interval_fuzz-from" type="tns:Seq-interval_fuzz-fromType" minOccurs="0"/>
+			<xs:element name="Seq-interval_fuzz-to" type="tns:Seq-interval_fuzz-toType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-interval_from" type="xs:string"/>
+	<xs:complexType name="Seq-interval_fuzz-fromType">
+		<xs:sequence>
+			<xs:element name="Int-fuzz" type="tns:Int-fuzzType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-interval_fuzz-toType">
+		<xs:sequence>
+			<xs:element name="Int-fuzz" type="tns:Int-fuzzType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-interval_idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-interval_strandType">
+		<xs:sequence>
+			<xs:element name="Na-strand" type="tns:Na-strandType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-interval_to" type="xs:string"/>
+	<xs:complexType name="Seq-literalType">
+		<xs:sequence>
+			<xs:element ref="tns:Seq-literal_length"/>
+			<xs:element name="Seq-literal_fuzz" type="tns:Seq-literal_fuzzType" minOccurs="0"/>
+			<xs:element name="Seq-literal_seq-data" type="tns:Seq-literal_seq-dataType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-literal_fuzzType">
+		<xs:sequence>
+			<xs:element name="Int-fuzz" type="tns:Int-fuzzType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-literal_length" type="xs:string"/>
+	<xs:complexType name="Seq-literal_seq-dataType">
+		<xs:sequence>
+			<xs:element name="Seq-data" type="tns:Seq-dataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-locType">
+		<xs:choice>
+			<xs:element ref="tns:Seq-loc_null"/>
+			<xs:element name="Seq-loc_empty" type="tns:Seq-loc_emptyType"/>
+			<xs:element name="Seq-loc_whole" type="tns:Seq-loc_wholeType"/>
+			<xs:element name="Seq-loc_int" type="tns:Seq-loc_intType"/>
+			<xs:element name="Seq-loc_packed-int" type="tns:Seq-loc_packed-intType"/>
+			<xs:element name="Seq-loc_pnt" type="tns:Seq-loc_pntType"/>
+			<xs:element name="Seq-loc_packed-pnt" type="tns:Seq-loc_packed-pntType"/>
+			<xs:element name="Seq-loc_mix" type="tns:Seq-loc_mixType"/>
+			<xs:element name="Seq-loc_equiv" type="tns:Seq-loc_equivType"/>
+			<xs:element name="Seq-loc_bond" type="tns:Seq-loc_bondType"/>
+			<xs:element name="Seq-loc_feat" type="tns:Seq-loc_featType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Seq-loc-equivType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-loc-mixType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-loc_bondType">
+		<xs:sequence>
+			<xs:element name="Seq-bond" type="tns:Seq-bondType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-loc_emptyType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-loc_equivType">
+		<xs:sequence>
+			<xs:element name="Seq-loc-equiv" type="tns:Seq-loc-equivType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-loc_featType">
+		<xs:sequence>
+			<xs:element name="Feat-id" type="tns:Feat-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-loc_intType">
+		<xs:sequence>
+			<xs:element name="Seq-interval" type="tns:Seq-intervalType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-loc_mixType">
+		<xs:sequence>
+			<xs:element name="Seq-loc-mix" type="tns:Seq-loc-mixType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-loc_null">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="Seq-loc_packed-intType">
+		<xs:sequence>
+			<xs:element name="Packed-seqint" type="tns:Packed-seqintType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-loc_packed-pntType">
+		<xs:sequence>
+			<xs:element name="Packed-seqpnt" type="tns:Packed-seqpntType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-loc_pntType">
+		<xs:sequence>
+			<xs:element name="Seq-point" type="tns:Seq-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-loc_wholeType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-map-tableType">
+		<xs:sequence>
+			<xs:element name="Seq-map-table_from" type="tns:Seq-map-table_fromType"/>
+			<xs:element name="Seq-map-table_to" type="tns:Seq-map-table_toType"/>
+			<xs:element ref="tns:Seq-map-table_num"/>
+			<xs:element ref="tns:Seq-map-table_start-at" minOccurs="0"/>
+			<xs:element name="Seq-map-table_table" type="tns:Seq-map-table_tableType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-map-table_fromType">
+		<xs:sequence>
+			<xs:element name="Seq-code-type" type="tns:Seq-code-typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-map-table_num" type="xs:string"/>
+	<xs:element name="Seq-map-table_start-at" type="xs:string"/>
+	<xs:complexType name="Seq-map-table_tableType">
+		<xs:sequence>
+			<xs:element ref="tns:Seq-map-table_table_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-map-table_table_E" type="xs:string"/>
+	<xs:complexType name="Seq-map-table_toType">
+		<xs:sequence>
+			<xs:element name="Seq-code-type" type="tns:Seq-code-typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-pointType">
+		<xs:sequence>
+			<xs:element ref="tns:Seq-point_point"/>
+			<xs:element name="Seq-point_strand" type="tns:Seq-point_strandType" minOccurs="0"/>
+			<xs:element name="Seq-point_id" type="tns:Seq-point_idType"/>
+			<xs:element name="Seq-point_fuzz" type="tns:Seq-point_fuzzType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-point_fuzzType">
+		<xs:sequence>
+			<xs:element name="Int-fuzz" type="tns:Int-fuzzType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-point_idType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-point_point" type="xs:string"/>
+	<xs:complexType name="Seq-point_strandType">
+		<xs:sequence>
+			<xs:element name="Na-strand" type="tns:Na-strandType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seq-submit">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Seq-submit_sub" type="tns:Seq-submit_subType"/>
+				<xs:element name="Seq-submit_data" type="tns:Seq-submit_dataType"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Seq-submit_dataType">
+		<xs:choice>
+			<xs:element name="Seq-submit_data_entrys" type="tns:Seq-submit_data_entrysType"/>
+			<xs:element name="Seq-submit_data_annots" type="tns:Seq-submit_data_annotsType"/>
+			<xs:element name="Seq-submit_data_delete" type="tns:Seq-submit_data_deleteType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Seq-submit_data_annotsType">
+		<xs:sequence>
+			<xs:element name="Seq-annot" type="tns:Seq-annotType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-submit_data_deleteType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-submit_data_entrysType">
+		<xs:sequence>
+			<xs:element name="Seq-entry" type="tns:Seq-entryType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seq-submit_subType">
+		<xs:sequence>
+			<xs:element name="Submit-block" type="tns:Submit-blockType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatDataType">
+		<xs:choice>
+			<xs:element name="SeqFeatData_gene" type="tns:SeqFeatData_geneType"/>
+			<xs:element name="SeqFeatData_org" type="tns:SeqFeatData_orgType"/>
+			<xs:element name="SeqFeatData_cdregion" type="tns:SeqFeatData_cdregionType"/>
+			<xs:element name="SeqFeatData_prot" type="tns:SeqFeatData_protType"/>
+			<xs:element name="SeqFeatData_rna" type="tns:SeqFeatData_rnaType"/>
+			<xs:element name="SeqFeatData_pub" type="tns:SeqFeatData_pubType"/>
+			<xs:element name="SeqFeatData_seq" type="tns:SeqFeatData_seqType"/>
+			<xs:element name="SeqFeatData_imp" type="tns:SeqFeatData_impType"/>
+			<xs:element ref="tns:SeqFeatData_region"/>
+			<xs:element ref="tns:SeqFeatData_comment"/>
+			<xs:element name="SeqFeatData_bond" type="tns:SeqFeatData_bondType"/>
+			<xs:element name="SeqFeatData_site" type="tns:SeqFeatData_siteType"/>
+			<xs:element name="SeqFeatData_rsite" type="tns:SeqFeatData_rsiteType"/>
+			<xs:element name="SeqFeatData_user" type="tns:SeqFeatData_userType"/>
+			<xs:element name="SeqFeatData_txinit" type="tns:SeqFeatData_txinitType"/>
+			<xs:element name="SeqFeatData_num" type="tns:SeqFeatData_numType"/>
+			<xs:element name="SeqFeatData_psec-str" type="tns:SeqFeatData_psec-strType"/>
+			<xs:element ref="tns:SeqFeatData_non-std-residue"/>
+			<xs:element name="SeqFeatData_het" type="tns:SeqFeatData_hetType"/>
+			<xs:element name="SeqFeatData_biosrc" type="tns:SeqFeatData_biosrcType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatData_biosrcType">
+		<xs:sequence>
+			<xs:element name="BioSource" type="tns:BioSourceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatData_bondType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="disulfide"/>
+					<xs:enumeration value="thiolester"/>
+					<xs:enumeration value="xlink"/>
+					<xs:enumeration value="thioether"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatData_cdregionType">
+		<xs:sequence>
+			<xs:element name="Cdregion" type="tns:CdregionType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="SeqFeatData_comment">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="SeqFeatData_geneType">
+		<xs:sequence>
+			<xs:element name="Gene-ref" type="tns:Gene-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatData_hetType">
+		<xs:sequence>
+			<xs:element ref="tns:Heterogen"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatData_impType">
+		<xs:sequence>
+			<xs:element name="Imp-feat" type="tns:Imp-featType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="SeqFeatData_non-std-residue" type="xs:string"/>
+	<xs:complexType name="SeqFeatData_numType">
+		<xs:sequence>
+			<xs:element name="Numbering" type="tns:NumberingType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatData_orgType">
+		<xs:sequence>
+			<xs:element name="Org-ref" type="tns:Org-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatData_protType">
+		<xs:sequence>
+			<xs:element name="Prot-ref" type="tns:Prot-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatData_psec-strType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="helix"/>
+					<xs:enumeration value="sheet"/>
+					<xs:enumeration value="turn"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatData_pubType">
+		<xs:sequence>
+			<xs:element name="Pubdesc" type="tns:PubdescType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="SeqFeatData_region" type="xs:string"/>
+	<xs:complexType name="SeqFeatData_rnaType">
+		<xs:sequence>
+			<xs:element name="RNA-ref" type="tns:RNA-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatData_rsiteType">
+		<xs:sequence>
+			<xs:element name="Rsite-ref" type="tns:Rsite-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatData_seqType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatData_siteType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="active"/>
+					<xs:enumeration value="binding"/>
+					<xs:enumeration value="cleavage"/>
+					<xs:enumeration value="inhibit"/>
+					<xs:enumeration value="modified"/>
+					<xs:enumeration value="glycosylation"/>
+					<xs:enumeration value="myristoylation"/>
+					<xs:enumeration value="mutagenized"/>
+					<xs:enumeration value="metal-binding"/>
+					<xs:enumeration value="phosphorylation"/>
+					<xs:enumeration value="acetylation"/>
+					<xs:enumeration value="amidation"/>
+					<xs:enumeration value="methylation"/>
+					<xs:enumeration value="hydroxylation"/>
+					<xs:enumeration value="sulfatation"/>
+					<xs:enumeration value="oxidative-deamination"/>
+					<xs:enumeration value="pyrrolidone-carboxylic-acid"/>
+					<xs:enumeration value="gamma-carboxyglutamic-acid"/>
+					<xs:enumeration value="blocked"/>
+					<xs:enumeration value="lipid-binding"/>
+					<xs:enumeration value="np-binding"/>
+					<xs:enumeration value="dna-binding"/>
+					<xs:enumeration value="signal-peptide"/>
+					<xs:enumeration value="transit-peptide"/>
+					<xs:enumeration value="transmembrane-region"/>
+					<xs:enumeration value="nitrosylation"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatData_txinitType">
+		<xs:sequence>
+			<xs:element name="Txinit" type="tns:TxinitType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatData_userType">
+		<xs:sequence>
+			<xs:element name="User-object" type="tns:User-objectType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatXrefType">
+		<xs:sequence>
+			<xs:element name="SeqFeatXref_id" type="tns:SeqFeatXref_idType" minOccurs="0"/>
+			<xs:element name="SeqFeatXref_data" type="tns:SeqFeatXref_dataType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatXref_dataType">
+		<xs:sequence>
+			<xs:element name="SeqFeatData" type="tns:SeqFeatDataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqFeatXref_idType">
+		<xs:sequence>
+			<xs:element name="Feat-id" type="tns:Feat-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqTree-nodeType">
+		<xs:sequence>
+			<xs:element name="SeqTree-node_isAnnotated" type="tns:SeqTree-node_isAnnotatedType" minOccurs="0"/>
+			<xs:element ref="tns:SeqTree-node_name" minOccurs="0"/>
+			<xs:element ref="tns:SeqTree-node_distance" minOccurs="0"/>
+			<xs:element name="SeqTree-node_children" type="tns:SeqTree-node_childrenType"/>
+			<xs:element name="SeqTree-node_annotation" type="tns:SeqTree-node_annotationType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqTree-node_annotationType">
+		<xs:sequence>
+			<xs:element name="Node-annotation" type="tns:Node-annotationType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqTree-node_childrenType">
+		<xs:choice>
+			<xs:element name="SeqTree-node_children_children" type="tns:SeqTree-node_children_childrenType"/>
+			<xs:element name="SeqTree-node_children_footprint" type="tns:SeqTree-node_children_footprintType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="SeqTree-node_children_childrenType">
+		<xs:sequence>
+			<xs:element name="SeqTree-node" type="tns:SeqTree-nodeType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SeqTree-node_children_footprintType">
+		<xs:sequence>
+			<xs:element name="SeqTree-node_children_footprint_seqRange" type="tns:SeqTree-node_children_footprint_seqRangeType"/>
+			<xs:element ref="tns:SeqTree-node_children_footprint_rowId" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="SeqTree-node_children_footprint_rowId" type="xs:string"/>
+	<xs:complexType name="SeqTree-node_children_footprint_seqRangeType">
+		<xs:sequence>
+			<xs:element name="Seq-interval" type="tns:Seq-intervalType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="SeqTree-node_distance" type="xs:string"/>
+	<xs:complexType name="SeqTree-node_isAnnotatedType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="SeqTree-node_name" type="xs:string"/>
+	<xs:complexType name="SeqdescType">
+		<xs:choice>
+			<xs:element name="Seqdesc_mol-type" type="tns:Seqdesc_mol-typeType"/>
+			<xs:element name="Seqdesc_modif" type="tns:Seqdesc_modifType"/>
+			<xs:element name="Seqdesc_method" type="tns:Seqdesc_methodType"/>
+			<xs:element ref="tns:Seqdesc_name"/>
+			<xs:element ref="tns:Seqdesc_title"/>
+			<xs:element name="Seqdesc_org" type="tns:Seqdesc_orgType"/>
+			<xs:element ref="tns:Seqdesc_comment"/>
+			<xs:element name="Seqdesc_num" type="tns:Seqdesc_numType"/>
+			<xs:element name="Seqdesc_maploc" type="tns:Seqdesc_maplocType"/>
+			<xs:element name="Seqdesc_pir" type="tns:Seqdesc_pirType"/>
+			<xs:element name="Seqdesc_genbank" type="tns:Seqdesc_genbankType"/>
+			<xs:element name="Seqdesc_pub" type="tns:Seqdesc_pubType"/>
+			<xs:element ref="tns:Seqdesc_region"/>
+			<xs:element name="Seqdesc_user" type="tns:Seqdesc_userType"/>
+			<xs:element name="Seqdesc_sp" type="tns:Seqdesc_spType"/>
+			<xs:element name="Seqdesc_dbxref" type="tns:Seqdesc_dbxrefType"/>
+			<xs:element name="Seqdesc_embl" type="tns:Seqdesc_emblType"/>
+			<xs:element name="Seqdesc_create-date" type="tns:Seqdesc_create-dateType"/>
+			<xs:element name="Seqdesc_update-date" type="tns:Seqdesc_update-dateType"/>
+			<xs:element name="Seqdesc_prf" type="tns:Seqdesc_prfType"/>
+			<xs:element name="Seqdesc_pdb" type="tns:Seqdesc_pdbType"/>
+			<xs:element name="Seqdesc_het" type="tns:Seqdesc_hetType"/>
+			<xs:element name="Seqdesc_source" type="tns:Seqdesc_sourceType"/>
+			<xs:element name="Seqdesc_molinfo" type="tns:Seqdesc_molinfoType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="Seqdesc_comment" type="xs:string"/>
+	<xs:complexType name="Seqdesc_create-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_dbxrefType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_emblType">
+		<xs:sequence>
+			<xs:element name="EMBL-block" type="tns:EMBL-blockType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_genbankType">
+		<xs:sequence>
+			<xs:element name="GB-block" type="tns:GB-blockType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_hetType">
+		<xs:sequence>
+			<xs:element ref="tns:Heterogen"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_maplocType">
+		<xs:sequence>
+			<xs:element name="Dbtag" type="tns:DbtagType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_methodType">
+		<xs:sequence>
+			<xs:element name="GIBB-method" type="tns:GIBB-methodType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_modifType">
+		<xs:sequence>
+			<xs:element name="GIBB-mod" type="tns:GIBB-modType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_mol-typeType">
+		<xs:sequence>
+			<xs:element name="GIBB-mol" type="tns:GIBB-molType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_molinfoType">
+		<xs:sequence>
+			<xs:element name="MolInfo" type="tns:MolInfoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seqdesc_name" type="xs:string"/>
+	<xs:complexType name="Seqdesc_numType">
+		<xs:sequence>
+			<xs:element name="Numbering" type="tns:NumberingType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_orgType">
+		<xs:sequence>
+			<xs:element name="Org-ref" type="tns:Org-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_pdbType">
+		<xs:sequence>
+			<xs:element name="PDB-block" type="tns:PDB-blockType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_pirType">
+		<xs:sequence>
+			<xs:element name="PIR-block" type="tns:PIR-blockType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_prfType">
+		<xs:sequence>
+			<xs:element name="PRF-block" type="tns:PRF-blockType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_pubType">
+		<xs:sequence>
+			<xs:element name="Pubdesc" type="tns:PubdescType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seqdesc_region" type="xs:string"/>
+	<xs:complexType name="Seqdesc_sourceType">
+		<xs:sequence>
+			<xs:element name="BioSource" type="tns:BioSourceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_spType">
+		<xs:sequence>
+			<xs:element name="SP-block" type="tns:SP-blockType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Seqdesc_title" type="xs:string"/>
+	<xs:complexType name="Seqdesc_update-dateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Seqdesc_userType">
+		<xs:sequence>
+			<xs:element name="User-object" type="tns:User-objectType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Sequence-treeType">
+		<xs:sequence>
+			<xs:element ref="tns:Sequence-tree_cdAccession" minOccurs="0"/>
+			<xs:element name="Sequence-tree_algorithm" type="tns:Sequence-tree_algorithmType"/>
+			<xs:element name="Sequence-tree_isAnnotated" type="tns:Sequence-tree_isAnnotatedType" minOccurs="0"/>
+			<xs:element name="Sequence-tree_root" type="tns:Sequence-tree_rootType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Sequence-tree_algorithmType">
+		<xs:sequence>
+			<xs:element name="Algorithm-type" type="tns:Algorithm-typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Sequence-tree_cdAccession" type="xs:string"/>
+	<xs:complexType name="Sequence-tree_isAnnotatedType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Sequence-tree_rootType">
+		<xs:sequence>
+			<xs:element name="SeqTree-node" type="tns:SeqTree-nodeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SphereType">
+		<xs:sequence>
+			<xs:element name="Sphere_center" type="tns:Sphere_centerType"/>
+			<xs:element name="Sphere_radius" type="tns:Sphere_radiusType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Sphere_centerType">
+		<xs:sequence>
+			<xs:element name="Model-space-point" type="tns:Model-space-pointType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Sphere_radiusType">
+		<xs:sequence>
+			<xs:element name="RealValue" type="tns:RealValueType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SsType">
+		<xs:sequence>
+			<xs:element ref="tns:Ss_ssId"/>
+			<xs:element ref="tns:Ss_handle"/>
+			<xs:element ref="tns:Ss_batchId"/>
+			<xs:element ref="tns:Ss_locSnpId" minOccurs="0"/>
+			<xs:element name="Ss_subSnpClass" type="tns:Ss_subSnpClassType" minOccurs="0"/>
+			<xs:element name="Ss_orient" type="tns:Ss_orientType" minOccurs="0"/>
+			<xs:element name="Ss_strand" type="tns:Ss_strandType" minOccurs="0"/>
+			<xs:element name="Ss_molType" type="tns:Ss_molTypeType" minOccurs="0"/>
+			<xs:element ref="tns:Ss_buildId" minOccurs="0"/>
+			<xs:element name="Ss_methodClass" type="tns:Ss_methodClassType" minOccurs="0"/>
+			<xs:element name="Ss_validated" type="tns:Ss_validatedType" minOccurs="0"/>
+			<xs:element ref="tns:Ss_linkoutUrl" minOccurs="0"/>
+			<xs:element name="Ss_sequence" type="tns:Ss_sequenceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Ss_batchId" type="xs:string"/>
+	<xs:element name="Ss_buildId" type="xs:string"/>
+	<xs:element name="Ss_handle" type="xs:string"/>
+	<xs:element name="Ss_linkoutUrl" type="xs:string"/>
+	<xs:element name="Ss_locSnpId" type="xs:string"/>
+	<xs:complexType name="Ss_methodClassType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="dHPLC"/>
+					<xs:enumeration value="hybridize"/>
+					<xs:enumeration value="computed"/>
+					<xs:enumeration value="sSCP"/>
+					<xs:enumeration value="other"/>
+					<xs:enumeration value="unknown"/>
+					<xs:enumeration value="rFLP"/>
+					<xs:enumeration value="sequence"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Ss_molTypeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="genomic"/>
+					<xs:enumeration value="cDNA"/>
+					<xs:enumeration value="mito"/>
+					<xs:enumeration value="chloro"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Ss_orientType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="forward"/>
+					<xs:enumeration value="reverse"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Ss_sequenceType">
+		<xs:sequence>
+			<xs:element ref="tns:Ss_sequence_seq5" minOccurs="0"/>
+			<xs:element ref="tns:Ss_sequence_observed"/>
+			<xs:element ref="tns:Ss_sequence_seq3" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Ss_sequence_observed" type="xs:string"/>
+	<xs:element name="Ss_sequence_seq3" type="xs:string"/>
+	<xs:element name="Ss_sequence_seq5" type="xs:string"/>
+	<xs:element name="Ss_ssId" type="xs:string"/>
+	<xs:complexType name="Ss_strandType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="top"/>
+					<xs:enumeration value="bottom"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Ss_subSnpClassType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="snp"/>
+					<xs:enumeration value="in-del"/>
+					<xs:enumeration value="heterozygous"/>
+					<xs:enumeration value="microsatellite"/>
+					<xs:enumeration value="named-locus"/>
+					<xs:enumeration value="no-variation"/>
+					<xs:enumeration value="mixed"/>
+					<xs:enumeration value="multinucleotide-polymorphism"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Ss_validatedType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="by-submitter"/>
+					<xs:enumeration value="by-frequency"/>
+					<xs:enumeration value="by-cluster"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="StatisticsType">
+		<xs:sequence>
+			<xs:element ref="tns:Statistics_db-num"/>
+			<xs:element ref="tns:Statistics_db-len"/>
+			<xs:element ref="tns:Statistics_hsp-len"/>
+			<xs:element ref="tns:Statistics_eff-space"/>
+			<xs:element ref="tns:Statistics_kappa"/>
+			<xs:element ref="tns:Statistics_lambda"/>
+			<xs:element ref="tns:Statistics_entropy"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Statistics_db-len" type="xs:string"/>
+	<xs:element name="Statistics_db-num" type="xs:string"/>
+	<xs:element name="Statistics_eff-space" type="xs:string"/>
+	<xs:element name="Statistics_entropy" type="xs:string"/>
+	<xs:element name="Statistics_hsp-len" type="xs:string"/>
+	<xs:element name="Statistics_kappa" type="xs:string"/>
+	<xs:element name="Statistics_lambda" type="xs:string"/>
+	<xs:complexType name="Std-segType">
+		<xs:sequence>
+			<xs:element ref="tns:Std-seg_dim" minOccurs="0"/>
+			<xs:element name="Std-seg_ids" type="tns:Std-seg_idsType" minOccurs="0"/>
+			<xs:element name="Std-seg_loc" type="tns:Std-seg_locType"/>
+			<xs:element name="Std-seg_scores" type="tns:Std-seg_scoresType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Std-seg_dim" type="xs:string"/>
+	<xs:complexType name="Std-seg_idsType">
+		<xs:sequence>
+			<xs:element name="Seq-id" type="tns:Seq-idType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Std-seg_locType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Std-seg_scoresType">
+		<xs:sequence>
+			<xs:element name="Score" type="tns:ScoreType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Step-id" type="xs:string"/>
+	<xs:complexType name="SubSourceType">
+		<xs:sequence>
+			<xs:element name="SubSource_subtype" type="tns:SubSource_subtypeType"/>
+			<xs:element ref="tns:SubSource_name"/>
+			<xs:element ref="tns:SubSource_attrib" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="SubSource_attrib" type="xs:string"/>
+	<xs:element name="SubSource_name" type="xs:string"/>
+	<xs:complexType name="SubSource_subtypeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="chromosome"/>
+							<xs:enumeration value="map"/>
+							<xs:enumeration value="clone"/>
+							<xs:enumeration value="subclone"/>
+							<xs:enumeration value="haplotype"/>
+							<xs:enumeration value="genotype"/>
+							<xs:enumeration value="sex"/>
+							<xs:enumeration value="cell-line"/>
+							<xs:enumeration value="cell-type"/>
+							<xs:enumeration value="tissue-type"/>
+							<xs:enumeration value="clone-lib"/>
+							<xs:enumeration value="dev-stage"/>
+							<xs:enumeration value="frequency"/>
+							<xs:enumeration value="germline"/>
+							<xs:enumeration value="rearranged"/>
+							<xs:enumeration value="lab-host"/>
+							<xs:enumeration value="pop-variant"/>
+							<xs:enumeration value="tissue-lib"/>
+							<xs:enumeration value="plasmid-name"/>
+							<xs:enumeration value="transposon-name"/>
+							<xs:enumeration value="insertion-seq-name"/>
+							<xs:enumeration value="plastid-name"/>
+							<xs:enumeration value="country"/>
+							<xs:enumeration value="segment"/>
+							<xs:enumeration value="endogenous-virus-name"/>
+							<xs:enumeration value="transgenic"/>
+							<xs:enumeration value="environmental-sample"/>
+							<xs:enumeration value="isolation-source"/>
+							<xs:enumeration value="lat-lon"/>
+							<xs:enumeration value="collection-date"/>
+							<xs:enumeration value="collected-by"/>
+							<xs:enumeration value="identified-by"/>
+							<xs:enumeration value="fwd-primer-seq"/>
+							<xs:enumeration value="rev-primer-seq"/>
+							<xs:enumeration value="fwd-primer-name"/>
+							<xs:enumeration value="rev-primer-name"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Submit-blockType">
+		<xs:sequence>
+			<xs:element name="Submit-block_contact" type="tns:Submit-block_contactType"/>
+			<xs:element name="Submit-block_cit" type="tns:Submit-block_citType"/>
+			<xs:element name="Submit-block_hup" type="tns:Submit-block_hupType" minOccurs="0"/>
+			<xs:element name="Submit-block_reldate" type="tns:Submit-block_reldateType" minOccurs="0"/>
+			<xs:element name="Submit-block_subtype" type="tns:Submit-block_subtypeType" minOccurs="0"/>
+			<xs:element ref="tns:Submit-block_tool" minOccurs="0"/>
+			<xs:element ref="tns:Submit-block_user-tag" minOccurs="0"/>
+			<xs:element ref="tns:Submit-block_comment" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Submit-block_citType">
+		<xs:sequence>
+			<xs:element name="Cit-sub" type="tns:Cit-subType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Submit-block_comment" type="xs:string"/>
+	<xs:complexType name="Submit-block_contactType">
+		<xs:sequence>
+			<xs:element name="Contact-info" type="tns:Contact-infoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Submit-block_hupType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Submit-block_reldateType">
+		<xs:sequence>
+			<xs:element name="Date" type="tns:DateType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Submit-block_subtypeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="new"/>
+							<xs:enumeration value="update"/>
+							<xs:enumeration value="revision"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="Submit-block_tool" type="xs:string"/>
+	<xs:element name="Submit-block_user-tag" type="xs:string"/>
+	<xs:complexType name="Surface-coordinatesType">
+		<xs:sequence>
+			<xs:element name="Surface-coordinates_contents" type="tns:Surface-coordinates_contentsType"/>
+			<xs:element name="Surface-coordinates_surface" type="tns:Surface-coordinates_surfaceType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Surface-coordinates_contentsType">
+		<xs:sequence>
+			<xs:element name="Chem-graph-pntrs" type="tns:Chem-graph-pntrsType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Surface-coordinates_surfaceType">
+		<xs:choice>
+			<xs:element name="Surface-coordinates_surface_sphere" type="tns:Surface-coordinates_surface_sphereType"/>
+			<xs:element name="Surface-coordinates_surface_cone" type="tns:Surface-coordinates_surface_coneType"/>
+			<xs:element name="Surface-coordinates_surface_cylinder" type="tns:Surface-coordinates_surface_cylinderType"/>
+			<xs:element name="Surface-coordinates_surface_brick" type="tns:Surface-coordinates_surface_brickType"/>
+			<xs:element name="Surface-coordinates_surface_tmesh" type="tns:Surface-coordinates_surface_tmeshType"/>
+			<xs:element name="Surface-coordinates_surface_triangles" type="tns:Surface-coordinates_surface_trianglesType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Surface-coordinates_surface_brickType">
+		<xs:sequence>
+			<xs:element name="Brick" type="tns:BrickType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Surface-coordinates_surface_coneType">
+		<xs:sequence>
+			<xs:element name="Cone" type="tns:ConeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Surface-coordinates_surface_cylinderType">
+		<xs:sequence>
+			<xs:element name="Cylinder" type="tns:CylinderType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Surface-coordinates_surface_sphereType">
+		<xs:sequence>
+			<xs:element name="Sphere" type="tns:SphereType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Surface-coordinates_surface_tmeshType">
+		<xs:sequence>
+			<xs:element name="T-mesh" type="tns:T-meshType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Surface-coordinates_surface_trianglesType">
+		<xs:sequence>
+			<xs:element name="Triangles" type="tns:TrianglesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="T-meshType">
+		<xs:sequence>
+			<xs:element ref="tns:T-mesh_number-of-points"/>
+			<xs:element ref="tns:T-mesh_scale-factor"/>
+			<xs:element name="T-mesh_swap" type="tns:T-mesh_swapType"/>
+			<xs:element name="T-mesh_x" type="tns:T-mesh_xType"/>
+			<xs:element name="T-mesh_y" type="tns:T-mesh_yType"/>
+			<xs:element name="T-mesh_z" type="tns:T-mesh_zType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="T-mesh_number-of-points" type="xs:string"/>
+	<xs:element name="T-mesh_scale-factor" type="xs:string"/>
+	<xs:complexType name="T-mesh_swapType">
+		<xs:sequence>
+			<xs:element name="T-mesh_swap_E" type="tns:T-mesh_swap_EType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="T-mesh_swap_EType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="T-mesh_xType">
+		<xs:sequence>
+			<xs:element ref="tns:T-mesh_x_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="T-mesh_x_E" type="xs:string"/>
+	<xs:complexType name="T-mesh_yType">
+		<xs:sequence>
+			<xs:element ref="tns:T-mesh_y_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="T-mesh_y_E" type="xs:string"/>
+	<xs:complexType name="T-mesh_zType">
+		<xs:sequence>
+			<xs:element ref="tns:T-mesh_z_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="T-mesh_z_E" type="xs:string"/>
+	<xs:complexType name="TSeqType">
+		<xs:sequence>
+			<xs:element name="TSeq_seqtype" type="tns:TSeq_seqtypeType"/>
+			<xs:element ref="tns:TSeq_gi" minOccurs="0"/>
+			<xs:element ref="tns:TSeq_accver" minOccurs="0"/>
+			<xs:element ref="tns:TSeq_sid" minOccurs="0"/>
+			<xs:element ref="tns:TSeq_local" minOccurs="0"/>
+			<xs:element ref="tns:TSeq_taxid" minOccurs="0"/>
+			<xs:element ref="tns:TSeq_orgname" minOccurs="0"/>
+			<xs:element ref="tns:TSeq_defline"/>
+			<xs:element ref="tns:TSeq_length"/>
+			<xs:element ref="tns:TSeq_sequence"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="TSeqSet">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="TSeq" type="tns:TSeqType" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="TSeq_accver" type="xs:string"/>
+	<xs:element name="TSeq_defline" type="xs:string"/>
+	<xs:element name="TSeq_gi" type="xs:string"/>
+	<xs:element name="TSeq_length" type="xs:string"/>
+	<xs:element name="TSeq_local" type="xs:string"/>
+	<xs:element name="TSeq_orgname" type="xs:string"/>
+	<xs:complexType name="TSeq_seqtypeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="nucleotide"/>
+					<xs:enumeration value="protein"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="TSeq_sequence" type="xs:string"/>
+	<xs:element name="TSeq_sid" type="xs:string"/>
+	<xs:element name="TSeq_taxid" type="xs:string"/>
+	<xs:complexType name="TaxElementType">
+		<xs:sequence>
+			<xs:element name="TaxElement_fixed-level" type="tns:TaxElement_fixed-levelType"/>
+			<xs:element ref="tns:TaxElement_level" minOccurs="0"/>
+			<xs:element ref="tns:TaxElement_name"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="TaxElement_fixed-levelType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="other"/>
+							<xs:enumeration value="family"/>
+							<xs:enumeration value="order"/>
+							<xs:enumeration value="class"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="TaxElement_level" type="xs:string"/>
+	<xs:element name="TaxElement_name" type="xs:string"/>
+	<xs:complexType name="Taxon1-dataType">
+		<xs:sequence>
+			<xs:element name="Taxon1-data_org" type="tns:Taxon1-data_orgType" minOccurs="0"/>
+			<xs:element ref="tns:Taxon1-data_div"/>
+			<xs:element ref="tns:Taxon1-data_embl-code" minOccurs="0"/>
+			<xs:element name="Taxon1-data_is-species-level" type="tns:Taxon1-data_is-species-levelType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Taxon1-data_div" type="xs:string"/>
+	<xs:element name="Taxon1-data_embl-code" type="xs:string"/>
+	<xs:complexType name="Taxon1-data_is-species-levelType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Taxon1-data_orgType">
+		<xs:sequence>
+			<xs:element name="Org-ref" type="tns:Org-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon1-errorType">
+		<xs:sequence>
+			<xs:element name="Taxon1-error_level" type="tns:Taxon1-error_levelType"/>
+			<xs:element ref="tns:Taxon1-error_msg" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon1-error_levelType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="none"/>
+					<xs:enumeration value="info"/>
+					<xs:enumeration value="warn"/>
+					<xs:enumeration value="error"/>
+					<xs:enumeration value="fatal"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Taxon1-error_msg" type="xs:string"/>
+	<xs:complexType name="Taxon1-infoType">
+		<xs:sequence>
+			<xs:element ref="tns:Taxon1-info_ival1"/>
+			<xs:element ref="tns:Taxon1-info_ival2"/>
+			<xs:element ref="tns:Taxon1-info_sval" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Taxon1-info_ival1" type="xs:string"/>
+	<xs:element name="Taxon1-info_ival2" type="xs:string"/>
+	<xs:element name="Taxon1-info_sval" type="xs:string"/>
+	<xs:complexType name="Taxon1-nameType">
+		<xs:sequence>
+			<xs:element ref="tns:Taxon1-name_taxid"/>
+			<xs:element ref="tns:Taxon1-name_cde"/>
+			<xs:element ref="tns:Taxon1-name_oname" minOccurs="0"/>
+			<xs:element ref="tns:Taxon1-name_uname" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Taxon1-name_cde" type="xs:string"/>
+	<xs:element name="Taxon1-name_oname" type="xs:string"/>
+	<xs:element name="Taxon1-name_taxid" type="xs:string"/>
+	<xs:element name="Taxon1-name_uname" type="xs:string"/>
+	<xs:element name="Taxon1-req">
+		<xs:complexType>
+			<xs:choice>
+				<xs:element ref="tns:Taxon1-req_init"/>
+				<xs:element ref="tns:Taxon1-req_findname"/>
+				<xs:element ref="tns:Taxon1-req_getdesignator"/>
+				<xs:element ref="tns:Taxon1-req_getunique"/>
+				<xs:element name="Taxon1-req_getidbyorg" type="tns:Taxon1-req_getidbyorgType"/>
+				<xs:element ref="tns:Taxon1-req_getorgnames"/>
+				<xs:element ref="tns:Taxon1-req_getcde"/>
+				<xs:element ref="tns:Taxon1-req_getranks"/>
+				<xs:element ref="tns:Taxon1-req_getdivs"/>
+				<xs:element ref="tns:Taxon1-req_getgcs"/>
+				<xs:element ref="tns:Taxon1-req_getlineage"/>
+				<xs:element ref="tns:Taxon1-req_getchildren"/>
+				<xs:element ref="tns:Taxon1-req_getbyid"/>
+				<xs:element name="Taxon1-req_lookup" type="tns:Taxon1-req_lookupType"/>
+				<xs:element name="Taxon1-req_getorgmod" type="tns:Taxon1-req_getorgmodType"/>
+				<xs:element ref="tns:Taxon1-req_fini"/>
+				<xs:element ref="tns:Taxon1-req_id4gi"/>
+				<xs:element ref="tns:Taxon1-req_taxachildren"/>
+				<xs:element ref="tns:Taxon1-req_taxalineage"/>
+				<xs:element ref="tns:Taxon1-req_maxtaxid"/>
+				<xs:element ref="tns:Taxon1-req_getproptypes"/>
+				<xs:element name="Taxon1-req_getorgprop" type="tns:Taxon1-req_getorgpropType"/>
+				<xs:element name="Taxon1-req_searchname" type="tns:Taxon1-req_searchnameType"/>
+			</xs:choice>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="Taxon1-req_findname" type="xs:string"/>
+	<xs:element name="Taxon1-req_fini">
+		<xs:complexType/>
+	</xs:element>
+	<xs:element name="Taxon1-req_getbyid" type="xs:string"/>
+	<xs:element name="Taxon1-req_getcde">
+		<xs:complexType/>
+	</xs:element>
+	<xs:element name="Taxon1-req_getchildren" type="xs:string"/>
+	<xs:element name="Taxon1-req_getdesignator" type="xs:string"/>
+	<xs:element name="Taxon1-req_getdivs">
+		<xs:complexType/>
+	</xs:element>
+	<xs:element name="Taxon1-req_getgcs">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="Taxon1-req_getidbyorgType">
+		<xs:sequence>
+			<xs:element name="Org-ref" type="tns:Org-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Taxon1-req_getlineage" type="xs:string"/>
+	<xs:complexType name="Taxon1-req_getorgmodType">
+		<xs:sequence>
+			<xs:element name="Taxon1-info" type="tns:Taxon1-infoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Taxon1-req_getorgnames" type="xs:string"/>
+	<xs:complexType name="Taxon1-req_getorgpropType">
+		<xs:sequence>
+			<xs:element name="Taxon1-info" type="tns:Taxon1-infoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Taxon1-req_getproptypes">
+		<xs:complexType/>
+	</xs:element>
+	<xs:element name="Taxon1-req_getranks">
+		<xs:complexType/>
+	</xs:element>
+	<xs:element name="Taxon1-req_getunique" type="xs:string"/>
+	<xs:element name="Taxon1-req_id4gi" type="xs:string"/>
+	<xs:element name="Taxon1-req_init">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="Taxon1-req_lookupType">
+		<xs:sequence>
+			<xs:element name="Org-ref" type="tns:Org-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Taxon1-req_maxtaxid">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="Taxon1-req_searchnameType">
+		<xs:sequence>
+			<xs:element name="Taxon1-info" type="tns:Taxon1-infoType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Taxon1-req_taxachildren" type="xs:string"/>
+	<xs:element name="Taxon1-req_taxalineage" type="xs:string"/>
+	<xs:element name="Taxon1-resp">
+		<xs:complexType>
+			<xs:choice>
+				<xs:element name="Taxon1-resp_error" type="tns:Taxon1-resp_errorType"/>
+				<xs:element ref="tns:Taxon1-resp_init"/>
+				<xs:element name="Taxon1-resp_findname" type="tns:Taxon1-resp_findnameType"/>
+				<xs:element ref="tns:Taxon1-resp_getdesignator"/>
+				<xs:element ref="tns:Taxon1-resp_getunique"/>
+				<xs:element ref="tns:Taxon1-resp_getidbyorg"/>
+				<xs:element name="Taxon1-resp_getorgnames" type="tns:Taxon1-resp_getorgnamesType"/>
+				<xs:element name="Taxon1-resp_getcde" type="tns:Taxon1-resp_getcdeType"/>
+				<xs:element name="Taxon1-resp_getranks" type="tns:Taxon1-resp_getranksType"/>
+				<xs:element name="Taxon1-resp_getdivs" type="tns:Taxon1-resp_getdivsType"/>
+				<xs:element name="Taxon1-resp_getgcs" type="tns:Taxon1-resp_getgcsType"/>
+				<xs:element name="Taxon1-resp_getlineage" type="tns:Taxon1-resp_getlineageType"/>
+				<xs:element name="Taxon1-resp_getchildren" type="tns:Taxon1-resp_getchildrenType"/>
+				<xs:element name="Taxon1-resp_getbyid" type="tns:Taxon1-resp_getbyidType"/>
+				<xs:element name="Taxon1-resp_lookup" type="tns:Taxon1-resp_lookupType"/>
+				<xs:element name="Taxon1-resp_getorgmod" type="tns:Taxon1-resp_getorgmodType"/>
+				<xs:element ref="tns:Taxon1-resp_fini"/>
+				<xs:element ref="tns:Taxon1-resp_id4gi"/>
+				<xs:element name="Taxon1-resp_taxabyid" type="tns:Taxon1-resp_taxabyidType"/>
+				<xs:element name="Taxon1-resp_taxachildren" type="tns:Taxon1-resp_taxachildrenType"/>
+				<xs:element name="Taxon1-resp_taxalineage" type="tns:Taxon1-resp_taxalineageType"/>
+				<xs:element ref="tns:Taxon1-resp_maxtaxid"/>
+				<xs:element name="Taxon1-resp_getproptypes" type="tns:Taxon1-resp_getproptypesType"/>
+				<xs:element name="Taxon1-resp_getorgprop" type="tns:Taxon1-resp_getorgpropType"/>
+				<xs:element name="Taxon1-resp_searchname" type="tns:Taxon1-resp_searchnameType"/>
+			</xs:choice>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="Taxon1-resp_errorType">
+		<xs:sequence>
+			<xs:element name="Taxon1-error" type="tns:Taxon1-errorType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon1-resp_findnameType">
+		<xs:sequence>
+			<xs:element name="Taxon1-name" type="tns:Taxon1-nameType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Taxon1-resp_fini">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="Taxon1-resp_getbyidType">
+		<xs:sequence>
+			<xs:element name="Taxon1-data" type="tns:Taxon1-dataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon1-resp_getcdeType">
+		<xs:sequence>
+			<xs:element name="Taxon1-info" type="tns:Taxon1-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon1-resp_getchildrenType">
+		<xs:sequence>
+			<xs:element name="Taxon1-info" type="tns:Taxon1-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Taxon1-resp_getdesignator" type="xs:string"/>
+	<xs:complexType name="Taxon1-resp_getdivsType">
+		<xs:sequence>
+			<xs:element name="Taxon1-info" type="tns:Taxon1-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon1-resp_getgcsType">
+		<xs:sequence>
+			<xs:element name="Taxon1-info" type="tns:Taxon1-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Taxon1-resp_getidbyorg" type="xs:string"/>
+	<xs:complexType name="Taxon1-resp_getlineageType">
+		<xs:sequence>
+			<xs:element name="Taxon1-info" type="tns:Taxon1-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon1-resp_getorgmodType">
+		<xs:sequence>
+			<xs:element name="Taxon1-info" type="tns:Taxon1-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon1-resp_getorgnamesType">
+		<xs:sequence>
+			<xs:element name="Taxon1-name" type="tns:Taxon1-nameType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon1-resp_getorgpropType">
+		<xs:sequence>
+			<xs:element name="Taxon1-info" type="tns:Taxon1-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon1-resp_getproptypesType">
+		<xs:sequence>
+			<xs:element name="Taxon1-info" type="tns:Taxon1-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon1-resp_getranksType">
+		<xs:sequence>
+			<xs:element name="Taxon1-info" type="tns:Taxon1-infoType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Taxon1-resp_getunique" type="xs:string"/>
+	<xs:element name="Taxon1-resp_id4gi" type="xs:string"/>
+	<xs:element name="Taxon1-resp_init">
+		<xs:complexType/>
+	</xs:element>
+	<xs:complexType name="Taxon1-resp_lookupType">
+		<xs:sequence>
+			<xs:element name="Taxon1-data" type="tns:Taxon1-dataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Taxon1-resp_maxtaxid" type="xs:string"/>
+	<xs:complexType name="Taxon1-resp_searchnameType">
+		<xs:sequence>
+			<xs:element name="Taxon1-name" type="tns:Taxon1-nameType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon1-resp_taxabyidType">
+		<xs:sequence>
+			<xs:element name="Taxon2-data" type="tns:Taxon2-dataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon1-resp_taxachildrenType">
+		<xs:sequence>
+			<xs:element name="Taxon1-name" type="tns:Taxon1-nameType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon1-resp_taxalineageType">
+		<xs:sequence>
+			<xs:element name="Taxon1-name" type="tns:Taxon1-nameType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon2-dataType">
+		<xs:sequence>
+			<xs:element name="Taxon2-data_org" type="tns:Taxon2-data_orgType" minOccurs="0"/>
+			<xs:element name="Taxon2-data_blast-name" type="tns:Taxon2-data_blast-nameType" minOccurs="0"/>
+			<xs:element name="Taxon2-data_is-uncultured" type="tns:Taxon2-data_is-unculturedType"/>
+			<xs:element name="Taxon2-data_is-species-level" type="tns:Taxon2-data_is-species-levelType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Taxon2-data_blast-nameType">
+		<xs:sequence>
+			<xs:element ref="tns:Taxon2-data_blast-name_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Taxon2-data_blast-name_E" type="xs:string"/>
+	<xs:complexType name="Taxon2-data_is-species-levelType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Taxon2-data_is-unculturedType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Taxon2-data_orgType">
+		<xs:sequence>
+			<xs:element name="Org-ref" type="tns:Org-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="TemplateName" type="xs:string"/>
+	<xs:complexType name="Textseq-idType">
+		<xs:sequence>
+			<xs:element ref="tns:Textseq-id_name" minOccurs="0"/>
+			<xs:element ref="tns:Textseq-id_accession" minOccurs="0"/>
+			<xs:element ref="tns:Textseq-id_release" minOccurs="0"/>
+			<xs:element ref="tns:Textseq-id_version" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Textseq-id_accession" type="xs:string"/>
+	<xs:element name="Textseq-id_name" type="xs:string"/>
+	<xs:element name="Textseq-id_release" type="xs:string"/>
+	<xs:element name="Textseq-id_version" type="xs:string"/>
+	<xs:complexType name="TitleType">
+		<xs:sequence>
+			<xs:element name="Title_E" type="tns:Title_EType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Title-msgType">
+		<xs:sequence>
+			<xs:element name="Title-msg_type" type="tns:Title-msg_typeType"/>
+			<xs:element name="Title-msg_title" type="tns:Title-msg_titleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Title-msg-listType">
+		<xs:sequence>
+			<xs:element ref="tns:Title-msg-list_num"/>
+			<xs:element name="Title-msg-list_titles" type="tns:Title-msg-list_titlesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Title-msg-list_num" type="xs:string"/>
+	<xs:complexType name="Title-msg-list_titlesType">
+		<xs:sequence>
+			<xs:element name="Title-msg" type="tns:Title-msgType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Title-msg_titleType">
+		<xs:sequence>
+			<xs:element name="Title" type="tns:TitleType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Title-msg_typeType">
+		<xs:sequence>
+			<xs:element name="Title-type" type="tns:Title-typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Title-typeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="not-set"/>
+					<xs:enumeration value="name"/>
+					<xs:enumeration value="tsub"/>
+					<xs:enumeration value="trans"/>
+					<xs:enumeration value="jta"/>
+					<xs:enumeration value="iso-jta"/>
+					<xs:enumeration value="ml-jta"/>
+					<xs:enumeration value="coden"/>
+					<xs:enumeration value="issn"/>
+					<xs:enumeration value="abr"/>
+					<xs:enumeration value="isbn"/>
+					<xs:enumeration value="all"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Title_EType">
+		<xs:choice>
+			<xs:element ref="tns:Title_E_name"/>
+			<xs:element ref="tns:Title_E_tsub"/>
+			<xs:element ref="tns:Title_E_trans"/>
+			<xs:element ref="tns:Title_E_jta"/>
+			<xs:element ref="tns:Title_E_iso-jta"/>
+			<xs:element ref="tns:Title_E_ml-jta"/>
+			<xs:element ref="tns:Title_E_coden"/>
+			<xs:element ref="tns:Title_E_issn"/>
+			<xs:element ref="tns:Title_E_abr"/>
+			<xs:element ref="tns:Title_E_isbn"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="Title_E_abr" type="xs:string"/>
+	<xs:element name="Title_E_coden" type="xs:string"/>
+	<xs:element name="Title_E_isbn" type="xs:string"/>
+	<xs:element name="Title_E_iso-jta" type="xs:string"/>
+	<xs:element name="Title_E_issn" type="xs:string"/>
+	<xs:element name="Title_E_jta" type="xs:string"/>
+	<xs:element name="Title_E_ml-jta" type="xs:string"/>
+	<xs:element name="Title_E_name" type="xs:string"/>
+	<xs:element name="Title_E_trans" type="xs:string"/>
+	<xs:element name="Title_E_tsub" type="xs:string"/>
+	<xs:complexType name="Trans-matrixType">
+		<xs:sequence>
+			<xs:element ref="tns:Trans-matrix_scale-factor"/>
+			<xs:element ref="tns:Trans-matrix_tran-1"/>
+			<xs:element ref="tns:Trans-matrix_tran-2"/>
+			<xs:element ref="tns:Trans-matrix_tran-3"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Trans-matrix_scale-factor" type="xs:string"/>
+	<xs:element name="Trans-matrix_tran-1" type="xs:string"/>
+	<xs:element name="Trans-matrix_tran-2" type="xs:string"/>
+	<xs:element name="Trans-matrix_tran-3" type="xs:string"/>
+	<xs:complexType name="TransformType">
+		<xs:sequence>
+			<xs:element ref="tns:Transform_id"/>
+			<xs:element name="Transform_moves" type="tns:Transform_movesType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Transform_id" type="xs:string"/>
+	<xs:complexType name="Transform_movesType">
+		<xs:sequence>
+			<xs:element name="Move" type="tns:MoveType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="TriangleType">
+		<xs:sequence>
+			<xs:element ref="tns:Triangle_nelements"/>
+			<xs:element name="Triangle_scores" type="tns:Triangle_scoresType" minOccurs="0"/>
+			<xs:element name="Triangle_div-ranks" type="tns:Triangle_div-ranksType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Triangle_div-ranksType">
+		<xs:sequence>
+			<xs:element ref="tns:Triangle_div-ranks_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Triangle_div-ranks_E" type="xs:string"/>
+	<xs:element name="Triangle_nelements" type="xs:string"/>
+	<xs:complexType name="Triangle_scoresType">
+		<xs:sequence>
+			<xs:element name="Score-set" type="tns:Score-setType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="TrianglesType">
+		<xs:sequence>
+			<xs:element ref="tns:Triangles_number-of-points"/>
+			<xs:element ref="tns:Triangles_scale-factor"/>
+			<xs:element name="Triangles_x" type="tns:Triangles_xType"/>
+			<xs:element name="Triangles_y" type="tns:Triangles_yType"/>
+			<xs:element name="Triangles_z" type="tns:Triangles_zType"/>
+			<xs:element ref="tns:Triangles_number-of-triangles"/>
+			<xs:element name="Triangles_v1" type="tns:Triangles_v1Type"/>
+			<xs:element name="Triangles_v2" type="tns:Triangles_v2Type"/>
+			<xs:element name="Triangles_v3" type="tns:Triangles_v3Type"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Triangles_number-of-points" type="xs:string"/>
+	<xs:element name="Triangles_number-of-triangles" type="xs:string"/>
+	<xs:element name="Triangles_scale-factor" type="xs:string"/>
+	<xs:complexType name="Triangles_v1Type">
+		<xs:sequence>
+			<xs:element ref="tns:Triangles_v1_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Triangles_v1_E" type="xs:string"/>
+	<xs:complexType name="Triangles_v2Type">
+		<xs:sequence>
+			<xs:element ref="tns:Triangles_v2_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Triangles_v2_E" type="xs:string"/>
+	<xs:complexType name="Triangles_v3Type">
+		<xs:sequence>
+			<xs:element ref="tns:Triangles_v3_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Triangles_v3_E" type="xs:string"/>
+	<xs:complexType name="Triangles_xType">
+		<xs:sequence>
+			<xs:element ref="tns:Triangles_x_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Triangles_x_E" type="xs:string"/>
+	<xs:complexType name="Triangles_yType">
+		<xs:sequence>
+			<xs:element ref="tns:Triangles_y_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Triangles_y_E" type="xs:string"/>
+	<xs:complexType name="Triangles_zType">
+		<xs:sequence>
+			<xs:element ref="tns:Triangles_z_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Triangles_z_E" type="xs:string"/>
+	<xs:complexType name="Trna-extType">
+		<xs:sequence>
+			<xs:element name="Trna-ext_aa" type="tns:Trna-ext_aaType" minOccurs="0"/>
+			<xs:element name="Trna-ext_codon" type="tns:Trna-ext_codonType" minOccurs="0"/>
+			<xs:element name="Trna-ext_anticodon" type="tns:Trna-ext_anticodonType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Trna-ext_aaType">
+		<xs:choice>
+			<xs:element ref="tns:Trna-ext_aa_iupacaa"/>
+			<xs:element ref="tns:Trna-ext_aa_ncbieaa"/>
+			<xs:element ref="tns:Trna-ext_aa_ncbi8aa"/>
+			<xs:element ref="tns:Trna-ext_aa_ncbistdaa"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:element name="Trna-ext_aa_iupacaa" type="xs:string"/>
+	<xs:element name="Trna-ext_aa_ncbi8aa" type="xs:string"/>
+	<xs:element name="Trna-ext_aa_ncbieaa" type="xs:string"/>
+	<xs:element name="Trna-ext_aa_ncbistdaa" type="xs:string"/>
+	<xs:complexType name="Trna-ext_anticodonType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Trna-ext_codonType">
+		<xs:sequence>
+			<xs:element ref="tns:Trna-ext_codon_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Trna-ext_codon_E" type="xs:string"/>
+	<xs:complexType name="Tx-evidenceType">
+		<xs:sequence>
+			<xs:element name="Tx-evidence_exp-code" type="tns:Tx-evidence_exp-codeType"/>
+			<xs:element name="Tx-evidence_expression-system" type="tns:Tx-evidence_expression-systemType" minOccurs="0"/>
+			<xs:element name="Tx-evidence_low-prec-data" type="tns:Tx-evidence_low-prec-dataType" minOccurs="0"/>
+			<xs:element name="Tx-evidence_from-homolog" type="tns:Tx-evidence_from-homologType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Tx-evidence_exp-codeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="unknown"/>
+					<xs:enumeration value="rna-seq"/>
+					<xs:enumeration value="rna-size"/>
+					<xs:enumeration value="np-map"/>
+					<xs:enumeration value="np-size"/>
+					<xs:enumeration value="pe-seq"/>
+					<xs:enumeration value="cDNA-seq"/>
+					<xs:enumeration value="pe-map"/>
+					<xs:enumeration value="pe-size"/>
+					<xs:enumeration value="pseudo-seq"/>
+					<xs:enumeration value="rev-pe-map"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Tx-evidence_expression-systemType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="unknown"/>
+					<xs:enumeration value="physiological"/>
+					<xs:enumeration value="in-vitro"/>
+					<xs:enumeration value="oocyte"/>
+					<xs:enumeration value="transfection"/>
+					<xs:enumeration value="transgenic"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Tx-evidence_from-homologType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Tx-evidence_low-prec-dataType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="TxinitType">
+		<xs:sequence>
+			<xs:element ref="tns:Txinit_name"/>
+			<xs:element name="Txinit_syn" type="tns:Txinit_synType" minOccurs="0"/>
+			<xs:element name="Txinit_gene" type="tns:Txinit_geneType" minOccurs="0"/>
+			<xs:element name="Txinit_protein" type="tns:Txinit_proteinType" minOccurs="0"/>
+			<xs:element name="Txinit_rna" type="tns:Txinit_rnaType" minOccurs="0"/>
+			<xs:element ref="tns:Txinit_expression" minOccurs="0"/>
+			<xs:element name="Txinit_txsystem" type="tns:Txinit_txsystemType"/>
+			<xs:element ref="tns:Txinit_txdescr" minOccurs="0"/>
+			<xs:element name="Txinit_txorg" type="tns:Txinit_txorgType" minOccurs="0"/>
+			<xs:element name="Txinit_mapping-precise" type="tns:Txinit_mapping-preciseType" minOccurs="0"/>
+			<xs:element name="Txinit_location-accurate" type="tns:Txinit_location-accurateType" minOccurs="0"/>
+			<xs:element name="Txinit_inittype" type="tns:Txinit_inittypeType" minOccurs="0"/>
+			<xs:element name="Txinit_evidence" type="tns:Txinit_evidenceType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Txinit_evidenceType">
+		<xs:sequence>
+			<xs:element name="Tx-evidence" type="tns:Tx-evidenceType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Txinit_expression" type="xs:string"/>
+	<xs:complexType name="Txinit_geneType">
+		<xs:sequence>
+			<xs:element name="Gene-ref" type="tns:Gene-refType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Txinit_inittypeType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="unknown"/>
+					<xs:enumeration value="single"/>
+					<xs:enumeration value="multiple"/>
+					<xs:enumeration value="region"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Txinit_location-accurateType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Txinit_mapping-preciseType">
+		<xs:attribute name="value">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Txinit_name" type="xs:string"/>
+	<xs:complexType name="Txinit_proteinType">
+		<xs:sequence>
+			<xs:element name="Prot-ref" type="tns:Prot-refType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Txinit_rnaType">
+		<xs:sequence>
+			<xs:element ref="tns:Txinit_rna_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Txinit_rna_E" type="xs:string"/>
+	<xs:complexType name="Txinit_synType">
+		<xs:sequence>
+			<xs:element ref="tns:Txinit_syn_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Txinit_syn_E" type="xs:string"/>
+	<xs:element name="Txinit_txdescr" type="xs:string"/>
+	<xs:complexType name="Txinit_txorgType">
+		<xs:sequence>
+			<xs:element name="Org-ref" type="tns:Org-refType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Txinit_txsystemType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="unknown"/>
+					<xs:enumeration value="pol1"/>
+					<xs:enumeration value="pol2"/>
+					<xs:enumeration value="pol3"/>
+					<xs:enumeration value="bacterial"/>
+					<xs:enumeration value="viral"/>
+					<xs:enumeration value="rna"/>
+					<xs:enumeration value="organelle"/>
+					<xs:enumeration value="other"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="Update-alignType">
+		<xs:sequence>
+			<xs:element name="Update-align_description" type="tns:Update-align_descriptionType" minOccurs="0"/>
+			<xs:element name="Update-align_seqannot" type="tns:Update-align_seqannotType" minOccurs="0"/>
+			<xs:element name="Update-align_type" type="tns:Update-align_typeType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Update-align_descriptionType">
+		<xs:sequence>
+			<xs:element name="Update-comment" type="tns:Update-commentType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Update-align_seqannotType">
+		<xs:sequence>
+			<xs:element name="Seq-annot" type="tns:Seq-annotType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Update-align_typeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="value">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="unassigned"/>
+							<xs:enumeration value="update"/>
+							<xs:enumeration value="update-3d"/>
+							<xs:enumeration value="demoted"/>
+							<xs:enumeration value="demoted-3d"/>
+							<xs:enumeration value="other"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="Update-commentType">
+		<xs:choice>
+			<xs:element ref="tns:Update-comment_comment"/>
+			<xs:element name="Update-comment_addthis" type="tns:Update-comment_addthisType"/>
+			<xs:element name="Update-comment_replaces" type="tns:Update-comment_replacesType"/>
+			<xs:element name="Update-comment_reject-loc" type="tns:Update-comment_reject-locType"/>
+			<xs:element name="Update-comment_reference" type="tns:Update-comment_referenceType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="Update-comment_addthisType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Update-comment_comment" type="xs:string"/>
+	<xs:complexType name="Update-comment_referenceType">
+		<xs:sequence>
+			<xs:element name="Pub" type="tns:PubType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Update-comment_reject-locType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="Update-comment_replacesType">
+		<xs:sequence>
+			<xs:element name="Seq-loc" type="tns:Seq-locType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="User-fieldType">
+		<xs:sequence>
+			<xs:element name="User-field_label" type="tns:User-field_labelType"/>
+			<xs:element ref="tns:User-field_num" minOccurs="0"/>
+			<xs:element name="User-field_data" type="tns:User-field_dataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="User-field_dataType">
+		<xs:choice>
+			<xs:element ref="tns:User-field_data_str"/>
+			<xs:element ref="tns:User-field_data_int"/>
+			<xs:element ref="tns:User-field_data_real"/>
+			<xs:element name="User-field_data_bool" type="tns:User-field_data_boolType"/>
+			<xs:element ref="tns:User-field_data_os"/>
+			<xs:element name="User-field_data_object" type="tns:User-field_data_objectType"/>
+			<xs:element name="User-field_data_strs" type="tns:User-field_data_strsType"/>
+			<xs:element name="User-field_data_ints" type="tns:User-field_data_intsType"/>
+			<xs:element name="User-field_data_reals" type="tns:User-field_data_realsType"/>
+			<xs:element name="User-field_data_oss" type="tns:User-field_data_ossType"/>
+			<xs:element name="User-field_data_fields" type="tns:User-field_data_fieldsType"/>
+			<xs:element name="User-field_data_objects" type="tns:User-field_data_objectsType"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="User-field_data_boolType">
+		<xs:attribute name="value" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="true"/>
+					<xs:enumeration value="false"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="User-field_data_fieldsType">
+		<xs:sequence>
+			<xs:element name="User-field" type="tns:User-fieldType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="User-field_data_int" type="xs:string"/>
+	<xs:complexType name="User-field_data_intsType">
+		<xs:sequence>
+			<xs:element ref="tns:User-field_data_ints_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="User-field_data_ints_E" type="xs:string"/>
+	<xs:complexType name="User-field_data_objectType">
+		<xs:sequence>
+			<xs:element name="User-object" type="tns:User-objectType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="User-field_data_objectsType">
+		<xs:sequence>
+			<xs:element name="User-object" type="tns:User-objectType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="User-field_data_os" type="xs:string"/>
+	<xs:complexType name="User-field_data_ossType">
+		<xs:sequence>
+			<xs:element ref="tns:User-field_data_oss_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="User-field_data_oss_E" type="xs:string"/>
+	<xs:element name="User-field_data_real" type="xs:string"/>
+	<xs:complexType name="User-field_data_realsType">
+		<xs:sequence>
+			<xs:element ref="tns:User-field_data_reals_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="User-field_data_reals_E" type="xs:string"/>
+	<xs:element name="User-field_data_str" type="xs:string"/>
+	<xs:complexType name="User-field_data_strsType">
+		<xs:sequence>
+			<xs:element ref="tns:User-field_data_strs_E" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="User-field_data_strs_E" type="xs:string"/>
+	<xs:complexType name="User-field_labelType">
+		<xs:sequence>
+			<xs:element name="Object-id" type="tns:Object-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="User-field_num" type="xs:string"/>
+	<xs:complexType name="User-objectType">
+		<xs:sequence>
+			<xs:element ref="tns:User-object_class" minOccurs="0"/>
+			<xs:element name="User-object_type" type="tns:User-object_typeType"/>
+			<xs:element name="User-object_data" type="tns:User-object_dataType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="User-object_class" type="xs:string"/>
+	<xs:complexType name="User-object_dataType">
+		<xs:sequence>
+			<xs:element name="User-field" type="tns:User-fieldType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="User-object_typeType">
+		<xs:sequence>
+			<xs:element name="Object-id" type="tns:Object-idType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="UserFormatType">
+		<xs:sequence>
+			<xs:element ref="tns:UserFormat_printfunc"/>
+			<xs:element ref="tns:UserFormat_defaultfunc" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="UserFormat_defaultfunc" type="xs:string"/>
+	<xs:element name="UserFormat_printfunc" type="xs:string"/>
+	<xs:complexType name="Xtra-TermsType">
+		<xs:sequence>
+			<xs:element ref="tns:Xtra-Terms_tag"/>
+			<xs:element ref="tns:Xtra-Terms_value"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Xtra-Terms_tag" type="xs:string"/>
+	<xs:element name="Xtra-Terms_value" type="xs:string"/>
+</xs:schema>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch_nlmc.xsd b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch_nlmc.xsd
new file mode 100644
index 0000000..6596cd6
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch_nlmc.xsd
@@ -0,0 +1,1021 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.ncbi.nlm.nih.gov/soap/eutils/efetch" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.ncbi.nlm.nih.gov/soap/eutils/efetch" elementFormDefault="qualified">
+    
+    <!--    version="1.5" -->
+    <!-- http://www.nlm.nih.gov/databases/dtd/nlmcatalogrecord_060101.dtd date: 01/09/2006 -->
+
+    <xs:complexType name="AbstractType">
+		<xs:sequence>
+			<xs:element ref="tns:AbstractText"/>
+			<xs:element ref="tns:CopyrightInformation" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="AbstractText" type="xs:string"/>
+	<xs:element name="AccessionNumber" type="xs:string"/>
+	<xs:complexType name="AccessionNumberListType">
+		<xs:sequence>
+			<xs:element ref="tns:AccessionNumber" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="AcquisitionInfoType">
+		<xs:sequence>
+			<xs:element ref="tns:StockNumber" minOccurs="0"/>
+			<xs:element ref="tns:AcquisitionSource" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="AcquisitionInfoListType">
+		<xs:sequence>
+			<xs:element name="AcquisitionInfo" type="tns:AcquisitionInfoType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="AcquisitionSource" type="xs:string"/>
+	<xs:element name="Acronym" type="xs:string"/>
+	<xs:element name="Affiliation" type="xs:string"/>
+	<xs:element name="Agency" type="xs:string"/>
+	<xs:complexType name="ArticleType">
+		<xs:sequence>
+			<xs:element name="Journal" type="tns:JournalType"/>
+			<xs:element name="Book" type="tns:BookType"/>
+			<xs:element ref="tns:ArticleTitle" minOccurs="0"/>
+			<xs:element name="Pagination" type="tns:PaginationType"/>
+			<xs:element name="Abstract" type="tns:AbstractType" minOccurs="0"/>
+			<xs:element ref="tns:Affiliation" minOccurs="0"/>
+			<xs:element name="AuthorList" type="tns:AuthorListType" minOccurs="0"/>
+			<xs:element ref="tns:Language" maxOccurs="unbounded"/>
+			<xs:element name="DataBankList" type="tns:DataBankListType" minOccurs="0"/>
+			<xs:element name="GrantList" type="tns:GrantListType" minOccurs="0"/>
+			<xs:element name="PublicationTypeList" type="tns:PublicationTypeListType" minOccurs="0"/>
+			<xs:element ref="tns:VernacularTitle" minOccurs="0"/>
+			<xs:element name="ArticleDate" type="tns:ArticleDateType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ArticleDateType">
+		<xs:sequence>
+			<xs:element ref="tns:Year"/>
+			<xs:element ref="tns:Month"/>
+			<xs:element ref="tns:Day"/>
+			<xs:sequence minOccurs="0">
+				<xs:element ref="tns:Hour"/>
+				<xs:sequence minOccurs="0">
+					<xs:element ref="tns:Minute"/>
+					<xs:element ref="tns:Second" minOccurs="0"/>
+				</xs:sequence>
+			</xs:sequence>
+		</xs:sequence>
+		<xs:attribute name="DateType" type="xs:string" fixed="Electronic"/>
+	</xs:complexType>
+	<xs:element name="ArticleTitle" type="xs:string"/>
+	<xs:complexType name="AuthorType_nlmc">
+		<xs:sequence>
+            <xs:element ref="tns:LastName"/>
+            <xs:element ref="tns:ForeName"/>
+            <xs:element ref="tns:FirstName"/>
+            <xs:element ref="tns:MiddleName" minOccurs="0"/>
+            <xs:element ref="tns:Initials" minOccurs="0"/>
+            <xs:element ref="tns:Suffix" minOccurs="0"/>
+            <xs:element ref="tns:CollectiveName"/>
+            <xs:element ref="tns:Affiliation" minOccurs="0"/>
+            <xs:element ref="tns:DatesAssociatedWithName" minOccurs="0"/>
+            <xs:element ref="tns:NameQualifier" minOccurs="0"/>
+            <xs:element ref="tns:OtherInformation" minOccurs="0"/>
+            <xs:element ref="tns:TitleAssociatedWithName" minOccurs="0"/>
+		</xs:sequence>
+		<xs:attribute name="ValidYN" default="Y">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="Y"/>
+					<xs:enumeration value="N"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="AuthorListType">
+		<xs:sequence>
+			<xs:element name="Author" type="tns:AuthorType_nlmc" maxOccurs="unbounded"/>
+		</xs:sequence>
+		<xs:attribute name="CompleteYN" default="Y">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="Y"/>
+					<xs:enumeration value="N"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="BookType">
+		<xs:sequence>
+			<xs:element name="PubDate" type="tns:PubDateType" minOccurs="0"/>
+			<xs:element name="Publisher" type="tns:PublisherType"/>
+			<xs:element ref="tns:Title"/>
+			<xs:element name="AuthorList" type="tns:AuthorListType" minOccurs="0"/>
+			<xs:element ref="tns:CollectionTitle" minOccurs="0"/>
+			<xs:element ref="tns:Volume" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="BroadJournalHeading" type="xs:string"/>
+	<xs:complexType name="BroadJournalHeadingListType">
+		<xs:sequence>
+			<xs:element ref="tns:BroadJournalHeading" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ChapterPgn" type="xs:string"/>
+	<xs:complexType name="ChemicalType">
+		<xs:sequence>
+			<xs:element ref="tns:RegistryNumber"/>
+			<xs:element ref="tns:NameOfSubstance"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ChemicalListType">
+		<xs:sequence>
+			<xs:element name="Chemical" type="tns:ChemicalType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ClassificationType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="NLMCallNumberYN" default="Y">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Y"/>
+							<xs:enumeration value="N"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+				<xs:attribute name="Authority" default="Undetermined">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="KIE"/>
+							<xs:enumeration value="MARC"/>
+							<xs:enumeration value="NLM"/>
+							<xs:enumeration value="Other"/>
+							<xs:enumeration value="Undetermined"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+				<xs:attribute name="CallNumberType" default="Other">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="NLMClass"/>
+							<xs:enumeration value="Other"/>
+							<xs:enumeration value="ShelvingNumber"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="Coden" type="xs:string"/>
+	<xs:complexType name="CollaborativePartnerDateType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="Owner" default="Undetermined">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="HMD"/>
+							<xs:enumeration value="HSR"/>
+							<xs:enumeration value="KIE"/>
+							<xs:enumeration value="NASA"/>
+							<xs:enumeration value="NCBI"/>
+							<xs:enumeration value="NLM"/>
+							<xs:enumeration value="NOTNLM"/>
+							<xs:enumeration value="NYA"/>
+							<xs:enumeration value="PIP"/>
+							<xs:enumeration value="Undetermined"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+				<xs:attribute name="CollaborativeStatus" default="Other">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Create"/>
+							<xs:enumeration value="In-House-Review"/>
+							<xs:enumeration value="Other"/>
+							<xs:enumeration value="Released"/>
+							<xs:enumeration value="Review"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="CollectionTitle" type="xs:string"/>
+	<xs:element name="CollectiveName" type="xs:string"/>
+	<xs:element name="ContentsNote" type="xs:string"/>
+	<xs:element name="CopyrightInformation" type="xs:string"/>
+	<xs:element name="Country" type="xs:string"/>
+	<xs:element name="Coverage" type="xs:string"/>
+	<xs:complexType name="DataBankType">
+		<xs:sequence>
+			<xs:element ref="tns:DataBankName"/>
+			<xs:element name="AccessionNumberList" type="tns:AccessionNumberListType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="DataBankListType">
+		<xs:sequence>
+			<xs:element name="DataBank" type="tns:DataBankType" maxOccurs="unbounded"/>
+		</xs:sequence>
+		<xs:attribute name="CompleteYN" default="Y">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="Y"/>
+					<xs:enumeration value="N"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="DataBankName" type="xs:string"/>
+	<xs:complexType name="DateAuthorizedType">
+		<xs:sequence>
+			<xs:element ref="tns:Year"/>
+			<xs:element ref="tns:Month"/>
+			<xs:element ref="tns:Day"/>
+			<xs:sequence minOccurs="0">
+				<xs:element ref="tns:Hour"/>
+				<xs:sequence minOccurs="0">
+					<xs:element ref="tns:Minute"/>
+					<xs:element ref="tns:Second" minOccurs="0"/>
+				</xs:sequence>
+			</xs:sequence>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="DateCompletedType">
+		<xs:sequence>
+			<xs:element ref="tns:Year"/>
+			<xs:element ref="tns:Month"/>
+			<xs:element ref="tns:Day"/>
+			<xs:sequence minOccurs="0">
+				<xs:element ref="tns:Hour"/>
+				<xs:sequence minOccurs="0">
+					<xs:element ref="tns:Minute"/>
+					<xs:element ref="tns:Second" minOccurs="0"/>
+				</xs:sequence>
+			</xs:sequence>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="DateCreatedType">
+		<xs:sequence>
+			<xs:element ref="tns:Year"/>
+			<xs:element ref="tns:Month"/>
+			<xs:element ref="tns:Day"/>
+			<xs:sequence minOccurs="0">
+				<xs:element ref="tns:Hour"/>
+				<xs:sequence minOccurs="0">
+					<xs:element ref="tns:Minute"/>
+					<xs:element ref="tns:Second" minOccurs="0"/>
+				</xs:sequence>
+			</xs:sequence>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="DateIssuedType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="ImprintType" default="Current">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Current"/>
+							<xs:enumeration value="Original"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="DateRevisedType">
+		<xs:sequence>
+			<xs:element ref="tns:Year"/>
+			<xs:element ref="tns:Month"/>
+			<xs:element ref="tns:Day"/>
+			<xs:sequence minOccurs="0">
+				<xs:element ref="tns:Hour"/>
+				<xs:sequence minOccurs="0">
+					<xs:element ref="tns:Minute"/>
+					<xs:element ref="tns:Second" minOccurs="0"/>
+				</xs:sequence>
+			</xs:sequence>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="DateRevisedMajorType">
+		<xs:sequence>
+			<xs:element ref="tns:Year"/>
+			<xs:element ref="tns:Month"/>
+			<xs:element ref="tns:Day"/>
+			<xs:sequence minOccurs="0">
+				<xs:element ref="tns:Hour"/>
+				<xs:sequence minOccurs="0">
+					<xs:element ref="tns:Minute"/>
+					<xs:element ref="tns:Second" minOccurs="0"/>
+				</xs:sequence>
+			</xs:sequence>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="DatesAssociatedWithName" type="xs:string"/>
+	<xs:element name="DatesOfSerialPublication" type="xs:string"/>
+	<xs:element name="Day" type="xs:string"/>
+	<xs:complexType name="DeleteCatalogRecordType">
+		<xs:sequence>
+			<xs:element ref="tns:NlmUniqueID" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="DescriptiveInformation" type="xs:string"/>
+	<xs:complexType name="DescriptorNameType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="MajorTopicYN" default="N">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Y"/>
+							<xs:enumeration value="N"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="Edition" type="xs:string"/>
+	<xs:complexType name="ElectronicAccessType">
+		<xs:sequence>
+			<xs:element ref="tns:ElectronicAddress" minOccurs="0"/>
+			<xs:element ref="tns:DescriptiveInformation" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ElectronicAccessListType">
+		<xs:sequence>
+			<xs:element name="ElectronicAccess" type="tns:ElectronicAccessType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ElectronicAddress" type="xs:string"/>
+	<xs:element name="EndPage" type="xs:string"/>
+	<xs:element name="Extent" type="xs:string"/>
+	<xs:element name="FirstName" type="xs:string"/>
+	<xs:element name="ForeName" type="xs:string"/>
+	<xs:element name="Form" type="xs:string"/>
+	<xs:complexType name="FrequencyType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="FrequencyType" default="Current">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Current"/>
+							<xs:enumeration value="Former"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="GeneralNoteType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="Owner" default="Undetermined">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="HMD"/>
+							<xs:enumeration value="HSR"/>
+							<xs:enumeration value="KIE"/>
+							<xs:enumeration value="NASA"/>
+							<xs:enumeration value="NCBI"/>
+							<xs:enumeration value="NLM"/>
+							<xs:enumeration value="NOTNLM"/>
+							<xs:enumeration value="NYA"/>
+							<xs:enumeration value="PIP"/>
+							<xs:enumeration value="Undetermined"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="Genre" type="xs:string"/>
+	<xs:complexType name="GenreListType">
+		<xs:sequence>
+			<xs:element ref="tns:Genre" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="GovDocClassNumberType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="ValidYN" default="Y">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Y"/>
+							<xs:enumeration value="N"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="GrantType">
+		<xs:sequence>
+			<xs:element ref="tns:GrantID" minOccurs="0"/>
+			<xs:element ref="tns:Acronym" minOccurs="0"/>
+			<xs:element ref="tns:Agency" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GrantID" type="xs:string"/>
+	<xs:complexType name="GrantListType">
+		<xs:sequence>
+			<xs:element name="Grant" type="tns:GrantType" maxOccurs="unbounded"/>
+		</xs:sequence>
+		<xs:attribute name="CompleteYN" default="Y">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="Y"/>
+					<xs:enumeration value="N"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="Host" type="xs:string"/>
+	<xs:element name="Hour" type="xs:string"/>
+	<xs:complexType name="ISBNType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="ValidYN" default="Y">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Y"/>
+							<xs:enumeration value="N"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="ISOAbbreviation" type="xs:string"/>
+	<xs:complexType name="ISSNType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="IssnType" use="required">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Electronic"/>
+							<xs:enumeration value="Print"/>
+							<xs:enumeration value="Undetermined"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+				<xs:attribute name="ValidYN" default="Y">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Y"/>
+							<xs:enumeration value="N"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="ImprintType_nlmc">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="ImprintType" default="Current">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Current"/>
+							<xs:enumeration value="Original"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="IndexingSourceType">
+		<xs:sequence>
+			<xs:element name="IndexingSourceName" type="tns:IndexingSourceNameType"/>
+			<xs:element ref="tns:Coverage" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="IndexingSourceListType">
+		<xs:sequence>
+			<xs:element name="IndexingSource" type="tns:IndexingSourceType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="IndexingSourceNameType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="IndexingTreatment" type="xs:string"/>
+				<xs:attribute name="IndexingStatus" type="xs:string"/>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="Initials" type="xs:string"/>
+	<xs:complexType name="InvestigatorType">
+		<xs:sequence>
+            <xs:element ref="tns:LastName"/>
+            <xs:element ref="tns:ForeName"/>
+            <xs:element ref="tns:FirstName"/>
+            <xs:element ref="tns:MiddleName" minOccurs="0"/>
+            <xs:element ref="tns:Initials" minOccurs="0"/>
+            <xs:element ref="tns:Suffix" minOccurs="0"/>
+            <xs:element ref="tns:Affiliation" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="InvestigatorListType">
+		<xs:sequence>
+			<xs:element name="Investigator" type="tns:InvestigatorType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="Issuance" type="xs:string"/>
+	<xs:element name="Issue" type="xs:string"/>
+	<xs:complexType name="JournalType">
+		<xs:sequence>
+			<xs:element name="ISSN" type="tns:ISSNType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="JournalIssue" type="tns:JournalIssueType"/>
+			<xs:element ref="tns:Coden" minOccurs="0"/>
+			<xs:element ref="tns:Title" minOccurs="0"/>
+			<xs:element ref="tns:ISOAbbreviation" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="JournalIssueType">
+		<xs:sequence>
+			<xs:element ref="tns:Volume" minOccurs="0"/>
+			<xs:element ref="tns:Issue" minOccurs="0"/>
+			<xs:element name="PubDate" type="tns:PubDateType" minOccurs="0"/>
+		</xs:sequence>
+		<xs:attribute name="CitedMedium" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="Internet"/>
+					<xs:enumeration value="Print"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="KeywordType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="MajorTopicYN" default="N">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Y"/>
+							<xs:enumeration value="N"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="KeywordListType">
+		<xs:sequence>
+			<xs:element name="Keyword" type="tns:KeywordType" maxOccurs="unbounded"/>
+		</xs:sequence>
+		<xs:attribute name="Owner" default="NLM">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="HMD"/>
+					<xs:enumeration value="HSR"/>
+					<xs:enumeration value="KIE"/>
+					<xs:enumeration value="NASA"/>
+					<xs:enumeration value="NCBI"/>
+					<xs:enumeration value="NLM"/>
+					<xs:enumeration value="NOTNLM"/>
+					<xs:enumeration value="NYA"/>
+					<xs:enumeration value="PIP"/>
+					<xs:enumeration value="Undetermined"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="LCCNType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="ValidYN" default="Y">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Y"/>
+							<xs:enumeration value="N"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="Language" type="xs:string"/>
+	<xs:complexType name="LanguageAlternateType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="LangType" type="xs:string"/>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="LastName" type="xs:string"/>
+	<xs:complexType name="LocalNoteType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="LocalNoteType" default="Other">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="DashedOn"/>
+							<xs:enumeration value="Other"/>
+							<xs:enumeration value="PreservationAction"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="MedlineDate" type="xs:string"/>
+	<xs:complexType name="MedlineJournalInfoType">
+		<xs:sequence>
+			<xs:element ref="tns:Country" minOccurs="0"/>
+			<xs:element ref="tns:MedlineTA"/>
+			<xs:element ref="tns:NlmUniqueID" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MedlinePgn" type="xs:string"/>
+	<xs:element name="MedlineTA" type="xs:string"/>
+	<xs:complexType name="MeshHeadingType">
+		<xs:sequence>
+			<xs:element name="DescriptorName" type="tns:DescriptorNameType"/>
+			<xs:element name="QualifierName" type="tns:QualifierNameType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MeshHeadingListType">
+		<xs:sequence>
+			<xs:element name="MeshHeading" type="tns:MeshHeadingType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="MiddleName" type="xs:string"/>
+	<xs:element name="Minute" type="xs:string"/>
+	<xs:element name="Month" type="xs:string"/>
+	<xs:element name="NCBIArticle">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="tns:PMID"/>
+				<xs:element name="Article" type="tns:ArticleType"/>
+				<xs:element name="MedlineJournalInfo" type="tns:MedlineJournalInfoType" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="NCBIIssnAlias" type="xs:string"/>
+	<xs:complexType name="NLMCatalogRecordType">
+		<xs:sequence>
+			<xs:element ref="tns:NlmUniqueID"/>
+			<xs:element name="DateCreated" type="tns:DateCreatedType"/>
+			<xs:element name="DateRevised" type="tns:DateRevisedType"/>
+			<xs:element name="DateAuthorized" type="tns:DateAuthorizedType" minOccurs="0"/>
+			<xs:element name="DateCompleted" type="tns:DateCompletedType" minOccurs="0"/>
+			<xs:element name="DateRevisedMajor" type="tns:DateRevisedMajorType" minOccurs="0"/>
+			<xs:element name="CollaborativePartnerDate" type="tns:CollaborativePartnerDateType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="TitleMain" type="tns:TitleMainType"/>
+			<xs:element ref="tns:MedlineTA" minOccurs="0"/>
+			<xs:element name="TitleOther" type="tns:TitleOtherType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="AuthorList" type="tns:AuthorListType" minOccurs="0"/>
+			<xs:element name="InvestigatorList" type="tns:InvestigatorListType" minOccurs="0"/>
+			<xs:element name="ResourceInfo" type="tns:ResourceInfoType"/>
+			<xs:element name="PublicationTypeList" type="tns:PublicationTypeListType" minOccurs="0"/>
+			<xs:element name="GenreList" type="tns:GenreListType" minOccurs="0"/>
+			<xs:element name="PublicationInfo" type="tns:PublicationInfoType"/>
+			<xs:element ref="tns:Language" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="LanguageAlternate" type="tns:LanguageAlternateType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="PhysicalDescription" type="tns:PhysicalDescriptionType" minOccurs="0"/>
+			<xs:element name="Abstract" type="tns:AbstractType" minOccurs="0"/>
+			<xs:element ref="tns:Affiliation" minOccurs="0"/>
+			<xs:element name="OtherAbstract" type="tns:OtherAbstractType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element ref="tns:ContentsNote" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="IndexingSourceList" type="tns:IndexingSourceListType" minOccurs="0"/>
+			<xs:element ref="tns:NLMIndexNote" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="GeneralNote" type="tns:GeneralNoteType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="LocalNote" type="tns:LocalNoteType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="PersonalNameSubjectList" type="tns:PersonalNameSubjectListType" minOccurs="0"/>
+			<xs:element name="MeshHeadingList" type="tns:MeshHeadingListType" minOccurs="0"/>
+			<xs:element name="OtherSubjectList" type="tns:OtherSubjectListType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element ref="tns:SpaceFlightMission" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="KeywordList" type="tns:KeywordListType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="BroadJournalHeadingList" type="tns:BroadJournalHeadingListType" minOccurs="0"/>
+			<xs:element name="ChemicalList" type="tns:ChemicalListType" minOccurs="0"/>
+			<xs:element name="Classification" type="tns:ClassificationType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="GovDocClassNumber" type="tns:GovDocClassNumberType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="ElectronicAccessList" type="tns:ElectronicAccessListType" minOccurs="0"/>
+			<xs:element ref="tns:Host" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="LCCN" type="tns:LCCNType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="ISBN" type="tns:ISBNType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="ISSN" type="tns:ISSNType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element ref="tns:NCBIIssnAlias" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element ref="tns:STRN" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element ref="tns:Coden" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="OtherID" type="tns:OtherIDType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="AcquisitionInfoList" type="tns:AcquisitionInfoListType" minOccurs="0"/>
+			<xs:element name="ReportNumber" type="tns:ReportNumberType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+		<xs:attribute name="Owner" default="Undetermined">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="HMD"/>
+					<xs:enumeration value="HSR"/>
+					<xs:enumeration value="KIE"/>
+					<xs:enumeration value="NASA"/>
+					<xs:enumeration value="NCBI"/>
+					<xs:enumeration value="NLM"/>
+					<xs:enumeration value="NOTNLM"/>
+					<xs:enumeration value="NYA"/>
+					<xs:enumeration value="PIP"/>
+					<xs:enumeration value="Undetermined"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+		<xs:attribute name="Status" type="xs:string"/>
+	</xs:complexType>
+	<xs:element name="NLMCatalogRecordSet">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="NLMCatalogRecord" type="tns:NLMCatalogRecordType" maxOccurs="unbounded"/>
+				<xs:element name="DeleteCatalogRecord" type="tns:DeleteCatalogRecordType" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="NLMIndexNote" type="xs:string"/>
+	<xs:element name="NameOfSubstance" type="xs:string"/>
+	<xs:element name="NameQualifier" type="xs:string"/>
+	<xs:element name="NlmUniqueID" type="xs:string"/>
+	<xs:complexType name="OtherAbstractType">
+		<xs:sequence>
+			<xs:element ref="tns:AbstractText"/>
+			<xs:element ref="tns:CopyrightInformation" minOccurs="0"/>
+		</xs:sequence>
+		<xs:attribute name="Type" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="OtherIDType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="Prefix" type="xs:string"/>
+				<xs:attribute name="Source" type="xs:string"/>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="OtherInformation" type="xs:string"/>
+	<xs:complexType name="OtherSubjectType">
+		<xs:sequence>
+			<xs:element name="OtherSubjectName" type="tns:OtherSubjectNameType"/>
+			<xs:element ref="tns:OtherInformation" minOccurs="0"/>
+			<xs:element ref="tns:TitleAssociatedWithName" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="OtherSubjectListType">
+		<xs:sequence>
+			<xs:element name="OtherSubject" type="tns:OtherSubjectType" maxOccurs="unbounded"/>
+		</xs:sequence>
+		<xs:attribute name="Owner" default="Undetermined">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="HMD"/>
+					<xs:enumeration value="HSR"/>
+					<xs:enumeration value="KIE"/>
+					<xs:enumeration value="NASA"/>
+					<xs:enumeration value="NCBI"/>
+					<xs:enumeration value="NLM"/>
+					<xs:enumeration value="NOTNLM"/>
+					<xs:enumeration value="NYA"/>
+					<xs:enumeration value="PIP"/>
+					<xs:enumeration value="Undetermined"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="OtherSubjectNameType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="MajorTopicYN" default="N">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Y"/>
+							<xs:enumeration value="N"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+				<xs:attribute name="SubjectType" type="xs:string"/>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="PMID" type="xs:string"/>
+	<xs:complexType name="PaginationType">
+		<xs:sequence>
+			<xs:element ref="tns:StartPage"/>
+			<xs:element ref="tns:EndPage" minOccurs="0"/>
+			<xs:element ref="tns:MedlinePgn" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PersonalNameSubjectType">
+		<xs:sequence>
+            <xs:element ref="tns:LastName"/>
+            <xs:element ref="tns:ForeName"/>
+            <xs:element ref="tns:FirstName"/>
+            <xs:element ref="tns:MiddleName" minOccurs="0"/>
+            <xs:element ref="tns:Initials" minOccurs="0"/>
+            <xs:element ref="tns:Suffix" minOccurs="0"/>
+            <xs:element ref="tns:DatesAssociatedWithName" minOccurs="0"/>
+            <xs:element ref="tns:NameQualifier" minOccurs="0"/>
+            <xs:element ref="tns:OtherInformation" minOccurs="0"/>
+            <xs:element ref="tns:TitleAssociatedWithName" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PersonalNameSubjectListType">
+		<xs:sequence>
+			<xs:element name="PersonalNameSubject" type="tns:PersonalNameSubjectType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PhysicalDescriptionType">
+		<xs:sequence>
+			<xs:element ref="tns:Form" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element ref="tns:Extent" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element ref="tns:Runtime" minOccurs="0"/>
+			<xs:element ref="tns:ChapterPgn" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PlaceType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="ImprintType" default="Current">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Current"/>
+							<xs:enumeration value="Original"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="PlaceCodeType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="Authority" default="Undetermined">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="KIE"/>
+							<xs:enumeration value="MARC"/>
+							<xs:enumeration value="NLM"/>
+							<xs:enumeration value="Other"/>
+							<xs:enumeration value="Undetermined"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="ProjectedPublicationDate" type="xs:string"/>
+	<xs:complexType name="PubDateType">
+		<xs:sequence>
+            <xs:element ref="tns:Year"/>
+            <xs:element ref="tns:Month"/>
+            <xs:element ref="tns:Day" minOccurs="0"/>
+            <xs:element ref="tns:Season"/>
+            <xs:element ref="tns:MedlineDate"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PublicationEndYear" type="xs:string"/>
+	<xs:element name="PublicationFirstYear" type="xs:string"/>
+	<xs:complexType name="PublicationInfoType">
+		<xs:sequence>
+			<xs:element ref="tns:Country" minOccurs="0"/>
+			<xs:element name="PlaceCode" type="tns:PlaceCodeType" minOccurs="0"/>
+			<xs:element name="Imprint" type="tns:ImprintType_nlmc" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="Place" type="tns:PlaceType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="Publisher" type="tns:PublisherType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="DateIssued" type="tns:DateIssuedType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element ref="tns:ProjectedPublicationDate" minOccurs="0"/>
+			<xs:element ref="tns:PublicationFirstYear" minOccurs="0"/>
+			<xs:element ref="tns:PublicationEndYear" minOccurs="0"/>
+			<xs:element ref="tns:Edition" minOccurs="0"/>
+			<xs:element ref="tns:DatesOfSerialPublication" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="Frequency" type="tns:FrequencyType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PublicationType" type="xs:string"/>
+	<xs:complexType name="PublicationTypeListType">
+		<xs:sequence>
+			<xs:element ref="tns:PublicationType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="PublisherType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="ImprintType" default="Current">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Current"/>
+							<xs:enumeration value="Original"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="QualifierNameType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="MajorTopicYN" default="N">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Y"/>
+							<xs:enumeration value="N"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:element name="RegistryNumber" type="xs:string"/>
+	<xs:complexType name="ReportNumberType">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="ValidYN" default="Y">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="Y"/>
+							<xs:enumeration value="N"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="ResourceInfoType">
+		<xs:sequence>
+			<xs:element ref="tns:TypeOfResource"/>
+			<xs:element ref="tns:Issuance"/>
+			<xs:element ref="tns:ResourceUnit" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="ResourceUnit" type="xs:string"/>
+	<xs:element name="Runtime" type="xs:string"/>
+	<xs:element name="STRN" type="xs:string"/>
+	<xs:element name="Season" type="xs:string"/>
+	<xs:element name="Second" type="xs:string"/>
+	<xs:element name="SpaceFlightMission" type="xs:string"/>
+	<xs:element name="StartPage" type="xs:string"/>
+	<xs:element name="StockNumber" type="xs:string"/>
+	<xs:element name="Suffix" type="xs:string"/>
+	<xs:element name="Title" type="xs:string"/>
+	<xs:element name="TitleAlternate" type="xs:string"/>
+	<xs:element name="TitleAssociatedWithName" type="xs:string"/>
+	<xs:complexType name="TitleMainType">
+		<xs:sequence>
+			<xs:element ref="tns:Title"/>
+			<xs:element ref="tns:OtherInformation" minOccurs="0"/>
+		</xs:sequence>
+		<xs:attribute name="Sort" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="TitleOtherType">
+		<xs:sequence>
+			<xs:element ref="tns:TitleAlternate"/>
+			<xs:element ref="tns:OtherInformation" minOccurs="0"/>
+		</xs:sequence>
+		<xs:attribute name="Sort" type="xs:string"/>
+		<xs:attribute name="Owner" default="Undetermined">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="HMD"/>
+					<xs:enumeration value="HSR"/>
+					<xs:enumeration value="KIE"/>
+					<xs:enumeration value="NASA"/>
+					<xs:enumeration value="NCBI"/>
+					<xs:enumeration value="NLM"/>
+					<xs:enumeration value="NOTNLM"/>
+					<xs:enumeration value="NYA"/>
+					<xs:enumeration value="PIP"/>
+					<xs:enumeration value="Undetermined"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+		<xs:attribute name="TitleType" default="Undetermined">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="Absorbed"/>
+					<xs:enumeration value="AbsorbedBy"/>
+					<xs:enumeration value="Analytic"/>
+					<xs:enumeration value="Key"/>
+					<xs:enumeration value="MergedTo"/>
+					<xs:enumeration value="MergerOf"/>
+					<xs:enumeration value="Other"/>
+					<xs:enumeration value="OtherTA"/>
+					<xs:enumeration value="Preceding"/>
+					<xs:enumeration value="Related"/>
+					<xs:enumeration value="Reversion"/>
+					<xs:enumeration value="Series"/>
+					<xs:enumeration value="SeriesAuthority"/>
+					<xs:enumeration value="SplitFrom"/>
+					<xs:enumeration value="SplitTo"/>
+					<xs:enumeration value="Succeeding"/>
+					<xs:enumeration value="SupersededBy"/>
+					<xs:enumeration value="Supersedes"/>
+					<xs:enumeration value="Translated"/>
+					<xs:enumeration value="Undetermined"/>
+					<xs:enumeration value="Uniform"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="TypeOfResource" type="xs:string"/>
+	<xs:element name="VernacularTitle" type="xs:string"/>
+	<xs:element name="Volume" type="xs:string"/>
+	<xs:element name="Year" type="xs:string"/>
+
+	<xs:complexType name="NLMCatalogRecordSetType">
+		<xs:sequence>
+			<xs:element name="NLMCatalogRecord" type="tns:NLMCatalogRecordType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+
+</xs:schema>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch_pmc.xsd b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch_pmc.xsd
new file mode 100644
index 0000000..e5b697e
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch_pmc.xsd
@@ -0,0 +1,5910 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.ncbi.nlm.nih.gov/soap/eutils/efetch" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.ncbi.nlm.nih.gov/soap/eutils/efetch" elementFormDefault="qualified">
+
+    <!--    version="1.5" -->
+    <!-- no mml, no xlink -->
+    
+    <!-- http://dtd.nlm.nih.gov/2.1/xsd/archivearticle.xsd  date: 01/10/2006-->
+
+  <xs:element name="copyright-holder">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="copyright-statement">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="copyright-year" type="xs:string"/>
+  <xs:element name="license">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tns:p"/>
+      </xs:sequence>
+      <xs:attribute type="xs:string" name="license-type"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="permissions">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:copyright-statement"/>
+        <xs:element minOccurs="0" ref="tns:copyright-year"/>
+        <xs:element minOccurs="0" ref="tns:copyright-holder"/>
+        <xs:element minOccurs="0" ref="tns:license"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="article-title">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+      </xs:choice>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="aff">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:addr-line"/>
+        <xs:element ref="tns:country"/>
+        <xs:element ref="tns:fax"/>
+        <xs:element ref="tns:institution"/>
+        <xs:element ref="tns:phone"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:label"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="rid" type="xs:IDREFS"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="collab">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+      <xs:attribute type="xs:string" name="collab-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="conf-date">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:day"/>
+        <xs:element ref="tns:month"/>
+        <xs:element ref="tns:season"/>
+        <xs:element ref="tns:year"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="conf-loc">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="conf-name">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="object-id">
+    <xs:complexType mixed="true">
+      <xs:attribute type="xs:string" name="pub-id-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="issn">
+    <xs:complexType mixed="true">
+      <xs:attribute type="xs:string" name="pub-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="issue">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="issue-id">
+    <xs:complexType mixed="true">
+      <xs:attribute type="xs:string" name="pub-id-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="issue-title">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="role">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="volume">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="trans-subtitle">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+      </xs:choice>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="trans-title">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+      </xs:choice>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="volume-id">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute type="xs:string" name="pub-id-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="etal">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="publisher">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="tns:publisher-name"/>
+        <xs:element minOccurs="0" ref="tns:publisher-loc"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="publisher-name">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="publisher-loc">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:addr-line"/>
+        <xs:element ref="tns:country"/>
+        <xs:element ref="tns:fax"/>
+        <xs:element ref="tns:institution"/>
+        <xs:element ref="tns:phone"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="fpage">
+    <xs:complexType mixed="true">
+      <xs:attribute type="xs:string" name="seq"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="lpage" type="xs:string"/>
+  <xs:element name="page-range" type="xs:string"/>
+  <xs:element name="elocation-id">
+    <xs:complexType mixed="true">
+      <xs:attribute type="xs:string" name="seq"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="citation">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:label"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:access-date"/>
+        <xs:element ref="tns:annotation"/>
+        <xs:element ref="tns:article-title"/>
+        <xs:element ref="tns:collab"/>
+        <xs:element ref="tns:comment"/>
+        <xs:element ref="tns:conf-date"/>
+        <xs:element ref="tns:conf-loc"/>
+        <xs:element ref="tns:conf-name"/>
+        <xs:element ref="tns:day"/>
+        <xs:element ref="tns:edition"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:elocation-id"/>
+        <xs:element ref="tns:etal"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:fpage"/>
+        <xs:element ref="tns:gov"/>
+        <xs:element ref="tns:isbn"/>
+        <xs:element ref="tns:issn"/>
+        <xs:element ref="tns:issue"/>
+        <xs:element ref="tns:issue-id"/>
+        <xs:element ref="tns:issue-title"/>
+        <xs:element ref="tns:lpage"/>
+        <xs:element ref="tns:month"/>
+        <xs:element ref="tns:name"/>
+        <xs:element ref="tns:object-id"/>
+        <xs:element ref="tns:page-count"/>
+        <xs:element ref="tns:page-range"/>
+        <xs:element ref="tns:patent"/>
+        <xs:element ref="tns:person-group"/>
+        <xs:element ref="tns:pub-id"/>
+        <xs:element ref="tns:publisher-loc"/>
+        <xs:element ref="tns:publisher-name"/>
+        <xs:element ref="tns:role"/>
+        <xs:element ref="tns:season"/>
+        <xs:element ref="tns:series"/>
+        <xs:element ref="tns:source"/>
+        <xs:element ref="tns:std"/>
+        <xs:element ref="tns:string-name"/>
+        <xs:element ref="tns:supplement"/>
+        <xs:element ref="tns:time-stamp"/>
+        <xs:element ref="tns:trans-source"/>
+        <xs:element ref="tns:trans-title"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:volume"/>
+        <xs:element ref="tns:volume-id"/>
+        <xs:element ref="tns:year"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+      <xs:attribute type="xs:string" name="citation-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="address">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:addr-line"/>
+        <xs:element ref="tns:country"/>
+        <xs:element ref="tns:fax"/>
+        <xs:element ref="tns:institution"/>
+        <xs:element ref="tns:phone"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+      </xs:choice>
+      <xs:attribute name="id" type="xs:ID"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="addr-line">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="country" type="xs:string"/>
+  <xs:element name="email">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="fax">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="institution">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+      <xs:attribute name="id" type="xs:ID"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="phone">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="uri">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="date">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice minOccurs="0">
+          <xs:sequence>
+            <xs:element minOccurs="0" ref="tns:day"/>
+            <xs:element minOccurs="0" ref="tns:month"/>
+          </xs:sequence>
+          <xs:element ref="tns:season"/>
+        </xs:choice>
+        <xs:element minOccurs="0" ref="tns:year"/>
+        <xs:element minOccurs="0" ref="tns:string-date"/>
+      </xs:sequence>
+      <xs:attribute type="xs:string" name="date-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="day" type="xs:string"/>
+  <xs:element name="month" type="xs:string"/>
+  <xs:element name="season" type="xs:string"/>
+  <xs:element name="year" type="xs:string"/>
+  <xs:element name="string-date">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:day"/>
+        <xs:element ref="tns:month"/>
+        <xs:element ref="tns:season"/>
+        <xs:element ref="tns:year"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="string-name">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:given-names"/>
+        <xs:element ref="tns:prefix"/>
+        <xs:element ref="tns:surname"/>
+        <xs:element ref="tns:suffix"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="name">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="tns:surname"/>
+        <xs:element minOccurs="0" ref="tns:given-names"/>
+        <xs:element minOccurs="0" ref="tns:prefix"/>
+        <xs:element minOccurs="0" ref="tns:suffix"/>
+      </xs:sequence>
+      <xs:attribute name="name-style" default="western">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="western"/>
+            <xs:enumeration value="eastern"/>
+            <xs:enumeration value="islensk"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="surname">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute type="xs:string" name="initials"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="given-names">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute type="xs:string" name="initials"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="prefix">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="suffix">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ext-link">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute type="xs:string" name="ext-link-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="attrib">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="title">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="label">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="related-article">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:access-date"/>
+        <xs:element ref="tns:annotation"/>
+        <xs:element ref="tns:article-title"/>
+        <xs:element ref="tns:collab"/>
+        <xs:element ref="tns:comment"/>
+        <xs:element ref="tns:conf-date"/>
+        <xs:element ref="tns:conf-loc"/>
+        <xs:element ref="tns:conf-name"/>
+        <xs:element ref="tns:day"/>
+        <xs:element ref="tns:edition"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:elocation-id"/>
+        <xs:element ref="tns:etal"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:fpage"/>
+        <xs:element ref="tns:gov"/>
+        <xs:element ref="tns:isbn"/>
+        <xs:element ref="tns:issn"/>
+        <xs:element ref="tns:issue"/>
+        <xs:element ref="tns:issue-id"/>
+        <xs:element ref="tns:issue-title"/>
+        <xs:element ref="tns:lpage"/>
+        <xs:element ref="tns:month"/>
+        <xs:element ref="tns:name"/>
+        <xs:element ref="tns:object-id"/>
+        <xs:element ref="tns:page-count"/>
+        <xs:element ref="tns:page-range"/>
+        <xs:element ref="tns:patent"/>
+        <xs:element ref="tns:person-group"/>
+        <xs:element ref="tns:pub-id"/>
+        <xs:element ref="tns:publisher-loc"/>
+        <xs:element ref="tns:publisher-name"/>
+        <xs:element ref="tns:role"/>
+        <xs:element ref="tns:season"/>
+        <xs:element ref="tns:series"/>
+        <xs:element ref="tns:source"/>
+        <xs:element ref="tns:std"/>
+        <xs:element ref="tns:string-name"/>
+        <xs:element ref="tns:supplement"/>
+        <xs:element ref="tns:time-stamp"/>
+        <xs:element ref="tns:trans-source"/>
+        <xs:element ref="tns:trans-title"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:volume"/>
+        <xs:element ref="tns:volume-id"/>
+        <xs:element ref="tns:year"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute type="xs:string" name="related-article-type" use="required"/>
+      <xs:attribute type="xs:string" name="ext-link-type"/>
+      <xs:attribute type="xs:string" name="vol"/>
+      <xs:attribute type="xs:string" name="page"/>
+      <xs:attribute type="xs:string" name="issue"/>
+      <xs:attribute type="xs:string" name="journal-id"/>
+      <xs:attribute type="xs:string" name="journal-id-type"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ack">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:array"/>
+          <xs:element ref="tns:boxed-text"/>
+          <xs:element ref="tns:chem-struct"/>
+          <xs:element ref="tns:chem-struct-wrapper"/>
+          <xs:element ref="tns:fig"/>
+          <xs:element ref="tns:fig-group"/>
+          <xs:element ref="tns:graphic"/>
+          <xs:element ref="tns:media"/>
+          <xs:element ref="tns:preformat"/>
+          <xs:element ref="tns:supplementary-material"/>
+          <xs:element ref="tns:table-wrap"/>
+          <xs:element ref="tns:table-wrap-group"/>
+          <xs:element ref="tns:disp-formula"/>
+          <xs:element ref="tns:p"/>
+          <xs:element ref="tns:def-list"/>
+          <xs:element ref="tns:list"/>
+          <xs:element ref="tns:tex-math"/>
+          
+          <xs:element ref="tns:related-article"/>
+          <xs:element ref="tns:ack"/>
+          <xs:element ref="tns:disp-quote"/>
+          <xs:element ref="tns:speech"/>
+          <xs:element ref="tns:statement"/>
+          <xs:element ref="tns:verse-group"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:sec"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:notes"/>
+          <xs:element ref="tns:fn-group"/>
+          <xs:element ref="tns:glossary"/>
+          <xs:element ref="tns:ref-list"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="bio">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:element maxOccurs="unbounded" ref="tns:p"/>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="rid" type="xs:IDREFS"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="notes">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:array"/>
+          <xs:element ref="tns:boxed-text"/>
+          <xs:element ref="tns:chem-struct"/>
+          <xs:element ref="tns:chem-struct-wrapper"/>
+          <xs:element ref="tns:fig"/>
+          <xs:element ref="tns:fig-group"/>
+          <xs:element ref="tns:graphic"/>
+          <xs:element ref="tns:media"/>
+          <xs:element ref="tns:preformat"/>
+          <xs:element ref="tns:supplementary-material"/>
+          <xs:element ref="tns:table-wrap"/>
+          <xs:element ref="tns:table-wrap-group"/>
+          <xs:element ref="tns:disp-formula"/>
+          <xs:element ref="tns:p"/>
+          <xs:element ref="tns:def-list"/>
+          <xs:element ref="tns:list"/>
+          <xs:element ref="tns:tex-math"/>
+          
+          <xs:element ref="tns:related-article"/>
+          <xs:element ref="tns:ack"/>
+          <xs:element ref="tns:disp-quote"/>
+          <xs:element ref="tns:speech"/>
+          <xs:element ref="tns:statement"/>
+          <xs:element ref="tns:verse-group"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:sec"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:notes"/>
+          <xs:element ref="tns:fn-group"/>
+          <xs:element ref="tns:glossary"/>
+          <xs:element ref="tns:ref-list"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="notes-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="alt-text">
+    <xs:complexType mixed="true">
+      <xs:attribute name="id" type="xs:ID"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="long-desc">
+    <xs:complexType mixed="true">
+      <xs:attribute name="id" type="xs:ID"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="def">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tns:p"/>
+      </xs:sequence>
+      <xs:attribute name="rid" type="xs:IDREFS"/>
+      <xs:attribute name="id" type="xs:ID"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="custom-meta-wrap">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tns:custom-meta"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="custom-meta">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="tns:meta-name"/>
+        <xs:element ref="tns:meta-value"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="meta-name">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="meta-value">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="x">
+    <xs:complexType mixed="true">
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="article-meta">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:article-id"/>
+        <xs:element minOccurs="0" ref="tns:article-categories"/>
+        <xs:element minOccurs="0" ref="tns:title-group"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:contrib-group"/>
+          <xs:element ref="tns:aff"/>
+          <xs:element ref="tns:x"/>
+        </xs:choice>
+        <xs:element minOccurs="0" ref="tns:author-notes"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:pub-date"/>
+        <xs:element minOccurs="0" ref="tns:volume"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:volume-id"/>
+        <xs:element minOccurs="0" ref="tns:issue"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:issue-id"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:issue-title"/>
+        <xs:element minOccurs="0" ref="tns:supplement"/>
+        <xs:choice minOccurs="0">
+          <xs:sequence>
+            <xs:element ref="tns:fpage"/>
+            <xs:element minOccurs="0" ref="tns:lpage"/>
+            <xs:element minOccurs="0" ref="tns:page-range"/>
+          </xs:sequence>
+          <xs:element ref="tns:elocation-id"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:email"/>
+          <xs:element ref="tns:ext-link"/>
+          <xs:element ref="tns:uri"/>
+          <xs:element ref="tns:product"/>
+          <xs:element ref="tns:supplementary-material"/>
+        </xs:choice>
+        <xs:element minOccurs="0" ref="tns:history"/>
+        <xs:element minOccurs="0" ref="tns:copyright-statement"/>
+        <xs:element minOccurs="0" ref="tns:copyright-year"/>
+        <xs:element minOccurs="0" ref="tns:license"/>
+        <xs:element minOccurs="0" ref="tns:permissions"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:self-uri"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:related-article"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:abstract"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:trans-abstract"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:kwd-group"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:contract-num"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:contract-sponsor"/>
+<!--        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:conference"/> -->
+        <xs:element minOccurs="0" ref="tns:counts"/>
+        <xs:element minOccurs="0" ref="tns:custom-meta-wrap"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="article-id">
+    <xs:complexType mixed="true">
+      <xs:attribute type="xs:string" name="pub-id-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="article-categories">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:subj-group"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:series-title"/>
+        <xs:element minOccurs="0" ref="tns:series-text"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="subj-group">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tns:subject"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:subj-group"/>
+      </xs:sequence>
+      
+      <xs:attribute type="xs:string" name="subj-group-type"/>
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="subject">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="series-title">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="series-text">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="author-notes">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:label"/>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:choice maxOccurs="unbounded">
+          <xs:element ref="tns:corresp"/>
+          <xs:element ref="tns:fn"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="rid" type="xs:IDREFS"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="product">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:access-date"/>
+        <xs:element ref="tns:annotation"/>
+        <xs:element ref="tns:article-title"/>
+        <xs:element ref="tns:collab"/>
+        <xs:element ref="tns:comment"/>
+        <xs:element ref="tns:conf-date"/>
+        <xs:element ref="tns:conf-loc"/>
+        <xs:element ref="tns:conf-name"/>
+        <xs:element ref="tns:day"/>
+        <xs:element ref="tns:edition"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:elocation-id"/>
+        <xs:element ref="tns:etal"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:fpage"/>
+        <xs:element ref="tns:gov"/>
+        <xs:element ref="tns:isbn"/>
+        <xs:element ref="tns:issn"/>
+        <xs:element ref="tns:issue"/>
+        <xs:element ref="tns:issue-id"/>
+        <xs:element ref="tns:issue-title"/>
+        <xs:element ref="tns:lpage"/>
+        <xs:element ref="tns:month"/>
+        <xs:element ref="tns:name"/>
+        <xs:element ref="tns:object-id"/>
+        <xs:element ref="tns:page-count"/>
+        <xs:element ref="tns:page-range"/>
+        <xs:element ref="tns:patent"/>
+        <xs:element ref="tns:person-group"/>
+        <xs:element ref="tns:pub-id"/>
+        <xs:element ref="tns:publisher-loc"/>
+        <xs:element ref="tns:publisher-name"/>
+        <xs:element ref="tns:role"/>
+        <xs:element ref="tns:season"/>
+        <xs:element ref="tns:series"/>
+        <xs:element ref="tns:source"/>
+        <xs:element ref="tns:std"/>
+        <xs:element ref="tns:string-name"/>
+        <xs:element ref="tns:supplement"/>
+        <xs:element ref="tns:time-stamp"/>
+        <xs:element ref="tns:trans-source"/>
+        <xs:element ref="tns:trans-title"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:volume"/>
+        <xs:element ref="tns:volume-id"/>
+        <xs:element ref="tns:year"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+      <xs:attribute type="xs:string" name="product-type"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="history">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:date"/>
+        <xs:element ref="tns:string-date"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="self-uri">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="abstract">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:object-id"/>
+        <xs:sequence>
+          <xs:element minOccurs="0" ref="tns:label"/>
+          <xs:element minOccurs="0" ref="tns:title"/>
+          <xs:choice minOccurs="0" maxOccurs="unbounded">
+            <xs:element ref="tns:array"/>
+            <xs:element ref="tns:boxed-text"/>
+            <xs:element ref="tns:chem-struct"/>
+            <xs:element ref="tns:chem-struct-wrapper"/>
+            <xs:element ref="tns:fig"/>
+            <xs:element ref="tns:fig-group"/>
+            <xs:element ref="tns:graphic"/>
+            <xs:element ref="tns:media"/>
+            <xs:element ref="tns:preformat"/>
+            <xs:element ref="tns:supplementary-material"/>
+            <xs:element ref="tns:table-wrap"/>
+            <xs:element ref="tns:table-wrap-group"/>
+            <xs:element ref="tns:disp-formula"/>
+            <xs:element ref="tns:p"/>
+            <xs:element ref="tns:def-list"/>
+            <xs:element ref="tns:list"/>
+            <xs:element ref="tns:tex-math"/>
+            
+            <xs:element ref="tns:related-article"/>
+            <xs:element ref="tns:ack"/>
+            <xs:element ref="tns:disp-quote"/>
+            <xs:element ref="tns:speech"/>
+            <xs:element ref="tns:statement"/>
+            <xs:element ref="tns:verse-group"/>
+          </xs:choice>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:sec"/>
+          <xs:choice minOccurs="0" maxOccurs="unbounded">
+            <xs:element ref="tns:notes"/>
+            <xs:element ref="tns:fn-group"/>
+            <xs:element ref="tns:glossary"/>
+            <xs:element ref="tns:ref-list"/>
+          </xs:choice>
+        </xs:sequence>
+      </xs:sequence>
+      <xs:attribute type="xs:string" name="abstract-type"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="trans-abstract">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:array"/>
+          <xs:element ref="tns:boxed-text"/>
+          <xs:element ref="tns:chem-struct"/>
+          <xs:element ref="tns:chem-struct-wrapper"/>
+          <xs:element ref="tns:fig"/>
+          <xs:element ref="tns:fig-group"/>
+          <xs:element ref="tns:graphic"/>
+          <xs:element ref="tns:media"/>
+          <xs:element ref="tns:preformat"/>
+          <xs:element ref="tns:supplementary-material"/>
+          <xs:element ref="tns:table-wrap"/>
+          <xs:element ref="tns:table-wrap-group"/>
+          <xs:element ref="tns:disp-formula"/>
+          <xs:element ref="tns:p"/>
+          <xs:element ref="tns:def-list"/>
+          <xs:element ref="tns:list"/>
+          <xs:element ref="tns:tex-math"/>
+          
+          <xs:element ref="tns:related-article"/>
+          <xs:element ref="tns:ack"/>
+          <xs:element ref="tns:disp-quote"/>
+          <xs:element ref="tns:speech"/>
+          <xs:element ref="tns:statement"/>
+          <xs:element ref="tns:verse-group"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:sec"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:notes"/>
+          <xs:element ref="tns:fn-group"/>
+          <xs:element ref="tns:glossary"/>
+          <xs:element ref="tns:ref-list"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute type="xs:string" name="abstract-type"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="kwd-group">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:choice maxOccurs="unbounded">
+          <xs:element ref="tns:kwd"/>
+          <xs:element ref="tns:x"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="kwd-group-type"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="kwd">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute name="id" type="xs:ID"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="corresp">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:addr-line"/>
+        <xs:element ref="tns:country"/>
+        <xs:element ref="tns:fax"/>
+        <xs:element ref="tns:institution"/>
+        <xs:element ref="tns:phone"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:label"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+      <xs:attribute name="id" type="xs:ID"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="pub-date">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice minOccurs="0">
+          <xs:sequence>
+            <xs:element minOccurs="0" ref="tns:day"/>
+            <xs:element minOccurs="0" ref="tns:month"/>
+          </xs:sequence>
+          <xs:element ref="tns:season"/>
+        </xs:choice>
+        <xs:element minOccurs="0" ref="tns:year"/>
+        <xs:element minOccurs="0" ref="tns:string-date"/>
+      </xs:sequence>
+      <xs:attribute type="xs:string" name="pub-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="contract-num">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="rid" type="xs:IDREFS"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="contract-sponsor">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="rid" type="xs:IDREFS"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="conference">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:conf-date"/>
+        <xs:element ref="tns:conf-name"/>
+        <xs:element ref="tns:conf-num"/>
+        <xs:element ref="tns:conf-loc"/>
+        <xs:element ref="tns:conf-sponsor"/>
+        <xs:element ref="tns:conf-theme"/>
+        <xs:element ref="tns:conf-acronym"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="conf-acronym">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="conf-num">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="conf-sponsor">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="conf-theme">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="counts">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:fig-count"/>
+        <xs:element minOccurs="0" ref="tns:table-count"/>
+        <xs:element minOccurs="0" ref="tns:equation-count"/>
+        <xs:element minOccurs="0" ref="tns:ref-count"/>
+        <xs:element minOccurs="0" ref="tns:page-count"/>
+        <xs:element minOccurs="0" ref="tns:word-count"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="equation-count">
+    <xs:complexType>
+      <xs:attribute name="count" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="fig-count">
+    <xs:complexType>
+      <xs:attribute name="count" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="table-count">
+    <xs:complexType>
+      <xs:attribute name="count" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ref-count">
+    <xs:complexType>
+      <xs:attribute name="count" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="page-count">
+    <xs:complexType>
+      <xs:attribute name="count" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="word-count">
+    <xs:complexType>
+      <xs:attribute name="count" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="title-group">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="tns:article-title"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:subtitle"/>
+        <xs:sequence minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:trans-title"/>
+          <xs:element minOccurs="0" ref="tns:trans-subtitle"/>
+        </xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:alt-title"/>
+        <xs:element minOccurs="0" ref="tns:fn-group"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="subtitle">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+      </xs:choice>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="alt-title">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+      </xs:choice>
+      <xs:attribute type="xs:string" name="alt-title-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="contrib-group">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tns:contrib"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:address"/>
+          <xs:element ref="tns:aff"/>
+          <xs:element ref="tns:author-comment"/>
+          <xs:element ref="tns:bio"/>
+          <xs:element ref="tns:email"/>
+          <xs:element ref="tns:etal"/>
+          <xs:element ref="tns:ext-link"/>
+          <xs:element ref="tns:fn"/>
+          <xs:element ref="tns:on-behalf-of"/>
+          <xs:element ref="tns:role"/>
+          <xs:element ref="tns:uri"/>
+          <xs:element ref="tns:xref"/>
+          <xs:element ref="tns:x"/>
+        </xs:choice>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="contrib">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:collab"/>
+          <xs:element ref="tns:name"/>
+          <xs:element ref="tns:string-name"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:degrees"/>
+          <xs:element ref="tns:address"/>
+          <xs:element ref="tns:aff"/>
+          <xs:element ref="tns:author-comment"/>
+          <xs:element ref="tns:bio"/>
+          <xs:element ref="tns:email"/>
+          <xs:element ref="tns:etal"/>
+          <xs:element ref="tns:ext-link"/>
+          <xs:element ref="tns:fn"/>
+          <xs:element ref="tns:on-behalf-of"/>
+          <xs:element ref="tns:role"/>
+          <xs:element ref="tns:uri"/>
+          <xs:element ref="tns:xref"/>
+          <xs:element ref="tns:x"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute type="xs:string" name="contrib-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="corresp">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="no"/>
+            <xs:enumeration value="yes"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="equal-contrib">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="no"/>
+            <xs:enumeration value="yes"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="deceased">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="no"/>
+            <xs:enumeration value="yes"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="rid" type="xs:IDREFS"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="degrees">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="on-behalf-of">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="author-comment">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:element maxOccurs="unbounded" ref="tns:p"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="supplement">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute type="xs:string" name="supplement-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="app-group">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:array"/>
+          <xs:element ref="tns:boxed-text"/>
+          <xs:element ref="tns:chem-struct"/>
+          <xs:element ref="tns:chem-struct-wrapper"/>
+          <xs:element ref="tns:fig"/>
+          <xs:element ref="tns:fig-group"/>
+          <xs:element ref="tns:graphic"/>
+          <xs:element ref="tns:media"/>
+          <xs:element ref="tns:preformat"/>
+          <xs:element ref="tns:supplementary-material"/>
+          <xs:element ref="tns:table-wrap"/>
+          <xs:element ref="tns:table-wrap-group"/>
+          <xs:element ref="tns:disp-formula"/>
+          <xs:element ref="tns:p"/>
+          <xs:element ref="tns:def-list"/>
+          <xs:element ref="tns:list"/>
+          <xs:element ref="tns:tex-math"/>
+          
+          <xs:element ref="tns:related-article"/>
+          <xs:element ref="tns:ack"/>
+          <xs:element ref="tns:disp-quote"/>
+          <xs:element ref="tns:speech"/>
+          <xs:element ref="tns:statement"/>
+          <xs:element ref="tns:verse-group"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:app"/>
+          <xs:element ref="tns:ref-list"/>
+        </xs:choice>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="app">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:sequence>
+          <xs:element minOccurs="0" ref="tns:label"/>
+          <xs:element ref="tns:title"/>
+          <xs:choice minOccurs="0" maxOccurs="unbounded">
+            <xs:element ref="tns:array"/>
+            <xs:element ref="tns:boxed-text"/>
+            <xs:element ref="tns:chem-struct"/>
+            <xs:element ref="tns:chem-struct-wrapper"/>
+            <xs:element ref="tns:fig"/>
+            <xs:element ref="tns:fig-group"/>
+            <xs:element ref="tns:graphic"/>
+            <xs:element ref="tns:media"/>
+            <xs:element ref="tns:preformat"/>
+            <xs:element ref="tns:supplementary-material"/>
+            <xs:element ref="tns:table-wrap"/>
+            <xs:element ref="tns:table-wrap-group"/>
+            <xs:element ref="tns:disp-formula"/>
+            <xs:element ref="tns:p"/>
+            <xs:element ref="tns:def-list"/>
+            <xs:element ref="tns:list"/>
+            <xs:element ref="tns:tex-math"/>
+            
+            <xs:element ref="tns:related-article"/>
+            <xs:element ref="tns:ack"/>
+            <xs:element ref="tns:disp-quote"/>
+            <xs:element ref="tns:speech"/>
+            <xs:element ref="tns:statement"/>
+            <xs:element ref="tns:verse-group"/>
+          </xs:choice>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:sec"/>
+          <xs:choice minOccurs="0" maxOccurs="unbounded">
+            <xs:element ref="tns:notes"/>
+            <xs:element ref="tns:fn-group"/>
+            <xs:element ref="tns:glossary"/>
+            <xs:element ref="tns:ref-list"/>
+          </xs:choice>
+        </xs:sequence>
+        <xs:element minOccurs="0" ref="tns:permissions"/>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="fn-group">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:element maxOccurs="unbounded" ref="tns:fn"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="glossary">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:array"/>
+          <xs:element ref="tns:boxed-text"/>
+          <xs:element ref="tns:chem-struct"/>
+          <xs:element ref="tns:chem-struct-wrapper"/>
+          <xs:element ref="tns:fig"/>
+          <xs:element ref="tns:fig-group"/>
+          <xs:element ref="tns:graphic"/>
+          <xs:element ref="tns:media"/>
+          <xs:element ref="tns:preformat"/>
+          <xs:element ref="tns:supplementary-material"/>
+          <xs:element ref="tns:table-wrap"/>
+          <xs:element ref="tns:table-wrap-group"/>
+          <xs:element ref="tns:disp-formula"/>
+          <xs:element ref="tns:p"/>
+          <xs:element ref="tns:def-list"/>
+          <xs:element ref="tns:list"/>
+          <xs:element ref="tns:tex-math"/>
+          
+          <xs:element ref="tns:related-article"/>
+          <xs:element ref="tns:ack"/>
+          <xs:element ref="tns:disp-quote"/>
+          <xs:element ref="tns:speech"/>
+          <xs:element ref="tns:statement"/>
+          <xs:element ref="tns:verse-group"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:gloss-group"/>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="gloss-group">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:array"/>
+          <xs:element ref="tns:boxed-text"/>
+          <xs:element ref="tns:chem-struct"/>
+          <xs:element ref="tns:chem-struct-wrapper"/>
+          <xs:element ref="tns:fig"/>
+          <xs:element ref="tns:fig-group"/>
+          <xs:element ref="tns:graphic"/>
+          <xs:element ref="tns:media"/>
+          <xs:element ref="tns:preformat"/>
+          <xs:element ref="tns:supplementary-material"/>
+          <xs:element ref="tns:table-wrap"/>
+          <xs:element ref="tns:table-wrap-group"/>
+          <xs:element ref="tns:disp-formula"/>
+          <xs:element ref="tns:p"/>
+          <xs:element ref="tns:def-list"/>
+          <xs:element ref="tns:list"/>
+          <xs:element ref="tns:tex-math"/>
+          
+          <xs:element ref="tns:related-article"/>
+          <xs:element ref="tns:ack"/>
+          <xs:element ref="tns:disp-quote"/>
+          <xs:element ref="tns:speech"/>
+          <xs:element ref="tns:statement"/>
+          <xs:element ref="tns:verse-group"/>
+        </xs:choice>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="array">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:alt-text"/>
+          <xs:element ref="tns:long-desc"/>
+          <xs:element ref="tns:email"/>
+          <xs:element ref="tns:ext-link"/>
+          <xs:element ref="tns:uri"/>
+        </xs:choice>
+        <xs:choice>
+          <xs:choice minOccurs="0" maxOccurs="unbounded">
+            <xs:element ref="tns:graphic"/>
+            <xs:element ref="tns:media"/>
+          </xs:choice>
+          <xs:element ref="tns:tbody"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:attrib"/>
+          <xs:element ref="tns:copyright-statement"/>
+          <xs:element ref="tns:permissions"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="boxed-text">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:object-id"/>
+        <xs:sequence>
+          <xs:element minOccurs="0" ref="tns:label"/>
+          <xs:element minOccurs="0" ref="tns:title"/>
+          <xs:choice minOccurs="0" maxOccurs="unbounded">
+            <xs:element ref="tns:array"/>
+            <xs:element ref="tns:boxed-text"/>
+            <xs:element ref="tns:chem-struct"/>
+            <xs:element ref="tns:chem-struct-wrapper"/>
+            <xs:element ref="tns:fig"/>
+            <xs:element ref="tns:fig-group"/>
+            <xs:element ref="tns:graphic"/>
+            <xs:element ref="tns:media"/>
+            <xs:element ref="tns:preformat"/>
+            <xs:element ref="tns:supplementary-material"/>
+            <xs:element ref="tns:table-wrap"/>
+            <xs:element ref="tns:table-wrap-group"/>
+            <xs:element ref="tns:disp-formula"/>
+            <xs:element ref="tns:p"/>
+            <xs:element ref="tns:def-list"/>
+            <xs:element ref="tns:list"/>
+            <xs:element ref="tns:tex-math"/>
+            
+            <xs:element ref="tns:related-article"/>
+            <xs:element ref="tns:ack"/>
+            <xs:element ref="tns:disp-quote"/>
+            <xs:element ref="tns:speech"/>
+            <xs:element ref="tns:statement"/>
+            <xs:element ref="tns:verse-group"/>
+          </xs:choice>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:sec"/>
+          <xs:choice minOccurs="0" maxOccurs="unbounded">
+            <xs:element ref="tns:notes"/>
+            <xs:element ref="tns:fn-group"/>
+            <xs:element ref="tns:glossary"/>
+            <xs:element ref="tns:ref-list"/>
+          </xs:choice>
+        </xs:sequence>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:attrib"/>
+          <xs:element ref="tns:copyright-statement"/>
+          <xs:element ref="tns:permissions"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="position" default="float">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="anchor"/>
+            <xs:enumeration value="float"/>
+            <xs:enumeration value="margin"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="content-type"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="chem-struct-wrapper">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:object-id"/>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:element minOccurs="0" ref="tns:caption"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:alt-text"/>
+          <xs:element ref="tns:long-desc"/>
+          <xs:element ref="tns:email"/>
+          <xs:element ref="tns:ext-link"/>
+          <xs:element ref="tns:uri"/>
+        </xs:choice>
+        <xs:choice maxOccurs="unbounded">
+          <xs:element ref="tns:chem-struct"/>
+          <xs:element ref="tns:graphic"/>
+          <xs:element ref="tns:media"/>
+          <xs:element ref="tns:preformat"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:attrib"/>
+          <xs:element ref="tns:copyright-statement"/>
+          <xs:element ref="tns:permissions"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="position" default="float">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="anchor"/>
+            <xs:enumeration value="float"/>
+            <xs:enumeration value="margin"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="content-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="chem-struct">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:alt-text"/>
+        <xs:element ref="tns:long-desc"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:object-id"/>
+        <xs:element ref="tns:label"/>
+        <xs:element ref="tns:def-list"/>
+        <xs:element ref="tns:list"/>
+        <xs:element ref="tns:array"/>
+        <xs:element ref="tns:chem-struct"/>
+        <xs:element ref="tns:graphic"/>
+        <xs:element ref="tns:media"/>
+        <xs:element ref="tns:preformat"/>
+      </xs:choice>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="fig-group">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:element minOccurs="0" ref="tns:caption"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:alt-text"/>
+          <xs:element ref="tns:long-desc"/>
+          <xs:element ref="tns:email"/>
+          <xs:element ref="tns:ext-link"/>
+          <xs:element ref="tns:uri"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:fig"/>
+          <xs:element ref="tns:graphic"/>
+          <xs:element ref="tns:media"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="position" default="float">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="anchor"/>
+            <xs:enumeration value="float"/>
+            <xs:enumeration value="margin"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="content-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="fig">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:object-id"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:label"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:caption"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:alt-text"/>
+          <xs:element ref="tns:long-desc"/>
+          <xs:element ref="tns:email"/>
+          <xs:element ref="tns:ext-link"/>
+          <xs:element ref="tns:uri"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:disp-formula"/>
+          <xs:element ref="tns:disp-quote"/>
+          <xs:element ref="tns:speech"/>
+          <xs:element ref="tns:statement"/>
+          <xs:element ref="tns:verse-group"/>
+          <xs:element ref="tns:table-wrap"/>
+          <xs:element ref="tns:p"/>
+          <xs:element ref="tns:def-list"/>
+          <xs:element ref="tns:list"/>
+          <xs:element ref="tns:array"/>
+          <xs:element ref="tns:chem-struct"/>
+          <xs:element ref="tns:graphic"/>
+          <xs:element ref="tns:media"/>
+          <xs:element ref="tns:preformat"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:attrib"/>
+          <xs:element ref="tns:copyright-statement"/>
+          <xs:element ref="tns:permissions"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="position" default="float">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="anchor"/>
+            <xs:enumeration value="float"/>
+            <xs:enumeration value="margin"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="fig-type"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="caption">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:p"/>
+      </xs:sequence>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="graphic">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:alt-text"/>
+        <xs:element ref="tns:long-desc"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:object-id"/>
+        <xs:element ref="tns:label"/>
+        <xs:element ref="tns:caption"/>
+        <xs:element ref="tns:attrib"/>
+        <xs:element ref="tns:copyright-statement"/>
+        <xs:element ref="tns:permissions"/>
+      </xs:choice>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute name="alt-version" default="no">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="yes"/>
+            <xs:enumeration value="no"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="mime-subtype">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="cgm"/>
+            <xs:enumeration value="g3fax"/>
+            <xs:enumeration value="gif"/>
+            <xs:enumeration value="ief"/>
+            <xs:enumeration value="jpeg"/>
+            <xs:enumeration value="naplps"/>
+            <xs:enumeration value="png"/>
+            <xs:enumeration value="prs.btif"/>
+            <xs:enumeration value="prs.pti"/>
+            <xs:enumeration value="t38"/>
+            <xs:enumeration value="tiff"/>
+            <xs:enumeration value="tiff-fx"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="mimetype" default="image">
+        <xs:simpleType>
+          <xs:restriction base="xs:string">
+            <xs:enumeration value="image"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="position" default="float">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="anchor"/>
+            <xs:enumeration value="float"/>
+            <xs:enumeration value="margin"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="media">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:alt-text"/>
+        <xs:element ref="tns:long-desc"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:object-id"/>
+        <xs:element ref="tns:label"/>
+        <xs:element ref="tns:caption"/>
+        <xs:element ref="tns:attrib"/>
+        <xs:element ref="tns:copyright-statement"/>
+        <xs:element ref="tns:permissions"/>
+      </xs:choice>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="mimetype"/>
+      <xs:attribute type="xs:string" name="mime-subtype"/>
+      <xs:attribute name="position" default="float">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="anchor"/>
+            <xs:enumeration value="float"/>
+            <xs:enumeration value="margin"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="inline-graphic">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:alt-text"/>
+      </xs:sequence>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="mimetype" default="image">
+        <xs:simpleType>
+          <xs:restriction base="xs:string">
+            <xs:enumeration value="image"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="mime-subtype"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="preformat">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:alt-text"/>
+        <xs:element ref="tns:long-desc"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:attrib"/>
+        <xs:element ref="tns:copyright-statement"/>
+        <xs:element ref="tns:permissions"/>
+      </xs:choice>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="position" default="float">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="anchor"/>
+            <xs:enumeration value="float"/>
+            <xs:enumeration value="margin"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="preformat-type"/>
+      
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="supplementary-material">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:object-id"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:label"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:caption"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:alt-text"/>
+          <xs:element ref="tns:long-desc"/>
+          <xs:element ref="tns:email"/>
+          <xs:element ref="tns:ext-link"/>
+          <xs:element ref="tns:uri"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:disp-formula"/>
+          <xs:element ref="tns:disp-quote"/>
+          <xs:element ref="tns:speech"/>
+          <xs:element ref="tns:statement"/>
+          <xs:element ref="tns:verse-group"/>
+          <xs:element ref="tns:table-wrap"/>
+          <xs:element ref="tns:p"/>
+          <xs:element ref="tns:def-list"/>
+          <xs:element ref="tns:list"/>
+          <xs:element ref="tns:array"/>
+          <xs:element ref="tns:chem-struct"/>
+          <xs:element ref="tns:graphic"/>
+          <xs:element ref="tns:media"/>
+          <xs:element ref="tns:preformat"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:attrib"/>
+          <xs:element ref="tns:copyright-statement"/>
+          <xs:element ref="tns:permissions"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="mimetype"/>
+      <xs:attribute type="xs:string" name="mime-subtype"/>
+      <xs:attribute name="position" default="float">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="anchor"/>
+            <xs:enumeration value="float"/>
+            <xs:enumeration value="margin"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="table-wrap-group">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:element minOccurs="0" ref="tns:caption"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:alt-text"/>
+          <xs:element ref="tns:long-desc"/>
+          <xs:element ref="tns:email"/>
+          <xs:element ref="tns:ext-link"/>
+          <xs:element ref="tns:uri"/>
+        </xs:choice>
+        <xs:element maxOccurs="unbounded" ref="tns:table-wrap"/>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="position" default="float">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="anchor"/>
+            <xs:enumeration value="float"/>
+            <xs:enumeration value="margin"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="table-wrap">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:object-id"/>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:element minOccurs="0" ref="tns:caption"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:alt-text"/>
+          <xs:element ref="tns:long-desc"/>
+          <xs:element ref="tns:email"/>
+          <xs:element ref="tns:ext-link"/>
+          <xs:element ref="tns:uri"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:disp-quote"/>
+          <xs:element ref="tns:speech"/>
+          <xs:element ref="tns:statement"/>
+          <xs:element ref="tns:verse-group"/>
+          <xs:element ref="tns:def-list"/>
+          <xs:element ref="tns:list"/>
+          <xs:element ref="tns:chem-struct"/>
+          <xs:element ref="tns:graphic"/>
+          <xs:element ref="tns:media"/>
+          <xs:element ref="tns:preformat"/>
+          <xs:element ref="tns:table"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:table-wrap-foot"/>
+          <xs:element ref="tns:attrib"/>
+          <xs:element ref="tns:copyright-statement"/>
+          <xs:element ref="tns:permissions"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="position" default="float">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="anchor"/>
+            <xs:enumeration value="float"/>
+            <xs:enumeration value="margin"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="content-type"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="table-wrap-foot">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:choice maxOccurs="unbounded">
+          <xs:element ref="tns:p"/>
+          <xs:element ref="tns:fn"/>
+          <xs:element ref="tns:attrib"/>
+          <xs:element ref="tns:copyright-statement"/>
+          <xs:element ref="tns:permissions"/>
+        </xs:choice>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="font">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute type="xs:string" name="color"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="hr">
+    <xs:complexType/>
+  </xs:element>
+  <xs:element name="break">
+    <xs:complexType/>
+  </xs:element>
+  <xs:element name="bold">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="italic">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="monospace">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="sc">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="overline">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="strike">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="sub">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute name="arrange">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="stack"/>
+            <xs:enumeration value="stagger"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="sup">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute name="arrange">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="stack"/>
+            <xs:enumeration value="stagger"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="underline">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute type="xs:string" name="underline-style"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="overline-start">
+    <xs:complexType>
+      <xs:attribute name="id" use="required" type="xs:ID"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="overline-end">
+    <xs:complexType>
+      <xs:attribute name="rid" use="required" type="xs:IDREF"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="underline-start">
+    <xs:complexType>
+      <xs:attribute name="id" use="required" type="xs:ID"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="underline-end">
+    <xs:complexType>
+      <xs:attribute name="rid" use="required" type="xs:IDREF"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="journal-meta">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:journal-id"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:journal-title"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:journal-subtitle"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:abbrev-journal-title"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:issn"/>
+        <xs:element minOccurs="0" ref="tns:publisher"/>
+        <xs:element minOccurs="0" ref="tns:notes"/>
+        <xs:element minOccurs="0" ref="tns:custom-meta-wrap"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="journal-id">
+    <xs:complexType mixed="true">
+      <xs:attribute type="xs:string" name="journal-id-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="journal-title">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="journal-subtitle">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="abbrev-journal-title">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute type="xs:string" name="abbrev-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="fn">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:element maxOccurs="unbounded" ref="tns:p"/>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="symbol"/>
+      <xs:attribute type="xs:string" name="fn-type"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="target">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="target-type" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="xref">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="ref-type"/>
+      <xs:attribute name="rid" type="xs:IDREFS"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="inline-supplementary-material">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:alt-text"/>
+        <xs:element ref="tns:long-desc"/>
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="mimetype"/>
+      <xs:attribute type="xs:string" name="mime-subtype"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="def-list">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:element minOccurs="0" ref="tns:term-head"/>
+        <xs:element minOccurs="0" ref="tns:def-head"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:def-item"/>
+          <xs:element ref="tns:x"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:def-list"/>
+      </xs:sequence>
+      <xs:attribute type="xs:string" name="id"/>
+      <xs:attribute type="xs:string" name="list-type"/>
+      <xs:attribute type="xs:string" name="prefix-word"/>
+      <xs:attribute type="xs:string" name="list-content"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="term-head">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="def-head">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="def-item">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:term"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:def"/>
+          <xs:element ref="tns:x"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="term">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:disp-formula"/>
+        <xs:element ref="tns:array"/>
+        <xs:element ref="tns:chem-struct"/>
+        <xs:element ref="tns:graphic"/>
+        <xs:element ref="tns:media"/>
+        <xs:element ref="tns:preformat"/>
+      </xs:choice>
+      <xs:attribute name="rid" type="xs:IDREFS"/>
+      <xs:attribute name="id" type="xs:ID"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="list">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:element maxOccurs="unbounded" ref="tns:list-item"/>
+      </xs:sequence>
+      <xs:attribute type="xs:string" name="id"/>
+      <xs:attribute type="xs:string" name="list-type"/>
+      <xs:attribute type="xs:string" name="prefix-word"/>
+      <xs:attribute type="xs:string" name="list-content"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="list-item">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:choice maxOccurs="unbounded">
+          <xs:element ref="tns:p"/>
+          <xs:element ref="tns:def-list"/>
+          <xs:element ref="tns:list"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute type="xs:string" name="id"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="inline-formula">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute name="id" type="xs:ID"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="disp-formula">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:alt-text"/>
+        <xs:element ref="tns:long-desc"/>
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:attrib"/>
+        <xs:element ref="tns:copyright-statement"/>
+        <xs:element ref="tns:permissions"/>
+        <xs:element ref="tns:label"/>
+        <xs:element ref="tns:array"/>
+        <xs:element ref="tns:chem-struct"/>
+        <xs:element ref="tns:graphic"/>
+        <xs:element ref="tns:media"/>
+        <xs:element ref="tns:preformat"/>
+      </xs:choice>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute name="id" type="xs:ID"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="tex-math">
+    <xs:complexType mixed="true">
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute type="xs:string" name="id"/>
+      <xs:attribute name="notation">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="LaTeX"/>
+            <xs:enumeration value="tex"/>
+            <xs:enumeration value="TEX"/>
+            <xs:enumeration value="TeX"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="version"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="p">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:array"/>
+        <xs:element ref="tns:boxed-text"/>
+        <xs:element ref="tns:chem-struct"/>
+        <xs:element ref="tns:chem-struct-wrapper"/>
+        <xs:element ref="tns:fig"/>
+        <xs:element ref="tns:fig-group"/>
+        <xs:element ref="tns:graphic"/>
+        <xs:element ref="tns:media"/>
+        <xs:element ref="tns:preformat"/>
+        <xs:element ref="tns:supplementary-material"/>
+        <xs:element ref="tns:table-wrap"/>
+        <xs:element ref="tns:table-wrap-group"/>
+        <xs:element ref="tns:disp-formula"/>
+        <xs:element ref="tns:citation"/>
+        <xs:element ref="tns:def-list"/>
+        <xs:element ref="tns:list"/>
+        <xs:element ref="tns:ack"/>
+        <xs:element ref="tns:disp-quote"/>
+        <xs:element ref="tns:speech"/>
+        <xs:element ref="tns:statement"/>
+        <xs:element ref="tns:verse-group"/>
+      </xs:choice>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="disp-quote">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:array"/>
+          <xs:element ref="tns:boxed-text"/>
+          <xs:element ref="tns:chem-struct"/>
+          <xs:element ref="tns:chem-struct-wrapper"/>
+          <xs:element ref="tns:fig"/>
+          <xs:element ref="tns:fig-group"/>
+          <xs:element ref="tns:graphic"/>
+          <xs:element ref="tns:media"/>
+          <xs:element ref="tns:preformat"/>
+          <xs:element ref="tns:supplementary-material"/>
+          <xs:element ref="tns:table-wrap"/>
+          <xs:element ref="tns:table-wrap-group"/>
+          <xs:element ref="tns:disp-formula"/>
+          <xs:element ref="tns:p"/>
+          <xs:element ref="tns:def-list"/>
+          <xs:element ref="tns:list"/>
+          <xs:element ref="tns:tex-math"/>
+          
+          <xs:element ref="tns:related-article"/>
+          <xs:element ref="tns:ack"/>
+          <xs:element ref="tns:disp-quote"/>
+          <xs:element ref="tns:speech"/>
+          <xs:element ref="tns:statement"/>
+          <xs:element ref="tns:verse-group"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:attrib"/>
+          <xs:element ref="tns:copyright-statement"/>
+          <xs:element ref="tns:permissions"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="speech">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="tns:speaker"/>
+        <xs:element maxOccurs="unbounded" ref="tns:p"/>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="speaker">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:given-names"/>
+        <xs:element ref="tns:prefix"/>
+        <xs:element ref="tns:surname"/>
+        <xs:element ref="tns:suffix"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="statement">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:element maxOccurs="unbounded" ref="tns:p"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:attrib"/>
+          <xs:element ref="tns:copyright-statement"/>
+          <xs:element ref="tns:permissions"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="verse-group">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice maxOccurs="unbounded">
+          <xs:element ref="tns:verse-line"/>
+          <xs:element ref="tns:verse-group"/>
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:attrib"/>
+          <xs:element ref="tns:copyright-statement"/>
+          <xs:element ref="tns:permissions"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="verse-line">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="abbrev">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:def"/>
+      </xs:choice>
+      <xs:attribute name="id" type="xs:ID"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="named-content">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:array"/>
+        <xs:element ref="tns:boxed-text"/>
+        <xs:element ref="tns:chem-struct"/>
+        <xs:element ref="tns:chem-struct-wrapper"/>
+        <xs:element ref="tns:fig"/>
+        <xs:element ref="tns:fig-group"/>
+        <xs:element ref="tns:graphic"/>
+        <xs:element ref="tns:media"/>
+        <xs:element ref="tns:preformat"/>
+        <xs:element ref="tns:supplementary-material"/>
+        <xs:element ref="tns:table-wrap"/>
+        <xs:element ref="tns:table-wrap-group"/>
+        <xs:element ref="tns:disp-formula"/>
+        <xs:element ref="tns:def-list"/>
+        <xs:element ref="tns:list"/>
+        <xs:element ref="tns:ack"/>
+        <xs:element ref="tns:disp-quote"/>
+        <xs:element ref="tns:speech"/>
+        <xs:element ref="tns:statement"/>
+        <xs:element ref="tns:verse-group"/>
+      </xs:choice>
+      <xs:attribute type="xs:string" name="content-type" use="required"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ref-list">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:title"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:array"/>
+          <xs:element ref="tns:boxed-text"/>
+          <xs:element ref="tns:chem-struct"/>
+          <xs:element ref="tns:chem-struct-wrapper"/>
+          <xs:element ref="tns:fig"/>
+          <xs:element ref="tns:fig-group"/>
+          <xs:element ref="tns:graphic"/>
+          <xs:element ref="tns:media"/>
+          <xs:element ref="tns:preformat"/>
+          <xs:element ref="tns:supplementary-material"/>
+          <xs:element ref="tns:table-wrap"/>
+          <xs:element ref="tns:table-wrap-group"/>
+          <xs:element ref="tns:disp-formula"/>
+          <xs:element ref="tns:p"/>
+          <xs:element ref="tns:def-list"/>
+          <xs:element ref="tns:list"/>
+          <xs:element ref="tns:tex-math"/>
+          
+          <xs:element ref="tns:related-article"/>
+          <xs:element ref="tns:ack"/>
+          <xs:element ref="tns:disp-quote"/>
+          <xs:element ref="tns:speech"/>
+          <xs:element ref="tns:statement"/>
+          <xs:element ref="tns:verse-group"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:ref"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:ref-list"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ref">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:choice maxOccurs="unbounded">
+          <xs:element ref="tns:citation"/>
+          <xs:element ref="tns:note"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="note">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:element maxOccurs="unbounded" ref="tns:p"/>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="access-date">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:day"/>
+        <xs:element ref="tns:month"/>
+        <xs:element ref="tns:season"/>
+        <xs:element ref="tns:year"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="annotation">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tns:p"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="comment">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="edition">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="gov">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="isbn" type="xs:string"/>
+  <xs:element name="patent">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="person-group">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:aff"/>
+        <xs:element ref="tns:etal"/>
+        <xs:element ref="tns:collab"/>
+        <xs:element ref="tns:name"/>
+        <xs:element ref="tns:string-name"/>
+        <xs:element ref="tns:x"/>
+      </xs:choice>
+      <xs:attribute type="xs:string" name="person-group-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="pub-id">
+    <xs:complexType mixed="true">
+      <xs:attribute type="xs:string" name="pub-id-type"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="series">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="std">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="source">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+      </xs:choice>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="time-stamp" type="xs:string"/>
+  <xs:element name="trans-source">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:break"/>
+      </xs:choice>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="sec">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:label"/>
+        <xs:element ref="tns:title"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:array"/>
+          <xs:element ref="tns:boxed-text"/>
+          <xs:element ref="tns:chem-struct"/>
+          <xs:element ref="tns:chem-struct-wrapper"/>
+          <xs:element ref="tns:fig"/>
+          <xs:element ref="tns:fig-group"/>
+          <xs:element ref="tns:graphic"/>
+          <xs:element ref="tns:media"/>
+          <xs:element ref="tns:preformat"/>
+          <xs:element ref="tns:supplementary-material"/>
+          <xs:element ref="tns:table-wrap"/>
+          <xs:element ref="tns:table-wrap-group"/>
+          <xs:element ref="tns:disp-formula"/>
+          <xs:element ref="tns:p"/>
+          <xs:element ref="tns:def-list"/>
+          <xs:element ref="tns:list"/>
+          <xs:element ref="tns:tex-math"/>
+          
+          <xs:element ref="tns:related-article"/>
+          <xs:element ref="tns:ack"/>
+          <xs:element ref="tns:disp-quote"/>
+          <xs:element ref="tns:speech"/>
+          <xs:element ref="tns:statement"/>
+          <xs:element ref="tns:verse-group"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:sec"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:notes"/>
+          <xs:element ref="tns:fn-group"/>
+          <xs:element ref="tns:glossary"/>
+          <xs:element ref="tns:ref-list"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="sec-type"/>
+      <xs:attribute type="xs:string" name="disp-level"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="table">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:col"/>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:colgroup"/>
+        </xs:choice>
+        <xs:choice>
+          <xs:sequence>
+            <xs:element minOccurs="0" ref="tns:thead"/>
+            <xs:element minOccurs="0" ref="tns:tfoot"/>
+            <xs:element maxOccurs="unbounded" ref="tns:tbody"/>
+          </xs:sequence>
+          <xs:element maxOccurs="unbounded" ref="tns:tr"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="summary"/>
+      <xs:attribute type="xs:string" name="width"/>
+      <xs:attribute type="xs:string" name="border"/>
+      <xs:attribute name="frame">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="void"/>
+            <xs:enumeration value="above"/>
+            <xs:enumeration value="below"/>
+            <xs:enumeration value="hsides"/>
+            <xs:enumeration value="lhs"/>
+            <xs:enumeration value="rhs"/>
+            <xs:enumeration value="vsides"/>
+            <xs:enumeration value="box"/>
+            <xs:enumeration value="border"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="rules">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="none"/>
+            <xs:enumeration value="groups"/>
+            <xs:enumeration value="rows"/>
+            <xs:enumeration value="cols"/>
+            <xs:enumeration value="all"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="cellspacing"/>
+      <xs:attribute type="xs:string" name="cellpadding"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="thead">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tns:tr"/>
+      </xs:sequence>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="align">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="left"/>
+            <xs:enumeration value="center"/>
+            <xs:enumeration value="right"/>
+            <xs:enumeration value="justify"/>
+            <xs:enumeration value="char"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="char"/>
+      <xs:attribute type="xs:string" name="charoff"/>
+      <xs:attribute name="valign">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="top"/>
+            <xs:enumeration value="middle"/>
+            <xs:enumeration value="bottom"/>
+            <xs:enumeration value="baseline"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="tfoot">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tns:tr"/>
+      </xs:sequence>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="align">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="left"/>
+            <xs:enumeration value="center"/>
+            <xs:enumeration value="right"/>
+            <xs:enumeration value="justify"/>
+            <xs:enumeration value="char"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="char"/>
+      <xs:attribute type="xs:string" name="charoff"/>
+      <xs:attribute name="valign">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="top"/>
+            <xs:enumeration value="middle"/>
+            <xs:enumeration value="bottom"/>
+            <xs:enumeration value="baseline"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="tbody">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tns:tr"/>
+      </xs:sequence>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="align">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="left"/>
+            <xs:enumeration value="center"/>
+            <xs:enumeration value="right"/>
+            <xs:enumeration value="justify"/>
+            <xs:enumeration value="char"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="char"/>
+      <xs:attribute type="xs:string" name="charoff"/>
+      <xs:attribute name="valign">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="top"/>
+            <xs:enumeration value="middle"/>
+            <xs:enumeration value="bottom"/>
+            <xs:enumeration value="baseline"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="colgroup">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:col"/>
+      </xs:sequence>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="span" default="1"/>
+      <xs:attribute type="xs:string" name="width"/>
+      <xs:attribute name="align">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="left"/>
+            <xs:enumeration value="center"/>
+            <xs:enumeration value="right"/>
+            <xs:enumeration value="justify"/>
+            <xs:enumeration value="char"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="char"/>
+      <xs:attribute type="xs:string" name="charoff"/>
+      <xs:attribute name="valign">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="top"/>
+            <xs:enumeration value="middle"/>
+            <xs:enumeration value="bottom"/>
+            <xs:enumeration value="baseline"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="col">
+    <xs:complexType>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="span" default="1"/>
+      <xs:attribute type="xs:string" name="width"/>
+      <xs:attribute name="align">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="left"/>
+            <xs:enumeration value="center"/>
+            <xs:enumeration value="right"/>
+            <xs:enumeration value="justify"/>
+            <xs:enumeration value="char"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="char"/>
+      <xs:attribute type="xs:string" name="charoff"/>
+      <xs:attribute name="valign">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="top"/>
+            <xs:enumeration value="middle"/>
+            <xs:enumeration value="bottom"/>
+            <xs:enumeration value="baseline"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="tr">
+    <xs:complexType>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element ref="tns:th"/>
+        <xs:element ref="tns:td"/>
+      </xs:choice>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="align">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="left"/>
+            <xs:enumeration value="center"/>
+            <xs:enumeration value="right"/>
+            <xs:enumeration value="justify"/>
+            <xs:enumeration value="char"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="char"/>
+      <xs:attribute type="xs:string" name="charoff"/>
+      <xs:attribute name="valign">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="top"/>
+            <xs:enumeration value="middle"/>
+            <xs:enumeration value="bottom"/>
+            <xs:enumeration value="baseline"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="th">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:disp-formula"/>
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:citation"/>
+        <xs:element ref="tns:def-list"/>
+        <xs:element ref="tns:list"/>
+        <xs:element ref="tns:array"/>
+        <xs:element ref="tns:chem-struct"/>
+        <xs:element ref="tns:graphic"/>
+        <xs:element ref="tns:media"/>
+        <xs:element ref="tns:preformat"/>
+      </xs:choice>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="abbr"/>
+      <xs:attribute type="xs:string" name="axis"/>
+      <xs:attribute name="headers" type="xs:IDREFS"/>
+      <xs:attribute name="scope">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="row"/>
+            <xs:enumeration value="col"/>
+            <xs:enumeration value="rowgroup"/>
+            <xs:enumeration value="colgroup"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="rowspan" default="1"/>
+      <xs:attribute type="xs:string" name="colspan" default="1"/>
+      <xs:attribute name="align">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="left"/>
+            <xs:enumeration value="center"/>
+            <xs:enumeration value="right"/>
+            <xs:enumeration value="justify"/>
+            <xs:enumeration value="char"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="char"/>
+      <xs:attribute type="xs:string" name="charoff"/>
+      <xs:attribute name="valign">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="top"/>
+            <xs:enumeration value="middle"/>
+            <xs:enumeration value="bottom"/>
+            <xs:enumeration value="baseline"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="td">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="tns:email"/>
+        <xs:element ref="tns:ext-link"/>
+        <xs:element ref="tns:uri"/>
+        <xs:element ref="tns:inline-supplementary-material"/>
+        <xs:element ref="tns:related-article"/>
+        <xs:element ref="tns:font"/>
+        <xs:element ref="tns:hr"/>
+        <xs:element ref="tns:bold"/>
+        <xs:element ref="tns:italic"/>
+        <xs:element ref="tns:monospace"/>
+        <xs:element ref="tns:overline"/>
+        <xs:element ref="tns:overline-start"/>
+        <xs:element ref="tns:overline-end"/>
+        <xs:element ref="tns:sc"/>
+        <xs:element ref="tns:strike"/>
+        <xs:element ref="tns:underline"/>
+        <xs:element ref="tns:underline-start"/>
+        <xs:element ref="tns:underline-end"/>
+        <xs:element ref="tns:inline-graphic"/>
+        <xs:element ref="tns:private-char"/>
+        <xs:element ref="tns:inline-formula"/>
+        <xs:element ref="tns:tex-math"/>
+        
+        <xs:element ref="tns:abbrev"/>
+        <xs:element ref="tns:named-content"/>
+        <xs:element ref="tns:fn"/>
+        <xs:element ref="tns:target"/>
+        <xs:element ref="tns:xref"/>
+        <xs:element ref="tns:sub"/>
+        <xs:element ref="tns:sup"/>
+        <xs:element ref="tns:disp-formula"/>
+        <xs:element ref="tns:break"/>
+        <xs:element ref="tns:citation"/>
+        <xs:element ref="tns:def-list"/>
+        <xs:element ref="tns:list"/>
+        <xs:element ref="tns:array"/>
+        <xs:element ref="tns:chem-struct"/>
+        <xs:element ref="tns:graphic"/>
+        <xs:element ref="tns:media"/>
+        <xs:element ref="tns:preformat"/>
+      </xs:choice>
+      <xs:attribute name="alternate-form-of" type="xs:IDREF"/>
+      <xs:attribute type="xs:string" name="content-type"/>
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute type="xs:string" name="abbr"/>
+      <xs:attribute type="xs:string" name="axis"/>
+      <xs:attribute name="headers" type="xs:IDREFS"/>
+      <xs:attribute name="scope">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="row"/>
+            <xs:enumeration value="col"/>
+            <xs:enumeration value="rowgroup"/>
+            <xs:enumeration value="colgroup"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="rowspan" default="1"/>
+      <xs:attribute type="xs:string" name="colspan" default="1"/>
+      <xs:attribute name="align">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="left"/>
+            <xs:enumeration value="center"/>
+            <xs:enumeration value="right"/>
+            <xs:enumeration value="justify"/>
+            <xs:enumeration value="char"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute type="xs:string" name="char"/>
+      <xs:attribute type="xs:string" name="charoff"/>
+      <xs:attribute name="valign">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="top"/>
+            <xs:enumeration value="middle"/>
+            <xs:enumeration value="bottom"/>
+            <xs:enumeration value="baseline"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="private-char">
+    <xs:complexType>
+      <xs:choice>
+        <xs:choice>
+          <xs:element ref="tns:glyph-data"/>
+          <xs:element ref="tns:glyph-ref"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:inline-graphic"/>
+      </xs:choice>
+      <xs:attribute type="xs:string" name="description"/>
+      <xs:attribute type="xs:string" name="name"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="glyph-data">
+    <xs:complexType mixed="true">
+      <xs:attribute name="id" type="xs:ID"/>
+      <xs:attribute name="format" type="xs:NMTOKEN"/>
+      <xs:attribute type="xs:string" name="resolution"/>
+      <xs:attribute type="xs:string" name="x-size"/>
+      <xs:attribute type="xs:string" name="y-size"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="glyph-ref">
+    <xs:complexType>
+      <xs:attribute name="glyph-data" type="xs:IDREF"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="article">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="tns:front"/>
+        <xs:element minOccurs="0" ref="tns:body"/>
+        <xs:element minOccurs="0" ref="tns:back"/>
+        <xs:choice>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:sub-article"/>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:response"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute type="xs:string" name="article-type"/>
+      <xs:attribute name="dtd-version" default="2.1">
+        <xs:simpleType>
+          <xs:restriction base="xs:string">
+            <xs:enumeration value="2.1"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+     
+    </xs:complexType>
+  </xs:element>
+  
+  <xs:element name="front">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="tns:journal-meta"/>
+        <xs:element ref="tns:article-meta"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:def-list"/>
+          <xs:element ref="tns:list"/>
+          <xs:element ref="tns:notes"/>
+        </xs:choice>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  
+  <xs:element name="body">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:array"/>
+          <xs:element ref="tns:boxed-text"/>
+          <xs:element ref="tns:chem-struct"/>
+          <xs:element ref="tns:chem-struct-wrapper"/>
+          <xs:element ref="tns:fig"/>
+          <xs:element ref="tns:fig-group"/>
+          <xs:element ref="tns:graphic"/>
+          <xs:element ref="tns:media"/>
+          <xs:element ref="tns:preformat"/>
+          <xs:element ref="tns:supplementary-material"/>
+          <xs:element ref="tns:table-wrap"/>
+          <xs:element ref="tns:table-wrap-group"/>
+          <xs:element ref="tns:disp-formula"/>
+          <xs:element ref="tns:p"/>
+          <xs:element ref="tns:def-list"/>
+          <xs:element ref="tns:list"/>
+          <xs:element ref="tns:tex-math"/>
+            
+          <xs:element ref="tns:related-article"/>
+          <xs:element ref="tns:ack"/>
+          <xs:element ref="tns:disp-quote"/>
+          <xs:element ref="tns:speech"/>
+          <xs:element ref="tns:statement"/>
+          <xs:element ref="tns:verse-group"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:sec"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="back">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:title"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="tns:ack"/>
+          <xs:element ref="tns:app-group"/>
+          <xs:element ref="tns:bio"/>
+          <xs:element ref="tns:fn-group"/>
+          <xs:element ref="tns:glossary"/>
+          <xs:element ref="tns:ref-list"/>
+          <xs:element ref="tns:notes"/>
+          <xs:element ref="tns:sec"/>
+        </xs:choice>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="sub-article">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="tns:front"/>
+        <xs:element minOccurs="0" ref="tns:body"/>
+        <xs:element minOccurs="0" ref="tns:back"/>
+        <xs:choice>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:sub-article"/>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:response"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute type="xs:string" name="article-type"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="response">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="tns:front"/>
+        <xs:element minOccurs="0" ref="tns:body"/>
+        <xs:element minOccurs="0" ref="tns:back"/>
+      </xs:sequence>
+      <xs:attribute type="xs:string" name="response-type"/>
+      
+      
+    </xs:complexType>
+  </xs:element>
+  <xs:complexType name="any" mixed="true">
+    <xs:sequence>
+      <xs:any minOccurs="0" maxOccurs="unbounded" processContents="strict"/>
+    </xs:sequence>
+  </xs:complexType>
+
+	<xs:complexType name="pmc-articlesetType">
+		<xs:sequence>
+				<xs:element ref="tns:article" minOccurs="1" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+
+</xs:schema>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch_pubmed.xsd b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch_pubmed.xsd
new file mode 100644
index 0000000..1435754
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch_pubmed.xsd
@@ -0,0 +1,359 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.ncbi.nlm.nih.gov/soap/eutils/efetch" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.ncbi.nlm.nih.gov/soap/eutils/efetch" elementFormDefault="qualified">
+    
+    <!--    version="1.5" -->
+    <!-- http://www.ncbi.nlm.nih.gov/entrez/query/DTD/pubmed_060101.dtd date: 01/09/2006 -->
+
+	<xs:complexType name="ArticleIdType_pubmed">
+		<xs:simpleContent>
+			<xs:extension base="xs:string">
+				<xs:attribute name="IdType" default="pubmed">
+					<xs:simpleType>
+						<xs:restriction base="xs:NMTOKEN">
+							<xs:enumeration value="doi"/>
+							<xs:enumeration value="pii"/>
+							<xs:enumeration value="pmcpid"/>
+							<xs:enumeration value="pmpid"/>
+							<xs:enumeration value="sici"/>
+							<xs:enumeration value="pubmed"/>
+							<xs:enumeration value="medline"/>
+							<xs:enumeration value="pmcid"/>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="ArticleIdListType">
+		<xs:sequence>
+			<xs:element name="ArticleId" type="tns:ArticleIdType_pubmed" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="CitationSubset" type="xs:string"/>
+	<xs:complexType name="CommentInType">
+		<xs:sequence>
+			<xs:element ref="tns:RefSource"/>
+			<xs:element ref="tns:PMID" minOccurs="0"/>
+			<xs:element ref="tns:Note" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="CommentOnType">
+		<xs:sequence>
+			<xs:element ref="tns:RefSource"/>
+			<xs:element ref="tns:PMID" minOccurs="0"/>
+			<xs:element ref="tns:Note" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="CommentsCorrectionsType">
+		<xs:sequence>
+			<xs:element name="CommentOn" type="tns:CommentOnType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="CommentIn" type="tns:CommentInType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="ErratumIn" type="tns:ErratumInType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="ErratumFor" type="tns:ErratumForType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="RepublishedFrom" type="tns:RepublishedFromType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="RepublishedIn" type="tns:RepublishedInType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="RetractionOf" type="tns:RetractionOfType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="RetractionIn" type="tns:RetractionInType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="UpdateIn" type="tns:UpdateInType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="UpdateOf" type="tns:UpdateOfType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="SummaryForPatientsIn" type="tns:SummaryForPatientsInType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="OriginalReportIn" type="tns:OriginalReportInType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="ReprintOf" type="tns:ReprintOfType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="ReprintIn" type="tns:ReprintInType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="DeleteCitationType">
+		<xs:sequence>
+			<xs:element ref="tns:PMID" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ErratumForType">
+		<xs:sequence>
+			<xs:element ref="tns:RefSource"/>
+			<xs:element ref="tns:PMID" minOccurs="0"/>
+			<xs:element ref="tns:Note" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ErratumInType">
+		<xs:sequence>
+			<xs:element ref="tns:RefSource"/>
+			<xs:element ref="tns:PMID" minOccurs="0"/>
+			<xs:element ref="tns:Note" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="GeneSymbol" type="xs:string"/>
+	<xs:complexType name="GeneSymbolListType">
+		<xs:sequence>
+			<xs:element ref="tns:GeneSymbol" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="HistoryType">
+		<xs:sequence>
+			<xs:element name="PubMedPubDate" type="tns:PubMedPubDateType" maxOccurs="unbounded"/> 
+            <xs:any maxOccurs="unbounded"/>  <!--  ***** -->
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="MedlineCitationType">
+		<xs:sequence>
+			<xs:element ref="tns:NlmDcmsID" minOccurs="0"/>
+			<xs:element ref="tns:PMID"/>
+			<xs:element name="DateCreated" type="tns:DateCreatedType"/>
+			<xs:element name="DateCompleted" type="tns:DateCompletedType" minOccurs="0"/>
+			<xs:element name="DateRevised" type="tns:DateRevisedType" minOccurs="0"/>
+			<xs:element name="Article" type="tns:ArticleType"/>
+			<xs:element name="MedlineJournalInfo" type="tns:MedlineJournalInfoType"/>
+			<xs:element name="ChemicalList" type="tns:ChemicalListType" minOccurs="0"/>
+			<xs:element ref="tns:CitationSubset" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="CommentsCorrections" type="tns:CommentsCorrectionsType" minOccurs="0"/>
+			<xs:element name="GeneSymbolList" type="tns:GeneSymbolListType" minOccurs="0"/>
+			<xs:element name="MeshHeadingList" type="tns:MeshHeadingListType" minOccurs="0"/>
+			<xs:element ref="tns:NumberOfReferences" minOccurs="0"/>
+			<xs:element name="PersonalNameSubjectList" type="tns:PersonalNameSubjectListType" minOccurs="0"/>
+			<xs:element name="OtherID" type="tns:OtherIDType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="OtherAbstract" type="tns:OtherAbstractType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="KeywordList" type="tns:KeywordListType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element ref="tns:SpaceFlightMission" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="InvestigatorList" type="tns:InvestigatorListType" minOccurs="0"/>
+			<xs:element name="GeneralNote" type="tns:GeneralNoteType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+		<xs:attribute name="Owner" default="NLM">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="NLM"/>
+					<xs:enumeration value="NASA"/>
+					<xs:enumeration value="PIP"/>
+					<xs:enumeration value="KIE"/>
+					<xs:enumeration value="HSR"/>
+					<xs:enumeration value="HMD"/>
+					<xs:enumeration value="SIS"/>
+					<xs:enumeration value="NOTNLM"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+		<xs:attribute name="Status" type="xs:string"/>
+	</xs:complexType>
+	<xs:element name="MedlineCitationSet">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="MedlineCitation" type="tns:MedlineCitationType" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element name="DeleteCitation" type="tns:DeleteCitationType" minOccurs="0"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="NCBIArticleType">
+		<xs:sequence>
+			<xs:element ref="tns:PMID"/>
+			<xs:element name="Article" type="tns:ArticleType"/>
+			<xs:element name="MedlineJournalInfo" type="tns:MedlineJournalInfoType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="NlmDcmsID" type="xs:string"/>
+	<xs:element name="Note" type="xs:string"/>
+	<xs:element name="NumberOfReferences" type="xs:string"/>
+	<xs:complexType name="OriginalReportInType">
+		<xs:sequence>
+			<xs:element ref="tns:RefSource"/>
+			<xs:element ref="tns:PMID" minOccurs="0"/>
+			<xs:element ref="tns:Note" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="PubMedPubDateType">
+		<xs:sequence>
+			<xs:element ref="tns:Year"/>
+			<xs:element ref="tns:Month"/>
+			<xs:element ref="tns:Day"/>
+			<xs:sequence minOccurs="0">
+				<xs:element ref="tns:Hour"/>
+				<xs:sequence minOccurs="0">
+					<xs:element ref="tns:Minute"/>
+					<xs:element ref="tns:Second" minOccurs="0"/>
+				</xs:sequence>
+			</xs:sequence>
+		</xs:sequence>
+		<xs:attribute name="PubStatus" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="received"/>
+					<xs:enumeration value="accepted"/>
+					<xs:enumeration value="epublish"/>
+					<xs:enumeration value="ppublish"/>
+					<xs:enumeration value="revised"/>
+					<xs:enumeration value="aheadofprint"/>
+					<xs:enumeration value="retracted"/>
+					<xs:enumeration value="pmc"/>
+					<xs:enumeration value="pmcr"/>
+					<xs:enumeration value="pubmed"/>
+					<xs:enumeration value="pubmedr"/>
+					<xs:enumeration value="premedline"/>
+					<xs:enumeration value="medline"/>
+					<xs:enumeration value="medliner"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+
+	<xs:element name="PublicationStatus" type="xs:string"/>
+	<xs:complexType name="PubmedArticleType">
+		<xs:sequence>
+            <xs:element name="NCBIArticle" type="tns:NCBIArticleType"/>
+			<xs:element name="MedlineCitation" type="tns:MedlineCitationType"/>
+			<xs:element name="PubmedData" type="tns:PubmedDataType" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="PubmedArticleSet">
+		<xs:complexType>
+			<xs:sequence maxOccurs="unbounded">
+				<xs:element name="PubmedArticle" type="tns:PubmedArticleType"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="PubmedDataType">
+		<xs:sequence>
+			<xs:any minOccurs="0"/>
+			<xs:element name="History" type="tns:HistoryType" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element ref="tns:PublicationStatus"/>
+			<xs:element name="ArticleIdList" type="tns:ArticleIdListType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="RefSource" type="xs:string"/>
+	<xs:complexType name="ReprintInType">
+		<xs:sequence>
+			<xs:element ref="tns:RefSource"/>
+			<xs:element ref="tns:PMID" minOccurs="0"/>
+			<xs:element ref="tns:Note" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ReprintOfType">
+		<xs:sequence>
+			<xs:element ref="tns:RefSource"/>
+			<xs:element ref="tns:PMID" minOccurs="0"/>
+			<xs:element ref="tns:Note" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="RepublishedFromType">
+		<xs:sequence>
+			<xs:element ref="tns:RefSource"/>
+			<xs:element ref="tns:PMID" minOccurs="0"/>
+			<xs:element ref="tns:Note" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="RepublishedInType">
+		<xs:sequence>
+			<xs:element ref="tns:RefSource"/>
+			<xs:element ref="tns:PMID" minOccurs="0"/>
+			<xs:element ref="tns:Note" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="RetractionInType">
+		<xs:sequence>
+			<xs:element ref="tns:RefSource"/>
+			<xs:element ref="tns:PMID" minOccurs="0"/>
+			<xs:element ref="tns:Note" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="RetractionOfType">
+		<xs:sequence>
+			<xs:element ref="tns:RefSource"/>
+			<xs:element ref="tns:PMID" minOccurs="0"/>
+			<xs:element ref="tns:Note" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="SummaryForPatientsInType">
+		<xs:sequence>
+			<xs:element ref="tns:RefSource"/>
+			<xs:element ref="tns:PMID" minOccurs="0"/>
+			<xs:element ref="tns:Note" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:element name="URL">
+		<xs:complexType>
+			<xs:simpleContent>
+				<xs:extension base="xs:string">
+					<xs:attribute name="lang">
+						<xs:simpleType>
+							<xs:restriction base="xs:NMTOKEN">
+								<xs:enumeration value="AF"/>
+								<xs:enumeration value="AR"/>
+								<xs:enumeration value="AZ"/>
+								<xs:enumeration value="BG"/>
+								<xs:enumeration value="CS"/>
+								<xs:enumeration value="DA"/>
+								<xs:enumeration value="DE"/>
+								<xs:enumeration value="EN"/>
+								<xs:enumeration value="EL"/>
+								<xs:enumeration value="ES"/>
+								<xs:enumeration value="FA"/>
+								<xs:enumeration value="FI"/>
+								<xs:enumeration value="FR"/>
+								<xs:enumeration value="HE"/>
+								<xs:enumeration value="HU"/>
+								<xs:enumeration value="HY"/>
+								<xs:enumeration value="IN"/>
+								<xs:enumeration value="IS"/>
+								<xs:enumeration value="IT"/>
+								<xs:enumeration value="IW"/>
+								<xs:enumeration value="JA"/>
+								<xs:enumeration value="KA"/>
+								<xs:enumeration value="KO"/>
+								<xs:enumeration value="LT"/>
+								<xs:enumeration value="MK"/>
+								<xs:enumeration value="ML"/>
+								<xs:enumeration value="NL"/>
+								<xs:enumeration value="NO"/>
+								<xs:enumeration value="PL"/>
+								<xs:enumeration value="PT"/>
+								<xs:enumeration value="PS"/>
+								<xs:enumeration value="RO"/>
+								<xs:enumeration value="RU"/>
+								<xs:enumeration value="SL"/>
+								<xs:enumeration value="SK"/>
+								<xs:enumeration value="SQ"/>
+								<xs:enumeration value="SR"/>
+								<xs:enumeration value="SV"/>
+								<xs:enumeration value="SW"/>
+								<xs:enumeration value="TH"/>
+								<xs:enumeration value="TR"/>
+								<xs:enumeration value="UK"/>
+								<xs:enumeration value="VI"/>
+								<xs:enumeration value="ZH"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+					<xs:attribute name="Type">
+						<xs:simpleType>
+							<xs:restriction base="xs:NMTOKEN">
+								<xs:enumeration value="FullText"/>
+								<xs:enumeration value="Summary"/>
+								<xs:enumeration value="fulltext"/>
+								<xs:enumeration value="summary"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+				</xs:extension>
+			</xs:simpleContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="UpdateInType">
+		<xs:sequence>
+			<xs:element ref="tns:RefSource"/>
+			<xs:element ref="tns:PMID" minOccurs="0"/>
+			<xs:element ref="tns:Note" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="UpdateOfType">
+		<xs:sequence>
+			<xs:element ref="tns:RefSource"/>
+			<xs:element ref="tns:PMID" minOccurs="0"/>
+			<xs:element ref="tns:Note" minOccurs="0"/>
+		</xs:sequence>
+	</xs:complexType>
+
+
+	<xs:complexType name="PubmedArticleSetType">
+		<xs:sequence>
+			<xs:element name="PubmedArticle" type="tns:PubmedArticleType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+
+</xs:schema>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch_taxon.xsd b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch_taxon.xsd
new file mode 100644
index 0000000..87ad69b
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/efetch_taxon.xsd
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<s:schema 
+    xmlns:tns="http://www.ncbi.nlm.nih.gov/soap/eutils/efetch"
+    xmlns:s="http://www.w3.org/2001/XMLSchema" 
+    targetNamespace="http://www.ncbi.nlm.nih.gov/soap/eutils/efetch"
+    elementFormDefault="qualified"
+    >
+
+    <!--  version="1.5" -->
+    <!--  http://www.ncbi.nlm.nih.gov/entrez/query/DTD/taxon.dtd  date: 01/11/2006  -->
+
+	<s:complexType name="AkaTaxIdsType">
+		<s:sequence>
+			<s:element type="s:string" name="TaxId" minOccurs="0" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+
+	<s:complexType name="CitationType">
+		<s:sequence>
+			<s:element type="s:string" name="CitId"/>
+			<s:element type="s:string" name="CitKey"/>
+			<s:element type="s:string" name="CitUrl" minOccurs="0"/>
+			<s:element type="s:string" name="CitText" minOccurs="0"/>
+			<s:element type="s:string" name="CitPubmedId" minOccurs="0"/>
+			<s:element type="s:string" name="CitMedlineId" minOccurs="0"/>
+		</s:sequence>
+	</s:complexType>
+
+	<s:complexType name="CitationsType">
+		<s:sequence>
+			<s:element name="Citation" type="tns:CitationType" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+
+	<s:complexType name="GeneticCode_Type">
+		<s:sequence>
+			<s:element type="s:string" name="GCId"/>
+			<s:element type="s:string" name="GCName"/>
+		</s:sequence>
+	</s:complexType>
+
+	<s:complexType name="LineageExType">
+		<s:sequence>
+			<s:element name="Taxon" type="tns:TaxonType" minOccurs="0" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+
+	<s:complexType name="MitoGeneticCodeType">
+		<s:sequence>
+			<s:element type="s:string" name="MGCId"/>
+			<s:element type="s:string" name="MGCName"/>
+		</s:sequence>
+	</s:complexType>
+
+	<s:complexType name="ModifierType">
+		<s:sequence>
+			<s:element type="s:string" name="ModId"/>
+			<s:element type="s:string" name="ModType"/>
+			<s:element type="s:string" name="ModName"/>
+			<s:element type="s:string" name="ModGBhidden"/>
+			<s:choice minOccurs="0">
+				<s:element type="s:string" name="RModId"/>
+				<s:element type="s:string" name="RTaxId"/>
+			</s:choice>
+		</s:sequence>
+	</s:complexType>
+
+	<s:complexType name="ModifiersType">
+		<s:sequence>
+			<s:element name="Modifier" type="tns:ModifierType" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+
+	<s:complexType name="NameType">
+		<s:sequence>
+			<s:element type="s:string" name="ClassCDE"/>
+			<s:element type="s:string" name="DispName"/>
+			<s:element type="s:string" name="UniqueName" minOccurs="0"/>
+		</s:sequence>
+	</s:complexType>
+
+	<s:complexType name="OtherNamesType">
+		<s:sequence>
+			<s:element type="s:string" name="GenbankCommonName" minOccurs="0"/>
+			<s:element type="s:string" name="GenbankAcronym" minOccurs="0"/>
+			<s:element type="s:string" name="BlastName" minOccurs="0"/>
+			<s:choice minOccurs="0" maxOccurs="unbounded">
+				<s:element type="s:string" name="EquivalentName"/>
+				<s:element type="s:string" name="Synonym"/>
+				<s:element type="s:string" name="Acronym"/>
+				<s:element type="s:string" name="Misspelling"/>
+				<s:element type="s:string" name="Anamorph"/>
+				<s:element type="s:string" name="Includes"/>
+				<s:element type="s:string" name="CommonName"/>
+				<s:element type="s:string" name="Inpart"/>
+				<s:element type="s:string" name="Misnomer"/>
+				<s:element type="s:string" name="Teleomorph"/>
+				<s:element type="s:string" name="GenbankSynonym"/>
+				<s:element type="s:string" name="GenbankAnamorph"/>
+			</s:choice>
+			<s:element name="Name" type="tns:NameType" minOccurs="0" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+
+	<s:complexType name="PropertiesType">
+		<s:sequence>
+			<s:element name="Property" type="tns:PropertyType" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+
+	<s:complexType name="PropertyType">
+		<s:sequence>
+			<s:element type="s:string" name="PropName"/>
+			<s:choice>
+				<s:element type="s:string" name="PropValueInt"/>
+				<s:element type="s:string" name="PropValueBool"/>
+				<s:element type="s:string" name="PropValueString"/>
+			</s:choice>
+		</s:sequence>
+	</s:complexType>
+
+	<s:complexType name="TaxonType">
+		<s:sequence>
+			<s:element type="s:string" name="TaxId"/>
+			<s:element type="s:string" name="ScientificName"/>
+			<s:element name="OtherNames" type="tns:OtherNamesType" minOccurs="0"/>
+			<s:element type="s:string" name="ParentTaxId" minOccurs="0"/>
+			<s:element type="s:string" name="Rank" minOccurs="0"/>
+			<s:element type="s:string" name="Division" minOccurs="0"/>
+			<s:element name="GeneticCode" type="tns:GeneticCode_Type" minOccurs="0"/>
+			<s:element name="MitoGeneticCode" type="tns:MitoGeneticCodeType" minOccurs="0"/>
+			<s:element type="s:string" name="Lineage" minOccurs="0"/>
+			<s:element name="LineageEx" type="tns:LineageExType" minOccurs="0"/>
+			<s:element name="Citations" type="tns:CitationsType" minOccurs="0"/>
+			<s:element name="Modifiers" type="tns:ModifiersType" minOccurs="0"/>
+			<s:element name="Properties" type="tns:PropertiesType" minOccurs="0"/>
+			<s:element type="s:string" name="CreateDate" minOccurs="0"/>
+			<s:element type="s:string" name="UpdateDate" minOccurs="0"/>
+			<s:element type="s:string" name="PubDate" minOccurs="0"/>
+			<s:element name="AkaTaxIds" type="tns:AkaTaxIdsType" minOccurs="0"/>
+		</s:sequence>
+	</s:complexType>
+
+	<s:complexType name="TaxaSetType">
+		<s:sequence>
+			<s:element name="Taxon" type="tns:TaxonType" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+
+</s:schema>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/egquery.xsd b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/egquery.xsd
new file mode 100644
index 0000000..2fb0a05
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/egquery.xsd
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<s:schema targetNamespace="http://www.ncbi.nlm.nih.gov/soap/eutils/egquery" xmlns:tns="http://www.ncbi.nlm.nih.gov/soap/eutils/egquery" xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+
+	<!--  version="1.5" -->
+	<!--  http://www.ncbi.nlm.nih.gov/entrez/query/DTD/egquery.dtd   date: 2004/05/03 16:19:48  -->
+	
+	<s:element name="Result">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="Term" type="s:string"/>
+				<s:element name="eGQueryResult" type="tns:eGQueryResultType"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:complexType name="ResultItemType">
+		<s:sequence>
+			<s:element name="DbName" type="s:string"/>
+			<s:element name="MenuName" type="s:string"/>
+			<s:element name="Count" type="s:string"/>
+			<s:element name="Status" type="s:string"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="eGQueryResultType">
+		<s:sequence>
+			<s:element name="ERROR" type="s:string" minOccurs="0"/>
+			<s:element name="ResultItem" type="tns:ResultItemType" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+	<s:element name="eGqueryRequest">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="term" type="s:string" minOccurs="0"/>
+				<s:element name="tool" type="s:string" minOccurs="0"/>
+				<s:element name="email" type="s:string" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:element name="eGqueryRequestMS">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="term" type="s:string" minOccurs="0"/>
+				<s:element name="tool" type="s:string" minOccurs="0"/>
+				<s:element name="email" type="s:string" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:complexType name="GQueryResultType">
+		<s:sequence>
+			<s:element name="Term" type="s:string"/>
+			<s:element name="eGQueryResult" type="tns:eGQueryResultType"/>
+		</s:sequence>
+	</s:complexType>
+	<s:element name="ResultMS">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="Result" type="tns:GQueryResultType" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+</s:schema>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/einfo.xsd b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/einfo.xsd
new file mode 100644
index 0000000..73a4b4f
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/einfo.xsd
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<s:schema targetNamespace="http://www.ncbi.nlm.nih.gov/soap/eutils/einfo" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.ncbi.nlm.nih.gov/soap/eutils/einfo" elementFormDefault="qualified">
+
+	<!--   version="1.5" -->
+	<!--   http://www.ncbi.nlm.nih.gov/entrez/query/DTD/eInfo_020511.dtd  date: 2004/02/06 16:45:18 -->
+
+	<s:complexType name="DbInfoType">
+		<s:sequence>
+			<s:element name="DbName" type="s:string"/>
+			<s:element name="MenuName" type="s:string"/>
+			<s:element name="Description" type="s:string"/>
+			<s:element name="Count" type="s:string"/>
+			<s:element name="LastUpdate" type="s:string"/>
+			<s:element name="FieldList" type="tns:FieldListType"/>
+			<s:element name="LinkList" type="tns:LinkListType" minOccurs="0"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="DbListType">
+		<s:choice>
+			<s:element name="DbName" type="s:string" minOccurs="0" maxOccurs="unbounded"/>
+		</s:choice>
+	</s:complexType>
+	<s:complexType name="FieldType">
+		<s:sequence>
+			<s:element name="Name" type="s:string"/>
+			<s:element name="FullName" type="s:string"/>
+			<s:element name="Description" type="s:string"/>
+			<s:element name="TermCount" type="s:string"/>
+			<s:element name="IsDate" type="s:string"/>
+			<s:element name="IsNumerical" type="s:string"/>
+			<s:element name="SingleToken" type="s:string"/>
+			<s:element name="Hierarchy" type="s:string"/>
+			<s:element name="IsHidden" type="s:string"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="FieldListType">
+		<s:sequence>
+			<s:element name="Field" type="tns:FieldType" minOccurs="0" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="LinkType">
+		<s:sequence>
+			<s:element name="Name" type="s:string"/>
+			<s:element name="Menu" type="s:string"/>
+			<s:element name="Description" type="s:string"/>
+			<s:element name="DbTo" type="s:string"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="LinkListType">
+		<s:sequence>
+			<s:element name="Link" type="tns:LinkType" minOccurs="0" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+	<s:element name="eInfoResult">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="ERROR" type="s:string" minOccurs="0"/>
+				<s:element name="DbList" type="tns:DbListType" minOccurs="0"/>
+				<s:element name="DbInfo" type="tns:DbInfoType" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:element name="eInfoRequest">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="db" type="s:string" minOccurs="0"/>
+				<s:element name="tool" type="s:string" minOccurs="0"/>
+				<s:element name="email" type="s:string" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:element name="eInfoRequestMS">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="db" type="s:string" minOccurs="0"/>
+				<s:element name="tool" type="s:string" minOccurs="0"/>
+				<s:element name="email" type="s:string" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:complexType name="eInfoResultType">
+		<s:sequence>
+			<s:element name="ERROR" type="s:string" minOccurs="0"/>
+			<s:element name="DbList" type="tns:DbListType" minOccurs="0"/>
+			<s:element name="DbInfo" type="tns:DbInfoType" minOccurs="0"/>
+		</s:sequence>
+	</s:complexType>
+	<s:element name="eInfoResultMS">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="eInfoResult" type="tns:eInfoResultType" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+</s:schema>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/elink.xsd b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/elink.xsd
new file mode 100644
index 0000000..8b6a43f
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/elink.xsd
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<s:schema targetNamespace="http://www.ncbi.nlm.nih.gov/soap/eutils/elink" xmlns:tns="http://www.ncbi.nlm.nih.gov/soap/eutils/elink" xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+
+	<!--   version="1.5" -->
+	<!--   http://www.ncbi.nlm.nih.gov/entrez/query/DTD/eLink_050511.dtd  -->
+
+	<s:element name="Attribute" type="s:string"/>
+	<s:element name="DbFrom" type="s:string"/>
+	<s:element name="DbTo" type="s:string"/>
+	<s:element name="ERROR" type="s:string"/>
+	<s:element name="IconUrl" type="s:string"/>
+	<s:element name="Info" type="s:string"/>
+	<s:element name="LinkName" type="s:string"/>
+	<s:element name="Name" type="s:string"/>
+	<s:element name="NameAbbr" type="s:string"/>
+	<s:element name="Score" type="s:string"/>
+	<s:element name="SubjectType" type="s:string"/>
+	<s:element name="Url" type="s:string"/>
+	<s:element name="MenuTag" type="s:string"/>
+	<s:complexType name="IdType">
+		<s:simpleContent>
+			<s:extension base="s:string">
+				<s:attribute name="HasLinkOut">
+					<s:simpleType>
+						<s:restriction base="s:NMTOKEN">
+							<s:enumeration value="Y"/>
+							<s:enumeration value="N"/>
+						</s:restriction>
+					</s:simpleType>
+				</s:attribute>
+				<s:attribute name="HasNeighbor">
+					<s:simpleType>
+						<s:restriction base="s:NMTOKEN">
+							<s:enumeration value="Y"/>
+							<s:enumeration value="N"/>
+						</s:restriction>
+					</s:simpleType>
+				</s:attribute>
+			</s:extension>
+		</s:simpleContent>
+	</s:complexType>
+	<s:complexType name="IdCheckListType">
+		<s:sequence>
+			<s:choice minOccurs="0" maxOccurs="unbounded">
+				<s:element name="Id" type="tns:IdType"/>
+				<s:element name="IdLinkSet" type="tns:IdLinkSetType"/>
+			</s:choice>
+			<s:element ref="tns:ERROR" minOccurs="0"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="IdLinkSetType">
+		<s:sequence>
+			<s:element name="LinkInfo" type="tns:LinkInfoType" minOccurs="0" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="IdListType">
+		<s:sequence>
+			<s:element name="Id" type="tns:IdType" minOccurs="0" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="IdUrlListType">
+		<s:sequence>
+			<s:element name="IdUrlSet" type="tns:IdUrlSetType" minOccurs="0" maxOccurs="unbounded"/>
+			<s:element ref="tns:ERROR" minOccurs="0"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="IdUrlSetType">
+		<s:sequence>
+			<s:element name="Id" type="tns:IdType"/>
+			<s:choice>
+				<s:element name="ObjUrl" type="tns:ObjUrlType" maxOccurs="unbounded"/>
+				<s:element ref="tns:Info"/>
+			</s:choice>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="LinkType">
+		<s:sequence>
+			<s:element name="Id" type="tns:IdType"/>
+			<s:element ref="tns:Score" minOccurs="0"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="LinkInfoType">
+		<s:sequence>
+			<s:element ref="tns:DbTo"/>
+			<s:element ref="tns:LinkName"/>
+			<s:element ref="tns:MenuTag"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="LinkSetType">
+		<s:sequence>
+			<s:element ref="tns:DbFrom"/>
+			<s:element ref="tns:ERROR" minOccurs="0"/>
+			<s:element name="IdList" type="tns:IdListType" minOccurs="0"/>
+			<s:element name="LinkSetDb" type="tns:LinkSetDbType" minOccurs="0" maxOccurs="unbounded"/>
+			<s:element name="IdUrlList" type="tns:IdUrlListType" minOccurs="0"/>
+			<s:element name="IdCheckList" type="tns:IdCheckListType" minOccurs="0"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="LinkSetDbType">
+		<s:sequence>
+			<s:element ref="tns:DbTo"/>
+			<s:element ref="tns:LinkName"/>
+			<s:choice>
+				<s:element name="Link" type="tns:LinkType" minOccurs="0" maxOccurs="unbounded"/>
+				<s:element ref="tns:Info"/>
+			</s:choice>
+			<s:element ref="tns:ERROR" minOccurs="0"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="ObjUrlType">
+		<s:sequence>
+			<s:element ref="tns:Url"/>
+			<s:element ref="tns:IconUrl" minOccurs="0"/>
+			<s:element ref="tns:LinkName" minOccurs="0"/>
+			<s:element ref="tns:SubjectType" minOccurs="0" maxOccurs="unbounded"/>
+			<s:element ref="tns:Attribute" minOccurs="0" maxOccurs="unbounded"/>
+			<s:element name="Provider" type="tns:ProviderType"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="ProviderType">
+		<s:sequence>
+			<s:element ref="tns:Name"/>
+			<s:element ref="tns:NameAbbr"/>
+			<s:element name="Id" type="tns:IdType"/>
+			<s:element ref="tns:Url"/>
+			<s:element ref="tns:IconUrl" minOccurs="0"/>
+		</s:sequence>
+	</s:complexType>
+	<s:element name="eLinkResult">
+		<s:complexType>
+			<s:sequence>
+				<s:element ref="tns:ERROR" minOccurs="0"/>
+				<s:element name="LinkSet" type="tns:LinkSetType" minOccurs="0" maxOccurs="unbounded"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:complexType name="eLinkResultType">
+		<s:sequence>
+			<s:element ref="tns:ERROR" minOccurs="0"/>
+			<s:element name="LinkSet" type="tns:LinkSetType" minOccurs="0" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+	<s:element name="eLinkResultMS">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="eLinkResult" type="tns:eLinkResultType" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:element name="eLinkRequest">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="db" type="s:string" minOccurs="0"/>
+				<s:element name="id" type="s:string" minOccurs="0" maxOccurs="unbounded"/>
+				<s:element name="reldate" type="s:string" minOccurs="0"/>
+				<s:element name="mindate" type="s:string" minOccurs="0"/>
+				<s:element name="maxdate" type="s:string" minOccurs="0"/>
+				<s:element name="datetype" type="s:string" minOccurs="0"/>
+				<s:element name="term" type="s:string" minOccurs="0"/>
+				<s:element name="dbfrom" type="s:string" minOccurs="0"/>
+				<s:element name="WebEnv" type="s:string" minOccurs="0"/>
+				<s:element name="query_key" type="s:string" minOccurs="0"/>
+				<s:element name="cmd" type="s:string" minOccurs="0"/>
+				<s:element name="tool" type="s:string" minOccurs="0"/>
+				<s:element name="email" type="s:string" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:element name="eLinkRequestMS">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="db" type="s:string" minOccurs="0"/>
+				<s:element name="id" type="s:string" minOccurs="0" maxOccurs="unbounded"/>
+				<s:element name="reldate" type="s:string" minOccurs="0"/>
+				<s:element name="mindate" type="s:string" minOccurs="0"/>
+				<s:element name="maxdate" type="s:string" minOccurs="0"/>
+				<s:element name="datetype" type="s:string" minOccurs="0"/>
+				<s:element name="term" type="s:string" minOccurs="0"/>
+				<s:element name="dbfrom" type="s:string" minOccurs="0"/>
+				<s:element name="WebEnv" type="s:string" minOccurs="0"/>
+				<s:element name="query_key" type="s:string" minOccurs="0"/>
+				<s:element name="cmd" type="s:string" minOccurs="0"/>
+				<s:element name="tool" type="s:string" minOccurs="0"/>
+				<s:element name="email" type="s:string" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+</s:schema>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/esearch.xsd b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/esearch.xsd
new file mode 100644
index 0000000..49f6331
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/esearch.xsd
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<s:schema targetNamespace="http://www.ncbi.nlm.nih.gov/soap/eutils/esearch" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.ncbi.nlm.nih.gov/soap/eutils/esearch" elementFormDefault="qualified">
+	
+    <!--  version="1.5" -->
+	<!--  http://www.ncbi.nlm.nih.gov/entrez/query/DTD/eSearch_020511.dtd  -->
+	
+	<s:element name="Count" type="s:string"/>
+	<s:element name="ERROR" type="s:string"/>
+	<s:element name="Explode" type="s:string"/>
+	<s:element name="Field" type="s:string"/>
+	<s:element name="FieldNotFound" type="s:string"/>
+	<s:element name="From" type="s:string"/>
+	<s:element name="Id" type="s:string"/>
+	<s:element name="OutputMessage" type="s:string"/>
+	<s:element name="PhraseIgnored" type="s:string"/>
+	<s:element name="PhraseNotFound" type="s:string"/>
+	<s:element name="QueryKey" type="s:string"/>
+	<s:element name="QueryTranslation" type="s:string"/>
+	<s:element name="QuotedPhraseNotFound" type="s:string"/>
+	<s:element name="RetMax" type="s:string"/>
+	<s:element name="RetStart" type="s:string"/>
+	<s:element name="Term" type="s:string"/>
+	<s:element name="To" type="s:string"/>
+	<s:element name="WebEnv" type="s:string"/>
+	<s:complexType name="ErrorListType">
+		<s:sequence>
+			<s:element ref="tns:PhraseNotFound" minOccurs="0" maxOccurs="unbounded"/>
+			<s:element ref="tns:FieldNotFound" minOccurs="0" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="IdListType">
+		<s:sequence>
+			<s:element ref="tns:Id" minOccurs="0" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="TermSetType">
+		<s:sequence>
+			<s:element ref="tns:Term"/>
+			<s:element ref="tns:Field"/>
+			<s:element ref="tns:Count"/>
+			<s:element ref="tns:Explode"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="TranslationType">
+		<s:sequence>
+			<s:element ref="tns:From"/>
+			<s:element ref="tns:To"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="TranslationSetType">
+		<s:sequence>
+			<s:element name="Translation" type="tns:TranslationType" minOccurs="0" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+	<s:complexType name="TranslationStackType">
+		<s:choice minOccurs="0" maxOccurs="unbounded">
+			<s:element name="TermSet" type="tns:TermSetType"/>
+			<s:element name="OP" type="s:string" />
+		</s:choice>
+	</s:complexType>
+	<s:complexType name="WarningListType">
+		<s:sequence>
+			<s:element ref="tns:PhraseIgnored" minOccurs="0" maxOccurs="unbounded"/>
+			<s:element ref="tns:QuotedPhraseNotFound" minOccurs="0" maxOccurs="unbounded"/>
+			<s:element ref="tns:OutputMessage" minOccurs="0" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+	<s:element name="eSearchResult">
+		<s:complexType>
+			<s:sequence>
+				<s:sequence minOccurs="0">
+					<s:element ref="tns:ERROR" minOccurs="0"/>
+					<s:sequence minOccurs="0">
+						<s:element ref="tns:Count" minOccurs="0"/>
+						<s:sequence minOccurs="0">
+							<s:element ref="tns:RetMax" minOccurs="0"/>
+							<s:element ref="tns:RetStart" minOccurs="0"/>
+							<s:element ref="tns:QueryKey" minOccurs="0"/>
+							<s:element ref="tns:WebEnv" minOccurs="0"/>
+							<s:element name="IdList" type="tns:IdListType" minOccurs="0"/>
+							<s:element name="TranslationSet" type="tns:TranslationSetType" minOccurs="0"/>
+							<s:element name="TranslationStack" type="tns:TranslationStackType" minOccurs="0"/>
+							<s:element ref="tns:QueryTranslation" minOccurs="0"/>
+						</s:sequence>
+					</s:sequence>
+				</s:sequence>
+				<s:element name="ErrorList" type="tns:ErrorListType" minOccurs="0"/>
+				<s:element name="WarningList" type="tns:WarningListType" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:element name="eSearchRequest">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="db" type="s:string" minOccurs="0"/>
+				<s:element name="term" type="s:string" minOccurs="0"/>
+				<s:element name="WebEnv" type="s:string" minOccurs="0"/>
+				<s:element name="QueryKey" type="s:string" minOccurs="0"/>
+				<s:element name="usehistory" type="s:string" minOccurs="0"/>
+				<s:element name="tool" type="s:string" minOccurs="0"/>
+				<s:element name="email" type="s:string" minOccurs="0"/>
+				<s:element name="field" type="s:string" minOccurs="0"/>
+				<s:element name="reldate" type="s:string" minOccurs="0"/>
+				<s:element name="mindate" type="s:string" minOccurs="0"/>
+				<s:element name="maxdate" type="s:string" minOccurs="0"/>
+				<s:element name="datetype" type="s:string" minOccurs="0"/>
+				<s:element name="RetStart" type="s:string" minOccurs="0"/>
+				<s:element name="RetMax" type="s:string" minOccurs="0"/>
+				<s:element name="rettype" type="s:string" minOccurs="0"/>
+				<s:element name="sort" type="s:string" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:element name="eSearchRequestMS">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="db" type="s:string" minOccurs="0"/>
+				<s:element name="term" type="s:string" minOccurs="0"/>
+				<s:element name="WebEnv" type="s:string" minOccurs="0"/>
+				<s:element name="query_key" type="s:string" minOccurs="0"/>
+				<s:element name="usehistory" type="s:string" minOccurs="0"/>
+				<s:element name="tool" type="s:string" minOccurs="0"/>
+				<s:element name="email" type="s:string" minOccurs="0"/>
+				<s:element name="field" type="s:string" minOccurs="0"/>
+				<s:element name="reldate" type="s:string" minOccurs="0"/>
+				<s:element name="mindate" type="s:string" minOccurs="0"/>
+				<s:element name="maxdate" type="s:string" minOccurs="0"/>
+				<s:element name="datetype" type="s:string" minOccurs="0"/>
+				<s:element name="retstart" type="s:string" minOccurs="0"/>
+				<s:element name="retmax" type="s:string" minOccurs="0"/>
+				<s:element name="rettype" type="s:string" minOccurs="0"/>
+				<s:element name="sort" type="s:string" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:complexType name="eSearchResultType">
+		<s:sequence>
+			<s:sequence minOccurs="0">
+				<s:element ref="tns:ERROR" minOccurs="0"/>
+				<s:sequence minOccurs="0">
+					<s:element ref="tns:Count" minOccurs="0"/>
+					<s:sequence minOccurs="0">
+						<s:element ref="tns:RetMax" minOccurs="0"/>
+						<s:element ref="tns:RetStart" minOccurs="0"/>
+						<s:element ref="tns:QueryKey" minOccurs="0"/>
+						<s:element ref="tns:WebEnv" minOccurs="0"/>
+						<s:element name="IdList" type="tns:IdListType" minOccurs="0"/>
+						<s:element name="TranslationSet" type="tns:TranslationSetType" minOccurs="0"/>
+						<s:element name="TranslationStack" type="tns:TranslationStackType" minOccurs="0"/>
+						<s:element ref="tns:QueryTranslation" minOccurs="0"/>
+					</s:sequence>
+				</s:sequence>
+			</s:sequence>
+			<s:element name="ErrorList" type="tns:ErrorListType" minOccurs="0"/>
+			<s:element name="WarningList" type="tns:WarningListType" minOccurs="0"/>
+		</s:sequence>
+	</s:complexType>
+	<s:element name="eSearchResultMS">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="eSearchResult" type="tns:eSearchResultType" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+</s:schema>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/espell.xsd b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/espell.xsd
new file mode 100644
index 0000000..98e1caa
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/espell.xsd
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<s:schema targetNamespace="http://www.ncbi.nlm.nih.gov/soap/eutils/espell" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.ncbi.nlm.nih.gov/soap/eutils/espell" elementFormDefault="qualified">
+
+	<!--   version="1.5"  -->
+	<!--   http://www.ncbi.nlm.nih.gov/entrez/query/DTD/eSpell.dtd  date: 2005/03/02 17:46:05  -->
+
+	<s:complexType name="SpelledQueryType">
+		<s:choice minOccurs="0" maxOccurs="unbounded">
+			<s:element name="Replaced" type="s:string"/>
+			<s:element name="Original" type="s:string"/>
+		</s:choice>
+	</s:complexType>
+	<s:element name="eSpellResult">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="ERROR" type="s:string"/>
+				<s:element name="Database" type="s:string"/>
+				<s:element name="Query" type="s:string"/>
+				<s:element name="CorrectedQuery" type="s:string"/>
+				<s:element name="SpelledQuery" type="tns:SpelledQueryType"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:element name="eSpellRequest">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="db" type="s:string" minOccurs="0"/>
+				<s:element name="term" type="s:string" minOccurs="0"/>
+				<s:element name="tool" type="s:string" minOccurs="0"/>
+				<s:element name="email" type="s:string" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:complexType name="eSpellResultType">
+		<s:sequence>
+			<s:element name="ERROR" type="s:string"/>
+			<s:element name="Database" type="s:string"/>
+			<s:element name="Query" type="s:string"/>
+			<s:element name="CorrectedQuery" type="s:string"/>
+			<s:element name="SpelledQuery" type="tns:SpelledQueryType"/>
+		</s:sequence>
+	</s:complexType>
+	<s:element name="eSpellResultMS">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="eSpellResult" type="tns:eSpellResultType" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:element name="eSpellRequestMS">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="db" type="s:string" minOccurs="0"/>
+				<s:element name="term" type="s:string" minOccurs="0"/>
+				<s:element name="tool" type="s:string" minOccurs="0"/>
+				<s:element name="email" type="s:string" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+</s:schema>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/esummary.xsd b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/esummary.xsd
new file mode 100644
index 0000000..19e02cc
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/esummary.xsd
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<s:schema targetNamespace="http://www.ncbi.nlm.nih.gov/soap/eutils/esummary" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.ncbi.nlm.nih.gov/soap/eutils/esummary" elementFormDefault="qualified">
+
+	<!--   version="1.5"  -->
+	<!--   http://www.ncbi.nlm.nih.gov/entrez/query/DTD/eSummary_041029.dtd  -->
+
+	<s:complexType name="DocSumType">
+		<s:sequence>
+			<s:element ref="tns:Id"/>
+			<s:element name="Item" type="tns:ItemType" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+	<s:element name="ERROR" type="s:string"/>
+	<s:element name="Id" type="s:string"/>
+	<s:complexType name="ItemType" mixed="true">
+		<s:choice minOccurs="0" maxOccurs="unbounded">
+			<s:element name="Item" type="tns:ItemType"/>
+		</s:choice>
+		<s:attribute name="Name" type="s:string" use="required"/>
+		<s:attribute name="Type" use="required">
+			<s:simpleType>
+				<s:restriction base="s:NMTOKEN">
+					<s:enumeration value="Integer"/>
+					<s:enumeration value="Date"/>
+					<s:enumeration value="String"/>
+					<s:enumeration value="Structure"/>
+					<s:enumeration value="List"/>
+					<s:enumeration value="Flags"/>
+					<s:enumeration value="Qualifier"/>
+					<s:enumeration value="Enumerator"/>
+					<s:enumeration value="Unknown"/>
+				</s:restriction>
+			</s:simpleType>
+		</s:attribute>
+	</s:complexType>
+	<s:element name="eSummaryResult">
+		<s:complexType>
+			<s:sequence>
+				<s:element ref="tns:ERROR" minOccurs="0"/>
+				<s:element name="DocSum" type="tns:DocSumType" minOccurs="0" maxOccurs="unbounded"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:element name="eSummaryRequest">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="db" type="s:string" minOccurs="0"/>
+				<s:element name="id" type="s:string" minOccurs="0"/>
+				<s:element name="WebEnv" type="s:string" minOccurs="0"/>
+				<s:element name="query_key" type="s:string" minOccurs="0"/>
+				<s:element name="retstart" type="s:string" minOccurs="0"/>
+				<s:element name="retmax" type="s:string" minOccurs="0"/>
+				<s:element name="tool" type="s:string" minOccurs="0"/>
+				<s:element name="email" type="s:string" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:element name="eSummaryRequestMS">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="db" type="s:string" minOccurs="0"/>
+				<s:element name="id" type="s:string" minOccurs="0"/>
+				<s:element name="WebEnv" type="s:string" minOccurs="0"/>
+				<s:element name="query_key" type="s:string" minOccurs="0"/>
+				<s:element name="retstart" type="s:string" minOccurs="0"/>
+				<s:element name="retmax" type="s:string" minOccurs="0"/>
+				<s:element name="tool" type="s:string" minOccurs="0"/>
+				<s:element name="email" type="s:string" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+	<s:complexType name="eSummaryResultType">
+		<s:sequence>
+			<s:element ref="tns:ERROR" minOccurs="0"/>
+			<s:element name="DocSum" type="tns:DocSumType" minOccurs="0" maxOccurs="unbounded"/>
+		</s:sequence>
+	</s:complexType>
+	<s:element name="eSummaryResultMS">
+		<s:complexType>
+			<s:sequence>
+				<s:element name="eSummaryResult" type="tns:eSummaryResultType" minOccurs="0"/>
+			</s:sequence>
+		</s:complexType>
+	</s:element>
+</s:schema>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/eutils.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/eutils.wsdl
new file mode 100644
index 0000000..37809d2
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/eutils.wsdl
@@ -0,0 +1,333 @@
+<?xml version="1.0"?>
+<wsdl:definitions 
+    xmlns:s="http://www.w3.org/2001/XMLSchema" 
+    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
+    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
+    xmlns:s0="http://www.ncbi.nlm.nih.gov/soap/eutils/" 
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns="http://schemas.xmlsoap.org/wsdl/" 
+    targetNamespace="http://www.ncbi.nlm.nih.gov/soap/eutils/"
+    xmlns:nseg="http://www.ncbi.nlm.nih.gov/soap/eutils/egquery" 
+    xmlns:nsei="http://www.ncbi.nlm.nih.gov/soap/eutils/einfo" 
+    xmlns:nsel="http://www.ncbi.nlm.nih.gov/soap/eutils/elink" 
+    xmlns:nsese="http://www.ncbi.nlm.nih.gov/soap/eutils/esearch" 
+    xmlns:nsesu="http://www.ncbi.nlm.nih.gov/soap/eutils/esummary" 
+    xmlns:nsef="http://www.ncbi.nlm.nih.gov/soap/eutils/efetch" 
+    xmlns:nsesp="http://www.ncbi.nlm.nih.gov/soap/eutils/espell" 
+>
+<!--    version="1.5" -->
+
+	<types>
+		<s:schema>
+			<s:import namespace="http://www.ncbi.nlm.nih.gov/soap/eutils/egquery"  schemaLocation="egquery.xsd"/>
+			<s:import namespace="http://www.ncbi.nlm.nih.gov/soap/eutils/einfo"    schemaLocation="einfo.xsd"  />
+			<s:import namespace="http://www.ncbi.nlm.nih.gov/soap/eutils/esearch"  schemaLocation="esearch.xsd"  />
+			<s:import namespace="http://www.ncbi.nlm.nih.gov/soap/eutils/esummary" schemaLocation="esummary.xsd"  />
+			<s:import namespace="http://www.ncbi.nlm.nih.gov/soap/eutils/elink"    schemaLocation="elink.xsd"  />
+			<s:import namespace="http://www.ncbi.nlm.nih.gov/soap/eutils/efetch"   schemaLocation="efetch.xsd"  />
+			<s:import namespace="http://www.ncbi.nlm.nih.gov/soap/eutils/espell"   schemaLocation="espell.xsd"  />
+		</s:schema>
+	</types>
+
+	<message name="eGqueryRequest_m">
+		<part name="parameters" element="nseg:eGqueryRequest" />
+	</message>
+	<message name="eGqueryResponse_m">
+		<wsdl:part name="parameters" element="nseg:Result"/>
+	</message>
+	<message name="eGqueryRequestMS_m">
+		<part name="parameters" element="nseg:eGqueryRequestMS" />
+	</message>
+	<message name="eGqueryResponseMS_m">
+		<wsdl:part name="parameters" element="nseg:ResultMS"/>
+	</message>
+
+    <message name="eInfoRequest_m">
+		<part name="parameters" element="nsei:eInfoRequest" />
+	</message>
+	<message name="eInfoResponse_m">
+		<part name="parameters" element="nsei:eInfoResult" />
+	</message>
+    <message name="eInfoRequestMS_m">
+		<part name="parameters" element="nsei:eInfoRequestMS" />
+	</message>
+	<message name="eInfoResponseMS_m">
+		<part name="parameters" element="nsei:eInfoResultMS" />
+	</message>
+
+    <message name="eSearchRequest_m">
+		<part name="parameters" element="nsese:eSearchRequest" />
+	</message>
+	<message name="eSearchResponse_m">
+		<part name="parameters" element="nsese:eSearchResult" />
+	</message>
+    <message name="eSearchRequestMS_m">
+		<part name="parameters" element="nsese:eSearchRequestMS" />
+	</message>
+	<message name="eSearchResponseMS_m">
+		<part name="parameters" element="nsese:eSearchResultMS" />
+	</message>
+
+    <message name="eSummaryRequest_m">
+		<part name="parameters" element="nsesu:eSummaryRequest" />
+	</message>
+	<message name="eSummaryResponse_m">
+		<part name="parameters" element="nsesu:eSummaryResult" />
+	</message>
+    <message name="eSummaryRequestMS_m">
+		<part name="parameters" element="nsesu:eSummaryRequestMS" />
+	</message>
+	<message name="eSummaryResponseMS_m">
+		<part name="parameters" element="nsesu:eSummaryResultMS" />
+	</message>
+
+    <message name="eLinkRequest_m">
+		<part name="parameters" element="nsel:eLinkRequest" />
+	</message>
+	<message name="eLinkResponse_m">
+		<part name="parameters" element="nsel:eLinkResult" />
+	</message>
+    <message name="eLinkRequestMS_m">
+		<part name="parameters" element="nsel:eLinkRequestMS" />
+	</message>
+	<message name="eLinkResponseMS_m">
+		<part name="parameters" element="nsel:eLinkResultMS" />
+	</message>
+
+	<message name="eFetchRequest_m">
+		<part name="parameters" element="nsef:eFetchRequest"/>
+	</message>
+	<message name="eFetchResponse_m">
+		<part name="parameters" element="nsef:eFetchResult"/>
+	</message>
+
+	<message name="eFetchRequestMS_m">
+		<part name="parameters" element="nsef:eFetchRequestMS"/>
+	</message>
+	<message name="eFetchResponseMS_m">
+		<part name="parameters" element="nsef:eFetchResultMS"/>
+	</message>
+
+	<message name="eSpellRequest_m">
+		<part name="parameters" element="nsesp:eSpellRequest"/>
+	</message>
+	<message name="eSpellResponse_m">
+		<part name="parameters" element="nsesp:eSpellResult"/>
+	</message>
+	<message name="eSpellRequestMS_m">
+		<part name="parameters" element="nsesp:eSpellRequestMS"/>
+	</message>
+	<message name="eSpellResponseMS_m">
+		<part name="parameters" element="nsesp:eSpellResultMS"/>
+	</message>
+
+	<portType name="eUtilsServiceSoap">
+		<operation name="run_eGquery">
+			<input message="s0:eGqueryRequest_m"/>
+			<output message="s0:eGqueryResponse_m"/>
+		</operation>
+		<operation name="run_eGquery_MS">
+			<input message="s0:eGqueryRequestMS_m"/>
+			<output message="s0:eGqueryResponseMS_m"/>
+		</operation>
+
+		<operation name="run_eInfo">
+			<input message="s0:eInfoRequest_m"/>
+			<output message="s0:eInfoResponse_m"/>
+		</operation>
+		<operation name="run_eInfo_MS">
+			<input message="s0:eInfoRequestMS_m"/>
+			<output message="s0:eInfoResponseMS_m"/>
+		</operation>
+
+		<operation name="run_eSearch">
+			<input message="s0:eSearchRequest_m"/>
+			<output message="s0:eSearchResponse_m"/>
+		</operation>
+		<operation name="run_eSearch_MS">
+			<input message="s0:eSearchRequestMS_m"/>
+			<output message="s0:eSearchResponseMS_m"/>
+		</operation>
+
+		<operation name="run_eSummary">
+			<input message="s0:eSummaryRequest_m"/>
+			<output message="s0:eSummaryResponse_m"/>
+		</operation>
+		<operation name="run_eSummary_MS">
+			<input message="s0:eSummaryRequestMS_m"/>
+			<output message="s0:eSummaryResponseMS_m"/>
+		</operation>
+
+		<operation name="run_eLink">
+			<input message="s0:eLinkRequest_m"/>
+			<output message="s0:eLinkResponse_m"/>
+		</operation>
+		<operation name="run_eLink_MS">
+			<input message="s0:eLinkRequestMS_m"/>
+			<output message="s0:eLinkResponseMS_m"/>
+		</operation>
+
+		<operation name="run_eFetch">
+			<input message="s0:eFetchRequest_m"/>
+			<output message="s0:eFetchResponse_m"/>
+		</operation>
+		<operation name="run_eFetch_MS">
+			<input message="s0:eFetchRequestMS_m"/>
+			<output message="s0:eFetchResponseMS_m"/>
+		</operation>
+
+		<operation name="run_eSpell">
+			<input message="s0:eSpellRequest_m"/>
+			<output message="s0:eSpellResponse_m"/>
+		</operation>
+		<operation name="run_eSpell_MS">
+			<input message="s0:eSpellRequestMS_m"/>
+			<output message="s0:eSpellResponseMS_m"/>
+		</operation>
+	</portType>
+
+	<binding name="eUtilsServiceSoap" type="s0:eUtilsServiceSoap">
+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+		<operation name="run_eGquery">
+			<soap:operation soapAction="egquery" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+		<operation name="run_eGquery_MS">
+			<soap:operation soapAction="egqueryms" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+
+		<operation name="run_eInfo">
+			<soap:operation soapAction="einfo" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+		<operation name="run_eInfo_MS">
+			<soap:operation soapAction="einfoms" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+
+		<operation name="run_eSearch">
+			<soap:operation soapAction="esearch" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+		<operation name="run_eSearch_MS">
+			<soap:operation soapAction="esearchms" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+
+		<operation name="run_eSummary">
+			<soap:operation soapAction="esummary" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+		<operation name="run_eSummary_MS">
+			<soap:operation soapAction="esummaryms" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+
+		<operation name="run_eLink">
+			<soap:operation soapAction="elink" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+		<operation name="run_eLink_MS">
+			<soap:operation soapAction="elinkms" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+
+		<operation name="run_eFetch">
+			<soap:operation soapAction="efetch" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+		<operation name="run_eFetch_MS">
+			<soap:operation soapAction="efetchms" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+
+		<operation name="run_eSpell">
+			<soap:operation soapAction="espell" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+		<operation name="run_eSpell_MS">
+			<soap:operation soapAction="espellms" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+	</binding>
+
+	<service name="eUtilsService">
+		<port name="eUtilsServiceSoap" binding="s0:eUtilsServiceSoap">
+			<soap:address location="http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/soap_adapter_1_5.cgi"/>
+		</port>
+	</service>
+    
+</wsdl:definitions>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/eutils_lite.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/eutils_lite.wsdl
new file mode 100644
index 0000000..0f0f8e0
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/eutils/eutils_lite.wsdl
@@ -0,0 +1,289 @@
+<?xml version="1.0"?>
+<wsdl:definitions 
+    xmlns:s="http://www.w3.org/2001/XMLSchema" 
+    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
+    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
+    xmlns:s0="http://www.ncbi.nlm.nih.gov/soap/eutils/" 
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns="http://schemas.xmlsoap.org/wsdl/" 
+    targetNamespace="http://www.ncbi.nlm.nih.gov/soap/eutils/"
+    xmlns:nseg="http://www.ncbi.nlm.nih.gov/soap/eutils/egquery" 
+    xmlns:nsei="http://www.ncbi.nlm.nih.gov/soap/eutils/einfo" 
+    xmlns:nsel="http://www.ncbi.nlm.nih.gov/soap/eutils/elink" 
+    xmlns:nsese="http://www.ncbi.nlm.nih.gov/soap/eutils/esearch" 
+    xmlns:nsesu="http://www.ncbi.nlm.nih.gov/soap/eutils/esummary" 
+    xmlns:nsesp="http://www.ncbi.nlm.nih.gov/soap/eutils/espell" 
+>
+<!--    version="1.5" -->
+
+	<types>
+		<s:schema>
+			<s:import namespace="http://www.ncbi.nlm.nih.gov/soap/eutils/egquery"  schemaLocation="egquery.xsd"/>
+			<s:import namespace="http://www.ncbi.nlm.nih.gov/soap/eutils/einfo"    schemaLocation="einfo.xsd"  />
+			<s:import namespace="http://www.ncbi.nlm.nih.gov/soap/eutils/esearch"  schemaLocation="esearch.xsd"  />
+			<s:import namespace="http://www.ncbi.nlm.nih.gov/soap/eutils/esummary" schemaLocation="esummary.xsd"  />
+			<s:import namespace="http://www.ncbi.nlm.nih.gov/soap/eutils/elink"    schemaLocation="elink.xsd"  />
+			<s:import namespace="http://www.ncbi.nlm.nih.gov/soap/eutils/espell"   schemaLocation="espell.xsd"  />
+		</s:schema>
+	</types>
+
+	<message name="eGqueryRequest_m">
+		<part name="parameters" element="nseg:eGqueryRequest" />
+	</message>
+	<message name="eGqueryResponse_m">
+		<wsdl:part name="parameters" element="nseg:Result"/>
+	</message>
+	<message name="eGqueryRequestMS_m">
+		<part name="parameters" element="nseg:eGqueryRequestMS" />
+	</message>
+	<message name="eGqueryResponseMS_m">
+		<wsdl:part name="parameters" element="nseg:ResultMS"/>
+	</message>
+
+    <message name="eInfoRequest_m">
+		<part name="parameters" element="nsei:eInfoRequest" />
+	</message>
+	<message name="eInfoResponse_m">
+		<part name="parameters" element="nsei:eInfoResult" />
+	</message>
+    <message name="eInfoRequestMS_m">
+		<part name="parameters" element="nsei:eInfoRequestMS" />
+	</message>
+	<message name="eInfoResponseMS_m">
+		<part name="parameters" element="nsei:eInfoResultMS" />
+	</message>
+
+    <message name="eSearchRequest_m">
+		<part name="parameters" element="nsese:eSearchRequest" />
+	</message>
+	<message name="eSearchResponse_m">
+		<part name="parameters" element="nsese:eSearchResult" />
+	</message>
+    <message name="eSearchRequestMS_m">
+		<part name="parameters" element="nsese:eSearchRequestMS" />
+	</message>
+	<message name="eSearchResponseMS_m">
+		<part name="parameters" element="nsese:eSearchResultMS" />
+	</message>
+
+    <message name="eSummaryRequest_m">
+		<part name="parameters" element="nsesu:eSummaryRequest" />
+	</message>
+	<message name="eSummaryResponse_m">
+		<part name="parameters" element="nsesu:eSummaryResult" />
+	</message>
+    <message name="eSummaryRequestMS_m">
+		<part name="parameters" element="nsesu:eSummaryRequestMS" />
+	</message>
+	<message name="eSummaryResponseMS_m">
+		<part name="parameters" element="nsesu:eSummaryResultMS" />
+	</message>
+
+    <message name="eLinkRequest_m">
+		<part name="parameters" element="nsel:eLinkRequest" />
+	</message>
+	<message name="eLinkResponse_m">
+		<part name="parameters" element="nsel:eLinkResult" />
+	</message>
+    <message name="eLinkRequestMS_m">
+		<part name="parameters" element="nsel:eLinkRequestMS" />
+	</message>
+	<message name="eLinkResponseMS_m">
+		<part name="parameters" element="nsel:eLinkResultMS" />
+	</message>
+
+	<message name="eSpellRequest_m">
+		<part name="parameters" element="nsesp:eSpellRequest"/>
+	</message>
+	<message name="eSpellResponse_m">
+		<part name="parameters" element="nsesp:eSpellResult"/>
+	</message>
+	<message name="eSpellRequestMS_m">
+		<part name="parameters" element="nsesp:eSpellRequestMS"/>
+	</message>
+	<message name="eSpellResponseMS_m">
+		<part name="parameters" element="nsesp:eSpellResultMS"/>
+	</message>
+
+	<portType name="eUtilsServiceSoap">
+		<operation name="run_eGquery">
+			<input message="s0:eGqueryRequest_m"/>
+			<output message="s0:eGqueryResponse_m"/>
+		</operation>
+		<operation name="run_eGquery_MS">
+			<input message="s0:eGqueryRequestMS_m"/>
+			<output message="s0:eGqueryResponseMS_m"/>
+		</operation>
+
+		<operation name="run_eInfo">
+			<input message="s0:eInfoRequest_m"/>
+			<output message="s0:eInfoResponse_m"/>
+		</operation>
+		<operation name="run_eInfo_MS">
+			<input message="s0:eInfoRequestMS_m"/>
+			<output message="s0:eInfoResponseMS_m"/>
+		</operation>
+
+		<operation name="run_eSearch">
+			<input message="s0:eSearchRequest_m"/>
+			<output message="s0:eSearchResponse_m"/>
+		</operation>
+		<operation name="run_eSearch_MS">
+			<input message="s0:eSearchRequestMS_m"/>
+			<output message="s0:eSearchResponseMS_m"/>
+		</operation>
+
+		<operation name="run_eSummary">
+			<input message="s0:eSummaryRequest_m"/>
+			<output message="s0:eSummaryResponse_m"/>
+		</operation>
+		<operation name="run_eSummary_MS">
+			<input message="s0:eSummaryRequestMS_m"/>
+			<output message="s0:eSummaryResponseMS_m"/>
+		</operation>
+
+		<operation name="run_eLink">
+			<input message="s0:eLinkRequest_m"/>
+			<output message="s0:eLinkResponse_m"/>
+		</operation>
+		<operation name="run_eLink_MS">
+			<input message="s0:eLinkRequestMS_m"/>
+			<output message="s0:eLinkResponseMS_m"/>
+		</operation>
+
+		<operation name="run_eSpell">
+			<input message="s0:eSpellRequest_m"/>
+			<output message="s0:eSpellResponse_m"/>
+		</operation>
+		<operation name="run_eSpell_MS">
+			<input message="s0:eSpellRequestMS_m"/>
+			<output message="s0:eSpellResponseMS_m"/>
+		</operation>
+	</portType>
+
+	<binding name="eUtilsServiceSoap" type="s0:eUtilsServiceSoap">
+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+		<operation name="run_eGquery">
+			<soap:operation soapAction="egquery" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+		<operation name="run_eGquery_MS">
+			<soap:operation soapAction="egqueryms" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+
+		<operation name="run_eInfo">
+			<soap:operation soapAction="einfo" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+		<operation name="run_eInfo_MS">
+			<soap:operation soapAction="einfoms" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+
+		<operation name="run_eSearch">
+			<soap:operation soapAction="esearch" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+		<operation name="run_eSearch_MS">
+			<soap:operation soapAction="esearchms" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+
+		<operation name="run_eSummary">
+			<soap:operation soapAction="esummary" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+		<operation name="run_eSummary_MS">
+			<soap:operation soapAction="esummaryms" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+
+		<operation name="run_eLink">
+			<soap:operation soapAction="elink" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+		<operation name="run_eLink_MS">
+			<soap:operation soapAction="elinkms" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+
+		<operation name="run_eSpell">
+			<soap:operation soapAction="espell" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+		<operation name="run_eSpell_MS">
+			<soap:operation soapAction="espellms" style="document"/>
+			<input>
+				<soap:body use="literal"  />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+		</operation>
+	</binding>
+
+	<service name="eUtilsService">
+		<port name="eUtilsServiceSoap" binding="s0:eUtilsServiceSoap">
+			<soap:address location="http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/soap_adapter_1_5.cgi"/>
+		</port>
+	</service>
+    
+</wsdl:definitions>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/jws-online.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/jws-online.wsdl
new file mode 100644
index 0000000..49b94ee
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/jws-online.wsdl
@@ -0,0 +1,1001 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://jjj.biochem.sun.ac.za/qjws" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://jjj.biochem.sun.ac.za/qjws" xmlns:intf="http://jjj.biochem.sun.ac.za/qjws" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<!--WSDL created by Apache Axis version: 1.4
+Built on Apr 22, 2006 (06:55:48 PDT)-->
+ <wsdl:types>
+  <schema targetNamespace="http://jjj.biochem.sun.ac.za/qjws" xmlns="http://www.w3.org/2001/XMLSchema">
+   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+   <complexType name="ArrayOf_xsd_string">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="VectorType">
+    <sequence>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+     <element name="vect" nillable="true" type="impl:ArrayOf_xsd_string"/>
+    </sequence>
+   </complexType>
+   <complexType name="ArrayOfArrayOf_xsd_string">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[][]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="NmatType">
+    <sequence>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+     <element name="rates" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="stochMat" nillable="true" type="impl:ArrayOfArrayOf_xsd_string"/>
+     <element name="vars" nillable="true" type="impl:ArrayOf_xsd_string"/>
+    </sequence>
+   </complexType>
+   <complexType name="KmatType">
+    <sequence>
+     <element name="SSFlux" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="indFlux" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="kernel" nillable="true" type="impl:ArrayOfArrayOf_xsd_string"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="LmatType">
+    <sequence>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="indMetabs" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="linkMat" nillable="true" type="impl:ArrayOfArrayOf_xsd_string"/>
+     <element name="metabs" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+     <element name="moieties" nillable="true" type="impl:ArrayOf_xsd_string"/>
+    </sequence>
+   </complexType>
+   <complexType name="StStTableType">
+    <sequence>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="fluxNames" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="fluxVals" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="metabNames" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="metabVals" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="TimecourseType">
+    <sequence>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="mat" nillable="true" type="impl:ArrayOfArrayOf_xsd_string"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="MatrixType">
+    <sequence>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="mat" nillable="true" type="impl:ArrayOfArrayOf_xsd_string"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+     <element name="numRows" type="xsd:int"/>
+     <element maxOccurs="unbounded" name="row" nillable="true" type="impl:ArrayOf_xsd_string"/>
+    </sequence>
+   </complexType>
+   <complexType name="ArrayOfArrayOfArrayOf_xsd_string">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[][][]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="MCATypeString">
+    <sequence>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="mat" nillable="true" type="impl:ArrayOfArrayOfArrayOf_xsd_string"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+     <element maxOccurs="unbounded" name="numCols" type="xsd:int"/>
+     <element name="numRows" type="xsd:int"/>
+     <element maxOccurs="unbounded" name="row" nillable="true" type="impl:ArrayOfArrayOf_xsd_string"/>
+    </sequence>
+   </complexType>
+  </schema>
+ </wsdl:types>
+
+   <wsdl:message name="getRatesResponse">
+
+      <wsdl:part name="getRatesReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getRateEquationFormulaeRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getTimecourseRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getRateEquationsResponse">
+
+      <wsdl:part name="getRateEquationsReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllBiomodelsIdsResponse">
+
+      <wsdl:part name="getAllBiomodelsIdsReturn" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllBiomodelsIdsRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="getParamValuesResponse">
+
+      <wsdl:part name="getParamValuesReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getExtVarRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getCmatResponse">
+
+      <wsdl:part name="getCmatReturn" type="impl:MCATypeString"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getParamValuesRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getExtVarResponse">
+
+      <wsdl:part name="getExtVarReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="hasFunctionResponse">
+
+      <wsdl:part name="hasFunctionReturn" type="xsd:boolean"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getKmatRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllModelsRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="getRateEquationFormulaeResponse">
+
+      <wsdl:part name="getRateEquationFormulaeReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getEigenvRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getSteadyStateTableRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getModelInfoResponse">
+
+      <wsdl:part name="getModelInfoReturn" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getNmatRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getExternalMetabValuesResponse">
+
+      <wsdl:part name="getExternalMetabValuesReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getEmatRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getModelsByOrganismRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getModelsByOrganismResponse">
+
+      <wsdl:part name="getModelsByOrganismReturn" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getSteadyStateTableResponse">
+
+      <wsdl:part name="getSteadyStateTableReturn" type="impl:StStTableType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getJacobRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getModelsByCategoryResponse">
+
+      <wsdl:part name="getModelsByCategoryReturn" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getInitMetabValuesResponse">
+
+      <wsdl:part name="getInitMetabValuesReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getLmatRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getCmatRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getLmatResponse">
+
+      <wsdl:part name="getLmatReturn" type="impl:LmatType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="hasFunctionRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+      <wsdl:part name="in1" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getRateEquationsRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getJacobResponse">
+
+      <wsdl:part name="getJacobReturn" type="impl:MatrixType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getExternalMetabValuesRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllModelsResponse">
+
+      <wsdl:part name="getAllModelsReturn" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getNmatResponse">
+
+      <wsdl:part name="getNmatReturn" type="impl:NmatType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getInitMetabValuesRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getModelsByCategoryRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getRatesRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getKmatResponse">
+
+      <wsdl:part name="getKmatReturn" type="impl:KmatType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getEigenvResponse">
+
+      <wsdl:part name="getEigenvReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getEmatResponse">
+
+      <wsdl:part name="getEmatReturn" type="impl:MCATypeString"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getTimecourseResponse">
+
+      <wsdl:part name="getTimecourseReturn" type="impl:TimecourseType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getModelInfoRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllBiomodelsResponse">
+
+      <wsdl:part name="getAllBiomodelsReturn" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllBiomodelsRequest">
+
+   </wsdl:message>
+
+   <wsdl:portType name="QueryJWS">
+
+      <wsdl:operation name="getRates" parameterOrder="in0">
+
+         <wsdl:input message="impl:getRatesRequest" name="getRatesRequest"/>
+
+         <wsdl:output message="impl:getRatesResponse" name="getRatesResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllModels">
+
+         <wsdl:input message="impl:getAllModelsRequest" name="getAllModelsRequest"/>
+
+         <wsdl:output message="impl:getAllModelsResponse" name="getAllModelsResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllBiomodels">
+
+         <wsdl:input message="impl:getAllBiomodelsRequest" name="getAllBiomodelsRequest"/>
+
+         <wsdl:output message="impl:getAllBiomodelsResponse" name="getAllBiomodelsResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllBiomodelsIds">
+
+         <wsdl:input message="impl:getAllBiomodelsIdsRequest" name="getAllBiomodelsIdsRequest"/>
+
+         <wsdl:output message="impl:getAllBiomodelsIdsResponse" name="getAllBiomodelsIdsResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getModelsByOrganism" parameterOrder="in0">
+
+         <wsdl:input message="impl:getModelsByOrganismRequest" name="getModelsByOrganismRequest"/>
+
+         <wsdl:output message="impl:getModelsByOrganismResponse" name="getModelsByOrganismResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getModelsByCategory" parameterOrder="in0">
+
+         <wsdl:input message="impl:getModelsByCategoryRequest" name="getModelsByCategoryRequest"/>
+
+         <wsdl:output message="impl:getModelsByCategoryResponse" name="getModelsByCategoryResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getModelInfo" parameterOrder="in0">
+
+         <wsdl:input message="impl:getModelInfoRequest" name="getModelInfoRequest"/>
+
+         <wsdl:output message="impl:getModelInfoResponse" name="getModelInfoResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getNmat" parameterOrder="in0">
+
+         <wsdl:input message="impl:getNmatRequest" name="getNmatRequest"/>
+
+         <wsdl:output message="impl:getNmatResponse" name="getNmatResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getKmat" parameterOrder="in0">
+
+         <wsdl:input message="impl:getKmatRequest" name="getKmatRequest"/>
+
+         <wsdl:output message="impl:getKmatResponse" name="getKmatResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getLmat" parameterOrder="in0">
+
+         <wsdl:input message="impl:getLmatRequest" name="getLmatRequest"/>
+
+         <wsdl:output message="impl:getLmatResponse" name="getLmatResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getSteadyStateTable" parameterOrder="in0">
+
+         <wsdl:input message="impl:getSteadyStateTableRequest" name="getSteadyStateTableRequest"/>
+
+         <wsdl:output message="impl:getSteadyStateTableResponse" name="getSteadyStateTableResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getTimecourse" parameterOrder="in0">
+
+         <wsdl:input message="impl:getTimecourseRequest" name="getTimecourseRequest"/>
+
+         <wsdl:output message="impl:getTimecourseResponse" name="getTimecourseResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getJacob" parameterOrder="in0">
+
+         <wsdl:input message="impl:getJacobRequest" name="getJacobRequest"/>
+
+         <wsdl:output message="impl:getJacobResponse" name="getJacobResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getEigenv" parameterOrder="in0">
+
+         <wsdl:input message="impl:getEigenvRequest" name="getEigenvRequest"/>
+
+         <wsdl:output message="impl:getEigenvResponse" name="getEigenvResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getCmat" parameterOrder="in0">
+
+         <wsdl:input message="impl:getCmatRequest" name="getCmatRequest"/>
+
+         <wsdl:output message="impl:getCmatResponse" name="getCmatResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getEmat" parameterOrder="in0">
+
+         <wsdl:input message="impl:getEmatRequest" name="getEmatRequest"/>
+
+         <wsdl:output message="impl:getEmatResponse" name="getEmatResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getRateEquations" parameterOrder="in0">
+
+         <wsdl:input message="impl:getRateEquationsRequest" name="getRateEquationsRequest"/>
+
+         <wsdl:output message="impl:getRateEquationsResponse" name="getRateEquationsResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getRateEquationFormulae" parameterOrder="in0">
+
+         <wsdl:input message="impl:getRateEquationFormulaeRequest" name="getRateEquationFormulaeRequest"/>
+
+         <wsdl:output message="impl:getRateEquationFormulaeResponse" name="getRateEquationFormulaeResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getExtVar" parameterOrder="in0">
+
+         <wsdl:input message="impl:getExtVarRequest" name="getExtVarRequest"/>
+
+         <wsdl:output message="impl:getExtVarResponse" name="getExtVarResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getExternalMetabValues" parameterOrder="in0">
+
+         <wsdl:input message="impl:getExternalMetabValuesRequest" name="getExternalMetabValuesRequest"/>
+
+         <wsdl:output message="impl:getExternalMetabValuesResponse" name="getExternalMetabValuesResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getInitMetabValues" parameterOrder="in0">
+
+         <wsdl:input message="impl:getInitMetabValuesRequest" name="getInitMetabValuesRequest"/>
+
+         <wsdl:output message="impl:getInitMetabValuesResponse" name="getInitMetabValuesResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getParamValues" parameterOrder="in0">
+
+         <wsdl:input message="impl:getParamValuesRequest" name="getParamValuesRequest"/>
+
+         <wsdl:output message="impl:getParamValuesResponse" name="getParamValuesResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="hasFunction" parameterOrder="in0 in1">
+
+         <wsdl:input message="impl:hasFunctionRequest" name="hasFunctionRequest"/>
+
+         <wsdl:output message="impl:hasFunctionResponse" name="hasFunctionResponse"/>
+
+      </wsdl:operation>
+
+   </wsdl:portType>
+
+   <wsdl:binding name="QueryJWSSoapBinding" type="impl:QueryJWS">
+
+      <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+      <wsdl:operation name="getRates">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getRatesRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getRatesResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllModels">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getAllModelsRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getAllModelsResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllBiomodels">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getAllBiomodelsRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getAllBiomodelsResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllBiomodelsIds">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getAllBiomodelsIdsRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getAllBiomodelsIdsResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getModelsByOrganism">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getModelsByOrganismRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getModelsByOrganismResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getModelsByCategory">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getModelsByCategoryRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getModelsByCategoryResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getModelInfo">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getModelInfoRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getModelInfoResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getNmat">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getNmatRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getNmatResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getKmat">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getKmatRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getKmatResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getLmat">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getLmatRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getLmatResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getSteadyStateTable">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getSteadyStateTableRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getSteadyStateTableResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getTimecourse">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getTimecourseRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getTimecourseResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getJacob">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getJacobRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getJacobResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getEigenv">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getEigenvRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getEigenvResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getCmat">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getCmatRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getCmatResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getEmat">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getEmatRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getEmatResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getRateEquations">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getRateEquationsRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getRateEquationsResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getRateEquationFormulae">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getRateEquationFormulaeRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getRateEquationFormulaeResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getExtVar">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getExtVarRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getExtVarResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getExternalMetabValues">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getExternalMetabValuesRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getExternalMetabValuesResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getInitMetabValues">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getInitMetabValuesRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getInitMetabValuesResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getParamValues">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getParamValuesRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getParamValuesResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="hasFunction">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="hasFunctionRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="hasFunctionResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+   </wsdl:binding>
+
+   <wsdl:service name="QueryJWSService">
+
+      <wsdl:port binding="impl:QueryJWSSoapBinding" name="QueryJWS">
+
+         <wsdlsoap:address location="http://jjj.mib.ac.uk/axis/services/QueryJWS"/>
+
+      </wsdl:port>
+
+   </wsdl:service>
+
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/jws_online.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/jws_online.wsdl
new file mode 100644
index 0000000..49b94ee
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/jws_online.wsdl
@@ -0,0 +1,1001 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://jjj.biochem.sun.ac.za/qjws" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://jjj.biochem.sun.ac.za/qjws" xmlns:intf="http://jjj.biochem.sun.ac.za/qjws" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<!--WSDL created by Apache Axis version: 1.4
+Built on Apr 22, 2006 (06:55:48 PDT)-->
+ <wsdl:types>
+  <schema targetNamespace="http://jjj.biochem.sun.ac.za/qjws" xmlns="http://www.w3.org/2001/XMLSchema">
+   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+   <complexType name="ArrayOf_xsd_string">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="VectorType">
+    <sequence>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+     <element name="vect" nillable="true" type="impl:ArrayOf_xsd_string"/>
+    </sequence>
+   </complexType>
+   <complexType name="ArrayOfArrayOf_xsd_string">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[][]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="NmatType">
+    <sequence>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+     <element name="rates" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="stochMat" nillable="true" type="impl:ArrayOfArrayOf_xsd_string"/>
+     <element name="vars" nillable="true" type="impl:ArrayOf_xsd_string"/>
+    </sequence>
+   </complexType>
+   <complexType name="KmatType">
+    <sequence>
+     <element name="SSFlux" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="indFlux" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="kernel" nillable="true" type="impl:ArrayOfArrayOf_xsd_string"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="LmatType">
+    <sequence>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="indMetabs" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="linkMat" nillable="true" type="impl:ArrayOfArrayOf_xsd_string"/>
+     <element name="metabs" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+     <element name="moieties" nillable="true" type="impl:ArrayOf_xsd_string"/>
+    </sequence>
+   </complexType>
+   <complexType name="StStTableType">
+    <sequence>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="fluxNames" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="fluxVals" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="metabNames" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="metabVals" nillable="true" type="impl:ArrayOf_xsd_string"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="TimecourseType">
+    <sequence>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="mat" nillable="true" type="impl:ArrayOfArrayOf_xsd_string"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="MatrixType">
+    <sequence>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="mat" nillable="true" type="impl:ArrayOfArrayOf_xsd_string"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+     <element name="numRows" type="xsd:int"/>
+     <element maxOccurs="unbounded" name="row" nillable="true" type="impl:ArrayOf_xsd_string"/>
+    </sequence>
+   </complexType>
+   <complexType name="ArrayOfArrayOfArrayOf_xsd_string">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[][][]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="MCATypeString">
+    <sequence>
+     <element name="credits" nillable="true" type="xsd:string"/>
+     <element name="isModelMethodSupported" type="xsd:boolean"/>
+     <element name="mat" nillable="true" type="impl:ArrayOfArrayOfArrayOf_xsd_string"/>
+     <element name="model" nillable="true" type="xsd:string"/>
+     <element maxOccurs="unbounded" name="numCols" type="xsd:int"/>
+     <element name="numRows" type="xsd:int"/>
+     <element maxOccurs="unbounded" name="row" nillable="true" type="impl:ArrayOfArrayOf_xsd_string"/>
+    </sequence>
+   </complexType>
+  </schema>
+ </wsdl:types>
+
+   <wsdl:message name="getRatesResponse">
+
+      <wsdl:part name="getRatesReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getRateEquationFormulaeRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getTimecourseRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getRateEquationsResponse">
+
+      <wsdl:part name="getRateEquationsReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllBiomodelsIdsResponse">
+
+      <wsdl:part name="getAllBiomodelsIdsReturn" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllBiomodelsIdsRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="getParamValuesResponse">
+
+      <wsdl:part name="getParamValuesReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getExtVarRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getCmatResponse">
+
+      <wsdl:part name="getCmatReturn" type="impl:MCATypeString"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getParamValuesRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getExtVarResponse">
+
+      <wsdl:part name="getExtVarReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="hasFunctionResponse">
+
+      <wsdl:part name="hasFunctionReturn" type="xsd:boolean"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getKmatRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllModelsRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="getRateEquationFormulaeResponse">
+
+      <wsdl:part name="getRateEquationFormulaeReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getEigenvRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getSteadyStateTableRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getModelInfoResponse">
+
+      <wsdl:part name="getModelInfoReturn" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getNmatRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getExternalMetabValuesResponse">
+
+      <wsdl:part name="getExternalMetabValuesReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getEmatRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getModelsByOrganismRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getModelsByOrganismResponse">
+
+      <wsdl:part name="getModelsByOrganismReturn" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getSteadyStateTableResponse">
+
+      <wsdl:part name="getSteadyStateTableReturn" type="impl:StStTableType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getJacobRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getModelsByCategoryResponse">
+
+      <wsdl:part name="getModelsByCategoryReturn" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getInitMetabValuesResponse">
+
+      <wsdl:part name="getInitMetabValuesReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getLmatRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getCmatRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getLmatResponse">
+
+      <wsdl:part name="getLmatReturn" type="impl:LmatType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="hasFunctionRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+      <wsdl:part name="in1" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getRateEquationsRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getJacobResponse">
+
+      <wsdl:part name="getJacobReturn" type="impl:MatrixType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getExternalMetabValuesRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllModelsResponse">
+
+      <wsdl:part name="getAllModelsReturn" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getNmatResponse">
+
+      <wsdl:part name="getNmatReturn" type="impl:NmatType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getInitMetabValuesRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getModelsByCategoryRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getRatesRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getKmatResponse">
+
+      <wsdl:part name="getKmatReturn" type="impl:KmatType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getEigenvResponse">
+
+      <wsdl:part name="getEigenvReturn" type="impl:VectorType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getEmatResponse">
+
+      <wsdl:part name="getEmatReturn" type="impl:MCATypeString"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getTimecourseResponse">
+
+      <wsdl:part name="getTimecourseReturn" type="impl:TimecourseType"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getModelInfoRequest">
+
+      <wsdl:part name="in0" type="xsd:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllBiomodelsResponse">
+
+      <wsdl:part name="getAllBiomodelsReturn" type="impl:ArrayOf_xsd_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllBiomodelsRequest">
+
+   </wsdl:message>
+
+   <wsdl:portType name="QueryJWS">
+
+      <wsdl:operation name="getRates" parameterOrder="in0">
+
+         <wsdl:input message="impl:getRatesRequest" name="getRatesRequest"/>
+
+         <wsdl:output message="impl:getRatesResponse" name="getRatesResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllModels">
+
+         <wsdl:input message="impl:getAllModelsRequest" name="getAllModelsRequest"/>
+
+         <wsdl:output message="impl:getAllModelsResponse" name="getAllModelsResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllBiomodels">
+
+         <wsdl:input message="impl:getAllBiomodelsRequest" name="getAllBiomodelsRequest"/>
+
+         <wsdl:output message="impl:getAllBiomodelsResponse" name="getAllBiomodelsResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllBiomodelsIds">
+
+         <wsdl:input message="impl:getAllBiomodelsIdsRequest" name="getAllBiomodelsIdsRequest"/>
+
+         <wsdl:output message="impl:getAllBiomodelsIdsResponse" name="getAllBiomodelsIdsResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getModelsByOrganism" parameterOrder="in0">
+
+         <wsdl:input message="impl:getModelsByOrganismRequest" name="getModelsByOrganismRequest"/>
+
+         <wsdl:output message="impl:getModelsByOrganismResponse" name="getModelsByOrganismResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getModelsByCategory" parameterOrder="in0">
+
+         <wsdl:input message="impl:getModelsByCategoryRequest" name="getModelsByCategoryRequest"/>
+
+         <wsdl:output message="impl:getModelsByCategoryResponse" name="getModelsByCategoryResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getModelInfo" parameterOrder="in0">
+
+         <wsdl:input message="impl:getModelInfoRequest" name="getModelInfoRequest"/>
+
+         <wsdl:output message="impl:getModelInfoResponse" name="getModelInfoResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getNmat" parameterOrder="in0">
+
+         <wsdl:input message="impl:getNmatRequest" name="getNmatRequest"/>
+
+         <wsdl:output message="impl:getNmatResponse" name="getNmatResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getKmat" parameterOrder="in0">
+
+         <wsdl:input message="impl:getKmatRequest" name="getKmatRequest"/>
+
+         <wsdl:output message="impl:getKmatResponse" name="getKmatResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getLmat" parameterOrder="in0">
+
+         <wsdl:input message="impl:getLmatRequest" name="getLmatRequest"/>
+
+         <wsdl:output message="impl:getLmatResponse" name="getLmatResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getSteadyStateTable" parameterOrder="in0">
+
+         <wsdl:input message="impl:getSteadyStateTableRequest" name="getSteadyStateTableRequest"/>
+
+         <wsdl:output message="impl:getSteadyStateTableResponse" name="getSteadyStateTableResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getTimecourse" parameterOrder="in0">
+
+         <wsdl:input message="impl:getTimecourseRequest" name="getTimecourseRequest"/>
+
+         <wsdl:output message="impl:getTimecourseResponse" name="getTimecourseResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getJacob" parameterOrder="in0">
+
+         <wsdl:input message="impl:getJacobRequest" name="getJacobRequest"/>
+
+         <wsdl:output message="impl:getJacobResponse" name="getJacobResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getEigenv" parameterOrder="in0">
+
+         <wsdl:input message="impl:getEigenvRequest" name="getEigenvRequest"/>
+
+         <wsdl:output message="impl:getEigenvResponse" name="getEigenvResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getCmat" parameterOrder="in0">
+
+         <wsdl:input message="impl:getCmatRequest" name="getCmatRequest"/>
+
+         <wsdl:output message="impl:getCmatResponse" name="getCmatResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getEmat" parameterOrder="in0">
+
+         <wsdl:input message="impl:getEmatRequest" name="getEmatRequest"/>
+
+         <wsdl:output message="impl:getEmatResponse" name="getEmatResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getRateEquations" parameterOrder="in0">
+
+         <wsdl:input message="impl:getRateEquationsRequest" name="getRateEquationsRequest"/>
+
+         <wsdl:output message="impl:getRateEquationsResponse" name="getRateEquationsResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getRateEquationFormulae" parameterOrder="in0">
+
+         <wsdl:input message="impl:getRateEquationFormulaeRequest" name="getRateEquationFormulaeRequest"/>
+
+         <wsdl:output message="impl:getRateEquationFormulaeResponse" name="getRateEquationFormulaeResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getExtVar" parameterOrder="in0">
+
+         <wsdl:input message="impl:getExtVarRequest" name="getExtVarRequest"/>
+
+         <wsdl:output message="impl:getExtVarResponse" name="getExtVarResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getExternalMetabValues" parameterOrder="in0">
+
+         <wsdl:input message="impl:getExternalMetabValuesRequest" name="getExternalMetabValuesRequest"/>
+
+         <wsdl:output message="impl:getExternalMetabValuesResponse" name="getExternalMetabValuesResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getInitMetabValues" parameterOrder="in0">
+
+         <wsdl:input message="impl:getInitMetabValuesRequest" name="getInitMetabValuesRequest"/>
+
+         <wsdl:output message="impl:getInitMetabValuesResponse" name="getInitMetabValuesResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getParamValues" parameterOrder="in0">
+
+         <wsdl:input message="impl:getParamValuesRequest" name="getParamValuesRequest"/>
+
+         <wsdl:output message="impl:getParamValuesResponse" name="getParamValuesResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="hasFunction" parameterOrder="in0 in1">
+
+         <wsdl:input message="impl:hasFunctionRequest" name="hasFunctionRequest"/>
+
+         <wsdl:output message="impl:hasFunctionResponse" name="hasFunctionResponse"/>
+
+      </wsdl:operation>
+
+   </wsdl:portType>
+
+   <wsdl:binding name="QueryJWSSoapBinding" type="impl:QueryJWS">
+
+      <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+      <wsdl:operation name="getRates">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getRatesRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getRatesResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllModels">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getAllModelsRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getAllModelsResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllBiomodels">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getAllBiomodelsRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getAllBiomodelsResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllBiomodelsIds">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getAllBiomodelsIdsRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getAllBiomodelsIdsResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getModelsByOrganism">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getModelsByOrganismRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getModelsByOrganismResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getModelsByCategory">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getModelsByCategoryRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getModelsByCategoryResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getModelInfo">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getModelInfoRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getModelInfoResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getNmat">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getNmatRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getNmatResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getKmat">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getKmatRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getKmatResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getLmat">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getLmatRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getLmatResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getSteadyStateTable">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getSteadyStateTableRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getSteadyStateTableResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getTimecourse">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getTimecourseRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getTimecourseResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getJacob">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getJacobRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getJacobResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getEigenv">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getEigenvRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getEigenvResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getCmat">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getCmatRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getCmatResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getEmat">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getEmatRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getEmatResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getRateEquations">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getRateEquationsRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getRateEquationsResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getRateEquationFormulae">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getRateEquationFormulaeRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getRateEquationFormulaeResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getExtVar">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getExtVarRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getExtVarResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getExternalMetabValues">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getExternalMetabValuesRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getExternalMetabValuesResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getInitMetabValues">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getInitMetabValuesRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getInitMetabValuesResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getParamValues">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getParamValuesRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getParamValuesResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="hasFunction">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="hasFunctionRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="hasFunctionResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://jjj.biochem.sun.ac.za/qjws" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+   </wsdl:binding>
+
+   <wsdl:service name="QueryJWSService">
+
+      <wsdl:port binding="impl:QueryJWSSoapBinding" name="QueryJWS">
+
+         <wsdlsoap:address location="http://jjj.mib.ac.uk/axis/services/QueryJWS"/>
+
+      </wsdl:port>
+
+   </wsdl:service>
+
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/ma.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/ma.wsdl
new file mode 100644
index 0000000..e522366
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/ma.wsdl
@@ -0,0 +1,1901 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="urn:hgu.webservice.services" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="urn:hgu.webservice.services" xmlns:intf="urn:hgu.webservice.services" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="http://mdb.WSDLGenerated.hgu" xmlns:tns2="http://CommonSubmission.WSDLGenerated.hgu" xmlns:tns3="http://SubmissionQuery.WSDLGenerated.hgu" xmlns:tns4="http://data.util.webservice.hgu" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<!--WSDL created by Apache Axis version: 1.3
+Built on Oct 05, 2005 (05:23:37 EDT)-->
+ <wsdl:types>
+  <schema targetNamespace="http://mdb.WSDLGenerated.hgu" xmlns="http://www.w3.org/2001/XMLSchema">
+   <import namespace="http://SubmissionQuery.WSDLGenerated.hgu"/>
+   <import namespace="urn:hgu.webservice.services"/>
+   <import namespace="http://CommonSubmission.WSDLGenerated.hgu"/>
+   <import namespace="http://data.util.webservice.hgu"/>
+   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+
+   <complexType name="QueryDetails">
+    <sequence>
+     <element name="substring" nillable="true" type="soapenc:string"/>
+     <element name="startEmbryoStage" nillable="true" type="soapenc:string"/>
+     <element name="stopEmbryoStage" nillable="true" type="soapenc:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="SearchResult">
+    <sequence>
+
+     <element name="name" nillable="true" type="soapenc:string"/>
+     <element name="id" nillable="true" type="soapenc:string"/>
+     <element name="path" nillable="true" type="soapenc:string"/>
+     <element name="stage" nillable="true" type="soapenc:string"/>
+     <element name="match" nillable="true" type="soapenc:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="ComponentDetails">
+    <sequence>
+
+     <element name="componentNode" type="xsd:boolean"/>
+     <element name="name" nillable="true" type="soapenc:string"/>
+     <element name="id" nillable="true" type="soapenc:string"/>
+     <element name="fullName" nillable="true" type="soapenc:string"/>
+     <element name="childrenId" nillable="true" type="impl:ArrayOf_soapenc_string"/>
+    </sequence>
+   </complexType>
+   <complexType name="SliceDefinition">
+    <sequence>
+
+     <element name="name" nillable="true" type="soapenc:string"/>
+     <element name="x" type="xsd:double"/>
+     <element name="y" type="xsd:double"/>
+     <element name="z" type="xsd:double"/>
+     <element name="theta" type="xsd:double"/>
+     <element name="phi" type="xsd:double"/>
+     <element name="distance" type="xsd:double"/>
+    </sequence>
+   </complexType>
+
+   <complexType name="SliceDetails">
+    <sequence>
+     <element name="slice" nillable="true" type="xsd:base64Binary"/>
+     <element name="width" type="xsd:int"/>
+     <element name="height" type="xsd:int"/>
+     <element name="x_offset" type="xsd:int"/>
+     <element name="y_offset" type="xsd:int"/>
+    </sequence>
+   </complexType>
+
+   <complexType name="SliceTranslationItem">
+    <sequence>
+     <element name="id" nillable="true" type="soapenc:string"/>
+     <element name="name" nillable="true" type="soapenc:string"/>
+     <element name="patchID" nillable="true" type="impl:ArrayOf_soapenc_string"/>
+     <element name="slicePosition" nillable="true" type="tns1:SliceDefinition"/>
+    </sequence>
+   </complexType>
+   <complexType name="FileByteArray">
+
+    <sequence>
+     <element name="type" nillable="true" type="soapenc:string"/>
+     <element name="name" nillable="true" type="soapenc:string"/>
+     <element name="width" type="xsd:int"/>
+     <element name="height" type="xsd:int"/>
+     <element name="fileInByte" nillable="true" type="xsd:base64Binary"/>
+    </sequence>
+   </complexType>
+   <complexType name="SpeciesInfo">
+
+    <sequence>
+     <element name="species" nillable="true" type="soapenc:string"/>
+     <element name="defaultStageType" nillable="true" type="soapenc:string"/>
+     <element name="IDPrefix" nillable="true" type="soapenc:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="ComponentFullDetails">
+    <sequence>
+     <element name="componentNode" type="xsd:boolean"/>
+
+     <element name="name" nillable="true" type="soapenc:string"/>
+     <element name="id" nillable="true" type="soapenc:string"/>
+     <element name="fullName" nillable="true" type="soapenc:string"/>
+     <element name="parentId" nillable="true" type="impl:ArrayOf_soapenc_string"/>
+     <element name="childrenId" nillable="true" type="impl:ArrayOf_soapenc_string"/>
+     <element name="synonyms" nillable="true" type="impl:ArrayOf_soapenc_string"/>
+     <element name="startEmbryoStage" nillable="true" type="soapenc:string"/>
+     <element name="stopEmbryoStage" nillable="true" type="soapenc:string"/>
+     <element name="embryoStage" nillable="true" type="soapenc:string"/>
+
+     <element name="abbreviation" nillable="true" type="soapenc:string"/>
+     <element name="deleted" type="xsd:boolean"/>
+     <element name="printFlag" type="xsd:boolean"/>
+     <element name="printName" nillable="true" type="soapenc:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="Region2DDetails">
+    <sequence>
+     <element name="viewID" nillable="true" type="soapenc:string"/>
+
+     <element name="slicePosition" nillable="true" type="tns1:SliceDefinition"/>
+     <element name="region" nillable="true" type="tns1:SliceDetails"/>
+    </sequence>
+   </complexType>
+  </schema>
+  <schema targetNamespace="urn:hgu.webservice.services" xmlns="http://www.w3.org/2001/XMLSchema">
+   <import namespace="http://SubmissionQuery.WSDLGenerated.hgu"/>
+   <import namespace="http://CommonSubmission.WSDLGenerated.hgu"/>
+   <import namespace="http://data.util.webservice.hgu"/>
+
+   <import namespace="http://mdb.WSDLGenerated.hgu"/>
+   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+   <complexType name="ArrayOf_tns2_SearchResult">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns1:SearchResult[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+
+   <complexType name="ArrayOf_soapenc_string">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="ArrayOf_tns2_ComponentDetails">
+    <complexContent>
+
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns1:ComponentDetails[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="ArrayOf_tns2_SliceTranslationItem">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns1:SliceTranslationItem[]"/>
+
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="ArrayOf_tns3_GeneDetails">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns2:GeneDetails[]"/>
+     </restriction>
+    </complexContent>
+
+   </complexType>
+   <complexType name="ArrayOf_tns3_MutantDetails">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns2:MutantDetails[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="ArrayOf_tns3_LinkedSubmissionItem">
+
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns2:LinkedSubmissionItem[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="ArrayOf_tns3_PublicationDetails">
+    <complexContent>
+     <restriction base="soapenc:Array">
+
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns2:PublicationDetails[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="ArrayOf_tns3_ExpressionInComponentDetails">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns2:ExpressionInComponentDetails[]"/>
+     </restriction>
+
+    </complexContent>
+   </complexType>
+   <complexType name="ArrayOf_tns3_OriginalImageDetails">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns2:OriginalImageDetails[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+
+   <complexType name="ArrayOf_tns2_SliceDefinition">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns1:SliceDefinition[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="ArrayOf_tns3_DomainImageDetails">
+    <complexContent>
+
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns2:DomainImageDetails[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="ArrayOf_tns3_AcknowledgementGroupDetails">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns2:AcknowledgementGroupDetails[]"/>
+
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="ArrayOf_tns3_SubmissionShortDetails">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns2:SubmissionShortDetails[]"/>
+     </restriction>
+    </complexContent>
+
+   </complexType>
+   <complexType name="ArrayOf_tns3_SubmissionCoreDetails">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns2:SubmissionCoreDetails[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="ArrayOf_tns4_SubmissionSearchDetails">
+
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns3:SubmissionSearchDetails[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="ArrayOf_tns4_GeneExpressedQueryShortDetails">
+    <complexContent>
+     <restriction base="soapenc:Array">
+
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns3:GeneExpressedQueryShortDetails[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="ArrayOf_tns2_FileByteArray">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns1:FileByteArray[]"/>
+     </restriction>
+
+    </complexContent>
+   </complexType>
+   <complexType name="ArrayOf_tns4_ComponentExpressQueryShortDetails">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns3:ComponentExpressQueryShortDetails[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+
+   <complexType name="ArrayOf_tns4_Region2DExpressQueryShortDetails">
+    <complexContent>
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns3:Region2DExpressQueryShortDetails[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+   <complexType name="ArrayOf_tns5_Assay">
+    <complexContent>
+
+     <restriction base="soapenc:Array">
+      <attribute ref="soapenc:arrayType" wsdl:arrayType="tns4:Assay[]"/>
+     </restriction>
+    </complexContent>
+   </complexType>
+  </schema>
+  <schema targetNamespace="http://CommonSubmission.WSDLGenerated.hgu" xmlns="http://www.w3.org/2001/XMLSchema">
+   <import namespace="http://SubmissionQuery.WSDLGenerated.hgu"/>
+   <import namespace="urn:hgu.webservice.services"/>
+
+   <import namespace="http://data.util.webservice.hgu"/>
+   <import namespace="http://mdb.WSDLGenerated.hgu"/>
+   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+   <complexType name="DBInfo">
+    <sequence>
+     <element name="DBName" nillable="true" type="soapenc:string"/>
+     <element name="Version" nillable="true" type="soapenc:string"/>
+     <element name="IDPrefix" nillable="true" type="soapenc:string"/>
+    </sequence>
+
+   </complexType>
+   <complexType name="GeneDetails">
+    <sequence>
+     <element name="symbol" nillable="true" type="soapenc:string"/>
+     <element name="name" nillable="true" type="soapenc:string"/>
+     <element name="ID" nillable="true" type="soapenc:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="PersonDetails">
+
+    <sequence>
+     <element name="name" nillable="true" type="soapenc:string"/>
+     <element name="lab" nillable="true" type="soapenc:string"/>
+     <element name="address" nillable="true" type="soapenc:string"/>
+     <element name="city" nillable="true" type="soapenc:string"/>
+     <element name="postcode" nillable="true" type="soapenc:string"/>
+     <element name="country" nillable="true" type="soapenc:string"/>
+     <element name="phoneNumber" nillable="true" type="soapenc:string"/>
+     <element name="faxNumber" nillable="true" type="soapenc:string"/>
+
+     <element name="email" nillable="true" type="soapenc:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="MutantDetails">
+    <sequence>
+     <element name="gene" nillable="true" type="soapenc:string"/>
+     <element name="father" nillable="true" type="soapenc:string"/>
+     <element name="mother" nillable="true" type="soapenc:string"/>
+    </sequence>
+
+   </complexType>
+   <complexType name="SpecimenDetails">
+    <sequence>
+     <element name="species" nillable="true" type="soapenc:string"/>
+     <element name="strain" nillable="true" type="soapenc:string"/>
+     <element name="sex" nillable="true" type="soapenc:string"/>
+     <element name="wildType" type="xsd:boolean"/>
+     <element name="mutants" nillable="true" type="impl:ArrayOf_tns3_MutantDetails"/>
+     <element name="stageFormat" nillable="true" type="soapenc:string"/>
+
+     <element name="stage" nillable="true" type="soapenc:string"/>
+     <element name="assayType" nillable="true" type="soapenc:string"/>
+     <element name="fixationMethod" nillable="true" type="soapenc:string"/>
+     <element name="embedding" nillable="true" type="soapenc:string"/>
+     <element name="notes" nillable="true" type="soapenc:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="LinkedSubmissionItem">
+    <sequence>
+
+     <element name="type" nillable="true" type="soapenc:string"/>
+     <element name="submissionID" nillable="true" type="soapenc:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="PublicationDetails">
+    <sequence>
+     <element name="authors" nillable="true" type="soapenc:string"/>
+     <element name="journal" nillable="true" type="soapenc:string"/>
+     <element name="title" nillable="true" type="soapenc:string"/>
+
+     <element name="volume" nillable="true" type="soapenc:string"/>
+     <element name="issue" nillable="true" type="soapenc:string"/>
+     <element name="year" type="xsd:short"/>
+     <element name="pages" nillable="true" type="soapenc:string"/>
+     <element name="DB" nillable="true" type="soapenc:string"/>
+     <element name="accessionNo" nillable="true" type="soapenc:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="LinkDetails">
+
+    <sequence>
+     <element name="linkedSubmission" nillable="true" type="impl:ArrayOf_tns3_LinkedSubmissionItem"/>
+     <element name="linkedPublication" nillable="true" type="impl:ArrayOf_tns3_PublicationDetails"/>
+    </sequence>
+   </complexType>
+   <complexType name="ProbeDetails">
+    <sequence>
+     <element name="probeName" nillable="true" type="soapenc:string"/>
+     <element name="cloneName" nillable="true" type="soapenc:string"/>
+
+     <element name="type" nillable="true" type="soapenc:string"/>
+     <element name="gene" nillable="true" type="tns2:GeneDetails"/>
+     <element name="nucleotide" nillable="true" type="soapenc:string"/>
+     <element name="accessionNumber" nillable="true" type="impl:ArrayOf_soapenc_string"/>
+     <element name="db1" nillable="true" type="soapenc:string"/>
+     <element name="source" nillable="true" type="soapenc:string"/>
+     <element name="coveredRegion" nillable="true" type="soapenc:string"/>
+     <element name="startLoc" type="xsd:int"/>
+     <element name="endLoc" type="xsd:int"/>
+
+     <element name="descriptionNotes" nillable="true" type="soapenc:string"/>
+     <element name="originType" nillable="true" type="soapenc:string"/>
+     <element name="strain" nillable="true" type="soapenc:string"/>
+     <element name="stageFormat" nillable="true" type="soapenc:string"/>
+     <element name="stage" nillable="true" type="soapenc:string"/>
+     <element name="tissue" nillable="true" type="soapenc:string"/>
+     <element name="cellLineDatabase" nillable="true" type="soapenc:string"/>
+     <element name="cellLineAccessionNo" nillable="true" type="soapenc:string"/>
+     <element name="cellLineNote" nillable="true" type="soapenc:string"/>
+
+     <element name="probeType" nillable="true" type="soapenc:string"/>
+     <element name="geneType" nillable="true" type="soapenc:string"/>
+     <element name="labelProduct" nillable="true" type="soapenc:string"/>
+     <element name="visualizationMethod" nillable="true" type="soapenc:string"/>
+     <element name="raisedIn" nillable="true" type="soapenc:string"/>
+     <element name="supplier" nillable="true" type="soapenc:string"/>
+     <element name="catalogueNo" nillable="true" type="soapenc:string"/>
+     <element name="sandwich" nillable="true" type="impl:ArrayOf_soapenc_string"/>
+    </sequence>
+
+   </complexType>
+   <complexType name="ExpressionInfoDetails">
+    <sequence>
+     <element name="patternID" nillable="true" type="soapenc:string"/>
+     <element name="strengthID" nillable="true" type="soapenc:string"/>
+     <element name="notes" nillable="true" type="soapenc:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="ExpressionInComponentDetails">
+
+    <sequence>
+     <element name="compID" nillable="true" type="soapenc:string"/>
+     <element name="expressionInfo" nillable="true" type="tns2:ExpressionInfoDetails"/>
+    </sequence>
+   </complexType>
+   <complexType name="OriginalImageDetails">
+    <sequence>
+     <element name="position" nillable="true" type="tns1:SliceDefinition"/>
+     <element name="ImageFileByteArray" nillable="true" type="tns1:FileByteArray"/>
+
+     <element name="category" type="xsd:int"/>
+     <element name="notes" nillable="true" type="soapenc:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="DomainImageDetails">
+    <sequence>
+     <element name="WlzFileByteArray" nillable="true" type="tns1:FileByteArray"/>
+     <element name="expressionInfo" nillable="true" type="tns2:ExpressionInfoDetails"/>
+     <element name="method" nillable="true" type="soapenc:string"/>
+
+     <element name="sectionPositions" nillable="true" type="impl:ArrayOf_tns2_SliceDefinition"/>
+    </sequence>
+   </complexType>
+   <complexType name="GeneExpressionDetails">
+    <sequence>
+     <element name="embryoStage" nillable="true" type="soapenc:string"/>
+     <element name="stagingQuality" nillable="true" type="soapenc:string"/>
+     <element name="assayQuality" nillable="true" type="soapenc:string"/>
+     <element name="result" nillable="true" type="impl:ArrayOf_tns3_ExpressionInComponentDetails"/>
+
+     <element name="originalImages" nillable="true" type="impl:ArrayOf_tns3_OriginalImageDetails"/>
+     <element name="associatedImages" nillable="true" type="impl:ArrayOf_tns3_OriginalImageDetails"/>
+     <element name="domainImages" nillable="true" type="impl:ArrayOf_tns3_DomainImageDetails"/>
+     <element name="wholemountImages" nillable="true" type="impl:ArrayOf_tns3_DomainImageDetails"/>
+    </sequence>
+   </complexType>
+   <complexType name="AcknowledgementGroupDetails">
+    <sequence>
+     <element name="name" nillable="true" type="soapenc:string"/>
+
+     <element name="address" nillable="true" type="soapenc:string"/>
+     <element name="city" nillable="true" type="soapenc:string"/>
+     <element name="country" nillable="true" type="soapenc:string"/>
+     <element name="URL" nillable="true" type="soapenc:string"/>
+     <element name="reason" nillable="true" type="soapenc:string"/>
+    </sequence>
+   </complexType>
+   <complexType name="AcknowledgementDetails">
+    <sequence>
+
+     <element name="projectName" nillable="true" type="soapenc:string"/>
+     <element name="groups" nillable="true" type="impl:ArrayOf_tns3_AcknowledgementGroupDetails"/>
+    </sequence>
+   </complexType>
+   <complexType name="SubmissionDetails">
+    <sequence>
+     <element name="ID" nillable="true" type="soapenc:string"/>
+     <element name="status" nillable="true" type="soapenc:string"/>
+     <element name="source" nillable="true" type="soapenc:string"/>
+
+     <element name="validation" nillable="true" type="soapenc:string"/>
+     <element name="lastModificationTime" nillable="true" type="soapenc:string"/>
+     <element name="assayType" nillable="true" type="soapenc:string"/>
+     <element name="authors" nillable="true" type="soapenc:string"/>
+     <element name="contact" nillable="true" type="tns2:PersonDetails"/>
+     <element name="editor" nillable="true" type="tns2:PersonDetails"/>
+     <element name="specimen" nillable="true" type="tns2:SpecimenDetails"/>
+     <element name="reference" nillable="true" type="tns2:LinkDetails"/>
+     <element name="probe" nillable="true" type="tns2:ProbeDetails"/>
+
+     <element name="results" nillable="true" type="tns2:GeneExpressionDetails"/>
+     <element name="notes" nillable="true" type="soapenc:string"/>
+     <element name="acknowledgement" nillable="true" type="tns2:AcknowledgementDetails"/>
+    </sequence>
+   </complexType>
+   <complexType name="SubmissionCoreDetails">
+    <sequence>
+     <element name="ID" nillable="true" type="soapenc:string"/>
+     <element name="status" nillable="true" type="soapenc:string"/>
+
+     <element name="source" nillable="true" type="soapenc:string"/>
+     <element name="validation" nillable="true" type="soapenc:string"/>
+     <element name="lastModificationTime" nillable="true" type="soapenc:string"/>
+     <element name="assayType" nillable="true" type="soapenc:string"/>
+     <element name="authors" nillable="true" type="soapenc:string"/>
+     <element name="contact" nillable="true" type="tns2:PersonDetails"/>
+     <element name="editor" nillable="true" type="tns2:PersonDetails"/>
+     <element name="specimen" nillable="true" type="tns2:SpecimenDetails"/>
+     <element name="reference" nillable="true" type="tns2:LinkDetails"/>
+
+     <element name="probe" nillable="true" type="tns2:ProbeDetails"/>
+     <element name="embryoStage" nillable="true" type="soapenc:string"/>
+     <element name="stagingQuality" nillable="true" type="soapenc:string"/>
+     <element name="assayQuality" nillable="true" type="soapenc:string"/>
+     <element name="notes" nillable="true" type="soapenc:string"/>
+     <element name="acknowledgement" nillable="true" type="tns2:AcknowledgementDetails"/>
+    </sequence>
+   </complexType>
+   <complexType name="SubmissionShortDetails">
+
+    <sequence>
+     <element name="ID" nillable="true" type="soapenc:string"/>
+     <element name="geneSymbol" nillable="true" type="soapenc:string"/>
+     <element name="contactName" nillable="true" type="soapenc:string"/>
+     <element name="embryoStage" nillable="true" type="soapenc:string"/>
+    </sequence>
+   </complexType>
+  </schema>
+  <schema targetNamespace="http://SubmissionQuery.WSDLGenerated.hgu" xmlns="http://www.w3.org/2001/XMLSchema">
+
+   <import namespace="urn:hgu.webservice.services"/>
+   <import namespace="http://CommonSubmission.WSDLGenerated.hgu"/>
+   <import namespace="http://data.util.webservice.hgu"/>
+   <import namespace="http://mdb.WSDLGenerated.hgu"/>
+   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+   <complexType name="SubmissionSearchDetails">
+    <sequence>
+     <element name="rank" type="xsd:double"/>
+     <element name="submission" nillable="true" type="tns2:SubmissionShortDetails"/>
+
+    </sequence>
+   </complexType>
+   <complexType name="GeneExpressedQueryShortDetails">
+    <sequence>
+     <element name="geneSymbol" nillable="true" type="soapenc:string"/>
+     <element name="submissions" nillable="true" type="impl:ArrayOf_tns4_SubmissionSearchDetails"/>
+    </sequence>
+   </complexType>
+   <complexType name="ComponentExpressQueryShortDetails">
+
+    <sequence>
+     <element name="componentID" nillable="true" type="soapenc:string"/>
+     <element name="submissions" nillable="true" type="impl:ArrayOf_tns3_SubmissionShortDetails"/>
+    </sequence>
+   </complexType>
+   <complexType name="Region2DExpressQueryShortDetails">
+    <sequence>
+     <element name="expressionRegion" nillable="true" type="tns1:Region2DDetails"/>
+     <element name="submissions" nillable="true" type="impl:ArrayOf_tns3_SubmissionShortDetails"/>
+
+    </sequence>
+   </complexType>
+   <complexType name="RegionExpressQueryShortDetails">
+    <sequence>
+     <element name="wlzFile" nillable="true" type="tns1:FileByteArray"/>
+     <element name="submissions" nillable="true" type="impl:ArrayOf_tns3_SubmissionShortDetails"/>
+    </sequence>
+   </complexType>
+  </schema>
+
+  <schema targetNamespace="http://data.util.webservice.hgu" xmlns="http://www.w3.org/2001/XMLSchema">
+   <import namespace="http://SubmissionQuery.WSDLGenerated.hgu"/>
+   <import namespace="urn:hgu.webservice.services"/>
+   <import namespace="http://CommonSubmission.WSDLGenerated.hgu"/>
+   <import namespace="http://mdb.WSDLGenerated.hgu"/>
+   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+   <complexType name="Assay">
+    <sequence>
+     <element name="description" nillable="true" type="soapenc:string"/>
+
+     <element name="url" nillable="true" type="soapenc:string"/>
+    </sequence>
+   </complexType>
+  </schema>
+ </wsdl:types>
+
+   <wsdl:message name="whatGeneInStageResponse">
+
+      <wsdl:part name="whatGeneInStageReturn" type="impl:ArrayOf_tns4_GeneExpressedQueryShortDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getComponentTreeResponse1">
+
+      <wsdl:part name="getComponentTreeReturn" type="impl:ArrayOf_tns2_ComponentDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAbstractNodesRequest">
+
+      <wsdl:part name="in0" type="impl:ArrayOf_soapenc_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getRootComponentsRequest">
+
+      <wsdl:part name="in0" type="soapenc:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getComponentTreeRequest">
+
+      <wsdl:part name="in0" type="soapenc:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="queryResponse">
+
+      <wsdl:part name="queryReturn" type="impl:ArrayOf_tns2_SearchResult"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getRegionGivenComponentResponse">
+
+      <wsdl:part name="getRegionGivenComponentReturn" type="tns1:FileByteArray"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="whatEntryGivenGeneResponse">
+
+      <wsdl:part name="whatEntryGivenGeneReturn" type="impl:ArrayOf_tns4_GeneExpressedQueryShortDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getWholemount2DRequest">
+
+      <wsdl:part name="in0" type="soapenc:string"/>
+
+      <wsdl:part name="in1" type="tns1:SliceDefinition"/>
+
+      <wsdl:part name="in2" type="xsd:boolean"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAssayResponse">
+
+      <wsdl:part name="getAssayReturn" type="impl:ArrayOf_tns5_Assay"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getWholemount2DInfoResponse">
+
+      <wsdl:part name="getWholemount2DInfoReturn" type="impl:ArrayOf_tns2_SliceTranslationItem"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getRegionGivenComponentRequest">
+
+      <wsdl:part name="in0" type="xsd:boolean"/>
+
+      <wsdl:part name="in1" type="impl:ArrayOf_soapenc_string"/>
+
+      <wsdl:part name="in2" type="soapenc:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getComponentTreeResponse">
+
+      <wsdl:part name="getComponentTreeReturn" type="impl:ArrayOf_tns2_ComponentDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="existResponse">
+
+      <wsdl:part name="existReturn" type="xsd:boolean"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getComponentFullDetailsRequest">
+
+      <wsdl:part name="in0" type="soapenc:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getStagesRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="getComponentFullDetailsResponse">
+
+      <wsdl:part name="getComponentFullDetailsReturn" type="tns1:ComponentFullDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getSpeciesInfoResponse">
+
+      <wsdl:part name="getSpeciesInfoReturn" type="tns1:SpeciesInfo"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="whatComponentExpressGeneResponse">
+
+      <wsdl:part name="whatComponentExpressGeneReturn" type="impl:ArrayOf_tns4_ComponentExpressQueryShortDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getWholemount2DResponse">
+
+      <wsdl:part name="getWholemount2DReturn" type="tns1:SliceDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getComponentTreeRequest1">
+
+   </wsdl:message>
+
+   <wsdl:message name="getSliceRequest">
+
+      <wsdl:part name="in0" type="soapenc:string"/>
+
+      <wsdl:part name="in1" type="soapenc:string"/>
+
+      <wsdl:part name="in2" type="tns1:SliceDefinition"/>
+
+      <wsdl:part name="in3" type="xsd:boolean"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getSubmissionCoreRequest">
+
+      <wsdl:part name="in0" type="soapenc:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="whatWholemountRegionExpressGeneRequest">
+
+      <wsdl:part name="in0" type="impl:ArrayOf_soapenc_string"/>
+
+      <wsdl:part name="in1" type="soapenc:string"/>
+
+      <wsdl:part name="in2" type="xsd:boolean"/>
+
+      <wsdl:part name="in3" type="xsd:int"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="queryRequest">
+
+      <wsdl:part name="in0" type="tns1:QueryDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getStagesWithReconstructionResponse">
+
+      <wsdl:part name="getStagesWithReconstructionReturn" type="impl:ArrayOf_soapenc_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="logResponse">
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllCoreSubmissionsRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="whatGeneInStageRequest">
+
+      <wsdl:part name="in0" type="soapenc:string"/>
+
+      <wsdl:part name="in1" type="soapenc:string"/>
+
+      <wsdl:part name="in2" type="xsd:int"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="logRequest">
+
+      <wsdl:part name="in0" type="soapenc:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="whatComponentExpressGeneRequest">
+
+      <wsdl:part name="in0" type="impl:ArrayOf_soapenc_string"/>
+
+      <wsdl:part name="in1" type="soapenc:string"/>
+
+      <wsdl:part name="in2" type="soapenc:string"/>
+
+      <wsdl:part name="in3" type="xsd:boolean"/>
+
+      <wsdl:part name="in4" type="xsd:int"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getStagesResponse">
+
+      <wsdl:part name="getStagesReturn" type="impl:ArrayOf_soapenc_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="whatGeneGivenRegionResponse">
+
+      <wsdl:part name="whatGeneGivenRegionReturn" type="impl:ArrayOf_tns4_GeneExpressedQueryShortDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getSliceResponse">
+
+      <wsdl:part name="getSliceReturn" type="tns1:SliceDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getSubmissionAssayImageRequest">
+
+      <wsdl:part name="in0" type="soapenc:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getDBInfoResponse">
+
+      <wsdl:part name="getDBInfoReturn" type="tns2:DBInfo"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getWholemount2DInfoRequest">
+
+      <wsdl:part name="in0" type="soapenc:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getGeneRequest">
+
+      <wsdl:part name="in0" type="soapenc:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getGeneResponse">
+
+      <wsdl:part name="getGeneReturn" type="tns2:GeneDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllSubmissionsRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="getTimedNodesResponse">
+
+      <wsdl:part name="getTimedNodesReturn" type="impl:ArrayOf_soapenc_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getSpeciesInfoRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="whatGeneGivenRegionRequest">
+
+      <wsdl:part name="in0" type="impl:ArrayOf_tns2_FileByteArray"/>
+
+      <wsdl:part name="in1" type="soapenc:string"/>
+
+      <wsdl:part name="in2" type="xsd:boolean"/>
+
+      <wsdl:part name="in3" type="xsd:int"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getDBInfoRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="getSubmissionRequest">
+
+      <wsdl:part name="in0" type="soapenc:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="whatVoxelRegionExpressGeneResponse">
+
+      <wsdl:part name="whatVoxelRegionExpressGeneReturn" type="tns3:RegionExpressQueryShortDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="whatWholemountRegionExpressGeneResponse">
+
+      <wsdl:part name="whatWholemountRegionExpressGeneReturn" type="impl:ArrayOf_tns4_Region2DExpressQueryShortDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllGeneResponse">
+
+      <wsdl:part name="getAllGeneReturn" type="impl:ArrayOf_tns3_GeneDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getStagesWithReconstructionRequest">
+
+      <wsdl:part name="in0" type="xsd:boolean"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getRootComponentsRequest1">
+
+   </wsdl:message>
+
+   <wsdl:message name="getSubmissionAssayImageResponse">
+
+      <wsdl:part name="getSubmissionAssayImageReturn" type="impl:ArrayOf_tns3_OriginalImageDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getSubmissionCoreResponse">
+
+      <wsdl:part name="getSubmissionCoreReturn" type="tns2:SubmissionCoreDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllCoreSubmissionsResponse">
+
+      <wsdl:part name="getAllCoreSubmissionsReturn" type="impl:ArrayOf_tns3_SubmissionCoreDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="existRequest">
+
+      <wsdl:part name="in0" type="soapenc:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="whatEntryGivenGeneRequest">
+
+      <wsdl:part name="in0" type="impl:ArrayOf_soapenc_string"/>
+
+      <wsdl:part name="in1" type="soapenc:string"/>
+
+      <wsdl:part name="in2" type="soapenc:string"/>
+
+      <wsdl:part name="in3" type="xsd:int"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllSubmissionsResponse">
+
+      <wsdl:part name="getAllSubmissionsReturn" type="impl:ArrayOf_tns3_SubmissionShortDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAssayRequest">
+
+      <wsdl:part name="in0" type="soapenc:string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="whatVoxelRegionExpressGeneRequest">
+
+      <wsdl:part name="in0" type="impl:ArrayOf_soapenc_string"/>
+
+      <wsdl:part name="in1" type="soapenc:string"/>
+
+      <wsdl:part name="in2" type="xsd:boolean"/>
+
+      <wsdl:part name="in3" type="xsd:int"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getRootComponentsResponse1">
+
+      <wsdl:part name="getRootComponentsReturn" type="tns1:ComponentDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAllGeneRequest">
+
+   </wsdl:message>
+
+   <wsdl:message name="getRootComponentsResponse">
+
+      <wsdl:part name="getRootComponentsReturn" type="tns1:ComponentDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getSubmissionResponse">
+
+      <wsdl:part name="getSubmissionReturn" type="tns2:SubmissionDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="whatGeneGivenComponentRequest">
+
+      <wsdl:part name="in0" type="impl:ArrayOf_soapenc_string"/>
+
+      <wsdl:part name="in1" type="soapenc:string"/>
+
+      <wsdl:part name="in2" type="xsd:boolean"/>
+
+      <wsdl:part name="in3" type="xsd:int"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getAbstractNodesResponse">
+
+      <wsdl:part name="getAbstractNodesReturn" type="impl:ArrayOf_soapenc_string"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="whatGeneGivenComponentResponse">
+
+      <wsdl:part name="whatGeneGivenComponentReturn" type="impl:ArrayOf_tns4_GeneExpressedQueryShortDetails"/>
+
+   </wsdl:message>
+
+   <wsdl:message name="getTimedNodesRequest">
+
+      <wsdl:part name="in0" type="impl:ArrayOf_soapenc_string"/>
+
+   </wsdl:message>
+
+   <wsdl:portType name="WebService">
+
+      <wsdl:operation name="log" parameterOrder="in0">
+
+         <wsdl:input message="impl:logRequest" name="logRequest"/>
+
+         <wsdl:output message="impl:logResponse" name="logResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="query" parameterOrder="in0">
+
+         <wsdl:input message="impl:queryRequest" name="queryRequest"/>
+
+         <wsdl:output message="impl:queryResponse" name="queryResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getRootComponents" parameterOrder="in0">
+
+         <wsdl:input message="impl:getRootComponentsRequest" name="getRootComponentsRequest"/>
+
+         <wsdl:output message="impl:getRootComponentsResponse" name="getRootComponentsResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getRootComponents">
+
+         <wsdl:input message="impl:getRootComponentsRequest1" name="getRootComponentsRequest1"/>
+
+         <wsdl:output message="impl:getRootComponentsResponse1" name="getRootComponentsResponse1"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getComponentTree" parameterOrder="in0">
+
+         <wsdl:input message="impl:getComponentTreeRequest" name="getComponentTreeRequest"/>
+
+         <wsdl:output message="impl:getComponentTreeResponse" name="getComponentTreeResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getComponentTree">
+
+         <wsdl:input message="impl:getComponentTreeRequest1" name="getComponentTreeRequest1"/>
+
+         <wsdl:output message="impl:getComponentTreeResponse1" name="getComponentTreeResponse1"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getTimedNodes" parameterOrder="in0">
+
+         <wsdl:input message="impl:getTimedNodesRequest" name="getTimedNodesRequest"/>
+
+         <wsdl:output message="impl:getTimedNodesResponse" name="getTimedNodesResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAbstractNodes" parameterOrder="in0">
+
+         <wsdl:input message="impl:getAbstractNodesRequest" name="getAbstractNodesRequest"/>
+
+         <wsdl:output message="impl:getAbstractNodesResponse" name="getAbstractNodesResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getSlice" parameterOrder="in0 in1 in2 in3">
+
+         <wsdl:input message="impl:getSliceRequest" name="getSliceRequest"/>
+
+         <wsdl:output message="impl:getSliceResponse" name="getSliceResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getWholemount2DInfo" parameterOrder="in0">
+
+         <wsdl:input message="impl:getWholemount2DInfoRequest" name="getWholemount2DInfoRequest"/>
+
+         <wsdl:output message="impl:getWholemount2DInfoResponse" name="getWholemount2DInfoResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getWholemount2D" parameterOrder="in0 in1 in2">
+
+         <wsdl:input message="impl:getWholemount2DRequest" name="getWholemount2DRequest"/>
+
+         <wsdl:output message="impl:getWholemount2DResponse" name="getWholemount2DResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getStagesWithReconstruction" parameterOrder="in0">
+
+         <wsdl:input message="impl:getStagesWithReconstructionRequest" name="getStagesWithReconstructionRequest"/>
+
+         <wsdl:output message="impl:getStagesWithReconstructionResponse" name="getStagesWithReconstructionResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getRegionGivenComponent" parameterOrder="in0 in1 in2">
+
+         <wsdl:input message="impl:getRegionGivenComponentRequest" name="getRegionGivenComponentRequest"/>
+
+         <wsdl:output message="impl:getRegionGivenComponentResponse" name="getRegionGivenComponentResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getSpeciesInfo">
+
+         <wsdl:input message="impl:getSpeciesInfoRequest" name="getSpeciesInfoRequest"/>
+
+         <wsdl:output message="impl:getSpeciesInfoResponse" name="getSpeciesInfoResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getComponentFullDetails" parameterOrder="in0">
+
+         <wsdl:input message="impl:getComponentFullDetailsRequest" name="getComponentFullDetailsRequest"/>
+
+         <wsdl:output message="impl:getComponentFullDetailsResponse" name="getComponentFullDetailsResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getStages">
+
+         <wsdl:input message="impl:getStagesRequest" name="getStagesRequest"/>
+
+         <wsdl:output message="impl:getStagesResponse" name="getStagesResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getDBInfo">
+
+         <wsdl:input message="impl:getDBInfoRequest" name="getDBInfoRequest"/>
+
+         <wsdl:output message="impl:getDBInfoResponse" name="getDBInfoResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getGene" parameterOrder="in0">
+
+         <wsdl:input message="impl:getGeneRequest" name="getGeneRequest"/>
+
+         <wsdl:output message="impl:getGeneResponse" name="getGeneResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllGene">
+
+         <wsdl:input message="impl:getAllGeneRequest" name="getAllGeneRequest"/>
+
+         <wsdl:output message="impl:getAllGeneResponse" name="getAllGeneResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getSubmission" parameterOrder="in0">
+
+         <wsdl:input message="impl:getSubmissionRequest" name="getSubmissionRequest"/>
+
+         <wsdl:output message="impl:getSubmissionResponse" name="getSubmissionResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getSubmissionCore" parameterOrder="in0">
+
+         <wsdl:input message="impl:getSubmissionCoreRequest" name="getSubmissionCoreRequest"/>
+
+         <wsdl:output message="impl:getSubmissionCoreResponse" name="getSubmissionCoreResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllSubmissions">
+
+         <wsdl:input message="impl:getAllSubmissionsRequest" name="getAllSubmissionsRequest"/>
+
+         <wsdl:output message="impl:getAllSubmissionsResponse" name="getAllSubmissionsResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllCoreSubmissions">
+
+         <wsdl:input message="impl:getAllCoreSubmissionsRequest" name="getAllCoreSubmissionsRequest"/>
+
+         <wsdl:output message="impl:getAllCoreSubmissionsResponse" name="getAllCoreSubmissionsResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getSubmissionAssayImage" parameterOrder="in0">
+
+         <wsdl:input message="impl:getSubmissionAssayImageRequest" name="getSubmissionAssayImageRequest"/>
+
+         <wsdl:output message="impl:getSubmissionAssayImageResponse" name="getSubmissionAssayImageResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="exist" parameterOrder="in0">
+
+         <wsdl:input message="impl:existRequest" name="existRequest"/>
+
+         <wsdl:output message="impl:existResponse" name="existResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="whatGeneInStage" parameterOrder="in0 in1 in2">
+
+         <wsdl:input message="impl:whatGeneInStageRequest" name="whatGeneInStageRequest"/>
+
+         <wsdl:output message="impl:whatGeneInStageResponse" name="whatGeneInStageResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="whatEntryGivenGene" parameterOrder="in0 in1 in2 in3">
+
+         <wsdl:input message="impl:whatEntryGivenGeneRequest" name="whatEntryGivenGeneRequest"/>
+
+         <wsdl:output message="impl:whatEntryGivenGeneResponse" name="whatEntryGivenGeneResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="whatGeneGivenRegion" parameterOrder="in0 in1 in2 in3">
+
+         <wsdl:input message="impl:whatGeneGivenRegionRequest" name="whatGeneGivenRegionRequest"/>
+
+         <wsdl:output message="impl:whatGeneGivenRegionResponse" name="whatGeneGivenRegionResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="whatGeneGivenComponent" parameterOrder="in0 in1 in2 in3">
+
+         <wsdl:input message="impl:whatGeneGivenComponentRequest" name="whatGeneGivenComponentRequest"/>
+
+         <wsdl:output message="impl:whatGeneGivenComponentResponse" name="whatGeneGivenComponentResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="whatComponentExpressGene" parameterOrder="in0 in1 in2 in3 in4">
+
+         <wsdl:input message="impl:whatComponentExpressGeneRequest" name="whatComponentExpressGeneRequest"/>
+
+         <wsdl:output message="impl:whatComponentExpressGeneResponse" name="whatComponentExpressGeneResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="whatWholemountRegionExpressGene" parameterOrder="in0 in1 in2 in3">
+
+         <wsdl:input message="impl:whatWholemountRegionExpressGeneRequest" name="whatWholemountRegionExpressGeneRequest"/>
+
+         <wsdl:output message="impl:whatWholemountRegionExpressGeneResponse" name="whatWholemountRegionExpressGeneResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="whatVoxelRegionExpressGene" parameterOrder="in0 in1 in2 in3">
+
+         <wsdl:input message="impl:whatVoxelRegionExpressGeneRequest" name="whatVoxelRegionExpressGeneRequest"/>
+
+         <wsdl:output message="impl:whatVoxelRegionExpressGeneResponse" name="whatVoxelRegionExpressGeneResponse"/>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAssay" parameterOrder="in0">
+
+         <wsdl:input message="impl:getAssayRequest" name="getAssayRequest"/>
+
+         <wsdl:output message="impl:getAssayResponse" name="getAssayResponse"/>
+
+      </wsdl:operation>
+
+   </wsdl:portType>
+
+   <wsdl:binding name="maSoapBinding" type="impl:WebService">
+
+      <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+      <wsdl:operation name="log">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="logRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="logResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="query">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="queryRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="queryResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getRootComponents">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getRootComponentsRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getRootComponentsResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getRootComponents">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getRootComponentsRequest1">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getRootComponentsResponse1">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getComponentTree">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getComponentTreeRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getComponentTreeResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getComponentTree">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getComponentTreeRequest1">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getComponentTreeResponse1">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getTimedNodes">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getTimedNodesRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getTimedNodesResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAbstractNodes">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getAbstractNodesRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getAbstractNodesResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getSlice">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getSliceRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getSliceResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getWholemount2DInfo">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getWholemount2DInfoRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getWholemount2DInfoResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getWholemount2D">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getWholemount2DRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getWholemount2DResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getStagesWithReconstruction">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getStagesWithReconstructionRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getStagesWithReconstructionResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getRegionGivenComponent">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getRegionGivenComponentRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getRegionGivenComponentResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getSpeciesInfo">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getSpeciesInfoRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getSpeciesInfoResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getComponentFullDetails">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getComponentFullDetailsRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getComponentFullDetailsResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getStages">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getStagesRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getStagesResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getDBInfo">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getDBInfoRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getDBInfoResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getGene">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getGeneRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getGeneResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllGene">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getAllGeneRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getAllGeneResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getSubmission">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getSubmissionRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getSubmissionResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getSubmissionCore">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getSubmissionCoreRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getSubmissionCoreResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllSubmissions">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getAllSubmissionsRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getAllSubmissionsResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAllCoreSubmissions">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getAllCoreSubmissionsRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getAllCoreSubmissionsResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getSubmissionAssayImage">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getSubmissionAssayImageRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getSubmissionAssayImageResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="exist">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="existRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="existResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="whatGeneInStage">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="whatGeneInStageRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="whatGeneInStageResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="whatEntryGivenGene">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="whatEntryGivenGeneRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="whatEntryGivenGeneResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="whatGeneGivenRegion">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="whatGeneGivenRegionRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="whatGeneGivenRegionResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="whatGeneGivenComponent">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="whatGeneGivenComponentRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="whatGeneGivenComponentResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="whatComponentExpressGene">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="whatComponentExpressGeneRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="whatComponentExpressGeneResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="whatWholemountRegionExpressGene">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="whatWholemountRegionExpressGeneRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="whatWholemountRegionExpressGeneResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="whatVoxelRegionExpressGene">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="whatVoxelRegionExpressGeneRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="whatVoxelRegionExpressGeneResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+      <wsdl:operation name="getAssay">
+
+         <wsdlsoap:operation soapAction=""/>
+
+         <wsdl:input name="getAssayRequest">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:input>
+
+         <wsdl:output name="getAssayResponse">
+
+            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:hgu.webservice.services" use="encoded"/>
+
+         </wsdl:output>
+
+      </wsdl:operation>
+
+   </wsdl:binding>
+
+   <wsdl:service name="WebServiceService">
+
+      <wsdl:port binding="impl:maSoapBinding" name="ma">
+
+         <wsdlsoap:address location="http://genex.hgu.mrc.ac.uk/axis/services/ma"/>
+
+      </wsdl:port>
+
+   </wsdl:service>
+
+</wsdl:definitions>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/menagerie-complex-rpc.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/menagerie-complex-rpc.wsdl
new file mode 100644
index 0000000..58b74b7
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/menagerie-complex-rpc.wsdl
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://xfire.codehaus.org/BookService" xmlns:tns="http://xfire.codehaus.org/BookService" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://complex.pojo.axis2.menagerie.googlecode" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:types>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://complex.pojo.axis2.menagerie.googlecode">
+<xsd:complexType name="Person">
+<xsd:sequence>
+<xsd:element minOccurs="0" name="address" nillable="true" type="ns1:Address"/>
+<xsd:element minOccurs="0" name="age" type="xsd:int"/>
+<xsd:element minOccurs="0" name="firstName" nillable="true" type="xsd:string"/>
+<xsd:element minOccurs="0" name="lastName" nillable="true" type="xsd:string"/>
+</xsd:sequence>
+</xsd:complexType>
+<xsd:complexType name="Address">
+<xsd:sequence>
+<xsd:element minOccurs="0" name="city" nillable="true" type="xsd:string"/>
+<xsd:element minOccurs="0" name="road" nillable="true" type="xsd:string"/>
+<xsd:element minOccurs="0" name="roadNumber" type="xsd:int"/>
+</xsd:sequence>
+</xsd:complexType>
+<xsd:complexType name="ArrayOfPerson">
+<xsd:sequence>
+<xsd:element maxOccurs="unbounded" minOccurs="0" name="Person" nillable="true" type="ns1:Person"/>
+</xsd:sequence>
+</xsd:complexType>
+<xsd:complexType name="ComplexWithInternalList">
+<xsd:sequence>
+<xsd:element minOccurs="0" name="innerArray" nillable="true" type="tns:ArrayOfString"/>
+<xsd:element minOccurs="0" name="innerList" nillable="true" type="tns:ArrayOfString"/>
+<xsd:element minOccurs="0" name="length" type="xsd:int"/>
+</xsd:sequence>
+</xsd:complexType>
+</xsd:schema>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://xfire.codehaus.org/BookService">
+<xsd:complexType name="ArrayOfString">
+<xsd:sequence>
+<xsd:element maxOccurs="unbounded" minOccurs="0" name="string" nillable="true" type="xsd:string"/>
+</xsd:sequence>
+</xsd:complexType>
+</xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="countPeopleListRequest">
+    <wsdl:part name="people" type="ns1:ArrayOfPerson">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="getPersonArrayResponse">
+    <wsdl:part name="out" type="ns1:ArrayOfPerson">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="getPersonListResponse">
+    <wsdl:part name="out" type="ns1:ArrayOfPerson">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="personToStringRequest">
+    <wsdl:part name="person" type="ns1:Person">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="getComplexWithInternalListResponse">
+    <wsdl:part name="out" type="ns1:ComplexWithInternalList">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="createPersonRequest">
+  </wsdl:message>
+  <wsdl:message name="countPeopleArrayResponse">
+    <wsdl:part name="out" type="xsd:int">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="getComplexWithInternalListRequest">
+  </wsdl:message>
+  <wsdl:message name="createPersonResponse">
+    <wsdl:part name="out" type="ns1:Person">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="getPersonListRequest">
+    <wsdl:part name="size" type="xsd:int">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="countPeopleArrayRequest">
+    <wsdl:part name="people" type="ns1:ArrayOfPerson">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="personToStringResponse">
+    <wsdl:part name="out" type="xsd:string">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="countPeopleListResponse">
+    <wsdl:part name="out" type="xsd:int">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="getPersonArrayRequest">
+    <wsdl:part name="size" type="xsd:int">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:portType name="Complex-rePortType">
+    <wsdl:operation name="personToString">
+      <wsdl:input name="personToStringRequest" message="tns:personToStringRequest">
+    </wsdl:input>
+      <wsdl:output name="personToStringResponse" message="tns:personToStringResponse">
+    </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="countPeopleList">
+      <wsdl:input name="countPeopleListRequest" message="tns:countPeopleListRequest">
+    </wsdl:input>
+      <wsdl:output name="countPeopleListResponse" message="tns:countPeopleListResponse">
+    </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getPersonList">
+      <wsdl:input name="getPersonListRequest" message="tns:getPersonListRequest">
+    </wsdl:input>
+      <wsdl:output name="getPersonListResponse" message="tns:getPersonListResponse">
+    </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="countPeopleArray">
+      <wsdl:input name="countPeopleArrayRequest" message="tns:countPeopleArrayRequest">
+    </wsdl:input>
+      <wsdl:output name="countPeopleArrayResponse" message="tns:countPeopleArrayResponse">
+    </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="createPerson">
+      <wsdl:input name="createPersonRequest" message="tns:createPersonRequest">
+    </wsdl:input>
+      <wsdl:output name="createPersonResponse" message="tns:createPersonResponse">
+    </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getPersonArray">
+      <wsdl:input name="getPersonArrayRequest" message="tns:getPersonArrayRequest">
+    </wsdl:input>
+      <wsdl:output name="getPersonArrayResponse" message="tns:getPersonArrayResponse">
+    </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getComplexWithInternalList">
+      <wsdl:input name="getComplexWithInternalListRequest" message="tns:getComplexWithInternalListRequest">
+    </wsdl:input>
+      <wsdl:output name="getComplexWithInternalListResponse" message="tns:getComplexWithInternalListResponse">
+    </wsdl:output>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="Complex-reHttpBinding" type="tns:Complex-rePortType">
+    <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+    <wsdl:operation name="personToString">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="personToStringRequest">
+        <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xfire.codehaus.org/BookService"/>
+      </wsdl:input>
+      <wsdl:output name="personToStringResponse">
+        <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xfire.codehaus.org/BookService"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="countPeopleList">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="countPeopleListRequest">
+        <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xfire.codehaus.org/BookService"/>
+      </wsdl:input>
+      <wsdl:output name="countPeopleListResponse">
+        <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xfire.codehaus.org/BookService"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getPersonList">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="getPersonListRequest">
+        <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xfire.codehaus.org/BookService"/>
+      </wsdl:input>
+      <wsdl:output name="getPersonListResponse">
+        <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xfire.codehaus.org/BookService"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="countPeopleArray">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="countPeopleArrayRequest">
+        <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xfire.codehaus.org/BookService"/>
+      </wsdl:input>
+      <wsdl:output name="countPeopleArrayResponse">
+        <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xfire.codehaus.org/BookService"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="createPerson">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="createPersonRequest">
+        <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xfire.codehaus.org/BookService"/>
+      </wsdl:input>
+      <wsdl:output name="createPersonResponse">
+        <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xfire.codehaus.org/BookService"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getPersonArray">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="getPersonArrayRequest">
+        <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xfire.codehaus.org/BookService"/>
+      </wsdl:input>
+      <wsdl:output name="getPersonArrayResponse">
+        <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xfire.codehaus.org/BookService"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="getComplexWithInternalList">
+      <wsdlsoap:operation soapAction=""/>
+      <wsdl:input name="getComplexWithInternalListRequest">
+        <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xfire.codehaus.org/BookService"/>
+      </wsdl:input>
+      <wsdl:output name="getComplexWithInternalListResponse">
+        <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xfire.codehaus.org/BookService"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="Complex-re">
+    <wsdl:port name="Complex-reHttpPort" binding="tns:Complex-reHttpBinding">
+      <wsdlsoap:address location="http://www.mygrid.org.uk/menagerie/xfire/Complex-re"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/prodoric.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/prodoric.wsdl
new file mode 100644
index 0000000..bd1ce36
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/prodoric.wsdl
@@ -0,0 +1,360 @@
+<?xml version ='1.0' encoding ='UTF-8' ?> 
+<definitions name='prodoric_ws' 
+  targetNamespace='ws.prodoric' 
+  xmlns:tns='ws.prodoric' 
+  xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' 
+  xmlns:xsd='http://www.w3.org/2001/XMLSchema' 
+  xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/' 
+  xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' 
+  xmlns='http://schemas.xmlsoap.org/wsdl/'> 
+
+<wsdl:types>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:apachesoap="http://xml.apache.org/xml-soap"
+xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+targetNamespace="ws.prodoric">
+
+<xsd:element name="ProteinAccString"  type="xsd:string"/>
+<xsd:element name="HelloStringIn"     type="xsd:string"/>
+<xsd:element name="HelloStringOut"    type="xsd:string"/>
+<xsd:element name="ProfileAcc"        type="xsd:string"/>
+
+<xsd:element name="OperonParams"             type="tns:ParamsType"/>
+<xsd:element name="RegulatorParams"          type="tns:ParamsType"/>
+<xsd:element name="ProfileParameterParams"   type="tns:ParamsType"/>
+<xsd:element name="ExpressionFromGeneParams" type="tns:ParamsType"/>
+<xsd:element name="GenomeParams"             type="tns:ParamsType"/>
+  <xsd:complexType name="ParamsType">
+
+    <xsd:sequence>
+      <xsd:element name="idtype" type="xsd:string"/>
+      <xsd:element name="id"     type="xsd:string"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+<xsd:element name="UniprotAccArray" type="tns:StringArrayType"/>
+<xsd:complexType name="StringArrayType">
+  <xsd:sequence>
+   <xsd:element name="str" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
+
+  </xsd:sequence>
+</xsd:complexType>
+
+<xsd:element name="ArrayOfOperonResult" type="tns:OperonResultArrayType"/>
+<xsd:complexType name="OperonResultArrayType">
+  <xsd:sequence>
+   <xsd:element name="OperonResult" type="tns:OperonResultType" minOccurs="0" maxOccurs="unbounded"/>
+  </xsd:sequence>
+</xsd:complexType>
+<xsd:complexType name="OperonResultType">
+  <xsd:sequence>
+    <xsd:element name="gene_acc"    type="xsd:string"/>
+
+    <xsd:element name="short_name"  type="xsd:string"/>
+    <xsd:element name="gene_name"   type="xsd:string"/>
+    <xsd:element name="orf_id"      type="xsd:string"/>
+    <xsd:element name="operon_acc"  type="xsd:string"/>
+    <xsd:element name="operon_name" type="xsd:string"/>
+    <xsd:element name="references"  type="xsd:string"/>
+  </xsd:sequence>
+</xsd:complexType>
+
+<xsd:element name="ArrayOfRegulatorResult" type="tns:RegulatorResultArrayType"/>
+
+<xsd:complexType name="RegulatorResultArrayType">
+  <xsd:sequence>
+   <xsd:element name="RegulatorResult" type="tns:RegulatorResultType" minOccurs="0" maxOccurs="unbounded"/>
+  </xsd:sequence>
+</xsd:complexType>
+<xsd:complexType name="RegulatorResultType">
+  <xsd:sequence>
+    <xsd:element name="protein_acc"    type="xsd:string"/>
+    <xsd:element name="short_name"     type="xsd:string"/>
+    <xsd:element name="protein_name"   type="xsd:string"/>
+
+    <xsd:element name="orf_id"         type="xsd:string"/>
+    <xsd:element name="mode_of_action" type="xsd:string"/>
+    <xsd:element name="promoter_acc"   type="xsd:string"/>
+    <xsd:element name="promoter_name"  type="xsd:string"/>
+    <xsd:element name="site_acc"       type="xsd:string"/>
+    <xsd:element name="site_name"      type="xsd:string"/>
+    <xsd:element name="sequence"       type="xsd:string"/>
+    <xsd:element name="references"     type="xsd:string"/>
+  </xsd:sequence>
+
+</xsd:complexType>
+
+<xsd:element name="ArrayOfProfileParameterResult" type="tns:ProfileParameterResultArrayType"/>
+<xsd:complexType name="ProfileParameterResultArrayType">
+  <xsd:sequence>
+   <xsd:element name="ProfileParameterResult" type="tns:ProfileParameterResultType" minOccurs="0" maxOccurs="unbounded"/>
+  </xsd:sequence>
+</xsd:complexType>
+<xsd:complexType name="ProfileParameterResultType">
+  <xsd:sequence>
+    <xsd:element name="profile_acc" type="xsd:string"/>
+    <xsd:element name="description" type="xsd:string"/>
+
+    <xsd:element name="condition"   type="xsd:string"/>
+    <xsd:element name="details"     type="xsd:string"/>
+    <xsd:element name="genome_acc"  type="xsd:string"/>
+    <xsd:element name="genome"      type="xsd:string"/>
+    <xsd:element name="references"  type="xsd:string"/>
+  </xsd:sequence>
+</xsd:complexType>
+
+<xsd:element name="ArrayOfProfileResult" type="tns:ProfileResultArrayType"/>
+<xsd:complexType name="ProfileResultArrayType">
+  <xsd:sequence>
+
+   <xsd:element name="ProfileResult" type="tns:ProfileResultType" minOccurs="0" maxOccurs="unbounded"/>
+  </xsd:sequence>
+</xsd:complexType>
+<xsd:complexType name="ProfileResultType">
+  <xsd:sequence>
+    <xsd:element name="gene_acc"    type="xsd:string"/>
+    <xsd:element name="orf_id"      type="xsd:string"/>
+    <xsd:element name="short_name"  type="xsd:string"/>
+    <xsd:element name="gene_name"   type="xsd:string"/>
+    <xsd:element name="regulation"  type="xsd:string"/>
+
+    <xsd:element name="fold_change" type="xsd:string"/>
+  </xsd:sequence>
+</xsd:complexType>
+
+<xsd:element name="ArrayOfExpressionFromGene" type="tns:ExpressionFromGeneArrayType"/>
+<xsd:complexType name="ExpressionFromGeneArrayType">
+  <xsd:sequence>
+   <xsd:element name="ExpressionFromGene" type="tns:ExpressionFromGeneType" minOccurs="0" maxOccurs="unbounded"/>
+  </xsd:sequence>
+</xsd:complexType>
+<xsd:complexType name="ExpressionFromGeneType">
+  <xsd:sequence>
+
+    <xsd:element name="profile_acc" type="xsd:string"/>
+    <xsd:element name="description" type="xsd:string"/>
+    <xsd:element name="condition"   type="xsd:string"/>
+    <xsd:element name="regulation"  type="xsd:string"/>
+    <xsd:element name="fold_change" type="xsd:string"/>
+    <xsd:element name="references"  type="xsd:string"/>
+  </xsd:sequence>
+</xsd:complexType>
+
+<xsd:element name="ArrayOfGenomeResult" type="tns:GenomeResultArrayType"/>
+
+<xsd:complexType name="GenomeResultArrayType">
+  <xsd:sequence>
+   <xsd:element name="GenomeResult" type="tns:GenomeResultType" minOccurs="0" maxOccurs="unbounded"/>
+  </xsd:sequence>
+</xsd:complexType>
+<xsd:complexType name="GenomeResultType">
+  <xsd:sequence>
+    <xsd:element name="genome_acc"   type="xsd:string"/>
+    <xsd:element name="genome_name"  type="xsd:string"/>
+  </xsd:sequence>
+
+</xsd:complexType>
+
+</xsd:schema>
+
+</wsdl:types>
+
+<message name='getOperonRequest'>
+  <part name='params' element='tns:OperonParams'/>
+</message>
+<message name='getOperonResponse'> 
+  <part name='return' element='tns:ArrayOfOperonResult'/> 
+</message> 
+
+<message name='getRegulatorsFromGeneRequest'>
+  <part name='params' element='tns:RegulatorParams'/>
+</message>
+
+<message name='getRegulatorsFromGeneResponse'> 
+  <part name='return' element='tns:ArrayOfRegulatorResult'/> 
+</message>
+
+<message name='getProfileParameterRequest'>
+  <part name='params' element='tns:ProfileParameterParams'/>
+</message>
+<message name='getProfileParameterResponse'> 
+  <part name='return' element='tns:ArrayOfProfileParameterResult'/> 
+</message>
+
+<message name='getProfileRequest'>
+  <part name='params' element='tns:ProfileAcc'/>
+</message>
+<message name='getProfileResponse'> 
+  <part name='return' element='tns:ArrayOfProfileResult'/> 
+
+</message>
+
+<message name='getExpressionFromGeneRequest'>
+  <part name='params' element='tns:ExpressionFromGeneParams'/>
+</message>
+<message name='getExpressionFromGeneResponse'> 
+  <part name='return' element='tns:ArrayOfExpressionFromGene'/> 
+</message>
+
+<message name='getGenomeRequest'>
+  <part name='params' element='tns:GenomeParams'/> 
+</message>
+<message name='getGenomeResponse'>
+  <part name='return' element='tns:ArrayOfGenomeResult'/> 
+
+</message> 
+
+<message name='getUniProtAccRequest'> 
+  <part name='protein_acc' element='tns:ProteinAccString'/> 
+</message>
+<message name='getUniProtAccResponse'> 
+  <part name='uniprot_acc' element='tns:UniprotAccArray'/> 
+</message> 
+
+<message name='helloRequest'> 
+  <part name='input'  element='tns:HelloStringIn'/> 
+</message>
+<message name='helloResponse'> 
+  <part name='return' element='tns:HelloStringOut'/> 
+</message>
+
+
+<portType name='prodoricPortType'> 
+
+  <operation name='getOperon'> 
+    <input  message='tns:getOperonRequest'/> 
+    <output message='tns:getOperonResponse'/> 
+  </operation>
+
+  <operation name='getRegulatorsFromGene'> 
+    <input  message='tns:getRegulatorsFromGeneRequest'/> 
+    <output message='tns:getRegulatorsFromGeneResponse'/> 
+  </operation>
+
+  <operation name='getProfileParameter'> 
+    <input  message='tns:getProfileParameterRequest'/> 
+    <output message='tns:getProfileParameterResponse'/> 
+  </operation>
+
+  <operation name='getProfile'> 
+    <input  message='tns:getProfileRequest'/> 
+    <output message='tns:getProfileResponse'/> 
+  </operation>
+
+  <operation name='getExpressionFromGene'> 
+    <input  message='tns:getExpressionFromGeneRequest'/> 
+    <output message='tns:getExpressionFromGeneResponse'/> 
+  </operation>
+
+  <operation name='getGenome'>
+    <input  message='tns:getGenomeRequest'/> 
+    <output message='tns:getGenomeResponse'/> 
+  </operation> 
+
+  <operation name='getUniProtAcc'> 
+    <input  message='tns:getUniProtAccRequest'/> 
+    <output message='tns:getUniProtAccResponse'/> 
+  </operation> 
+
+  <operation name='hello'> 
+    <input  message='tns:helloRequest'/> 
+    <output message='tns:helloResponse'/> 
+  </operation>
+
+</portType> 
+
+
+<binding name='prodoricBinding' type='tns:prodoricPortType'> 
+  <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/> 
+
+  <operation name='getOperon'> 
+    <soap:operation soapAction='ws.prodoric#getOperon'/> 
+    <input> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </input> 
+    <output> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </output> 
+  </operation>
+
+  <operation name='getRegulatorsFromGene'> 
+    <soap:operation soapAction='ws.prodoric#getRegulatorsFromGene'/> 
+    <input> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </input> 
+    <output> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </output> 
+  </operation>
+
+  <operation name='getProfileParameter'> 
+    <soap:operation soapAction='ws.prodoric#getProfileParameter'/> 
+    <input> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </input> 
+    <output> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </output> 
+  </operation>
+
+  <operation name='getProfile'> 
+    <soap:operation soapAction='ws.prodoric#getProfile'/> 
+    <input> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </input> 
+    <output> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </output> 
+  </operation>
+
+  
+    <operation name='getExpressionFromGene'> 
+    <soap:operation soapAction='ws.prodoric#getExpressionFromGene'/> 
+    <input> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </input> 
+    <output> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </output> 
+  </operation>
+  
+
+  <operation name='getGenome'> 
+    <soap:operation soapAction='ws.prodoric#getGenome'/> 
+    <input> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </input> 
+    <output> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </output> 
+  </operation> 
+
+  <operation name='getUniProtAcc'> 
+    <soap:operation soapAction='ws.prodoric#getUniProtAcc'/> 
+    <input> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </input> 
+    <output> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </output> 
+  </operation>
+
+  <operation name='hello'> 
+    <soap:operation soapAction='ws.prodoric#hello'/> 
+    <input> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </input> 
+    <output> 
+      <soap:body use='literal' namespace='ws.prodoric' /> 
+    </output> 
+  </operation>
+
+</binding> 
+
+
+<service name='prodoric_webservice'> 
+  <port name='prodoricPort' binding='tns:prodoricBinding'> 
+    <soap:address location='http://134.169.104.13/webservice/prodoric_server.php'/> 
+  </port> 
+
+</service>
+</definitions>
diff --git a/taverna-wsdl-generic/src/test/resources/testwsdls/whatizit.wsdl b/taverna-wsdl-generic/src/test/resources/testwsdls/whatizit.wsdl
new file mode 100644
index 0000000..b3016fa
--- /dev/null
+++ b/taverna-wsdl-generic/src/test/resources/testwsdls/whatizit.wsdl
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns:tns="http://www.ebi.ac.uk/webservices/whatizit/ws" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://www.ebi.ac.uk/webservices/whatizit/ws" name="whatizit">
+
+  <types>
+    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ebi.ac.uk/webservices/whatizit/ws" version="1.0">
+
+    <xs:element xmlns:ns1="http://www.ebi.ac.uk/webservices/whatizit/ws" type="ns1:search" name="search"/>
+    <xs:complexType name="search">
+      <xs:sequence>
+        <xs:element type="xs:string" minOccurs="0" name="pipelineName"/>
+        <xs:element type="xs:string" minOccurs="0" name="query"/>
+
+        <xs:element name="limit">      
+          <xs:simpleType>
+            <xs:restriction base="xs:int">
+              <xs:minInclusive value="0"/>
+              <xs:maxExclusive value="10000"/>
+            </xs:restriction>
+          </xs:simpleType>
+        </xs:element>      
+      </xs:sequence>
+    </xs:complexType>
+
+    <xs:element xmlns:ns2="http://www.ebi.ac.uk/webservices/whatizit/ws" type="ns2:searchResponse" name="searchResponse"/>
+    <xs:complexType name="searchResponse">
+      <xs:sequence>
+        <xs:element type="xs:string" minOccurs="0" name="return"/>
+      </xs:sequence>
+    </xs:complexType>
+    
+    <xs:element xmlns:ns3="http://www.ebi.ac.uk/webservices/whatizit/ws" type="ns3:WhatizitException" name="WhatizitException"/>
+    <xs:complexType name="WhatizitException">
+
+      <xs:sequence>
+        <xs:element type="xs:string" minOccurs="0" name="message"/>
+      </xs:sequence>
+    </xs:complexType>
+
+    <xs:element xmlns:ns4="http://www.ebi.ac.uk/webservices/whatizit/ws" type="ns4:contact" name="contact"/>
+    <xs:complexType name="contact">
+      <xs:sequence>
+        <xs:element type="xs:string" minOccurs="0" name="pipelineName"/>
+
+        <xs:element type="xs:string" minOccurs="0" name="text"/>
+        <xs:element type="xs:boolean" name="convertToHtml"/>
+      </xs:sequence>
+    </xs:complexType>
+
+    <xs:element xmlns:ns5="http://www.ebi.ac.uk/webservices/whatizit/ws" type="ns5:contactResponse" name="contactResponse"/>
+    <xs:complexType name="contactResponse">
+      <xs:sequence>
+        <xs:element type="xs:string" minOccurs="0" name="return"/>
+
+      </xs:sequence>
+    </xs:complexType>
+
+    <xs:element xmlns:ns6="http://www.ebi.ac.uk/webservices/whatizit/ws" type="ns6:queryPmid" name="queryPmid"/>
+    <xs:complexType name="queryPmid">
+      <xs:sequence>
+        <xs:element type="xs:string" minOccurs="0" name="pipelineName"/>
+        <xs:element type="xs:string" minOccurs="0" name="pmid"/>
+      </xs:sequence>
+
+    </xs:complexType>
+
+    <xs:element xmlns:ns7="http://www.ebi.ac.uk/webservices/whatizit/ws" type="ns7:queryPmidResponse" name="queryPmidResponse"/>
+    <xs:complexType name="queryPmidResponse">
+      <xs:sequence>
+        <xs:element type="xs:string" minOccurs="0" name="return"/>
+      </xs:sequence>
+    </xs:complexType>
+
+    <xs:element xmlns:ns8="http://www.ebi.ac.uk/webservices/whatizit/ws" type="ns8:getPipelinesStatus" name="getPipelinesStatus"/>
+
+    <xs:complexType name="getPipelinesStatus"/>
+
+    <xs:element xmlns:ns9="http://www.ebi.ac.uk/webservices/whatizit/ws" type="ns9:getPipelinesStatusResponse" name="getPipelinesStatusResponse"/>
+    <xs:complexType name="getPipelinesStatusResponse">
+      <xs:sequence>
+        <xs:element xmlns:ns10="http://www.ebi.ac.uk/webservices/whatizit/ws" type="ns10:selectItem" minOccurs="0" name="return" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="selectItem">
+
+      <xs:sequence>
+        <xs:element type="xs:string" minOccurs="0" name="description"/>
+        <xs:element type="xs:boolean" name="disabled"/>
+        <xs:element type="xs:string" minOccurs="0" name="label"/>
+        <xs:element type="xs:anyType" minOccurs="0" name="value"/>
+      </xs:sequence>
+    </xs:complexType>
+    </xs:schema>  
+  </types>
+
+  
+  
+  <message name="contact">
+    <part element="tns:contact" name="parameters"/>
+  </message>
+  
+  <message name="contactResponse">
+    <part element="tns:contactResponse" name="parameters"/>
+  </message>
+
+  <message name="WhatizitException">
+    <part element="tns:WhatizitException" name="fault"/>
+
+  </message>
+  
+  <message name="getPipelinesStatus">
+    <part element="tns:getPipelinesStatus" name="parameters"/>
+  </message>
+  
+  <message name="getPipelinesStatusResponse">
+    <part element="tns:getPipelinesStatusResponse" name="parameters"/>
+  </message>
+  
+  <message name="queryPmid">
+    <part element="tns:queryPmid" name="parameters"/>
+
+  </message>
+  
+  <message name="queryPmidResponse">
+    <part element="tns:queryPmidResponse" name="parameters"/>
+  </message>
+  
+  <message name="search">
+    <part element="tns:search" name="parameters"/>
+  </message>
+  
+  <message name="searchResponse">
+    <part element="tns:searchResponse" name="parameters"/>
+
+  </message>
+  
+  
+  <portType name="whatizit">
+    <operation name="contact">
+      <input message="tns:contact"/>
+      <output message="tns:contactResponse"/>
+      <fault message="tns:WhatizitException" name="WhatizitException"/>
+    </operation>
+    <operation name="getPipelinesStatus">
+      <input message="tns:getPipelinesStatus"/>
+
+      <output message="tns:getPipelinesStatusResponse"/>
+      <fault message="tns:WhatizitException" name="WhatizitException"/>
+    </operation>
+    <operation name="queryPmid">
+      <input message="tns:queryPmid"/>
+      <output message="tns:queryPmidResponse"/>
+      <fault message="tns:WhatizitException" name="WhatizitException"/>
+    </operation>
+    <operation name="search">
+
+      <input message="tns:search"/>
+      <output message="tns:searchResponse"/>
+      <fault message="tns:WhatizitException" name="WhatizitException"/>
+    </operation>
+  </portType>
+  
+  <binding type="tns:whatizit" name="pipelineBinding">
+    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+    <operation name="contact">
+      <soap:operation soapAction=""/>
+
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+      <fault name="WhatizitException">
+        <soap:fault use="literal" name="WhatizitException"/>
+      </fault>
+
+    </operation>
+    <operation name="getPipelinesStatus">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+
+      <fault name="WhatizitException">
+        <soap:fault use="literal" name="WhatizitException"/>
+      </fault>
+    </operation>
+    <operation name="queryPmid">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body use="literal"/>
+      </input>
+
+      <output>
+        <soap:body use="literal"/>
+      </output>
+      <fault name="WhatizitException">
+        <soap:fault use="literal" name="WhatizitException"/>
+      </fault>
+    </operation>
+    <operation name="search">
+      <soap:operation soapAction=""/>
+
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <mime:multipartRelated>
+        <mime:part>
+           <soap:body parts="" use="literal"/>
+        </mime:part>
+         <mime:part>
+
+          <mime:content type="text/xml" part="parameters"/>
+         </mime:part>
+       </mime:multipartRelated>
+	  </output>
+      <fault name="WhatizitException">
+        <soap:fault use="literal" name="WhatizitException"/>
+      </fault>
+    </operation>
+  </binding>
+
+  <service name="whatizit">
+    <port binding="tns:pipelineBinding" name="pipeline">
+      <soap:address location="http://www.ebi.ac.uk:80/webservices/whatizit/ws"/>
+    </port>
+  </service>
+</definitions>
\ No newline at end of file
diff --git a/taverna-xpath-activity/pom.xml b/taverna-xpath-activity/pom.xml
new file mode 100644
index 0000000..1012b73
--- /dev/null
+++ b/taverna-xpath-activity/pom.xml
@@ -0,0 +1,49 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.taverna.commonactivities</groupId>
+		<artifactId>taverna-common-activities</artifactId>
+		<version>2.1.0-incubating-SNAPSHOT</version>
+	</parent>
+	<artifactId>taverna-xpath-activity</artifactId>
+	<name>Apache Taverna XPath Activity</name>
+	<packaging>bundle</packaging>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<extensions>true</extensions>
+				<configuration>
+					<instructions>
+						<Import-Package>org.jaxen,*</Import-Package>
+					</instructions>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-reference-api</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.taverna.engine</groupId>
+			<artifactId>taverna-workflowmodel-api</artifactId>
+			<version>${taverna.engine.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.dom4j</groupId>
+			<artifactId>com.springsource.org.dom4j</artifactId>
+			<version>${dom4j.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.jaxen</groupId>
+			<artifactId>com.springsource.org.jaxen</artifactId>
+			<version>${jaxen.version}</version>
+		</dependency>
+	</dependencies>
+</project>
diff --git a/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathActivity.java b/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathActivity.java
new file mode 100644
index 0000000..260eb5a
--- /dev/null
+++ b/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathActivity.java
@@ -0,0 +1,211 @@
+package net.sf.taverna.t2.activities.xpath;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.t2.invocation.InvocationContext;
+import net.sf.taverna.t2.reference.ErrorDocumentService;
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AbstractAsynchronousActivity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
+
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.DocumentHelper;
+import org.dom4j.InvalidXPathException;
+import org.dom4j.Node;
+import org.dom4j.XPath;
+import org.dom4j.XPathException;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+/**
+ * Enhanced XPath activity.
+ *
+ * @author Sergejs Aleksejevs
+ */
+public class XPathActivity extends AbstractAsynchronousActivity<JsonNode> {
+
+	public static final String URI = "http://ns.taverna.org.uk/2010/activity/xpath";
+
+	// These ports are default ones (and only ones - XPath activity will not have dynamic ports)
+	public static final String IN_XML = "xml_text";
+	public static final String OUT_TEXT = "nodelist";
+	public static final String OUT_XML = "nodelistAsXML";
+
+	private static final String SINGLE_VALUE_TEXT = "firstNode";
+	private static final String SINGLE_VALUE_XML = "firstNodeAsXML";
+	
+	// Configuration bean for this activity - essentially defines a particular instance
+	// of the activity through the values of its parameters
+	private JsonNode json;
+
+	@Override
+	public JsonNode getConfiguration() {
+		return this.json;
+	}
+
+	@Override
+	public void configure(JsonNode json) throws ActivityConfigurationException {
+		// Check configBean is valid
+		if (!XPathUtils.isValid(json)) {
+			throw new ActivityConfigurationException("Invalid configuration of XPath activity...");
+			// TODO - check this
+		}
+
+		// Store for getConfiguration()
+		this.json = json;
+	}
+
+	protected void configurePorts() {
+		// ---- REMOVE OLD PORTS ----
+	  
+		// In case we are being reconfigured - remove existing ports first to avoid duplicates
+		removeInputs();
+		removeOutputs();
+
+		// ---- CREATE NEW INPUTS AND OUTPUTS ----
+		
+		// all ports in this activity are static, so no dependency on the values in config bean
+		
+		// single input port: the input XML text will be treated as String for now
+		addInput(IN_XML, 0, true, null, String.class);
+
+		addOutput(SINGLE_VALUE_TEXT, 0);
+		addOutput(SINGLE_VALUE_XML, 0);
+		addOutput(OUT_TEXT, 1);
+		addOutput(OUT_XML, 1);
+	}
+
+	/**
+	 * This method executes pre-configured instance of XPath activity.
+	 */
+	@Override
+	public void executeAsynch(final Map<String, T2Reference> inputs,
+			final AsynchronousActivityCallback callback) {
+		// Don't execute service directly now, request to be run asynchronously
+		callback.requestRun(new Runnable() {
+			@Override
+			@SuppressWarnings("unchecked")
+			public void run() {
+
+				InvocationContext context = callback.getContext();
+				ReferenceService referenceService = context.getReferenceService();
+
+				// ---- RESOLVE INPUT ----
+
+				String xmlInput = (String) referenceService.renderIdentifier(inputs.get(IN_XML),
+						String.class, context);
+
+				// ---- DO THE ACTUAL SERVICE INVOCATION ----
+
+				List<Node> matchingNodes = new ArrayList<Node>();
+
+				// only attempt to execute XPath expression if there is some input data
+				if (xmlInput != null && xmlInput.length() > 0) {
+					// XPath configuration is taken from the config bean
+					try {
+						XPath expr = DocumentHelper.createXPath(json.get("xpathExpression").textValue());
+						Map<String, String> xpathNamespaceMap = new HashMap<>();
+						for (JsonNode namespaceMapping : json.get("xpathNamespaceMap")) {
+							xpathNamespaceMap.put(namespaceMapping.get("prefix").textValue(),
+									namespaceMapping.get("uri").textValue());
+						}
+						expr.setNamespaceURIs(xpathNamespaceMap);
+						Document doc = DocumentHelper.parseText(xmlInput);
+						matchingNodes = expr.selectNodes(doc);
+					} catch (InvalidXPathException e) {
+						callback.fail("Incorrect XPath Expression -- XPath processing library "
+								+ "reported the following error: " + e.getMessage(), e);
+
+						// make sure we don't call callback.receiveResult later
+						return;
+					} catch (DocumentException e) {
+						callback.fail("XML document was not valid -- XPath processing library "
+								+ "reported the following error: " + e.getMessage(), e);
+
+						// make sure we don't call callback.receiveResult later
+						return;
+					} catch (XPathException e) {
+						callback.fail(
+								"Unexpected error has occurred while executing the XPath expression. "
+										+ "-- XPath processing library reported the following error:\n"
+										+ e.getMessage(), e);
+
+						// make sure we don't call callback.receiveResult later
+						return;
+					}
+				}
+				
+				// --- PREPARE OUTPUTS ---
+
+				List<String> outNodesText = new ArrayList<String>();
+				List<String> outNodesXML = new ArrayList<String>();
+				Object textValue = null;
+				Object xmlValue = null;
+
+				for (Object o : matchingNodes) {
+					if (o instanceof Node) {
+						Node n = (Node) o;
+						if (n.getStringValue() != null
+								&& n.getStringValue().length() > 0) {
+							outNodesText.add(n.getStringValue());
+							if (textValue == null)
+								textValue = n.getStringValue();
+						}
+						outNodesXML.add(n.asXML());
+						if (xmlValue == null)
+							xmlValue = n.asXML();
+					} else {
+						outNodesText.add(o.toString());
+						if (textValue == null)
+							textValue = o.toString();
+					}
+				}
+
+				// ---- REGISTER OUTPUTS ----
+
+				Map<String, T2Reference> outputs = new HashMap<String, T2Reference>();
+				if (textValue == null) {
+					ErrorDocumentService errorDocService = referenceService
+							.getErrorDocumentService();
+					textValue = errorDocService.registerError(
+							"No value produced", 0, callback.getContext());
+				}
+
+				if (xmlValue == null) {
+					ErrorDocumentService errorDocService = referenceService
+							.getErrorDocumentService();
+					xmlValue = errorDocService.registerError(
+							"No value produced", 0, callback.getContext());
+				}
+
+				T2Reference firstNodeAsText = referenceService.register(
+						textValue, 0, true, context);
+				outputs.put(SINGLE_VALUE_TEXT, firstNodeAsText);
+
+				T2Reference firstNodeAsXml = referenceService.register(
+						xmlValue, 0, true, context);
+				outputs.put(SINGLE_VALUE_XML, firstNodeAsXml);
+
+				T2Reference outNodesAsText = referenceService.register(
+						outNodesText, 1, true, context);
+				outputs.put(OUT_TEXT, outNodesAsText);
+
+				T2Reference outNodesAsXML = referenceService.register(
+						outNodesXML, 1, true, context);
+				outputs.put(OUT_XML, outNodesAsXML);
+
+				// return map of output data, with empty index array as this is
+				// the only and final result (this index parameter is used if
+				// pipelining output)
+				callback.receiveResult(outputs, new int[0]);
+			}
+		});
+	}
+
+}
diff --git a/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathActivityConfigurationBean.java b/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathActivityConfigurationBean.java
new file mode 100644
index 0000000..12bd536
--- /dev/null
+++ b/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathActivityConfigurationBean.java
@@ -0,0 +1,145 @@
+package net.sf.taverna.t2.activities.xpath;
+
+import static net.sf.taverna.t2.activities.xpath.XPathActivity.URI;
+import static org.dom4j.DocumentHelper.createXPath;
+
+import java.io.Serializable;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationBean;
+import net.sf.taverna.t2.workflowmodel.processor.config.ConfigurationProperty;
+
+import org.dom4j.DocumentException;
+import org.dom4j.InvalidXPathException;
+
+/**
+ *
+ * @author Sergejs Aleksejevs
+ */
+@ConfigurationBean(uri = URI + "#Config")
+public class XPathActivityConfigurationBean implements Serializable {
+	// --- CONSTANTS ---
+	public static final int XPATH_VALID = XPathUtils.XPATH_VALID;
+	public static final int XPATH_EMPTY = XPathUtils.XPATH_EMPTY;
+	public static final int XPATH_INVALID = XPathUtils.XPATH_INVALID;
+
+	private String xmlDocument;
+	private String xpathExpression;
+	private Map<String, String> xpathNamespaceMap;
+
+	/**
+	 * @return An instance of the {@link XPathActivityConfigurationBean}
+	 *         pre-configured with default settings for all parameters.
+	 * @throws DocumentException
+	 */
+	public static XPathActivityConfigurationBean getDefaultInstance() {
+		// document will not be set
+		XPathActivityConfigurationBean defaultBean = new XPathActivityConfigurationBean();
+		defaultBean.setXpathExpression("/");
+		defaultBean.setXpathNamespaceMap(new HashMap<String, String>(0));
+
+		return (defaultBean);
+	}
+
+	/**
+	 * Validates an XPath expression.
+	 *
+	 * @return {@link XPathActivityConfigurationBean#XPATH_VALID XPATH_VALID} -
+	 *         if the expression is valid;<br/>
+	 *         {@link XPathActivityConfigurationBean#XPATH_EMPTY XPATH_EMPTY} -
+	 *         if expression is empty;<br/>
+	 *         {@link XPathActivityConfigurationBean#XPATH_INVALID
+	 *         XPATH_INVALID} - if the expression is invalid / ill-formed.<br/>
+	 */
+	public static int validateXPath(String xpathExpressionToValidate) {
+		// no XPath expression
+		if (xpathExpressionToValidate == null
+				|| xpathExpressionToValidate.trim().isEmpty()) {
+			return XPATH_EMPTY;
+		}
+
+		try {
+			// try to parse the XPath expression...
+			createXPath(xpathExpressionToValidate.trim());
+			// ...success
+			return XPATH_VALID;
+		} catch (InvalidXPathException e) {
+			// ...failed to parse the XPath expression: notify of the error
+			return XPATH_INVALID;
+		}
+	}
+
+	/**
+	 * Tests validity of the configuration held in this bean.
+	 *
+	 * @return <code>true</code> if the configuration in the bean is valid;
+	 *         <code>false</code> otherwise.
+	 */
+	public boolean isValid() {
+		return (xpathExpression != null
+				&& validateXPath(xpathExpression) == XPATH_VALID && getXpathNamespaceMap() != null);
+	}
+
+	public String getXmlDocument() {
+		return xmlDocument;
+	}
+
+	@ConfigurationProperty(name = "exampleXmlDocument", label = "Example XML document", required = false)
+	public void setXmlDocument(String xmlDocument) {
+		this.xmlDocument = xmlDocument;
+	}
+
+	public String getXpathExpression() {
+		return xpathExpression;
+	}
+
+	@ConfigurationProperty(name = "xpathExpression", label = "XPath expression")
+	public void setXpathExpression(String xpathExpression) {
+		this.xpathExpression = xpathExpression;
+	}
+
+	public Map<String, String> getXpathNamespaceMap() {
+		return xpathNamespaceMap;
+	}
+
+	public void setXpathNamespaceMap(Map<String, String> xpathNamespaceMap) {
+		this.xpathNamespaceMap = xpathNamespaceMap;
+	}
+
+	@ConfigurationProperty(name = "xpathNamespaceMap", label = "XPath Namespace Map", required = false)
+	public void setXpathNamespaceMap(Set<NamespaceMapping> xpathNamespaceMap) {
+		Map<String, String> namespaceMap = new HashMap<String, String>();
+		for (NamespaceMapping namespaceMapping : xpathNamespaceMap) {
+			namespaceMap.put(namespaceMapping.getPrefix(), namespaceMapping.getUri().toASCIIString());
+		}
+		setXpathNamespaceMap(namespaceMap);
+	}
+
+	@ConfigurationBean(uri = URI + "/NamespaceMapping")
+	public static class NamespaceMapping {
+		private String prefix;
+
+		private URI uri;
+
+		public String getPrefix() {
+			return prefix;
+		}
+
+		@ConfigurationProperty(name = "prefix", label = "Namespace Prefix")
+		public void setPrefix(String prefix) {
+			this.prefix = prefix;
+		}
+
+		public URI getUri() {
+			return uri;
+		}
+
+		@ConfigurationProperty(name = "uri", label = "Namespace URI")
+		public void setUri(URI uri) {
+			this.uri = uri;
+		}
+	}
+}
diff --git a/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathActivityFactory.java b/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathActivityFactory.java
new file mode 100644
index 0000000..c5c8e18
--- /dev/null
+++ b/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathActivityFactory.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (C) 2011 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.xpath;
+
+import static net.sf.taverna.t2.activities.xpath.XPathActivity.IN_XML;
+import static net.sf.taverna.t2.activities.xpath.XPathActivity.OUT_TEXT;
+import static net.sf.taverna.t2.activities.xpath.XPathActivity.OUT_XML;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.HashSet;
+import java.util.Set;
+
+import net.sf.taverna.t2.workflowmodel.Edits;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityOutputPort;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+/**
+ * An {@link ActivityFactory} for creating <code>XPathActivity</code>.
+ *
+ * @author David Withers
+ */
+public class XPathActivityFactory implements ActivityFactory {
+
+	private Edits edits;
+
+	@Override
+	public XPathActivity createActivity() {
+		return new XPathActivity();
+	}
+
+	@Override
+	public URI getActivityType() {
+		return URI.create(XPathActivity.URI);
+	}
+
+	@Override
+	public JsonNode getActivityConfigurationSchema() {
+		ObjectMapper objectMapper = new ObjectMapper();
+		try {
+			return objectMapper.readTree(getClass().getResource("/schema.json"));
+		} catch (IOException e) {
+			return objectMapper.createObjectNode();
+		}
+	}
+
+	@Override
+	public Set<ActivityInputPort> getInputPorts(JsonNode configuration)
+			throws ActivityConfigurationException {
+		Set<ActivityInputPort> outputPorts = new HashSet<>();
+		outputPorts.add(edits.createActivityInputPort(IN_XML, 0, true, null,
+				String.class));
+		return outputPorts;
+	}
+
+	@Override
+	public Set<ActivityOutputPort> getOutputPorts(JsonNode configuration)
+			throws ActivityConfigurationException {
+		Set<ActivityOutputPort> outputPorts = new HashSet<>();
+		outputPorts.add(edits.createActivityOutputPort(OUT_TEXT, 1, 1));
+		outputPorts.add(edits.createActivityOutputPort(OUT_XML, 1, 1));
+		return outputPorts;
+	}
+
+	public void setEdits(Edits edits) {
+		this.edits = edits;
+	}
+
+}
diff --git a/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathActivityHealthCheck.java b/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathActivityHealthCheck.java
new file mode 100644
index 0000000..adf10d2
--- /dev/null
+++ b/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathActivityHealthCheck.java
@@ -0,0 +1,38 @@
+package net.sf.taverna.t2.activities.xpath;
+
+import net.sf.taverna.t2.visit.VisitKind;
+import net.sf.taverna.t2.visit.Visitor;
+
+/**
+ * A <code>XPathActivityHealthCheck</code> is a kind of visit that determines if
+ * the corresponding XPath activity in a workflow (normally an Activity) will
+ * work during a workflow run.
+ * 
+ * @author Sergejs Aleksejevs
+ */
+public class XPathActivityHealthCheck extends VisitKind {
+
+	// The following values indicate the type of results that can be associated
+	// with a VisitReport generated by a health-checking visitor.
+
+	public static final int CORRECTLY_CONFIGURED = 0;
+	public static final int EMPTY_XPATH_EXPRESSION = 5;
+	public static final int INVALID_XPATH_EXPRESSION = 10;
+	public static final int GENERAL_CONFIG_PROBLEM = 15;
+
+	public static final int NO_EXAMPLE_DOCUMENT = 20;
+	public static final int MISSING_NAMESPACE_MAPPINGS = 25;
+
+	@Override
+	public Class<? extends Visitor<?>> getVisitorClass() {
+		return XPathActivityHealthChecker.class;
+	}
+
+	private static class Singleton {
+		private static XPathActivityHealthCheck instance = new XPathActivityHealthCheck();
+	}
+
+	public static XPathActivityHealthCheck getInstance() {
+		return Singleton.instance;
+	}
+}
diff --git a/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathActivityHealthChecker.java b/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathActivityHealthChecker.java
new file mode 100644
index 0000000..7058841
--- /dev/null
+++ b/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathActivityHealthChecker.java
@@ -0,0 +1,139 @@
+package net.sf.taverna.t2.activities.xpath;
+
+import static net.sf.taverna.t2.activities.xpath.XPathActivityHealthCheck.CORRECTLY_CONFIGURED;
+import static net.sf.taverna.t2.activities.xpath.XPathActivityHealthCheck.EMPTY_XPATH_EXPRESSION;
+import static net.sf.taverna.t2.activities.xpath.XPathActivityHealthCheck.GENERAL_CONFIG_PROBLEM;
+import static net.sf.taverna.t2.activities.xpath.XPathActivityHealthCheck.INVALID_XPATH_EXPRESSION;
+import static net.sf.taverna.t2.activities.xpath.XPathActivityHealthCheck.MISSING_NAMESPACE_MAPPINGS;
+import static net.sf.taverna.t2.activities.xpath.XPathActivityHealthCheck.NO_EXAMPLE_DOCUMENT;
+import static net.sf.taverna.t2.activities.xpath.XPathUtils.XPATH_EMPTY;
+import static net.sf.taverna.t2.activities.xpath.XPathUtils.XPATH_INVALID;
+import static net.sf.taverna.t2.activities.xpath.XPathUtils.isValid;
+import static net.sf.taverna.t2.activities.xpath.XPathUtils.validateXPath;
+import static net.sf.taverna.t2.visit.VisitReport.getWorstStatus;
+import static net.sf.taverna.t2.visit.VisitReport.Status.OK;
+import static net.sf.taverna.t2.visit.VisitReport.Status.SEVERE;
+import static net.sf.taverna.t2.visit.VisitReport.Status.WARNING;
+import static net.sf.taverna.t2.workflowmodel.health.HealthCheck.NO_PROBLEM;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.taverna.t2.visit.VisitKind;
+import net.sf.taverna.t2.visit.VisitReport;
+import net.sf.taverna.t2.visit.VisitReport.Status;
+import net.sf.taverna.t2.workflowmodel.health.HealthChecker;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+/**
+ * A {@link HealthChecker} for a {@link XPathActivity}.
+ * 
+ * @author Sergejs Aleksejevs
+ */
+public class XPathActivityHealthChecker implements HealthChecker<XPathActivity> {
+	@Override
+	public boolean canVisit(Object subject) {
+		return (subject instanceof XPathActivity);
+	}
+
+	@Override
+	public VisitReport visit(XPathActivity activity, List<Object> ancestors) {
+		VisitKind kind = XPathActivityHealthCheck.getInstance();
+		/* collection of validation reports that this health checker will create */
+		List<VisitReport> reports = new ArrayList<VisitReport>();
+
+		JsonNode configBean = activity.getConfiguration();
+		if (isValid(configBean)) {
+			reports.add(new VisitReport(kind, activity,
+					"XPath Activity is configured correctly",
+					CORRECTLY_CONFIGURED, OK));
+		} else {
+			int xpathStatus = validateXPath(configBean.get("xpathExpression")
+					.textValue());
+			if (xpathStatus == XPATH_EMPTY) {
+				reports.add(new VisitReport(kind, activity,
+						"XPath Activity - XPath expression is missing",
+						EMPTY_XPATH_EXPRESSION, SEVERE));
+			} else if (xpathStatus == XPATH_INVALID) {
+				reports.add(new VisitReport(kind, activity,
+						"XPath Activity - XPath expression is invalid",
+						INVALID_XPATH_EXPRESSION, SEVERE));
+			} else {
+				reports.add(new VisitReport(kind, activity,
+						"XPath Activity - bad configuration",
+						GENERAL_CONFIG_PROBLEM, SEVERE));
+			}
+		}
+
+		// warn if there is no example XML document
+		if (!configBean.has("exampleXmlDocument")
+				|| configBean.get("exampleXmlDocument").textValue().trim()
+						.length() == 0) {
+			reports.add(new VisitReport(kind, activity,
+					"XPath activity - no example XML document",
+					NO_EXAMPLE_DOCUMENT, WARNING));
+		}
+
+		// warn if there are no namespace mappings
+		if (hasMissingNamespaceMappings(configBean)) {
+			reports.add(new VisitReport(kind, activity,
+					"XPath activity - has missing namespace mappings",
+					MISSING_NAMESPACE_MAPPINGS, SEVERE));
+		}
+
+		// collect all reports together
+		Status worstStatus = getWorstStatus(reports);
+		VisitReport report = new VisitReport(kind, activity,
+				"XPath Activity Report", NO_PROBLEM, worstStatus, reports);
+
+		return report;
+	}
+
+	/**
+	 * Health check for the XPath activity only involves verifying details in
+	 * the configuration bean - that is quick.
+	 */
+	@Override
+	public boolean isTimeConsuming() {
+		return false;
+	}
+
+	private boolean hasMissingNamespaceMappings(JsonNode json) {
+		List<String> missingNamespaces = new ArrayList<String>();
+
+		for (String xpathLeg : json.get("xpathExpression").textValue()
+				.split("/")) {
+			String[] legFragments = xpathLeg.split(":");
+			if (legFragments.length == 2) {
+				/*
+				 * two fragments - the first is the prefix; check if it's in the
+				 * mappings table
+				 */
+				String fragment = legFragments[0];
+				if (fragment.startsWith("@")) {
+					if (fragment.length() == 1)
+						continue;
+					fragment = fragment.substring(1);
+				}
+				Map<String, String> xpathNamespaceMap = null;
+				if (json.has("xpathNamespaceMap")) {
+					xpathNamespaceMap = new HashMap<>();
+					for (JsonNode namespaceMapping : json
+							.get("xpathNamespaceMap"))
+						xpathNamespaceMap.put(namespaceMapping.get("prefix")
+								.textValue(), namespaceMapping.get("uri")
+								.textValue());
+				}
+				if (xpathNamespaceMap == null || xpathNamespaceMap.isEmpty()
+						|| !xpathNamespaceMap.containsKey(fragment))
+					missingNamespaces.add(fragment);
+			}
+		}
+
+		return ! missingNamespaces.isEmpty();
+	}
+
+}
diff --git a/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathUtils.java b/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathUtils.java
new file mode 100644
index 0000000..c5f0787
--- /dev/null
+++ b/taverna-xpath-activity/src/main/java/net/sf/taverna/t2/activities/xpath/XPathUtils.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (C) 2013 The University of Manchester
+ *
+ *  Modifications to the initial code base are copyright of their
+ *  respective authors, or their employers as appropriate.
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public License
+ *  as published by the Free Software Foundation; either version 2.1 of
+ *  the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.activities.xpath;
+
+import static org.dom4j.DocumentHelper.createXPath;
+
+import org.dom4j.DocumentHelper;
+import org.dom4j.InvalidXPathException;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+/**
+ * Utility methods for validating xpath expressions.
+ * 
+ * @author David Withers
+ */
+public class XPathUtils {
+
+	public static final int XPATH_VALID = 1;
+	public static final int XPATH_EMPTY = 0;
+	public static final int XPATH_INVALID = -1;
+
+	/**
+	 * Validates an XPath expression.
+	 * 
+	 * @return {@link XPathActivityConfigurationBean#XPATH_VALID XPATH_VALID} -
+	 *         if the expression is valid;<br/>
+	 *         {@link XPathActivityConfigurationBean#XPATH_EMPTY XPATH_EMPTY} -
+	 *         if expression is empty;<br/>
+	 *         {@link XPathActivityConfigurationBean#XPATH_INVALID
+	 *         XPATH_INVALID} - if the expression is invalid / ill-formed.<br/>
+	 */
+	public static int validateXPath(String xpathExpressionToValidate) {
+		// no XPath expression
+		if (xpathExpressionToValidate == null
+				|| xpathExpressionToValidate.trim().isEmpty()) {
+			return XPATH_EMPTY;
+		}
+
+		try {
+			// try to parse the XPath expression...
+			createXPath(xpathExpressionToValidate.trim());
+			// ...success
+			return XPATH_VALID;
+		} catch (InvalidXPathException e) {
+			// ...failed to parse the XPath expression: notify of the error
+			return XPATH_INVALID;
+		}
+	}
+
+	/**
+	 * Tests validity of the configuration held.
+	 * 
+	 * @return <code>true</code> if the configuration in the bean is valid;
+	 *         <code>false</code> otherwise.
+	 */
+	public static boolean isValid(JsonNode json) {
+		return (json.has("xpathExpression")
+				&& validateXPath(json.get("xpathExpression").textValue()) == XPATH_VALID && json
+					.has("xpathNamespaceMap"));
+	}
+}
diff --git a/taverna-xpath-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.report.explainer.VisitExplainer b/taverna-xpath-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.report.explainer.VisitExplainer
new file mode 100644
index 0000000..cb85b26
--- /dev/null
+++ b/taverna-xpath-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.report.explainer.VisitExplainer
@@ -0,0 +1 @@
+net.sf.taverna.t2.activities.xpath.XPathActivityHealthCheckVisitExplainer
\ No newline at end of file
diff --git a/taverna-xpath-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker b/taverna-xpath-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
new file mode 100644
index 0000000..0e69024
--- /dev/null
+++ b/taverna-xpath-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
@@ -0,0 +1 @@
+net.sf.taverna.t2.activities.xpath.XPathActivityHealthChecker
\ No newline at end of file
diff --git a/taverna-xpath-activity/src/main/resources/META-INF/spring/xpath-activity-context-osgi.xml b/taverna-xpath-activity/src/main/resources/META-INF/spring/xpath-activity-context-osgi.xml
new file mode 100644
index 0000000..69d23b2
--- /dev/null
+++ b/taverna-xpath-activity/src/main/resources/META-INF/spring/xpath-activity-context-osgi.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans:beans xmlns="http://www.springframework.org/schema/osgi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:beans="http://www.springframework.org/schema/beans"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans
+                      http://www.springframework.org/schema/beans/spring-beans.xsd
+                      http://www.springframework.org/schema/osgi
+                      http://www.springframework.org/schema/osgi/spring-osgi.xsd">
+
+	<service ref="XPathActivityHealthChecker" interface="net.sf.taverna.t2.workflowmodel.health.HealthChecker" />
+
+	<service ref="xPathActivityFactory" interface="net.sf.taverna.t2.workflowmodel.processor.activity.ActivityFactory" />
+
+	<reference id="edits" interface="net.sf.taverna.t2.workflowmodel.Edits" />
+
+</beans:beans>
diff --git a/taverna-xpath-activity/src/main/resources/META-INF/spring/xpath-activity-context.xml b/taverna-xpath-activity/src/main/resources/META-INF/spring/xpath-activity-context.xml
new file mode 100644
index 0000000..983d4e5
--- /dev/null
+++ b/taverna-xpath-activity/src/main/resources/META-INF/spring/xpath-activity-context.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans
+                      http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+	<bean id="XPathActivityHealthChecker" class="net.sf.taverna.t2.activities.xpath.XPathActivityHealthChecker" />
+
+	<bean id="xPathActivityFactory" class="net.sf.taverna.t2.activities.xpath.XPathActivityFactory">
+		<property name="edits" ref="edits" />
+	</bean>
+
+</beans>
diff --git a/taverna-xpath-activity/src/main/resources/schema.json b/taverna-xpath-activity/src/main/resources/schema.json
new file mode 100644
index 0000000..81f9f78
--- /dev/null
+++ b/taverna-xpath-activity/src/main/resources/schema.json
@@ -0,0 +1,45 @@
+{
+    "$schema": "http://json-schema.org/draft-03/schema#",
+    "id": "http://ns.taverna.org.uk/2010/activity/xpath.schema.json",
+    "title": "XPath activity configuration",
+    "type": "object",
+    "properties": {
+        "@context": {
+            "description": "JSON-LD context for interpreting the configuration as RDF",
+            "required": true,
+            "enum": ["http://ns.taverna.org.uk/2010/activity/xpath.context.json"]
+        },
+        "exampleXmlDocument": {
+            "title": "Example XML document",
+            "type": "string",
+            "required": false,
+        },
+        "xpathExpression": {
+            "title": "XPath expression",
+            "type": "string",
+            "required": true,
+        },
+        "xpathNamespaceMap": {
+            "title": "XPath Namespace Map",
+            "type": "array",
+            "required": false,
+            "items": { "type": "object", "$ref": "#/definitions/namespaceMapping" }
+        }
+    },
+    "definitions": {
+    	"namespaceMapping": {
+            "properties": {
+           		"prefix": {
+            		"title": "Namespace Prefix",
+            		"type": "string",
+		          	"required": true
+           		},
+           		"uri": {
+            		"title": "Namespace URI,
+            		"type": "string",
+ 		         	"required": true
+            	}
+            }
+    	}
+    }
+}
