Index: DCWoRMS/branches/coolemall/src/schedframe/resources/computing/coolemall/NodeGroup.java
===================================================================
--- DCWoRMS/branches/coolemall/src/schedframe/resources/computing/coolemall/NodeGroup.java	(revision 1247)
+++ DCWoRMS/branches/coolemall/src/schedframe/resources/computing/coolemall/NodeGroup.java	(revision 1299)
@@ -1,4 +1,5 @@
 package schedframe.resources.computing.coolemall;
 
+import java.util.ArrayList;
 import java.util.List;
 
@@ -8,4 +9,8 @@
 import schedframe.resources.computing.Processor;
 import schedframe.resources.computing.description.ComputingResourceDescription;
+import schedframe.resources.computing.description.ResourceDescription;
+import schedframe.resources.devices.Device;
+import schedframe.resources.devices.Fan;
+import test.Node_Fan_Mapping;
 
 public class NodeGroup extends ComputingResource{
@@ -13,4 +18,5 @@
 	public NodeGroup(ComputingResourceDescription resDesc) {
 		super(resDesc);
+		initNodes_FansMapping(resDesc);
 	}
 
@@ -25,3 +31,24 @@
 	}
 
+	
+	private void initNodes_FansMapping(ComputingResourceDescription resDesc){
+		Node_Fan_Mapping.init();
+		for(Device dev: this.getResourceCharacteristic().getDevices()){
+			if(dev.getType().equals(StandardResourceType.Fan) || dev.getType().equals(StandardResourceType.Inlet) | dev.getType().equals(StandardResourceType.Outlet)){
+				Fan fan = (Fan) dev;
+				List<String> chilledResources = new ArrayList<String>();
+				for(ResourceDescription nodeDesc: resDesc.getChildren()){
+					String nodeName = this.getFullName() + "/" + nodeDesc.getId();
+					if(!Node_Fan_Mapping.getNode_fan().containsKey(nodeName)){
+						chilledResources.add(nodeName);
+					} else if(Node_Fan_Mapping.getNode_fan().get(nodeName).equals(fan.getFullName())){
+						chilledResources.add(nodeName);
+					} else {
+						//if mapping present but there is no match do nothing
+					}
+				}
+				fan.setChilledResources(chilledResources);
+			}
+		}
+	}
 }
Index: DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/ui/ProcessorPowerInterface.java
===================================================================
--- DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/ui/ProcessorPowerInterface.java	(revision 1281)
+++ DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/ui/ProcessorPowerInterface.java	(revision 1299)
@@ -20,5 +20,5 @@
 		super(resource, pp);
 		currentPowerState = StandardPowerStateName.ON;
-		currentPState = getHighestPState();
+		currentPState = getLowestPState();
 	}
 	
Index: DCWoRMS/branches/coolemall/src/schedframe/resources/computing/ComputingResource.java
===================================================================
--- DCWoRMS/branches/coolemall/src/schedframe/resources/computing/ComputingResource.java	(revision 1207)
+++ DCWoRMS/branches/coolemall/src/schedframe/resources/computing/ComputingResource.java	(revision 1299)
@@ -3,4 +3,5 @@
 import gridsim.GridSimTags;
 import gridsim.dcworms.DCWormsTags;
+import gridsim.dcworms.filter.ResourceEventFilter;
 
 import java.util.ArrayList;
@@ -24,4 +25,8 @@
 import schedframe.resources.computing.profiles.energy.EnergyEventType;
 import schedframe.resources.computing.profiles.energy.EnergyExtension;
+import schedframe.resources.computing.profiles.load.LoadExtension;
+import schedframe.resources.computing.profiles.load.ResourceLoadCalendar;
+import schedframe.resources.computing.profiles.load.TimestampUtilization;
+import schedframe.resources.computing.profiles.load.ui.LoadInterface;
 import schedframe.resources.computing.properties.DefaultPropertiesBuilder;
 import schedframe.resources.computing.properties.PropertiesDirector;
@@ -34,4 +39,5 @@
 import schedframe.resources.devices.PhysicalResource;
 import schedframe.scheduling.Scheduler;
+import simulator.DataCenterWorkloadSimulator;
 
 public class ComputingResource extends PhysicalResource{
@@ -51,4 +57,5 @@
 		this.extensionList = new ExtensionListImpl(1);
 		initCharacteristics(resDesc);
+		accept(new LoadExtension(resDesc.getLoadProfile(), this));
 		accept(new EnergyExtension.Builder().resource(this).powerProfile(resDesc.getPowerProfile()).airFlowProfile(resDesc.getAirThroughputProfile()).thermalProfile(resDesc.getThermalProfile()).build());	
 	}
@@ -67,4 +74,7 @@
 	public void setParent(ComputingResource newParent) {
 		parent = newParent;
+		if(this.getLoadInterface().getLoadCalendar().getLoadDistribution().size() == 0){
+			this.getLoadInterface().getLoadCalendar().getLoadDistribution().addAll(parent.getLoadInterface().getLoadCalendar().getLoadDistribution());
+		}
 	}
 
@@ -220,5 +230,5 @@
 		public void handleResourceEvent(Event event){
 			if (extensionList != null) {
-				for (Extension extension : extensionList) {
+				for (Extension extension: extensionList) {
 					if (extension.supportsEvent(event)) {
 						extension.handleEvent(event);
@@ -227,7 +237,7 @@
 				
 				for (Device device: ((ComputingResourceCharacteristics)resourceCharacteristic).getDevices()) {
-					for (Extension extension : device.getExtensionList()) {
+					for (Extension extension: device.getExtensionList()) {
 						if (extension.supportsEvent(event)) {
-							//extension.handleEvent(event);
+							extension.handleEvent(event);
 						}
 					}
@@ -242,4 +252,6 @@
 			if(scheduler != null && (parent != null && scheduler != parent.getScheduler())/*scheduler.getResources().contains(this)*/){
 				String src = event.getSource() != null ? event.getSource() : name;
+				ResourceEventFilter filter = new ResourceEventFilter(src.hashCode(), DCWormsTags.UPDATE_PROCESSING);
+				scheduler.sim_cancel(filter, null);
 				scheduler.sendInternal(GridSimTags.SCHEDULE_NOW, DCWormsTags.UPDATE_PROCESSING, src);
 			} else if(parent != null)
@@ -274,4 +286,13 @@
 		rec.execute(event);
 		
+		LoadInterface li = getLoadInterface();
+		if(li != null){
+			ResourceLoadCalendar rlc = li.getLoadCalendar();
+			LinkedList<TimestampUtilization> ll = rlc.getLoadDistribution();
+			for(TimestampUtilization tu: ll){
+				DataCenterWorkloadSimulator.getEventManager().sendToResource(getFullName(), tu.getStartTime(), new EnergyEvent(EnergyEventType.RESOURCE_UTILIZATION_CHANGED, getFullName()));
+				DataCenterWorkloadSimulator.getEventManager().sendToResource(getFullName(), tu.getEndTime(), new EnergyEvent(EnergyEventType.RESOURCE_UTILIZATION_CHANGED, getFullName()));
+			}					
+		}
 		//alternative way
 		//getEventHandler().handleResourceEvent(new EnergyEvent(EnergyEventType.AIRFLOW_STATE_CHANGED, "Resource controller"));
