*** empty log message ***
diff --git a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/NestedListeningTest.java b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/NestedListeningTest.java
index a0fce33..80458d6 100644
--- a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/NestedListeningTest.java
+++ b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/NestedListeningTest.java
@@ -20,9 +20,9 @@
 public class NestedListeningTest extends TestCase {
 
 	public void testListeners1() {
-		TestListener aL = new TestListener();
-		TestListener bL = new TestListener();
-		TestListener cL = new TestListener();
+		WTPTestListener aL = new WTPTestListener();
+		WTPTestListener bL = new WTPTestListener();
+		WTPTestListener cL = new WTPTestListener();
 
 		A a = new A();
 		B b = new B();
diff --git a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/NestingTest.java b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/NestingTest.java
index 1ce5d1c..58985ab 100644
--- a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/NestingTest.java
+++ b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/NestingTest.java
@@ -10,6 +10,11 @@
  *******************************************************************************/
 package org.eclipse.wst.common.frameworks.operations.tests;
 
+import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.internal.operations.WTPDataModelBridgeProvider;
+import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel;
+
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
@@ -294,6 +299,23 @@
 		assertEquals("ccc", b.getProperty(C.P));
 		assertEquals("ccc", c.getProperty(C.P));
 	}
+	
+	public void testNestingOlderUnderNew() throws Exception{
+		IDataModel aDM = DataModelFactory.createDataModel(new org.eclipse.wst.common.frameworks.datamodel.tests.A());
+		IDataModel bDM = DataModelFactory.createDataModel(new WTPDataModelBridgeProvider(){
+			protected WTPOperationDataModel initWTPDataModel() {
+				B b = new B();
+				b.addNestedModel("c", new C());
+				return b;
+			}
+		});
+		aDM.addNestedModel("b", bDM);
+		aDM.setProperty(org.eclipse.wst.common.frameworks.datamodel.tests.A.P, "aaa");
+		aDM.setProperty(B.P, "bbb");
+		aDM.setProperty(C.P, "ccc");
+		
+		
+	}
 
 
 }
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/SimpleDataModelTest.java b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/SimpleDataModelTest.java
index d2e0d2b..426b025 100644
--- a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/SimpleDataModelTest.java
+++ b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/SimpleDataModelTest.java
@@ -12,8 +12,14 @@
 
 import java.util.List;
 
+import junit.framework.Assert;
 import junit.framework.TestCase;
 
+import org.eclipse.wst.common.frameworks.datamodel.DataModelEvent;
+import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
+import org.eclipse.wst.common.frameworks.datamodel.DataModelPropertyDescriptor;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.internal.operations.WTPDataModelBridgeProvider;
 import org.eclipse.wst.common.frameworks.internal.operations.WTPOperation;
 import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel;
 import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModelEvent;
@@ -109,33 +115,53 @@
 		}
 	};
 
