TAVERNA-999 Some attempts to tidy up
diff --git a/taverna-iteration-strategy-ui/pom.xml b/taverna-iteration-strategy-ui/pom.xml
index c8ff8a8..174c7eb 100644
--- a/taverna-iteration-strategy-ui/pom.xml
+++ b/taverna-iteration-strategy-ui/pom.xml
@@ -28,6 +28,11 @@
 	<name>Apache Taverna Iteration Strategy UI</name>
 	<dependencies>
 		<dependency>
+			<groupId>org.apache.taverna.language</groupId>
+			<artifactId>taverna-scufl2-api</artifactId>
+			<version>0.15.2-incubating-SNAPSHOT</version>
+		</dependency>
+		<dependency>
 			<groupId>org.apache.taverna.engine</groupId>
 			<artifactId>taverna-workflowmodel-api</artifactId>
 			<version>${taverna.engine.version}</version>
diff --git a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/IterationStrategyIcons.java b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/IterationStrategyIcons.java
index bdfe724..6ed1da9 100644
--- a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/IterationStrategyIcons.java
+++ b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/IterationStrategyIcons.java
@@ -1,23 +1,21 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester   
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  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
  * 
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
+ *   http://www.apache.org/licenses/LICENSE-2.0
  * 
- *  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
- ******************************************************************************/
+ * 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.
+ */
 package org.apache.taverna.workbench.iterationstrategy;
 
 import javax.swing.ImageIcon;
diff --git a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/contextview/IterationStrategyConfigurationDialog.java b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/contextview/IterationStrategyConfigurationDialog.java
index ef45ec3..497a387 100644
--- a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/contextview/IterationStrategyConfigurationDialog.java
+++ b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/contextview/IterationStrategyConfigurationDialog.java
@@ -1,5 +1,20 @@
-/**
- *
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  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.
  */
 package org.apache.taverna.workbench.iterationstrategy.contextview;
 
@@ -15,18 +30,17 @@
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 
+import org.apache.log4j.Logger;
+import org.apache.taverna.scufl2.api.core.Processor;
+import org.apache.taverna.scufl2.api.iterationstrategy.IterationStrategyStack;
 import org.apache.taverna.workbench.edits.EditManager;
 import org.apache.taverna.workbench.file.FileManager;
 import org.apache.taverna.workbench.helper.HelpEnabledDialog;
 import org.apache.taverna.workbench.iterationstrategy.editor.IterationStrategyEditorControl;
+import org.apache.taverna.workflow.edits.SetIterationStrategyStackEdit;
 import org.apache.taverna.workflowmodel.Edit;
 import org.apache.taverna.workflowmodel.EditException;
-import org.apache.taverna.workflowmodel.Edits;
-import org.apache.taverna.workflowmodel.Processor;
 import org.apache.taverna.workflowmodel.processor.iteration.IterationStrategy;
-import org.apache.taverna.workflowmodel.processor.iteration.IterationStrategyStack;
-
-import org.apache.log4j.Logger;
 
 /**
  * @author alanrw
@@ -88,9 +102,9 @@
 		}
 
 		public void actionPerformed(ActionEvent e) {
-			Edits edits = editManager.getEdits();
+			
 			try {
-				Edit<?> edit = edits.getSetIterationStrategyStackEdit(
+				SetIterationStrategyStackEdit edit = new SetIterationStrategyStackEdit(
 						processor,
 						IterationStrategyContextualView.copyIterationStrategyStack(workingStack));
 				editManager.doDataflowEdit(
diff --git a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/contextview/IterationStrategyContextualView.java b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/contextview/IterationStrategyContextualView.java
index 2f516ef..4e50dca 100644
--- a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/contextview/IterationStrategyContextualView.java
+++ b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/contextview/IterationStrategyContextualView.java
@@ -1,25 +1,20 @@
-/*******************************************************************************
- * 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
- ******************************************************************************/
-/**
- *
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  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.
  */
 package org.apache.taverna.workbench.iterationstrategy.contextview;
 
@@ -31,18 +26,15 @@
 import javax.swing.Action;
 import javax.swing.JComponent;
 
