removing unused methods/imports from utils and ensuring we use new iterable collections everywhere
diff --git a/plugins/org.eclipse.epsilon.emc.simulink/META-INF/MANIFEST.MF b/plugins/org.eclipse.epsilon.emc.simulink/META-INF/MANIFEST.MF
index 67d1ac0..d8d1663 100644
--- a/plugins/org.eclipse.epsilon.emc.simulink/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.epsilon.emc.simulink/META-INF/MANIFEST.MF
@@ -17,3 +17,4 @@
  org.eclipse.epsilon.emc.simulink.util,
  org.eclipse.epsilon.emc.simulink.util.collection,
  org.eclipse.epsilon.emc.simulink.util.manager
+Automatic-Module-Name: org.eclipse.epsilon.emc.simulink
diff --git a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/engine/MatlabEngineCommands.java b/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/engine/MatlabEngineCommands.java
deleted file mode 100644
index b63bb1c..0000000
--- a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/engine/MatlabEngineCommands.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*********************************************************************
-* Copyright (c) 2008 The University of York.
-*
-* This program and the accompanying materials are made
-* available under the terms of the Eclipse Public License 2.0
-* which is available at https://www.eclipse.org/legal/epl-2.0/
-*
-* SPDX-License-Identifier: EPL-2.0
-**********************************************************************/
-
-package org.eclipse.epsilon.emc.simulink.engine;
-
-public class MatlabEngineCommands {
-	
-	/** COMMANDS */
-	public static final String ASSIGN = "? = ?";
-	public static final String INSPECT = "inspect(?);";
-	public static final String HANDLE = "handle = ?;";
-	public static final String HANDLES = "handles = ";
-	public static final String INSPECT_HANDLE = "inspect(handle);";
-	
-	public static final String GET_HANDLE_PROPERTY = "get_param(handle, '?');";
-	public static final String GET_PROPERTY = "get_param(?, '?');";
-	public static final String SET_HANDLE_PROPERTY = "set_param(handle, '?', '?');";
-	public static final String SET_PROPERTY = "set_param(?, '?', '?');";
-
-	/** OPERATION */
-	public static final String LINE_BREAK = "\n";
-	public static final String COMMAND_END = ";";
-	public static final String SEP = " ";
-		
-	public static final String HANDLE_INSPECT_HANDLE = HANDLE + INSPECT_HANDLE;
-	public static final String GET_PROPERTY_FROM_HANDLE = HANDLE + GET_HANDLE_PROPERTY;
-	public static final String SET_PROPERTY_TO_HANDLE = HANDLE + SET_HANDLE_PROPERTY;
-	
-}
diff --git a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/model/element/SimulinkBlock.java b/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/model/element/SimulinkBlock.java
index 0f7eef6..ebe4d86 100644
--- a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/model/element/SimulinkBlock.java
+++ b/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/model/element/SimulinkBlock.java
@@ -9,23 +9,14 @@
 **********************************************************************/
 package org.eclipse.epsilon.emc.simulink.model.element;
 
-import static org.eclipse.epsilon.emc.simulink.engine.MatlabEngineCommands.SET_PROPERTY_TO_HANDLE;
-
-import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
 
 import org.eclipse.epsilon.emc.simulink.engine.MatlabEngine;
 import org.eclipse.epsilon.emc.simulink.exception.MatlabException;
 import org.eclipse.epsilon.emc.simulink.exception.MatlabRuntimeException;
 import org.eclipse.epsilon.emc.simulink.model.SimulinkModel;
-import org.eclipse.epsilon.emc.simulink.model.TypeHelper.Kind;
-import org.eclipse.epsilon.emc.simulink.util.MatlabEngineUtil;
 import org.eclipse.epsilon.emc.simulink.util.SimulinkUtil;
 import org.eclipse.epsilon.emc.simulink.util.collection.SimulinkPortCollection;
-import org.eclipse.epsilon.eol.exceptions.EolIllegalOperationException;
 import org.eclipse.epsilon.eol.exceptions.EolIllegalPropertyException;
 import org.eclipse.epsilon.eol.exceptions.EolRuntimeException;
 
diff --git a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/model/element/SimulinkElement.java b/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/model/element/SimulinkElement.java
index 866051b..e696c1c 100644
--- a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/model/element/SimulinkElement.java
+++ b/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/model/element/SimulinkElement.java
@@ -9,8 +9,6 @@
 **********************************************************************/
 package org.eclipse.epsilon.emc.simulink.model.element;
 
-import static org.eclipse.epsilon.emc.simulink.engine.MatlabEngineCommands.GET_HANDLE_PROPERTY;
-
 import java.util.Arrays;
 import java.util.Collection;
 