-	private DM dm;
+	private class DM_Provider extends WTPDataModelBridgeProvider {
+		protected WTPOperationDataModel initWTPDataModel() {
+			return wtpDM;
+		}
+	}
+
+	private DM wtpDM;
+	private IDataModel dm;
+	private WTPTestListener wtpDML;
 	private TestListener dmL;
 
 	protected void setUp() throws Exception {
 		super.setUp();
-		dm = new DM();
+		wtpDM = new DM();
+		wtpDML = new WTPTestListener();
+		wtpDM.addListener(wtpDML);
+		dm = DataModelFactory.createDataModel(new DM_Provider());
 		dmL = new TestListener();
 		dm.addListener(dmL);
 	}
 
 	public void testPropertyDescriptors() {
-		WTPPropertyDescriptor[] descriptors = dm.getValidPropertyDescriptors(DM.INT_PROP2);
-		for (int i = 0; i < descriptors.length; i++) {
+		WTPPropertyDescriptor[] wtpDescriptors = wtpDM.getValidPropertyDescriptors(DM.INT_PROP2);
+		DataModelPropertyDescriptor[] descriptors = dm.getValidPropertyDescriptors(DM.INT_PROP2);
+		for (int i = 0; i < wtpDescriptors.length; i++) {
 			int value = i + 1;
+			assertEquals(value, ((Integer) wtpDescriptors[i].getPropertyValue()).intValue());
+			assertEquals("" + value, wtpDescriptors[i].getPropertyDescription());
 			assertEquals(value, ((Integer) descriptors[i].getPropertyValue()).intValue());
 			assertEquals("" + value, descriptors[i].getPropertyDescription());
 		}
+		wtpDescriptors = wtpDM.getValidPropertyDescriptors(DM.INT_PROP3);
 		descriptors = dm.getValidPropertyDescriptors(DM.INT_PROP3);
 		String[] descriptions = new String[]{"one", "two", "three"};
-		for (int i = 0; i < descriptors.length; i++) {
+		for (int i = 0; i < wtpDescriptors.length; i++) {
 			int value = i + 1;
+			assertEquals(value, ((Integer) wtpDescriptors[i].getPropertyValue()).intValue());
+			assertEquals(descriptions[i], wtpDescriptors[i].getPropertyDescription());
 			assertEquals(value, ((Integer) descriptors[i].getPropertyValue()).intValue());
 			assertEquals(descriptions[i], descriptors[i].getPropertyDescription());
 		}
+		wtpDescriptors = wtpDM.getValidPropertyDescriptors(DM.INT_PROP4);
 		descriptors = dm.getValidPropertyDescriptors(DM.INT_PROP4);
-		for (int i = 0; i < descriptors.length; i++) {
+		for (int i = 0; i < wtpDescriptors.length; i++) {
 			int value = i + 1;
+			assertEquals(value, ((Integer) wtpDescriptors[i].getPropertyValue()).intValue());
+			assertEquals(descriptions[i], wtpDescriptors[i].getPropertyDescription());
 			assertEquals(value, ((Integer) descriptors[i].getPropertyValue()).intValue());
 			assertEquals(descriptions[i], descriptors[i].getPropertyDescription());
 		}
@@ -143,136 +169,199 @@
 
 
 	public void testDefaults() {
+		assertEquals(true, wtpDM.getBooleanProperty(DM.BOOLEAN_PROP));
 		assertEquals(true, dm.getBooleanProperty(DM.BOOLEAN_PROP));
+		assertEquals(true, ((Boolean) wtpDM.getProperty(DM.BOOLEAN_PROP)).booleanValue());
 		assertEquals(true, ((Boolean) dm.getProperty(DM.BOOLEAN_PROP)).booleanValue());
+		assertEquals(10, wtpDM.getIntProperty(DM.INT_PROP));
 		assertEquals(10, dm.getIntProperty(DM.INT_PROP));
+		assertEquals(10, ((Integer) wtpDM.getProperty(DM.INT_PROP)).intValue());
 		assertEquals(10, ((Integer) dm.getProperty(DM.INT_PROP)).intValue());
+		assertEquals("foo10true", (String) wtpDM.getProperty(DM.STRING_PROP));
 		assertEquals("foo10true", (String) dm.getProperty(DM.STRING_PROP));
+		assertEquals("foo10true", wtpDM.getStringProperty(DM.STRING_PROP));
 		assertEquals("foo10true", dm.getStringProperty(DM.STRING_PROP));
 	}
 
-	public void testFiringEvents() {
-		dmL.clearEvents();
-		dm.notifyDefaultChange(DM.INT_PROP2);
-		List events = dmL.getEvents();
-		assertEquals(1, events.size());
-		WTPOperationDataModelEvent event = (WTPOperationDataModelEvent) events.get(0);
-		assertEquals(DM.INT_PROP2, event.getPropertyName());
-		assertEquals(WTPOperationDataModelEvent.PROPERTY_CHG, event.getFlag());
-
-		dmL.clearEvents();
-		dm.notifyValidValuesChange(DM.INT_PROP2);
-		events = dmL.getEvents();
-		assertEquals(1, events.size());
-		event = (WTPOperationDataModelEvent) events.get(0);
-		assertEquals(DM.INT_PROP2, event.getPropertyName());
-		assertEquals(WTPOperationDataModelEvent.VALID_VALUES_CHG, event.getFlag());
+	private Object verifyEventOccurred(String propertyName, int type, Object value, List eventList) {
+		for (int i = 0; i < eventList.size(); i++) {
+			Object obj = eventList.get(i);
+			if (obj instanceof WTPOperationDataModelEvent) {
+				WTPOperationDataModelEvent eventWTP = (WTPOperationDataModelEvent) obj;
+				if (eventWTP.getPropertyName().equals(propertyName) && eventWTP.getFlag() == (type)) {
+					if (null == value || value.equals(eventWTP.getProperty())) {
+						eventList.remove(obj);
+						return obj;
+					}
+				}
+			} else {
+				DataModelEvent event = (DataModelEvent) obj;
+				if (event.getPropertyName().equals(propertyName) && event.getFlag() == (type)) {
+					if (null == value || value.equals(event.getProperty())) {
+						eventList.remove(obj);
+						return obj;
+					}
+				}
+			}
+		}
+		Assert.fail("Event not found");
+		return null;
 	}
 
-	public void testSimpleSetEvents() {
+	public void testFiringEvents() {
+		wtpDML.clearEvents();
 		dmL.clearEvents();
-		dm.setIntProperty(DM.INT_PROP2, 100);
+		wtpDM.notifyDefaultChange(DM.INT_PROP2);
+		List eventsWTP = wtpDML.getEvents();
 		List events = dmL.getEvents();
-		assertEquals(1, events.size());
-		WTPOperationDataModelEvent event = (WTPOperationDataModelEvent) events.get(0);
-		assertEquals(DM.INT_PROP2, event.getPropertyName());
-		assertEquals(WTPOperationDataModelEvent.PROPERTY_CHG, event.getFlag());
-		assertEquals(100, dm.getIntProperty(DM.INT_PROP2));
+		verifyEventOccurred(DM.INT_PROP2, WTPOperationDataModelEvent.PROPERTY_CHG, null, eventsWTP);
+		verifyEventOccurred(DM.INT_PROP2, DataModelEvent.VALUE_CHG, null, events);
 
+		wtpDML.clearEvents();
 		dmL.clearEvents();
-		dm.setIntProperty(DM.INT_PROP2, 100);
+		wtpDM.notifyValidValuesChange(DM.INT_PROP2);
+		eventsWTP = wtpDML.getEvents();
 		events = dmL.getEvents();
-		assertEquals(0, events.size());
-
-		dmL.clearEvents();
-		dm.setIntProperty(DM.INT_PROP2, 101);
-		events = dmL.getEvents();
+		assertEquals(1, eventsWTP.size());
 		assertEquals(1, events.size());
-		event = (WTPOperationDataModelEvent) events.get(0);
-		assertEquals(DM.INT_PROP2, event.getPropertyName());
+
+		verifyEventOccurred(DM.INT_PROP2, WTPOperationDataModelEvent.VALID_VALUES_CHG, null, eventsWTP);
+		verifyEventOccurred(DM.INT_PROP2, DataModelEvent.VALID_VALUES_CHG, null, events);
+	}
+
+	public void testSimpleSetEvents() throws Exception {
+		for (int i = 0; i < 2; i++) {
+			if (i != 0) {
+				setUp();
+			}
+
+			wtpDML.clearEvents();
+			dmL.clearEvents();
+			if (i == 0) {
+				wtpDM.setIntProperty(DM.INT_PROP2, 100);
+			} else {
+				dm.setIntProperty(DM.INT_PROP2, 100);
+			}
+			List eventsWTP = wtpDML.getEvents();
+			List events = dmL.getEvents();
+
+			verifyEventOccurred(DM.INT_PROP2, WTPOperationDataModelEvent.PROPERTY_CHG, new Integer(100), eventsWTP);
+			verifyEventOccurred(DM.INT_PROP2, DataModelEvent.VALUE_CHG, new Integer(100), events);
+
+			wtpDML.clearEvents();
+			dmL.clearEvents();
+
+			if (i == 0) {
+				wtpDM.setIntProperty(DM.INT_PROP2, 100);
+			} else {
+				dm.setIntProperty(DM.INT_PROP2, 100);
+			}
+			eventsWTP = wtpDML.getEvents();
+			events = dmL.getEvents();
+			assertEquals(0, eventsWTP.size());
+			assertEquals(0, events.size());
+
+			wtpDML.clearEvents();
+			dmL.clearEvents();
+			if (i == 0) {
+				wtpDM.setIntProperty(DM.INT_PROP2, 101);
+			} else {
+				dm.setIntProperty(DM.INT_PROP2, 101);
+			}
+			eventsWTP = wtpDML.getEvents();
+			events = dmL.getEvents();
+			assertEquals(1, eventsWTP.size());
+
+			verifyEventOccurred(DM.INT_PROP2, WTPOperationDataModelEvent.PROPERTY_CHG, new Integer(101), eventsWTP);
+			verifyEventOccurred(DM.INT_PROP2, DataModelEvent.VALUE_CHG, new Integer(101), events);
+		}
 	}
 
 	public void testComplexEvents() {
-		dmL.clearEvents();
-		dm.setIntProperty(DM.INT_PROP, 11);
+		wtpDML.clearEvents();
+		wtpDM.setIntProperty(DM.INT_PROP, 11);
+		List eventsWTP = wtpDML.getEvents();
 		List events = dmL.getEvents();
-		assertEquals(4, events.size());
 
-		WTPOperationDataModelEvent event = (WTPOperationDataModelEvent) events.get(0);
-		assertEquals(DM.INT_PROP2, event.getPropertyName());
-		assertEquals(WTPOperationDataModelEvent.PROPERTY_CHG, event.getFlag());
-		assertEquals(11, ((Integer) dm.getProperty(DM.INT_PROP2)).intValue());
+		verifyEventOccurred(DM.INT_PROP2, WTPOperationDataModelEvent.PROPERTY_CHG, new Integer(11), eventsWTP);
+		verifyEventOccurred(DM.INT_PROP2, DataModelEvent.VALUE_CHG, new Integer(11), events);
 
-		event = (WTPOperationDataModelEvent) events.get(1);
-		assertEquals(DM.INT_PROP2, event.getPropertyName());
-		assertEquals(WTPOperationDataModelEvent.VALID_VALUES_CHG, event.getFlag());
-		WTPPropertyDescriptor[] descriptors = event.getValidPropertyDescriptors();
-		WTPPropertyDescriptor[] descriptors2 = dm.getValidPropertyDescriptors(DM.INT_PROP2);
+		WTPOperationDataModelEvent eventWTP = (WTPOperationDataModelEvent) verifyEventOccurred(DM.INT_PROP2, WTPOperationDataModelEvent.VALID_VALUES_CHG, null, eventsWTP);
+		DataModelEvent event = (DataModelEvent) verifyEventOccurred(DM.INT_PROP2, DataModelEvent.VALID_VALUES_CHG, null, events);
+
+		WTPPropertyDescriptor[] descriptorsWTP = eventWTP.getValidPropertyDescriptors();
+		DataModelPropertyDescriptor[] descriptors = event.getValidPropertyDescriptors();
+		WTPPropertyDescriptor[] descriptorsWTP2 = wtpDM.getValidPropertyDescriptors(DM.INT_PROP2);
+		DataModelPropertyDescriptor[] descriptors2 = dm.getValidPropertyDescriptors(DM.INT_PROP2);
+		assertEquals(11, descriptorsWTP.length);
 		assertEquals(11, descriptors.length);
+		assertEquals(11, descriptorsWTP2.length);
 		assertEquals(11, descriptors2.length);
 
-		event = (WTPOperationDataModelEvent) events.get(2);
-		assertEquals(DM.STRING_PROP, event.getPropertyName());
-		assertEquals(WTPOperationDataModelEvent.PROPERTY_CHG, event.getFlag());
-		assertEquals("foo11true", event.getProperty());
+		verifyEventOccurred(DM.STRING_PROP, WTPOperationDataModelEvent.PROPERTY_CHG, "foo11true", eventsWTP);
+		verifyEventOccurred(DM.STRING_PROP, DataModelEvent.VALUE_CHG, "foo11true", events);
 
-		event = (WTPOperationDataModelEvent) events.get(3);
-		assertEquals(DM.INT_PROP, event.getPropertyName());
-		assertEquals(WTPOperationDataModelEvent.PROPERTY_CHG, event.getFlag());
-		assertEquals(11, ((Integer) dm.getProperty(DM.INT_PROP)).intValue());
+		verifyEventOccurred(DM.INT_PROP, WTPOperationDataModelEvent.PROPERTY_CHG, new Integer(11), eventsWTP);
+		verifyEventOccurred(DM.INT_PROP, DataModelEvent.VALUE_CHG, new Integer(11), events);
 
+		wtpDML.clearEvents();
 		dmL.clearEvents();
-		dm.setBooleanProperty(DM.BOOLEAN_PROP, false);
+		wtpDM.setBooleanProperty(DM.BOOLEAN_PROP, false);
+		eventsWTP = wtpDML.getEvents();
 		events = dmL.getEvents();
-		assertEquals(3, events.size());
-		event = (WTPOperationDataModelEvent) events.get(0);
-		assertEquals(DM.BOOLEAN_PROP2, event.getPropertyName());
-		assertEquals(WTPOperationDataModelEvent.ENABLE_CHG, event.getFlag());
-		assertFalse(dm.isEnabled(DM.BOOLEAN_PROP2).booleanValue());
 
-		event = (WTPOperationDataModelEvent) events.get(1);
-		assertEquals(DM.STRING_PROP, event.getPropertyName());
-		assertEquals(WTPOperationDataModelEvent.PROPERTY_CHG, event.getFlag());
-		assertEquals("foo11false", event.getProperty());
+		verifyEventOccurred(DM.BOOLEAN_PROP2, WTPOperationDataModelEvent.ENABLE_CHG, null, eventsWTP);
+		verifyEventOccurred(DM.BOOLEAN_PROP2, DataModelEvent.ENABLE_CHG, null, events);
+		assertFalse(wtpDM.isEnabled(DM.BOOLEAN_PROP2).booleanValue());
+		assertFalse(dm.isPropertyEnabled(DM.BOOLEAN_PROP2));
 
-		event = (WTPOperationDataModelEvent) events.get(2);
-		assertEquals(DM.BOOLEAN_PROP, event.getPropertyName());
-		assertEquals(WTPOperationDataModelEvent.PROPERTY_CHG, event.getFlag());
-		assertEquals(false, dm.getBooleanProperty(DM.BOOLEAN_PROP));
 
-		dm.setProperty(DM.STRING_PROP, "bar");
+		verifyEventOccurred(DM.STRING_PROP, WTPOperationDataModelEvent.PROPERTY_CHG, "foo11false", eventsWTP);
+		verifyEventOccurred(DM.STRING_PROP, DataModelEvent.VALUE_CHG, "foo11false", events);
+
+		verifyEventOccurred(DM.BOOLEAN_PROP, WTPOperationDataModelEvent.PROPERTY_CHG, new Boolean(false), eventsWTP);
+		verifyEventOccurred(DM.BOOLEAN_PROP, DataModelEvent.VALUE_CHG, new Boolean(false), events);
+
+
+		wtpDM.setProperty(DM.STRING_PROP, "bar");
+		assertEquals("bar", wtpDM.getStringProperty(DM.STRING_PROP));
 		assertEquals("bar", dm.getStringProperty(DM.STRING_PROP));
+
+		wtpDML.clearEvents();
 		dmL.clearEvents();
-		dm.setBooleanProperty(DM.BOOLEAN_PROP, true);
+		wtpDM.setBooleanProperty(DM.BOOLEAN_PROP, true);
+		eventsWTP = wtpDML.getEvents();
 		events = dmL.getEvents();
-		assertEquals(2, events.size());
-		event = (WTPOperationDataModelEvent) events.get(0);
-		assertEquals(DM.BOOLEAN_PROP2, event.getPropertyName());
-		event = (WTPOperationDataModelEvent) events.get(1);
-		assertEquals(DM.BOOLEAN_PROP, event.getPropertyName());
 
+		verifyEventOccurred(DM.BOOLEAN_PROP, WTPOperationDataModelEvent.PROPERTY_CHG, null, eventsWTP);
+		verifyEventOccurred(DM.BOOLEAN_PROP, DataModelEvent.VALUE_CHG, null, events);
+
+		verifyEventOccurred(DM.BOOLEAN_PROP2, WTPOperationDataModelEvent.ENABLE_CHG, null, eventsWTP);
+		verifyEventOccurred(DM.BOOLEAN_PROP2, DataModelEvent.ENABLE_CHG, null, events);
+
+		assertEquals("bar", wtpDM.getStringProperty(DM.STRING_PROP));
 		assertEquals("bar", dm.getStringProperty(DM.STRING_PROP));
-		dm.setProperty(DM.STRING_PROP, null);
+
+		wtpDM.setProperty(DM.STRING_PROP, null);
+		assertEquals("foo11true", wtpDM.getStringProperty(DM.STRING_PROP));
 		assertEquals("foo11true", dm.getStringProperty(DM.STRING_PROP));
+
+		wtpDML.clearEvents();
 		dmL.clearEvents();
-		dm.setBooleanProperty(DM.BOOLEAN_PROP, false);
+		wtpDM.setBooleanProperty(DM.BOOLEAN_PROP, false);
+		eventsWTP = wtpDML.getEvents();
 		events = dmL.getEvents();
-		assertEquals(3, events.size());
-		event = (WTPOperationDataModelEvent) events.get(0);
-		assertEquals(DM.BOOLEAN_PROP2, event.getPropertyName());
-		assertEquals(WTPOperationDataModelEvent.ENABLE_CHG, event.getFlag());
-		assertFalse(dm.isEnabled(DM.BOOLEAN_PROP2).booleanValue());
 
-		event = (WTPOperationDataModelEvent) events.get(1);
-		assertEquals(DM.STRING_PROP, event.getPropertyName());
-		assertEquals(WTPOperationDataModelEvent.PROPERTY_CHG, event.getFlag());
-		assertEquals("foo11false", event.getProperty());
+		verifyEventOccurred(DM.BOOLEAN_PROP2, WTPOperationDataModelEvent.ENABLE_CHG, null, eventsWTP);
+		verifyEventOccurred(DM.BOOLEAN_PROP2, DataModelEvent.ENABLE_CHG, null, events);
+		assertFalse(wtpDM.isEnabled(DM.BOOLEAN_PROP2).booleanValue());
+		assertFalse(dm.isPropertyEnabled(DM.BOOLEAN_PROP2));
 
-		event = (WTPOperationDataModelEvent) events.get(2);
-		assertEquals(DM.BOOLEAN_PROP, event.getPropertyName());
-		assertEquals(WTPOperationDataModelEvent.PROPERTY_CHG, event.getFlag());
-		assertEquals(false, dm.getBooleanProperty(DM.BOOLEAN_PROP));
+		verifyEventOccurred(DM.STRING_PROP, WTPOperationDataModelEvent.PROPERTY_CHG, "foo11false", eventsWTP);
+		verifyEventOccurred(DM.STRING_PROP, DataModelEvent.VALUE_CHG, "foo11false", events);
 
+		verifyEventOccurred(DM.BOOLEAN_PROP, WTPOperationDataModelEvent.PROPERTY_CHG, new Boolean(false), eventsWTP);
+		verifyEventOccurred(DM.BOOLEAN_PROP, DataModelEvent.VALUE_CHG, new Boolean(false), events);
 
 	}
 
diff --git a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/TestListener.java b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/TestListener.java
index 433480c..92bea57 100644
--- a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/TestListener.java
+++ b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/TestListener.java
@@ -13,11 +13,10 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModelEvent;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModelListener;
+import org.eclipse.wst.common.frameworks.datamodel.DataModelEvent;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModelListener;
 
-public class TestListener implements WTPOperationDataModelListener {
-
+public class TestListener implements IDataModelListener {
 	private ArrayList events = new ArrayList();
 
 	public void clearEvents() {
@@ -28,7 +27,8 @@
 		return events;
 	}
 
-	public void propertyChanged(WTPOperationDataModelEvent event) {
+	public void propertyChanged(DataModelEvent event) {
 		events.add(event);
 	}
+
 }
diff --git a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/WTPTestListener.java b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/WTPTestListener.java
new file mode 100644
index 0000000..bcd5bd4
--- /dev/null
+++ b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/WTPTestListener.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.common.frameworks.operations.tests;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModelEvent;
+import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModelListener;
+
+public class WTPTestListener implements WTPOperationDataModelListener {
+
+	private ArrayList events = new ArrayList();
+
+	public void clearEvents() {
+		events.clear();
+	}
+
+	public List getEvents() {
+		return events;
+	}
+
+	public void propertyChanged(WTPOperationDataModelEvent event) {
+		events.add(event);
+	}
+}