+import org.apache.log4j.Logger;
+import org.apache.taverna.scufl2.api.core.Processor;
+import org.apache.taverna.scufl2.api.iterationstrategy.IterationStrategyStack;
+import org.apache.taverna.scufl2.api.iterationstrategy.IterationStrategyTopNode;
 import org.apache.taverna.workbench.edits.EditManager;
 import org.apache.taverna.workbench.file.FileManager;
 import org.apache.taverna.workbench.helper.HelpEnabledDialog;
 import org.apache.taverna.workbench.iterationstrategy.editor.IterationStrategyTree;
 import org.apache.taverna.workbench.ui.views.contextualviews.ContextualView;
-import org.apache.taverna.workflowmodel.Processor;
-import org.apache.taverna.workflowmodel.processor.iteration.IterationStrategy;
-import org.apache.taverna.workflowmodel.processor.iteration.IterationStrategyStack;
-import org.apache.taverna.workflowmodel.processor.iteration.impl.IterationStrategyImpl;
-import org.apache.taverna.workflowmodel.processor.iteration.impl.IterationStrategyStackImpl;
-
-import org.apache.log4j.Logger;
 import org.jdom.Content;
 import org.jdom.Element;
 import org.jdom.filter.ElementFilter;
@@ -50,13 +42,10 @@
 /**
  * Contextual view of an {@link IterationStrategyStack}.
  *
- * @author Stian Soiland-Reyes
- *
  */
 public class IterationStrategyContextualView extends ContextualView {
 
-	private static Logger logger = Logger
-			.getLogger(IterationStrategyContextualView.class);
+	private static Logger logger = Logger.getLogger(IterationStrategyContextualView.class);
 
 	private EditManager editManager;
 
@@ -70,49 +59,37 @@
 
 	static {
 
-// This should be enabled and modified for T2-822
-/*		editManager.addObserver(new Observer<EditManagerEvent> () {
-
-			private void examineEdit(Edit edit) {
-				if (edit instanceof ConnectDatalinkEdit) {
-					processConnectDatalinkEdit((ConnectDatalinkEdit) edit);
-				}
-				if (edit instanceof CompoundEdit) {
-					processCompoundEdit((CompoundEdit) edit);
-				}
-			}
-
-			private void processConnectDatalinkEdit(ConnectDatalinkEdit edit) {
-				Datalink d = ((ConnectDatalinkEdit) edit).getSubject();
-				EventHandlingInputPort sink = d.getSink();
-				if (sink instanceof ProcessorInputPort) {
-					ProcessorInputPort pip = (ProcessorInputPort) sink;
-					Processor p = pip.getProcessor();
-					final HelpEnabledDialog dialog = new IterationStrategyConfigurationDialog(null, p, copyIterationStrategyStack(p.getIterationStrategy()));
-					dialog.setVisible(true);
-				}
-			}
-
-			private void processCompoundEdit(CompoundEdit edit) {
-				for (Edit e : edit.getChildEdits()) {
-					examineEdit(e);
-				}
-			}
-
-			@Override
-			public void notify(Observable<EditManagerEvent> sender,
-					EditManagerEvent message) throws Exception {
-				if (!(message instanceof DataflowEditEvent)) {
-					return;
-				}
-				examineEdit(message.getEdit());
-			}});*/
+		// This should be enabled and modified for T2-822
+		/*
+		 * editManager.addObserver(new Observer<EditManagerEvent> () {
+		 * 
+		 * private void examineEdit(Edit edit) { if (edit instanceof
+		 * ConnectDatalinkEdit) {
+		 * processConnectDatalinkEdit((ConnectDatalinkEdit) edit); } if (edit
+		 * instanceof CompoundEdit) { processCompoundEdit((CompoundEdit) edit);
+		 * } }
+		 * 
+		 * private void processConnectDatalinkEdit(ConnectDatalinkEdit edit) {
+		 * Datalink d = ((ConnectDatalinkEdit) edit).getSubject();
+		 * EventHandlingInputPort sink = d.getSink(); if (sink instanceof
+		 * ProcessorInputPort) { ProcessorInputPort pip = (ProcessorInputPort)
+		 * sink; Processor p = pip.getProcessor(); final HelpEnabledDialog
+		 * dialog = new IterationStrategyConfigurationDialog(null, p,
+		 * copyIterationStrategyStack(p.getIterationStrategy()));
+		 * dialog.setVisible(true); } }
+		 * 
+		 * private void processCompoundEdit(CompoundEdit edit) { for (Edit e :
+		 * edit.getChildEdits()) { examineEdit(e); } }
+		 * 
+		 * @Override public void notify(Observable<EditManagerEvent> sender,
+		 * EditManagerEvent message) throws Exception { if (!(message instanceof
+		 * DataflowEditEvent)) { return; } examineEdit(message.getEdit()); }});
+		 */
 	}
 
 	public IterationStrategyContextualView(Processor processor, EditManager editManager, FileManager fileManager) {
-		if (processor == null || processor.getIterationStrategy() == null) {
-			throw new NullPointerException(
-					"Iteration strategy stack can't be null");
+		if (processor == null) {
+			throw new NullPointerException("Iteration strategy stack can't be null");
 		}
 		this.processor = processor;
 		this.editManager = editManager;
@@ -136,14 +113,13 @@
 		strategyTree.setIterationStrategy(getIterationStrategy(iterationStack));
 	}
 
-	public static IterationStrategyStack copyIterationStrategyStack(
-			IterationStrategyStack stack) {
-		Element asXML = ((IterationStrategyStackImpl)stack).asXML();
+	public static IterationStrategyStack copyIterationStrategyStack(IterationStrategyStack stack) {
+		Element asXML = ((IterationStrategyStack) stack).asXML();
 		stripEmptyElements(asXML);
-		IterationStrategyStackImpl copyStack = new IterationStrategyStackImpl();
+		IterationStrategyStack copyStack = new IterationStrategyStack();
 		copyStack.configureFromElement(asXML);
 		if (copyStack.getStrategies().isEmpty()) {
-			copyStack.addStrategy(new IterationStrategyImpl());
+			copyStack.addStrategy(new IterationStrategy());
 		}
 		return copyStack;
 	}
@@ -157,8 +133,7 @@
 				Element childElement = (Element) child;
 				if (childElement.getName().equals("port")) {
 					index++;
-				}
-				else if (childElement.getDescendants(new ElementFilter("port")).hasNext()) {
+				} else if (childElement.getDescendants(new ElementFilter("port")).hasNext()) {
 					stripEmptyElements(childElement);
 					index++;
 				} else {
@@ -170,29 +145,23 @@
 	}
 
 	public static IterationStrategy getIterationStrategy(IterationStrategyStack iStack) {
-		List<? extends IterationStrategy> strategies = iStack
-				.getStrategies();
+		List<? extends IterationStrategy> strategies = iStack.getStrategies();
 		if (strategies.isEmpty()) {
 			throw new IllegalStateException("Empty iteration stack");
 		}
 		IterationStrategy strategy = strategies.get(0);
-		if (!(strategy instanceof IterationStrategyImpl)) {
-			throw new IllegalStateException(
-					"Can't edit unknown iteration strategy implementation "
-							+ strategy);
+		if (!(strategy instanceof IterationStrategy)) {
+			throw new IllegalStateException("Can't edit unknown iteration strategy implementation " + strategy);
 		}
-		return (IterationStrategyImpl) strategy;
+		return (IterationStrategy) strategy;
 	}
 
 	private void refreshIterationStrategyStack() {
-		IterationStrategyStack originalIterationStrategy = processor
-				.getIterationStrategy();
-		if (!(originalIterationStrategy instanceof IterationStrategyStackImpl)) {
-			throw new IllegalStateException(
-					"Unknown iteration strategy implementation "
-							+ originalIterationStrategy);
+		IterationStrategyStack originalIterationStrategy = processor.getIterationStrategy();
+		if (!(originalIterationStrategy instanceof IterationStrategyStack)) {
+			throw new IllegalStateException("Unknown iteration strategy implementation " + originalIterationStrategy);
 		}
-		this.iterationStack = copyIterationStrategyStack((IterationStrategyStackImpl) originalIterationStrategy);
+		this.iterationStack = copyIterationStrategyStack((IterationStrategyStack) originalIterationStrategy);
 	}
 
 	@Override
@@ -215,13 +184,12 @@
 		}
 
 		public void actionPerformed(ActionEvent e) {
-			final HelpEnabledDialog dialog = new IterationStrategyConfigurationDialog(owner, processor, iterationStack, editManager, fileManager);
+			final HelpEnabledDialog dialog = new IterationStrategyConfigurationDialog(owner, processor, iterationStack,
+					editManager, fileManager);
 			dialog.setVisible(true);
 			refreshView();
 		}
 
-
-
 	}
 
 	@Override
diff --git a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/contextview/IterationStrategyContextualViewFactory.java b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/contextview/IterationStrategyContextualViewFactory.java
index 412e081..c9b99dd 100644
--- a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/contextview/IterationStrategyContextualViewFactory.java
+++ b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/contextview/IterationStrategyContextualViewFactory.java
@@ -1,23 +1,21 @@
-/*******************************************************************************
- * 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
- ******************************************************************************/
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  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.
+ */
 package org.apache.taverna.workbench.iterationstrategy.contextview;
 
 import java.util.Arrays;
diff --git a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyCellRenderer.java b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyCellRenderer.java
index 4be3997..e607d26 100644
--- a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyCellRenderer.java
+++ b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyCellRenderer.java
@@ -1,25 +1,20 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester   
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  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
  * 
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
+ *   http://www.apache.org/licenses/LICENSE-2.0
  * 
- *  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
- ******************************************************************************/
-/**
- * 
+ * 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.
  */
 package org.apache.taverna.workbench.iterationstrategy.editor;
 
diff --git a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyEditor.java b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyEditor.java
index 695fd0b..13f8309 100644
--- a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyEditor.java
+++ b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyEditor.java
@@ -1,24 +1,21 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester   
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  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
  * 
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
+ *   http://www.apache.org/licenses/LICENSE-2.0
  * 
- *  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 org.apache.taverna.workbench.iterationstrategy.editor;
+ * 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.
+ */package org.apache.taverna.workbench.iterationstrategy.editor;
 
 import java.awt.GraphicsEnvironment;
 import java.awt.datatransfer.DataFlavor;
@@ -35,6 +32,7 @@
 import javax.swing.tree.TreePath;
 import javax.swing.tree.TreeSelectionModel;
 
+import org.apache.taverna.scufl2.api.iterationstrategy.IterationStrategyTopNode;
 import org.apache.taverna.workbench.ui.zaria.UIComponentSPI;
 import org.apache.taverna.workflowmodel.processor.iteration.AbstractIterationStrategyNode;
 import org.apache.taverna.workflowmodel.processor.iteration.IterationStrategy;
@@ -69,9 +67,9 @@
 		//
 	}
 
-	public IterationStrategyEditor(IterationStrategy theStrategy) {
+	public IterationStrategyEditor(IterationStrategyTopNode strategy) {
 		this();
-		setIterationStrategy(theStrategy);
+		setIterationStrategy(strategy);
 	}
 
     /**
diff --git a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyEditorControl.java b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyEditorControl.java
index df5e078..d0213da 100644
--- a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyEditorControl.java
+++ b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyEditorControl.java
@@ -1,27 +1,20 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester   
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  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
  * 
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
+ *   http://www.apache.org/licenses/LICENSE-2.0
  * 
- *  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
- ******************************************************************************/
-/**
- * This file is a component of the Taverna project,
- * and is licensed under the GNU LGPL.
- * Copyright Tom Oinn, EMBL-EBI
+ * 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.
  */
 package org.apache.taverna.workbench.iterationstrategy.editor;
 
@@ -46,15 +39,16 @@
 import javax.swing.tree.TreeNode;
 import javax.swing.tree.TreePath;
 
+import org.apache.log4j.Logger;
+import org.apache.taverna.scufl2.api.common.Scufl2Tools;
+import org.apache.taverna.scufl2.api.core.Processor;
+import org.apache.taverna.scufl2.api.iterationstrategy.CrossProduct;
+import org.apache.taverna.scufl2.api.iterationstrategy.DotProduct;
+import org.apache.taverna.scufl2.api.iterationstrategy.IterationStrategyNode;
+import org.apache.taverna.scufl2.api.iterationstrategy.IterationStrategyTopNode;
+import org.apache.taverna.scufl2.api.iterationstrategy.PortNode;
 import org.apache.taverna.workbench.icons.WorkbenchIcons;
 import org.apache.taverna.workbench.iterationstrategy.IterationStrategyIcons;
-import org.apache.taverna.workflowmodel.processor.iteration.CrossProduct;
-import org.apache.taverna.workflowmodel.processor.iteration.DotProduct;
-import org.apache.taverna.workflowmodel.processor.iteration.IterationStrategy;
-import org.apache.taverna.workflowmodel.processor.iteration.IterationStrategyNode;
-import org.apache.taverna.workflowmodel.processor.iteration.TerminalNode;
-
-import org.apache.log4j.Logger;
 
 /**
  * A control panel for the iteration tree editor allowing the user to manipulate
@@ -81,12 +75,16 @@
 			visitedNodes.add(visiting);
 			nodesToVisit.remove(visiting);
 
+			if (! (visiting instanceof IterationStrategyTopNode))  {
+				// It's a PortNode with no more children - we were already 
+				// added in the level above 
+				continue;
+			}
+			// List is superclass of IterationStrategyTopNode
+			List<IterationStrategyNode> children = (IterationStrategyTopNode)visiting;			
+			Set<IterationStrategyNode> newNodes = new HashSet<IterationStrategyNode>(children);
 			// Find new and interesting children
-			List<IterationStrategyNode> children = visiting.getChildren();
-			Set<IterationStrategyNode> newNodes = new HashSet<IterationStrategyNode>(
-					children);
-			newNodes.removeAll(visitedNodes);
-
+			newNodes.removeAll(visitedNodes);				
 			descendants.addAll(newNodes);
 			nodesToVisit.addAll(newNodes);
 		}
@@ -115,14 +113,28 @@
 	//protected ImageIcon arrowRight = WorkbenchIcons.rightArrowIcon;
 	protected ImageIcon normalizeIcon = WorkbenchIcons.normalizeIcon;
 
-	private final IterationStrategy strategy;
+	private final IterationStrategyTopNode strategy;
+
+	private Processor processor;
 
 	/**
 	 * Create a new panel from the supplied iteration strategy
 	 */
-	public IterationStrategyEditorControl(IterationStrategy strategy) {
+	public IterationStrategyEditorControl(Processor p) {
+		this.processor = p;
+		if (p.getIterationStrategyStack() == null || p.getIterationStrategyStack().isEmpty()) {
+			new Scufl2Tools().createDefaultIterationStrategyStack(p);
+		}
+		
+		if (p.getIterationStrategyStack().size() > 1) {
+			// TODO: Edit more than 1 layer
+			logger.warn("More than 1 layer in iteration strategy stack: " + p.getIterationStrategyStack().size());
+			throw new IllegalStateException("Can't edit iteration strategy with more than 1 layer");
+		}
+		
+		this.strategy = p.getIterationStrategyStack().get(0);
 
-		this.strategy = strategy;
+		
 		setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
 
 		// Create the components
@@ -174,7 +186,7 @@
 		add(treePane);
 	}
 
-	public void setIterationStrategy(IterationStrategy iterationStrategy) {
+	public void setIterationStrategy(IterationStrategyTopNode iterationStrategy) {
 		tree.setIterationStrategy(iterationStrategy);
 		disableButtons();
 		selectNode(null);
@@ -188,7 +200,9 @@
 	}
 
 	private IterationStrategyNode findRoot() {
-		IterationStrategyNode root = (IterationStrategyNode) tree.getModel()
+		IterationStrategyNode root = tree.getModel(); 
+				
+				(IterationStrategyNode) tree.getModel()
 				.getRoot();
 		if (root.getChildCount() > 0) {
 			return root.getChildAt(0);
@@ -248,7 +262,7 @@
 			selectedNode = selectedObject;
 			if (selectedObject instanceof CrossProduct
 					|| selectedObject instanceof DotProduct) {
-				if ((selectedObject.getParent() == null) || (selectedObject.getParent() instanceof TerminalNode)) {
+				if ((selectedObject.getParent() == null) || (selectedObject.getParent() instanceof PortNode)) {
 					remove.setEnabled(false);
 				} else {
 					remove.setEnabled(true);
diff --git a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyTree.java b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyTree.java
index c5e9390..fa86f75 100644
--- a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyTree.java
+++ b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyTree.java
@@ -1,23 +1,21 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester   
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  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
  * 
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
+ *   http://www.apache.org/licenses/LICENSE-2.0
  * 
- *  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
- ******************************************************************************/
+ * 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.
+ */
 package org.apache.taverna.workbench.iterationstrategy.editor;
 
 import java.util.Enumeration;
@@ -31,14 +29,14 @@
 import javax.swing.tree.TreePath;
 import javax.swing.tree.TreeSelectionModel;
 
+import org.apache.taverna.scufl2.api.iterationstrategy.IterationStrategyTopNode;
 import org.apache.taverna.workbench.iterationstrategy.IterationStrategyIcons;
 import org.apache.taverna.workbench.ui.zaria.UIComponentSPI;
-import org.apache.taverna.workflowmodel.processor.iteration.IterationStrategy;
 
 @SuppressWarnings("serial")
 public class IterationStrategyTree extends JTree implements UIComponentSPI {
 
-	private IterationStrategy strategy = null;
+	private IterationStrategyTopNode strategy = null;
 
 	public IterationStrategyTree() {
 		super();
@@ -60,10 +58,10 @@
 	}
 
 	public synchronized void setIterationStrategy(
-			IterationStrategy theStrategy) {
-		if (theStrategy != this.strategy) {
-			this.strategy = theStrategy;
-			TreeNode terminal = theStrategy.getTerminalNode();
+			IterationStrategyTopNode strategy2) {
+		if (strategy2 != this.strategy) {
+			this.strategy = strategy2;
+			TreeNode terminal = strategy2.getTerminalNode();
 			setModel(new DefaultTreeModel(terminal));
 			this.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
 			expandTree();
diff --git a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyTreeModel.java b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyTreeModel.java
new file mode 100644
index 0000000..bd4d5c9
--- /dev/null
+++ b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyTreeModel.java
@@ -0,0 +1,105 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  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.
+ */
+package org.apache.taverna.workbench.iterationstrategy.editor;
+
+import javax.swing.event.TreeModelListener;
+import javax.swing.tree.TreeModel;
+import javax.swing.tree.TreePath;
+
+import org.apache.taverna.scufl2.api.iterationstrategy.IterationStrategyNode;
+import org.apache.taverna.scufl2.api.iterationstrategy.IterationStrategyTopNode;
+
+/**
+ * An experimental TreeModel view of a SCUFL2 IterationStrategyTopNode tree.
+ * <p>
+ * TODO: This class does not yet support the methods 
+ * {@link #addTreeModelListener(TreeModelListener)},
+ * {@link #removeTreeModelListener(TreeModelListener)}
+ * or {@link #valueForPathChanged(TreePath, Object)}.
+ *
+ */
+public class IterationStrategyTreeModel implements TreeModel {
+
+	private IterationStrategyTopNode topNode;
+
+	public IterationStrategyTreeModel(IterationStrategyTopNode topNode) {
+		this.topNode = topNode;
+	}
+	
+	@Override
+	public IterationStrategyTopNode getRoot() {
+		return topNode;
+	}
+
+	@Override
+	public IterationStrategyNode getChild(Object parent, int index) {
+		if (!(parent instanceof IterationStrategyTopNode)) {
+			return null;
+		}
+		try { 
+			return ((IterationStrategyTopNode)parent).get(index);
+		} catch (IndexOutOfBoundsException ex) {
+			return null;
+		}
+	}
+
+	@Override
+	public int getChildCount(Object parent) {
+		if (!(parent instanceof IterationStrategyTopNode)) {
+			return 0;
+		}
+		return ((IterationStrategyTopNode)parent).size();
+	}
+
+	@Override
+	public boolean isLeaf(Object node) {
+		if (!(node instanceof IterationStrategyTopNode)) {
+			return true;
+		}
+		return ((IterationStrategyTopNode)node).isEmpty();
+	}
+
+	@Override
+	public void valueForPathChanged(TreePath path, Object newValue) {
+		// TODO
+	}
+
+	@Override
+	public int getIndexOfChild(Object parent, Object child) {
+		if (parent == null || child == null) { 
+			return -1;
+		}
+		if (! (parent instanceof IterationStrategyTopNode)) { 
+			return -1;
+		}
+		return ((IterationStrategyTopNode)parent).indexOf(child);
+	}
+
+	@Override
+	public void addTreeModelListener(TreeModelListener l) {
+		// TODO
+	}
+
+	@Override
+	public void removeTreeModelListener(TreeModelListener l) {
+		// TODO
+
+	}
+	
+}
diff --git a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyTreeNode.java b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyTreeNode.java
new file mode 100644
index 0000000..b5502e3
--- /dev/null
+++ b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/editor/IterationStrategyTreeNode.java
@@ -0,0 +1,94 @@
+package org.apache.taverna.workbench.iterationstrategy.editor;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeNode;
+
+import org.apache.taverna.scufl2.api.iterationstrategy.IterationStrategyNode;
+import org.apache.taverna.scufl2.api.iterationstrategy.IterationStrategyParent;
+import org.apache.taverna.scufl2.api.iterationstrategy.IterationStrategyTopNode;
+
+/**
+ * An experimental view of of a IterationStrategyNode as a TreeNode.
+ * <p>
+ * This can be used with a {@link DefaultTreeModel}
+ * as an alternative to {@link IterationStrategyTreeModel}. 
+ *
+ */
+public class IterationStrategyTreeNode implements TreeNode {
+
+	private final IterationStrategyNode node;
+
+	public IterationStrategyTreeNode(IterationStrategyNode node) {
+		this.node = node;
+	}
+
+	@Override
+	public IterationStrategyTreeNode getChildAt(int childIndex) {
+		if (node instanceof IterationStrategyTopNode) {			
+			IterationStrategyNode child = ((IterationStrategyTopNode) node).get(childIndex);
+			return new IterationStrategyTreeNode(child);
+		}
+		throw new IndexOutOfBoundsException("This node has no children: " + node);
+	}
+
+	@Override
+	public int getChildCount() {
+		if (node instanceof IterationStrategyTopNode) {
+			return ((IterationStrategyTopNode) node).size();
+		}
+		return 0;
+	}
+
+	@Override
+	public TreeNode getParent() {
+		IterationStrategyParent parent = node.getParent();
+		if (parent == null || ! (parent instanceof IterationStrategyTopNode)) {
+			// It might be the IterationStrategyStack, 
+			// which we don't show in the tree
+			return null;
+		}
+		return new IterationStrategyTreeNode((IterationStrategyTopNode)parent);
+	}
+
+	@Override
+	public int getIndex(TreeNode child) {
+		if (node instanceof IterationStrategyTopNode) {
+			IterationStrategyNode childNode = ((IterationStrategyTreeNode)child).node;
+			return ((IterationStrategyTopNode) node).indexOf(childNode);
+		}
+		return -1;
+	}
+
+	@Override
+	public boolean getAllowsChildren() {
+		return node instanceof IterationStrategyTopNode;
+	}
+
+	@Override
+	public boolean isLeaf() {	
+		return ! getAllowsChildren() || ((IterationStrategyTopNode) node).isEmpty();
+	}
+
+	@Override
+	public Enumeration<IterationStrategyTreeNode> children() {
+		// Yes.. going old-skool with Enumeration and Vector!
+		
+		Vector<IterationStrategyTreeNode> children = new Vector<>();
+		if (node instanceof IterationStrategyTopNode) {			
+			for (IterationStrategyNode child : (IterationStrategyTopNode)node) {
+				children.add(new IterationStrategyTreeNode(child));
+			}
+		} 
+		return children.elements();
+	}
+
+	public IterationStrategyNode getIterationStrategyNode() {
+		return node;
+	}
+
+	
+	
+}
diff --git a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/menu/IterationStrategyConfigureMenuAction.java b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/menu/IterationStrategyConfigureMenuAction.java
index 8a31b59..1793375 100644
--- a/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/menu/IterationStrategyConfigureMenuAction.java
+++ b/taverna-iteration-strategy-ui/src/main/java/org/apache/taverna/workbench/iterationstrategy/menu/IterationStrategyConfigureMenuAction.java
@@ -1,23 +1,21 @@
-/**********************************************************************
- * Copyright (C) 2007-2009 The University of Manchester   
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  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
  * 
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
+ *   http://www.apache.org/licenses/LICENSE-2.0
  * 
- *  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
- **********************************************************************/
+ * 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.
+ */
 package org.apache.taverna.workbench.iterationstrategy.menu;
 
 import java.awt.event.ActionEvent;
diff --git a/taverna-iteration-strategy-ui/src/test/java/org/apache/taverna/workbench/iterationstrategy/editor/RunIterationStrategyEditor.java b/taverna-iteration-strategy-ui/src/test/java/org/apache/taverna/workbench/iterationstrategy/editor/RunIterationStrategyEditor.java
index d5a28b9..cf08594 100644
--- a/taverna-iteration-strategy-ui/src/test/java/org/apache/taverna/workbench/iterationstrategy/editor/RunIterationStrategyEditor.java
+++ b/taverna-iteration-strategy-ui/src/test/java/org/apache/taverna/workbench/iterationstrategy/editor/RunIterationStrategyEditor.java
@@ -1,30 +1,30 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester   
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  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
  * 
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
+ *   http://www.apache.org/licenses/LICENSE-2.0
  * 
- *  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
- ******************************************************************************/
+ * 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.
+ */
 package org.apache.taverna.workbench.iterationstrategy.editor;
 
+import org.apache.taverna.scufl2.api.core.Processor;
+import org.apache.taverna.scufl2.api.iterationstrategy.CrossProduct;
+import org.apache.taverna.scufl2.api.iterationstrategy.PortNode;
+import org.apache.taverna.scufl2.api.port.InputProcessorPort;
 import org.apache.taverna.workbench.iterationstrategy.editor.IterationStrategyEditorControl;
 import javax.swing.JFrame;
 
-import org.apache.taverna.workflowmodel.processor.iteration.NamedInputPortNode;
-import org.apache.taverna.workflowmodel.processor.iteration.impl.IterationStrategyImpl;
 
 public class RunIterationStrategyEditor {
 
@@ -32,19 +32,23 @@
 	 * @param args
 	 */
 	public static void main(String[] args) {
-		IterationStrategyImpl iterationStrategyImpl = new IterationStrategyImpl();
-		NamedInputPortNode fishPort = new NamedInputPortNode("fish", 2);
-		NamedInputPortNode otherPort = new NamedInputPortNode("other", 0);
-		NamedInputPortNode soupPort = new NamedInputPortNode("soup", 1);
-		iterationStrategyImpl.addInput(fishPort);
-		iterationStrategyImpl.addInput(soupPort);
-		iterationStrategyImpl.addInput(otherPort);
-
-		iterationStrategyImpl.connectDefault(otherPort);
-		iterationStrategyImpl.connectDefault(fishPort);
-		iterationStrategyImpl.connectDefault(soupPort);
 		
-		IterationStrategyEditorControl editorControl = new IterationStrategyEditorControl(iterationStrategyImpl);
+		Processor p = new Processor();
+		InputProcessorPort fish = new InputProcessorPort(p, "fish");
+		fish.setDepth(2);
+		InputProcessorPort other = new InputProcessorPort(p, "other");
+		other.setDepth(0)
+		InputProcessorPort soup = new InputProcessorPort(p, "soup");
+		soup.setDepth(1);
+		
+		CrossProduct iterationStrategy = new CrossProduct();
+		iterationStrategy.add(new PortNode(iterationStrategy, fish));
+		iterationStrategy.add(new PortNode(iterationStrategy, other));
+		iterationStrategy.add(new PortNode(iterationStrategy, soup));
+		p.getIterationStrategyStack().add(iterationStrategy);
+		
+		
+		IterationStrategyEditorControl editorControl = new IterationStrategyEditorControl(p);
 		
 		JFrame frame = new JFrame("List handling editor");
 		frame.add(editorControl);