@@ -30,6 +28,7 @@
 	protected static final String GET_SIMULINK_KIND = "get_param(handle, 'Type');";
 	protected static final String GET_SIMULINK_TYPE = "get_param(handle, '%sType');";
 	protected static final String GET_FULL_NAME = "getfullname(?);";
+	protected static final String GET_HANDLE_PROPERTY = "get_param(handle, '?');";
 
 	protected Double handle = null;
 
diff --git a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/model/element/StateflowBlock.java b/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/model/element/StateflowBlock.java
index 716c8bd..6b5e693 100644
--- a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/model/element/StateflowBlock.java
+++ b/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/model/element/StateflowBlock.java
@@ -11,7 +11,6 @@
 
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 
@@ -21,6 +20,7 @@
 import org.eclipse.epsilon.emc.simulink.model.TypeHelper.Kind;
 import org.eclipse.epsilon.emc.simulink.util.SimulinkUtil;
 import org.eclipse.epsilon.emc.simulink.util.StateflowUtil;
+import org.eclipse.epsilon.emc.simulink.util.collection.StateflowBlockCollection;
 import org.eclipse.epsilon.eol.exceptions.EolIllegalPropertyException;
 import org.eclipse.epsilon.eol.exceptions.EolRuntimeException;
 
@@ -259,13 +259,13 @@
 		}
 	}
 
-	public Collection<StateflowBlock> getChildren() {
+	public StateflowBlockCollection getChildren() {
 		try {
 			String handle = StateflowUtil.getBlockHandle(this);
 			Object children = (Object) this.engine.evalWithSetupAndResult("list = ?.find('-depth',1); list = setdiff(list, ?);", "get(list,'Id');", handle, handle);
-			return StateflowUtil.getStateflowBlocks(model, engine, children);			
+			return new StateflowBlockCollection(children, model);			
 		} catch (MatlabException e) {
-			return Collections.<StateflowBlock>emptyList();
+			return new StateflowBlockCollection(null, model);
 		}
 	}
 
diff --git a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/operations/contributors/ModelOperationContributor.java b/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/operations/contributors/ModelOperationContributor.java
index 48b7780..836e5ac 100644
--- a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/operations/contributors/ModelOperationContributor.java
+++ b/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/operations/contributors/ModelOperationContributor.java
@@ -13,7 +13,6 @@
 import org.eclipse.epsilon.emc.simulink.introspection.java.SimulinkObjectMethod;
 import org.eclipse.epsilon.emc.simulink.introspection.java.StateflowObjectMethod;
 import org.eclipse.epsilon.emc.simulink.model.SimulinkModel;
-import org.eclipse.epsilon.emc.simulink.model.element.SimulinkBlock;
 import org.eclipse.epsilon.emc.simulink.model.element.SimulinkElement;
 import org.eclipse.epsilon.emc.simulink.model.element.SimulinkModelElement;
 import org.eclipse.epsilon.emc.simulink.model.element.StateflowBlock;
diff --git a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/util/SimulinkUtil.java b/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/util/SimulinkUtil.java
index e936641..fc9734c 100644
--- a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/util/SimulinkUtil.java
+++ b/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/util/SimulinkUtil.java
@@ -80,11 +80,11 @@
 		return "handle = " + objHandle + "; " + handleMethodWithResult(methodName, list.toArray());
 	}
 
