diff --git a/src/main/java/de/ugoe/cs/rwm/mocci/AbsScaler.java b/src/main/java/de/ugoe/cs/rwm/mocci/AbsScaler.java
index 0d14d01bfe76e3ce4d81b9c2214706ebb2f1dc71..46c11a6940d2f93f6c9a703999986d15d9bf483e 100644
--- a/src/main/java/de/ugoe/cs/rwm/mocci/AbsScaler.java
+++ b/src/main/java/de/ugoe/cs/rwm/mocci/AbsScaler.java
@@ -11,6 +11,8 @@
 package de.ugoe.cs.rwm.mocci;
 
 import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.eclipse.cmf.occi.core.impl.OCCIFactoryImpl;
 import org.eclipse.cmf.occi.infrastructure.impl.InfrastructureFactoryImpl;
@@ -21,6 +23,7 @@ import org.modmacao.placement.impl.PlacementFactoryImpl;
 
 import de.ugoe.cs.rwm.docci.connector.Connector;
 import monitoring.impl.MonitoringFactoryImpl;
+import ossweruntime.impl.OssweruntimeFactoryImpl;
 
 public abstract class AbsScaler {
 	protected InfrastructureFactoryImpl iFactory = new InfrastructureFactoryImpl();
@@ -28,10 +31,21 @@ public abstract class AbsScaler {
 	protected MonitoringFactoryImpl mFactory = new MonitoringFactoryImpl();
 	protected PlatformFactoryImpl pFactory = new PlatformFactoryImpl();
 	protected PlacementFactoryImpl placeFactory = new PlacementFactoryImpl();
+	protected OssweruntimeFactoryImpl osFactory = new OssweruntimeFactoryImpl();
 	protected Resource runtimeModel;
 	protected Connector conn;
 	protected Path runtimePath;
 	
+	static List<String> interfaces = new ArrayList<String>() {
+		{
+			add("10.254.1.12");
+			add("10.254.1.22");
+			add("10.254.1.32");
+			add("10.254.1.42");
+			add("10.254.1.52");
+		}
+	};
+	
 	
 	protected org.eclipse.cmf.occi.core.Resource getResourceById(EList<org.eclipse.cmf.occi.core.Resource> eList, String string) {
 		for(org.eclipse.cmf.occi.core.Resource res: eList ) {
diff --git a/src/main/java/de/ugoe/cs/rwm/mocci/DownScaler.java b/src/main/java/de/ugoe/cs/rwm/mocci/DownScaler.java
index 0d20cebb47f515e63139fe54ae489979a745a1ea..118c8335508ea06fcd82a66d5c2062ba2a89c35b 100644
--- a/src/main/java/de/ugoe/cs/rwm/mocci/DownScaler.java
+++ b/src/main/java/de/ugoe/cs/rwm/mocci/DownScaler.java
@@ -11,28 +11,45 @@
 package de.ugoe.cs.rwm.mocci;
 
 import java.nio.file.Path;
+import java.util.List;
 
 import org.eclipse.cmf.occi.core.Configuration;
 import org.eclipse.cmf.occi.core.Link;
+import org.eclipse.cmf.occi.core.MixinBase;
 import org.eclipse.cmf.occi.infrastructure.Compute;
+import org.eclipse.cmf.occi.infrastructure.Ipnetworkinterface;
+import org.eclipse.cmf.occi.infrastructure.Networkinterface;
 import org.eclipse.emf.common.util.BasicEList;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
 import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.epsilon.emc.emf.CachedResourceSet;
 import org.modmacao.occi.platform.Component;
 
 import de.ugoe.cs.rwm.docci.ModelUtility;
 import de.ugoe.cs.rwm.docci.connector.Connector;
+import de.ugoe.cs.rwm.docci.executor.MartExecutor;
+import monitoring.Datagatherer;
+import monitoring.Dataprocessor;
 import monitoring.Monitorableproperty;
 
 public class DownScaler extends AbsScaler {
 
+	private List<Link> linksToDelete;
+	private List<org.eclipse.cmf.occi.core.Resource> resourcesToDelete;
+	
 	public DownScaler(Connector conn, Path runtimePath) {
 		this.conn = conn; 
 		this.runtimePath = runtimePath;
+		this.linksToDelete = new BasicEList<Link>();
+		this.resourcesToDelete = new BasicEList<org.eclipse.cmf.occi.core.Resource>();
 	}
 	
 	public Resource downScaleNodes() {
+		CachedResourceSet.getCache().clear();
 		EList<EObject> toDelete = new BasicEList<EObject>();
 		runtimeModel = ModelUtility.loadOCCIintoEMFResource(conn.loadRuntimeModel(runtimePath));
 		Configuration config = ((Configuration) runtimeModel.getContents().get(0));
@@ -46,8 +63,8 @@ public class DownScaler extends AbsScaler {
 					if(monProp != null && monProp.getMonitoringResult() != null) {
 						if(monProp.getMonitoringResult().equals("None")) {
 							System.out.println("      VM with None CPU utilization found: " + comp.getId());
-							toDelete.add(comp);
-							toDelete.addAll(linksAndComponents(comp));
+							addConnectedLinksAndComponents(comp);
+							resourcesToDelete.add(comp);
 							System.out.println("      Deleting Entities Around: " + comp.getTitle() +" ("+comp.getId()+")");
 							downScale = true;
 							break;
@@ -60,19 +77,41 @@ public class DownScaler extends AbsScaler {
 		if(downScale == false) {
 			System.out.println("      Every Compute busy/Only one worker! Skipping downScale!");
 		}
+
+		for(Link link: linksToDelete) {
+			System.out.println("Deleting: " + link);
+			System.out.println(link);
+			EcoreUtil.delete(link);
+		}
+		
+	
+		System.out.println(config.getResources());
+		
+		System.out.println("");
+		
+		
+		
+		config.getResources().removeAll(resourcesToDelete);
+		
+		for(org.eclipse.cmf.occi.core.Resource res: resourcesToDelete) {
+			System.out.println(res);
+			EcoreUtil.delete(res);
+		}
+		Resource rM = runtimeModel;
+		System.out.println(rM);
 		
-		runtimeModel.getContents().removeAll(toDelete);
-		return runtimeModel;
+		System.out.println("");
+		System.out.println(config.getResources());
+		CachedResourceSet.getCache().clear();
+		return rM;
 		
 	}
 
+
 	private Monitorableproperty getAttachedCPUMonProp(Compute comp) {
 		for(Link link: comp.getRlinks()) {
-			//System.out.println("LINK: " + link);
 			if(link instanceof  Monitorableproperty) {
 				Monitorableproperty monProp = (Monitorableproperty) link;
-				//System.out.println("MonPROP: " + monProp);
-				//System.out.println("Prop: " + monProp.getMonitoringProperty());
 				if(monProp.getMonitoringProperty().equals("CPU")) {
 					return monProp;
 				}
@@ -81,21 +120,39 @@ public class DownScaler extends AbsScaler {
 		return null;
 	}
 
-	private EList<EObject> linksAndComponents(Compute comp) {
-		EList<EObject> toDelete = new BasicEList<EObject>();
-		toDelete.addAll(comp.getLinks());
-		toDelete.addAll(comp.getRlinks());
+	private void addConnectedLinksAndComponents(Compute comp) {
+		linksToDelete.addAll(comp.getLinks());
+		linksToDelete.addAll(comp.getRlinks());
 		
 		for(Link link: comp.getRlinks()) {
 			if(link.getSource() instanceof Component) {
-				toDelete.add(link.getSource());
+				System.out.println(link);
+				resourcesToDelete.add(link.getSource());
+				linksToDelete.addAll(link.getSource().getLinks());
+				linksToDelete.addAll(link.getSource().getRlinks());
 			}
 			if(link instanceof Monitorableproperty) {
-				toDelete.add(link.getSource());
+				resourcesToDelete.add(link.getSource());
+			}
+		}
+		
+		for(Link link: comp.getLinks()) {
+			System.out.println(link);
+			if(link instanceof Networkinterface) {
+				Networkinterface nwi = (Networkinterface) link;
+				System.out.println(nwi.getAttributes());
+				for(MixinBase mixB: nwi.getParts()) {
+					if(mixB instanceof Ipnetworkinterface) {
+						System.out.println(mixB);
+						Ipnetworkinterface ipnwi = (Ipnetworkinterface) mixB;
+						if(ipnwi.getOcciNetworkinterfaceAddress().startsWith("100.254.1")) {
+							interfaces.add(ipnwi.getOcciNetworkinterfaceAddress());
+							System.out.println("Addin ip to interface list");	
+						}
+					}
+				}
 			}
 		}
-
-		return toDelete;
 	}
 
 }
diff --git a/src/main/java/de/ugoe/cs/rwm/mocci/InitialDeployment.java b/src/main/java/de/ugoe/cs/rwm/mocci/InitialDeployment.java
index 8a18857553da883cd93188aeeac3d51bea054eb8..da69966882ceb264f0f0689fc6444902d63a2d2e 100644
--- a/src/main/java/de/ugoe/cs/rwm/mocci/InitialDeployment.java
+++ b/src/main/java/de/ugoe/cs/rwm/mocci/InitialDeployment.java
@@ -24,6 +24,7 @@ import de.ugoe.cs.rwm.docci.MartDeployer;
 import de.ugoe.cs.rwm.docci.ModelUtility;
 import de.ugoe.cs.rwm.docci.connector.Connector;
 import de.ugoe.cs.rwm.docci.connector.LocalhostConnector;
+import de.ugoe.cs.rwm.docci.connector.MartConnector;
 import de.ugoe.cs.rwm.docci.executor.MartExecutor;
 import de.ugoe.cs.rwm.tocci.Transformator;
 import de.ugoe.cs.rwm.tocci.TransformatorFactory;
@@ -38,6 +39,7 @@ public class InitialDeployment {
 	
 	public static void main (String args[]) {
 		Connector conn = new LocalhostConnector("localhost", 8080, "ubuntu");
+		//Connector conn = new MartConnector("192.168.35.45", 8080, "ubuntu", "~/key.pem");
 		RegistryAndLoggerSetup.setup();
 		deploy(conn);
 	}
diff --git a/src/main/java/de/ugoe/cs/rwm/mocci/MAPE.java b/src/main/java/de/ugoe/cs/rwm/mocci/MAPE.java
index 6bf3f352f323cae7fed8b40cfe33515dcfef7081..59fe5b2884c6d86b4150e09a22b05bc0f6f0e0e6 100644
--- a/src/main/java/de/ugoe/cs/rwm/mocci/MAPE.java
+++ b/src/main/java/de/ugoe/cs/rwm/mocci/MAPE.java
@@ -16,9 +16,11 @@ import org.eclipse.emf.ecore.resource.Resource;
 import org.json.JSONArray;
 
 import de.ugoe.cs.rwm.docci.MartDeployer;
+import de.ugoe.cs.rwm.docci.ModelUtility;
 import de.ugoe.cs.rwm.docci.connector.Connector;
 import de.ugoe.cs.rwm.docci.connector.LocalhostConnector;
 import de.ugoe.cs.rwm.docci.executor.MartExecutor;
+import org.modmacao.occi.platform.Component;
 
 /**Making javadoc happy.
  * @author erbel
@@ -30,6 +32,7 @@ public class MAPE {
 	static MartDeployer deployer = new MartDeployer(conn);
 	static MartExecutor executor = new MartExecutor(conn);
 	static Resource runtimeModel;
+	static Component newComp;
 	static int interval = 10000;
 	
 	/**Making javadoc happy.
@@ -96,6 +99,9 @@ public static void execute(Resource runtimeModel) {
 		System.out.println("Execute: Deploying adjusted Model");
 		deployer.deploy(runtimeModel);
 		
+		if(newComp != null) {
+			executor.executeOperation("POST", newComp, ModelUtility.getAction(newComp, "start"));
+		}
 	}
 
 
diff --git a/src/main/java/de/ugoe/cs/rwm/mocci/RegistryAndLoggerSetup.java b/src/main/java/de/ugoe/cs/rwm/mocci/RegistryAndLoggerSetup.java
index b284bc94f10645625813587836e5bf2c7770b70a..bc45b7891fd82ab76883845f56f8a781b1e041c1 100644
--- a/src/main/java/de/ugoe/cs/rwm/mocci/RegistryAndLoggerSetup.java
+++ b/src/main/java/de/ugoe/cs/rwm/mocci/RegistryAndLoggerSetup.java
@@ -50,7 +50,7 @@ public class RegistryAndLoggerSetup {
 		Logger.getLogger(ModelRetriever.class.getName()).setLevel(Level.OFF);
 		Logger.getLogger(Comparator.class.getName()).setLevel(Level.OFF);
 		Logger.getLogger(Provisioner.class.getName()).setLevel(Level.OFF);
-		Logger.getLogger(Deployer.class.getName()).setLevel(Level.OFF);
+		Logger.getLogger(Deployer.class.getName()).setLevel(Level.INFO);
 		Logger.getLogger(Deprovisioner.class.getName()).setLevel(Level.OFF);
 		Logger.getLogger(Executor.class.getName()).setLevel(Level.INFO);
 		Logger.getLogger(MartAppDeployerSlave.class.getName()).setLevel(Level.OFF);
diff --git a/src/main/java/de/ugoe/cs/rwm/mocci/UpScaler.java b/src/main/java/de/ugoe/cs/rwm/mocci/UpScaler.java
index 88ccfc2e24cc14496d8e8d40e4d07802fb8f1ce6..f90b1a6957ccbf4324167b8b56df4ecee9c2cfb0 100644
--- a/src/main/java/de/ugoe/cs/rwm/mocci/UpScaler.java
+++ b/src/main/java/de/ugoe/cs/rwm/mocci/UpScaler.java
@@ -11,11 +11,16 @@
 package de.ugoe.cs.rwm.mocci;
 
 import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.eclipse.cmf.occi.core.AttributeState;
 import org.eclipse.cmf.occi.core.Configuration;
+import org.eclipse.cmf.occi.core.Mixin;
+import org.eclipse.cmf.occi.core.MixinBase;
 import org.eclipse.cmf.occi.infrastructure.Compute;
 import org.eclipse.cmf.occi.infrastructure.ComputeStatus;
+import org.eclipse.cmf.occi.infrastructure.Ipnetworkinterface;
 import org.eclipse.cmf.occi.infrastructure.Networkinterface;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.modmacao.occi.platform.Component;
@@ -28,8 +33,10 @@ import de.ugoe.cs.rwm.docci.connector.Connector;
 import monitoring.Datagatherer;
 import monitoring.Dataprocessor;
 import monitoring.Monitorableproperty;
+import monitoring.Occiresultprovider;
 import monitoring.Resultprovider;
 import monitoring.Sensor;
+import ossweruntime.Ubuntu_xenialxerus;
 
 public class UpScaler extends AbsScaler {	
 	
@@ -48,8 +55,8 @@ public class UpScaler extends AbsScaler {
 		Component worker 	= 	addWorkerComponent(config, comp);
 		Sensor sens 		= 	addSensor(config, comp);
 		Datagatherer dg 	= 	addDataGatherer(config, comp, sens);
-		Dataprocessor dp 	= 	addDataProcessor(config, monVM, sens, dg);
-		Resultprovider rp 	= 	addResultProvider(config, monVM, sens, dp);
+		Dataprocessor dp 	= 	addDataProcessor(config, comp, sens, dg);
+		Resultprovider rp 	= 	addResultProvider(config, comp, sens, dp);
 		
 		return runtimeModel;		
 		}
@@ -57,18 +64,42 @@ public class UpScaler extends AbsScaler {
 	private Compute addCompute(Configuration config) {
 		System.out.println("         Adding Compute Node to Model");
 		Compute comp = iFactory.createCompute();
-		comp.setTitle("hadoop-worker-additional");
 		comp.setOcciComputeState(ComputeStatus.ACTIVE);
+		
 		AttributeState attr = factory.createAttributeState();
 		attr.setName("occi.compute.state");
 		attr.setValue("active");
 		comp.getAttributes().add(attr);
 		config.getResources().add(comp);
-		//executor.executeOperation("PUT", comp, null);
+		
+		Ubuntu_xenialxerus mixOs = osFactory.createUbuntu_xenialxerus();
+		comp.getParts().add(mixOs);
 		
 		Networkinterface nwi = iFactory.createNetworkinterface();
 		nwi.setTarget(getResourceById(config.getResources(), "urn:uuid:29d78078-fb4c-47aa-a9af-b8aaf3339591"));
 		nwi.setSource(comp);
+		Ipnetworkinterface mixB = iFactory.createIpnetworkinterface();
+		String ip = interfaces.get(0);
+		mixB.setOcciNetworkinterfaceAddress(ip);
+		nwi.getParts().add(mixB);
+		AttributeState ipAttr = factory.createAttributeState();
+		attr.setName("occi.networkinterface.address");
+		attr.setValue(ip);
+		nwi.getAttributes().add(attr);
+		
+		String ipadjusted = ip.replace(".", "-");
+		comp.setTitle("hadoop-worker-additional-" + ipadjusted);
+		
+		AttributeState hostname = factory.createAttributeState();
+		attr.setName("occi.compute.hostname");
+		attr.setValue("hadoop-worker-additional-" + ipadjusted);
+		comp.getAttributes().add(hostname);
+		
+		
+		System.out.println("             Ip in Hadoop Network: " + interfaces.get(0));
+		interfaces.remove(0);
+		
+		
 		
 		Networkinterface nwimon = iFactory.createNetworkinterface();
 		nwimon.setTarget(getResourceById(config.getResources(), "urn:uuid:7a9fca2c-24fb-473c-aa9c-8dc9e68a432a"));
@@ -80,7 +111,7 @@ public class UpScaler extends AbsScaler {
 		System.out.println("         Adding Worker Component to Model");
 		Component worker = pFactory.createComponent();
 		worker.setTitle("worker-component");
-		worker.setOcciComponentState(Status.ACTIVE);
+		//worker.setOcciComponentState(Status.ACTIVE);
 		config.getResources().add(worker);
 		
 		AttributeState attr = factory.createAttributeState();
@@ -88,6 +119,10 @@ public class UpScaler extends AbsScaler {
 		attr.setValue(worker.getId());
 		worker.getAttributes().add(attr);
 		
+		MixinBase mBase = factory.createMixinBase();
+		mBase.setMixin(getMixin("hworker", config));
+		worker.getParts().add(mBase);
+		
 		Placementlink pLink = placeFactory.createPlacementlink();
 		pLink.setSource(worker);
 		pLink.setTarget(comp);
@@ -95,15 +130,15 @@ public class UpScaler extends AbsScaler {
 		Componentlink compLink = pFactory.createComponentlink();
 		compLink.setSource(getResourceById(config.getResources(), "urn:uuid:a4888ba9-a0ea-48f2-a29e-901c876ab42d"));
 		compLink.setTarget(worker);
+		MAPE.newComp = worker;
 		return worker;
 	}
-	
+
 	private Sensor addSensor(Configuration config, Compute comp) {
 		System.out.println("         Adding Sensor to Model");
 		Sensor sens = mFactory.createSensor();
 		sens.setTitle("CPUSensor");
 		config.getResources().add(sens);
-		//executor.executeOperation("PUT", sens, null);
 		
 		AttributeState attr = factory.createAttributeState();
 		attr.setName("occi.core.id");
@@ -119,7 +154,6 @@ public class UpScaler extends AbsScaler {
 		mp.getAttributes().add(attrProp);
 		mp.setSource(sens);
 		mp.setTarget(comp);
-		//executor.executeOperation("PUT", mp, null);
 		
 		return sens;
 	}
@@ -135,11 +169,13 @@ public class UpScaler extends AbsScaler {
 		attr.setValue(dg.getId());
 		dg.getAttributes().add(attr);
 		
-		//executor.executeOperation("PUT", dg, null);
+		MixinBase mBase = factory.createMixinBase();
+		mBase.setMixin(getMixin("cpugatherer", config));
+		dg.getParts().add(mBase);
+		
 		Componentlink c1 = pFactory.createComponentlink();
 		c1.setSource(sens);
 		c1.setTarget(dg);
-		//executor.executeOperation("PUT", c1, null);
 		
 		Placementlink pl = placeFactory.createPlacementlink();
 		pl.setSource(dg);
@@ -159,6 +195,10 @@ public class UpScaler extends AbsScaler {
 		attr.setValue(dp.getId());
 		dp.getAttributes().add(attr);
 		
+		MixinBase mBase = factory.createMixinBase();
+		mBase.setMixin(getMixin("cpuprocessorlocal", config));
+		dp.getParts().add(mBase);
+		
 		Componentlink c2 = pFactory.createComponentlink();
 		c2.setSource(sens);
 		c2.setTarget(dp);
@@ -177,6 +217,19 @@ public class UpScaler extends AbsScaler {
 		rp.setTitle("CPUProvider");
 		config.getResources().add(rp);
 		
+		Occiresultprovider orp = mFactory.createOcciresultprovider();
+		orp.setResultProviderEndpoint("192.168.35.45:8080");
+		AttributeState attrOP = factory.createAttributeState();
+		attrOP.setName("result.provider.endpoint");
+		attrOP.setValue("192.168.35.45:8080");
+		rp.getAttributes().add(attrOP);
+		
+		rp.getParts().add(orp);
+		
+		MixinBase mBase = factory.createMixinBase();
+		mBase.setMixin(getMixin("cpupublisher", config));
+		rp.getParts().add(mBase);
+		
 		AttributeState attr = factory.createAttributeState();
 		attr.setName("occi.core.id");
 		attr.setValue(rp.getId());
@@ -196,4 +249,13 @@ public class UpScaler extends AbsScaler {
 		
 		return rp;
 	}
+	
+	private Mixin getMixin(String string, Configuration config) {
+		for(Mixin mix: config.getMixins()) {
+			if(mix.getTerm().equals(string)) {
+				return mix;
+			}
+		}
+		return null;
+	}
 }