-	public static String handleMethodWithResult(String methodName, Object[] parameters) {
+	private static String handleMethodWithResult(String methodName, Object[] parameters) {
 		return "result = " + handleMethod(methodName, parameters); 
 	}
 	
-	public static String handleMethod(String methodName, Object[] parameters) {
+	private static String handleMethod(String methodName, Object[] parameters) {
 		String cmd = methodName;
 		if (parameters != null && parameters.length > 0) {
 			cmd += "(" + parameters[0];
@@ -105,53 +105,6 @@
 		return -1.0;
 	}
 
-	/** GENERAL COLLECTION */
-	
-	public static <T extends ISimulinkModelElement> List<T> getTypeList(Class<T> returnType, SimulinkModel model, MatlabEngine engine, Object elements) {
-
-		List<T> list = new ArrayList<T>();
-
-		if (elements instanceof List) {
-			try{
-				for (Object element : (List<?>) elements) {
-					if (element instanceof String) {
-						String path = (String) element;
-						T instantiate = instantiate(returnType, model, engine, null, path);
-						if (instantiate!= null) list.add(instantiate);	
-					} else if (element instanceof Double) {
-						Double handle = (Double) element;
-						T instantiate = instantiate(returnType, model, engine, handle, null);
-						if (instantiate!= null) list.add(instantiate);
-					}
-				}
-			} catch (Exception e) {
-				e.printStackTrace();
-				System.out.println(e.getMessage());
-			}
-		} else if (elements instanceof String) {
-			T instantiate = instantiate(returnType, model, engine, null, (String) elements);
-			if (instantiate!= null) list.add(instantiate);
-		} else if (elements instanceof Double) {
-			T instantiate = instantiate(returnType, model, engine, (Double) elements, null);
-			if (instantiate!= null) list.add(instantiate);
-		}
-		return list;
-	}
-	
-	private static <T> T instantiate(Class<T> clazz, SimulinkModel model, MatlabEngine engine, Double handle, String path) {
-		try {
-			if (handle != null) {
-				return clazz.getConstructor(SimulinkModel.class, MatlabEngine.class, Double.class).newInstance(model, engine, handle);
-			} else if (path != null) {
-				return clazz.getConstructor(String.class, SimulinkModel.class, MatlabEngine.class).newInstance(path, model, engine);
-			} else {
-				return null;
-			}
-		} catch (Exception e) {
-			return null;
-		}
-	}
-	
 	/** SPECIFIC COLLECTION */
 	
 	public static List<ISimulinkModelElement> getChildren(SimulinkModel model, SimulinkBlock block) throws MatlabException {
diff --git a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/util/StateflowUtil.java b/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/util/StateflowUtil.java
index 28c6b7d..fd28500 100644
--- a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/util/StateflowUtil.java
+++ b/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/util/StateflowUtil.java
@@ -9,13 +9,10 @@
 **********************************************************************/
 package org.eclipse.epsilon.emc.simulink.util;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.UUID;
-import java.util.stream.Collectors;
 
 import org.eclipse.epsilon.emc.simulink.engine.MatlabEngine;
 import org.eclipse.epsilon.emc.simulink.exception.MatlabException;
@@ -34,18 +31,23 @@
 	private static final String FIND_BLOCK_TYPE = "list = ?.find('-isa','?');"; 
 	private static final String GET_IDS = "get(list, 'Id');";
 	private static final String FIND_BY_ID = "? = ?.find('Id', ?);";
-	private static final String FIND_BY_PATH = "? = ?.find('Path', '?');";
 	private static final String FIND_BY_TYPE_PATH = "? = ?.find('-isa', '?', 'Path', '?');";
 
 	/*************/
 	/** HANDLES **/
 	/*************/
 
-	public static String randomHandleName() {
-		return "e" + UUID.randomUUID().toString().replace("-", "").substring(0, 10);
+	public static String getBlockHandleFromId(SimulinkModel model, MatlabEngine engine, Double id) throws MatlabException {
+		return getBlockHandleFromId(model, engine, id.intValue());
+	}
+	
+	public static String getBlockHandle(StateflowBlock block) throws MatlabException {
+		String varName = randomHandleName();
+		getBlockHandleAs(block, varName);
+		return varName;
 	}
 
-	public static void getBlockHandleAs(StateflowBlock block, String varName) throws MatlabException {
+	private static void getBlockHandleAs(StateflowBlock block, String varName) throws MatlabException {
 		modelHandleAsM(block);
 		if (block.getId() != null) {
 			block.getEngine().eval(FIND_BY_ID, varName, M, block.getId().intValue());
@@ -53,51 +55,31 @@
 			block.getEngine().eval(FIND_BY_TYPE_PATH, varName, M, block.getType(), block.getPath());
 		}
 	}
-
-	public static String getBlockHandle(StateflowBlock block) throws MatlabException {
-		String varName = randomHandleName();
-		getBlockHandleAs(block, varName);
-		return varName;
+	
+	private static String randomHandleName() {
+		return "e" + UUID.randomUUID().toString().replace("-", "").substring(0, 10);
 	}
 	
-	public static String getBlockHandleFromId(SimulinkModel model, MatlabEngine engine, Integer id) throws MatlabException {
+	private static String getBlockHandleFromId(SimulinkModel model, MatlabEngine engine, Integer id) throws MatlabException {
 		modelHandleAsM(model);
 		String varName = randomHandleName();
 		engine.eval(FIND_BY_ID, varName, M, id.intValue());
 		return varName;
 	}
-	
-	public static String getBlockHandleFromPath(SimulinkModel model, MatlabEngine engine, String path) throws MatlabException {
-		modelHandleAsM(model);
-		String varName = randomHandleName();
-		engine.eval(FIND_BY_PATH, varName, M, path);
-		return varName;
-	}
-	
-	public static String getBlockHandleFromTypeAndPath(SimulinkModel model, MatlabEngine engine, String type, String path) throws MatlabException {
-		modelHandleAsM(model);
-		String varName = randomHandleName();
-		engine.eval(FIND_BY_TYPE_PATH, varName, M, type, path);
-		return varName;
-	}
-	
-	public static String getBlockHandleFromId(SimulinkModel model, MatlabEngine engine, Double id) throws MatlabException {
-		return getBlockHandleFromId(model, engine, id.intValue());
-	}
 
-	public static void modelHandleAsM(ISimulinkModelElement obj) throws MatlabException {
+	private static void modelHandleAsM(ISimulinkModelElement obj) throws MatlabException {
 		modelHandleAs(obj, M);
 	}
 
-	public static void modelHandleAsM(SimulinkModel model) throws MatlabException {
+	private static void modelHandleAsM(SimulinkModel model) throws MatlabException {
 		modelHandleAs(model, M);
 	}
 
-	public static void modelHandleAs(ISimulinkModelElement obj, String as) throws MatlabException {
+	private static void modelHandleAs(ISimulinkModelElement obj, String as) throws MatlabException {
 		modelHandleAs(((SimulinkModel) obj.getOwningModel()), as);
 	}
 
-	public static void modelHandleAs(SimulinkModel model, String as) throws MatlabException {
+	private static void modelHandleAs(SimulinkModel model, String as) throws MatlabException {
 		String modelName = model.getSimulinkModelName();
 		model.getEngine().eval(SF_MODEL, as, modelName);
 	}
@@ -140,46 +122,14 @@
 		return new StateflowBlockCollection(ids, model);
 	}
 
-	public static Object allIds(SimulinkModel model) throws MatlabException {
+	private static Object allIds(SimulinkModel model) throws MatlabException {
 		StateflowUtil.modelHandleAsM(model);
 		return model.getEngine().evalWithSetupAndResult(FIND_ALL, GET_IDS, M);
 	}
 	
-	public static Object idsOfType(SimulinkModel model, String type) throws MatlabException {
+	private static Object idsOfType(SimulinkModel model, String type) throws MatlabException {
 		modelHandleAsM(model);
 		return model.getEngine().evalWithSetupAndResult(FIND_BLOCK_TYPE, GET_IDS, M, type);
 	}
 	
-	public static  Collection<ISimulinkModelElement> getTypeList(SimulinkModel model, MatlabEngine engine, Object ids) {
-		return getStateflowBlocks(model, engine, ids).stream().map(e-> (ISimulinkModelElement) e).collect(Collectors.toList());
-	}
-	
-	public static  Collection<StateflowBlock> getStateflowBlocks(SimulinkModel model, MatlabEngine engine, Object ids) {
-		if (ids == null) 
-			return Collections.emptyList();
-		
-		List<StateflowBlock> list = new ArrayList<StateflowBlock>();
-		if (ids instanceof List) {
-			try {
-				for (Double id : (List<Double>) ids) {
-					list.add(new StateflowBlock(model, engine, id));
-				}
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-		}
-		if (ids instanceof Double) {
-				try {
-					list.add(new StateflowBlock(model, engine, (Double) ids));
-				} catch (MatlabException e1) {
-					e1.printStackTrace();
-				}
-		}
-		return list;
-	}
-	
-	public static StateflowBlock cast(Object object){ // TODO to cast response to Simulink or Stateflow Block
-		return null;
-	}
-	
 }
diff --git a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/util/collection/AbstractSimulinkCollection.java b/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/util/collection/AbstractSimulinkCollection.java
index 5808c62..60f1ea9 100644
--- a/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/util/collection/AbstractSimulinkCollection.java
+++ b/plugins/org.eclipse.epsilon.emc.simulink/src/org/eclipse/epsilon/emc/simulink/util/collection/AbstractSimulinkCollection.java
@@ -156,9 +156,11 @@
 			AbstractSimulinkCollection collection = (AbstractSimulinkCollection) c;
 			return getPrimitive().containsAll(collection.getPrimitive());
 		} else {
-			// FIXME handle filter
-			return c.parallelStream().filter(e -> isInstanceOf(e)).map(e -> getPrimitive().contains(manager.getId((E) e)))
-					.reduce(Boolean::logicalAnd).orElse(false);
+			return c.parallelStream()
+					.filter(e -> isInstanceOf(e))
+					.map(e -> getPrimitive().contains(manager.getId((E) e)))
+					.reduce(Boolean::logicalAnd)
+					.orElse(false);
 		}
 	}
 
@@ -169,9 +171,11 @@
 			AbstractSimulinkCollection collection = (AbstractSimulinkCollection) c;
 			return getPrimitive().addAll(collection.getPrimitive());
 		} else {
-			// FIXME handle filter
-			return c.parallelStream().filter(e -> isInstanceOf(e)).map(e -> getPrimitive().add(manager.getId((E) e)))
-					.reduce(Boolean::logicalAnd).orElse(false);
+			return c.parallelStream()
+					.filter(e -> isInstanceOf(e))
+					.map(e -> getPrimitive().add(manager.getId((E) e)))
+					.reduce(Boolean::logicalAnd)
+					.orElse(false);
 		}
 	}