[233205] - Support Polyline figure in .gmfgraph editor
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/src-extra/org/eclipse/gmf/graphdef/editor/sheet/FeatureTracker.java b/plugins/org.eclipse.gmf.graphdef.editor/src-extra/org/eclipse/gmf/graphdef/editor/sheet/FeatureTracker.java
index 9d8cec6..39e0eb0 100644
--- a/plugins/org.eclipse.gmf.graphdef.editor/src-extra/org/eclipse/gmf/graphdef/editor/sheet/FeatureTracker.java
+++ b/plugins/org.eclipse.gmf.graphdef.editor/src-extra/org/eclipse/gmf/graphdef/editor/sheet/FeatureTracker.java
@@ -53,7 +53,7 @@
 
 	@Override
 	public void notifyChanged(Notification msg) {
-		if (getTarget() == null || msg.isTouch()) {
+		if (msg.isTouch()) {
 			return;
 		}
 		for (EStructuralFeature sf : myFeatures) {
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/src-extra/org/eclipse/gmf/graphdef/editor/sheet/MultipleTargetsFeatureTracker.java b/plugins/org.eclipse.gmf.graphdef.editor/src-extra/org/eclipse/gmf/graphdef/editor/sheet/MultipleTargetsFeatureTracker.java
deleted file mode 100644
index 200f709..0000000
--- a/plugins/org.eclipse.gmf.graphdef.editor/src-extra/org/eclipse/gmf/graphdef/editor/sheet/MultipleTargetsFeatureTracker.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * Copyright (c) 2008 Borland Software Corp.
- * 
- * 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:
- *    Alexander Shatalin (Borland) - initial API and implementation
- */
-package org.eclipse.gmf.graphdef.editor.sheet;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.Notifier;
-import org.eclipse.emf.common.notify.impl.AdapterImpl;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EStructuralFeature;
-
-public class MultipleTargetsFeatureTracker extends AdapterImpl {
-
-	private final EStructuralFeature[] myFeatures;
-
-	private final ChangeTracker myListener;
-	
-	private final Collection<Notifier> myTargets = new ArrayList<Notifier>();
-
-	public MultipleTargetsFeatureTracker(ChangeTracker listener, EStructuralFeature... features) {
-		assert listener != null && features != null;
-		myListener = listener;
-		myFeatures = features;
-	}
-	
-	@Override
-	public void setTarget(Notifier newTarget) {
-		if (newTarget instanceof EObject) {
-			EClass metaClass = ((EObject) newTarget).eClass();
-			for (EStructuralFeature sf : myFeatures) {
-				if (sf.getEContainingClass().isSuperTypeOf(metaClass)) {
-					super.setTarget(newTarget);
-					myTargets.add(newTarget);
-					break;
-				}
-			}
-			return;
-		}
-		super.setTarget(newTarget);
-	}
-	
-	@Override
-	public void unsetTarget(Notifier oldTarget) {
-		if (oldTarget != null) {
-			myTargets.remove(oldTarget);
-		}
-		super.unsetTarget(oldTarget);
-	}
-
-	@Override
-	public void notifyChanged(Notification msg) {
-		if (msg.isTouch() || !hasTarget(msg.getNotifier())) {
-			return;
-		}
-		for (EStructuralFeature sf : myFeatures) {
-			if (sf.equals(msg.getFeature())) {
-				myListener.modelChanged(msg);
-				break;
-			}
-		}
-	}
-	
-	private boolean hasTarget(Object notificationSource) {
-		return notificationSource != null && myTargets.contains(notificationSource);
-	}
-
-}
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Ellipse2EditPart.java b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Ellipse2EditPart.java
index 446afde..7dd017d 100644
--- a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Ellipse2EditPart.java
+++ b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Ellipse2EditPart.java
@@ -31,7 +31,7 @@
 import org.eclipse.gmf.graphdef.editor.edit.polocies.FigureContainerXYLayoutEditPolicy;
 import org.eclipse.gmf.graphdef.editor.sheet.AttachAdapter;
 import org.eclipse.gmf.graphdef.editor.sheet.ChangeTracker;
-import org.eclipse.gmf.graphdef.editor.sheet.MultipleTargetsFeatureTracker;
+import org.eclipse.gmf.graphdef.editor.sheet.FeatureTracker;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
@@ -281,7 +281,7 @@
 				getPrimaryShape().setOutline(modelElement.isOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
 
 		ChangeTracker fillTracker = new ChangeTracker() {
 
@@ -289,7 +289,7 @@
 				getPrimaryShape().setFill(modelElement.isFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
 
 		ChangeTracker lineWidthTracker = new ChangeTracker() {
 
@@ -297,7 +297,7 @@
 				getPrimaryShape().setLineWidth(modelElement.getLineWidth());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
+		myDomainElementAdapters.add(new FeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
 
 		ChangeTracker lineStyleTracker = new ChangeTracker() {
 
@@ -305,7 +305,7 @@
 				getPrimaryShape().setLineStyle(getLineStyle(modelElement.getLineKind()));
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
+		myDomainElementAdapters.add(new FeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
 
 		ChangeTracker fillXORTracker = new ChangeTracker() {
 
@@ -313,7 +313,7 @@
 				getPrimaryShape().setFillXOR(modelElement.isXorFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
 
 		ChangeTracker outlineXORTracker = new ChangeTracker() {
 
@@ -321,7 +321,7 @@
 				getPrimaryShape().setOutlineXOR(modelElement.isXorOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
 
 		ChangeTracker layoutManagerTracker = new ChangeTracker() {
 
@@ -331,18 +331,16 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), layoutManagerTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE.getBorderLayout_Spacing(),
-				layoutManagerTracker, new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorSpacing()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getDimension_Dy())), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()), new FeatureTracker(layoutManagerTracker,
+				GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new FeatureTracker(
+				layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()),
+				new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getFlowLayout_MinorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new FeatureTracker(layoutManagerTracker,
+						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker, new FeatureTracker(
+						layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(
+						GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+						new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker backgroundColorTracker = new ChangeTracker() {
 
@@ -350,10 +348,9 @@
 				getPrimaryShape().setBackgroundColor(getColor(modelElement.getBackgroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new MultipleTargetsFeatureTracker(backgroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(backgroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new FeatureTracker(backgroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker foregroundColorTracker = new ChangeTracker() {
 
@@ -361,10 +358,9 @@
 				getPrimaryShape().setForegroundColor(getColor(modelElement.getForegroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new MultipleTargetsFeatureTracker(foregroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(foregroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new FeatureTracker(foregroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker refreshFontTracker = new ChangeTracker() {
 
@@ -372,9 +368,9 @@
 				refreshFont();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
-				.getBasicFont_FaceName()), new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new MultipleTargetsFeatureTracker(
-				refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Style())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_FaceName()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_Style())));
 		modelElement.eAdapters().addAll(myDomainElementAdapters);
 		super.activate();
 	}
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Ellipse3EditPart.java b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Ellipse3EditPart.java
index 47c754d..5959c94 100644
--- a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Ellipse3EditPart.java
+++ b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Ellipse3EditPart.java
@@ -31,7 +31,7 @@
 import org.eclipse.gmf.graphdef.editor.edit.polocies.FigureContainerXYLayoutEditPolicy;
 import org.eclipse.gmf.graphdef.editor.sheet.AttachAdapter;
 import org.eclipse.gmf.graphdef.editor.sheet.ChangeTracker;
-import org.eclipse.gmf.graphdef.editor.sheet.MultipleTargetsFeatureTracker;
+import org.eclipse.gmf.graphdef.editor.sheet.FeatureTracker;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
@@ -281,7 +281,7 @@
 				getPrimaryShape().setOutline(modelElement.isOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
 
 		ChangeTracker fillTracker = new ChangeTracker() {
 
@@ -289,7 +289,7 @@
 				getPrimaryShape().setFill(modelElement.isFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
 
 		ChangeTracker lineWidthTracker = new ChangeTracker() {
 
@@ -297,7 +297,7 @@
 				getPrimaryShape().setLineWidth(modelElement.getLineWidth());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
+		myDomainElementAdapters.add(new FeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
 
 		ChangeTracker lineStyleTracker = new ChangeTracker() {
 
@@ -305,7 +305,7 @@
 				getPrimaryShape().setLineStyle(getLineStyle(modelElement.getLineKind()));
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
+		myDomainElementAdapters.add(new FeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
 
 		ChangeTracker fillXORTracker = new ChangeTracker() {
 
@@ -313,7 +313,7 @@
 				getPrimaryShape().setFillXOR(modelElement.isXorFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
 
 		ChangeTracker outlineXORTracker = new ChangeTracker() {
 
@@ -321,7 +321,7 @@
 				getPrimaryShape().setOutlineXOR(modelElement.isXorOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
 
 		ChangeTracker layoutManagerTracker = new ChangeTracker() {
 
@@ -331,18 +331,16 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), layoutManagerTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE.getBorderLayout_Spacing(),
-				layoutManagerTracker, new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorSpacing()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getDimension_Dy())), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()), new FeatureTracker(layoutManagerTracker,
+				GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new FeatureTracker(
+				layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()),
+				new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getFlowLayout_MinorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new FeatureTracker(layoutManagerTracker,
+						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker, new FeatureTracker(
+						layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(
+						GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+						new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker backgroundColorTracker = new ChangeTracker() {
 
@@ -350,10 +348,9 @@
 				getPrimaryShape().setBackgroundColor(getColor(modelElement.getBackgroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new MultipleTargetsFeatureTracker(backgroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(backgroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new FeatureTracker(backgroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker foregroundColorTracker = new ChangeTracker() {
 
@@ -361,10 +358,9 @@
 				getPrimaryShape().setForegroundColor(getColor(modelElement.getForegroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new MultipleTargetsFeatureTracker(foregroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(foregroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new FeatureTracker(foregroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker refreshFontTracker = new ChangeTracker() {
 
@@ -372,9 +368,9 @@
 				refreshFont();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
-				.getBasicFont_FaceName()), new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new MultipleTargetsFeatureTracker(
-				refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Style())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_FaceName()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_Style())));
 		modelElement.eAdapters().addAll(myDomainElementAdapters);
 		super.activate();
 	}
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/EllipseEditPart.java b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/EllipseEditPart.java
index be0fa41..d127918 100644
--- a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/EllipseEditPart.java
+++ b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/EllipseEditPart.java
@@ -31,7 +31,7 @@
 import org.eclipse.gmf.graphdef.editor.edit.polocies.FigureContainerXYLayoutEditPolicy;
 import org.eclipse.gmf.graphdef.editor.sheet.AttachAdapter;
 import org.eclipse.gmf.graphdef.editor.sheet.ChangeTracker;
-import org.eclipse.gmf.graphdef.editor.sheet.MultipleTargetsFeatureTracker;
+import org.eclipse.gmf.graphdef.editor.sheet.FeatureTracker;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
@@ -286,10 +286,10 @@
 				refreshBounds();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Location(), refreshBoundsTracker, new MultipleTargetsFeatureTracker(refreshBoundsTracker,
-				GMFGraphPackage.eINSTANCE.getPoint_X()), new MultipleTargetsFeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())));
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_PreferredSize(), refreshBoundsTracker, new MultipleTargetsFeatureTracker(refreshBoundsTracker,
-				GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Location(), refreshBoundsTracker, new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE
+				.getPoint_X()), new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_PreferredSize(), refreshBoundsTracker, new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE
+				.getDimension_Dx()), new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())));
 
 		ChangeTracker refreshLayoutDataTracker = new ChangeTracker() {
 
@@ -298,19 +298,17 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_LayoutData(), refreshLayoutDataTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE
-				.getXYLayoutData_TopLeft(), refreshLayoutDataTracker, new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_X()),
-				new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getXYLayoutData_Size(),
-				refreshLayoutDataTracker, new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(
-						refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
-				.getBorderLayoutData_Alignment()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getBorderLayoutData_Vertical()),
-				new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessHorizontalSpace()), new MultipleTargetsFeatureTracker(
-						refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessVerticalSpace()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayoutData_VerticalAlignment()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
-						.getGridLayoutData_HorizontalAlignment()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_VerticalSpan()),
-				new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalSpan()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalIndent()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayoutData_SizeHint(), refreshLayoutDataTracker,
-						new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				.getXYLayoutData_TopLeft(), refreshLayoutDataTracker, new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_X()), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getXYLayoutData_Size(), refreshLayoutDataTracker, new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getBorderLayoutData_Alignment()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
+				.getBorderLayoutData_Vertical()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessHorizontalSpace()), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessVerticalSpace()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
+				.getGridLayoutData_VerticalAlignment()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalAlignment()), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_VerticalSpan()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
+				.getGridLayoutData_HorizontalSpan()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalIndent()), new AttachAdapter(
+				GMFGraphPackage.eINSTANCE.getGridLayoutData_SizeHint(), refreshLayoutDataTracker, new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+				new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker outlineTracker = new ChangeTracker() {
 
@@ -318,7 +316,7 @@
 				getPrimaryShape().setOutline(modelElement.isOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
 
 		ChangeTracker fillTracker = new ChangeTracker() {
 
@@ -326,7 +324,7 @@
 				getPrimaryShape().setFill(modelElement.isFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
 
 		ChangeTracker lineWidthTracker = new ChangeTracker() {
 
@@ -334,7 +332,7 @@
 				getPrimaryShape().setLineWidth(modelElement.getLineWidth());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
+		myDomainElementAdapters.add(new FeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
 
 		ChangeTracker lineStyleTracker = new ChangeTracker() {
 
@@ -342,7 +340,7 @@
 				getPrimaryShape().setLineStyle(getLineStyle(modelElement.getLineKind()));
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
+		myDomainElementAdapters.add(new FeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
 
 		ChangeTracker fillXORTracker = new ChangeTracker() {
 
@@ -350,7 +348,7 @@
 				getPrimaryShape().setFillXOR(modelElement.isXorFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
 
 		ChangeTracker outlineXORTracker = new ChangeTracker() {
 
@@ -358,7 +356,7 @@
 				getPrimaryShape().setOutlineXOR(modelElement.isXorOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
 
 		ChangeTracker layoutManagerTracker = new ChangeTracker() {
 
@@ -368,18 +366,16 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), layoutManagerTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE.getBorderLayout_Spacing(),
-				layoutManagerTracker, new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorSpacing()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getDimension_Dy())), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()), new FeatureTracker(layoutManagerTracker,
+				GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new FeatureTracker(
+				layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()),
+				new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getFlowLayout_MinorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new FeatureTracker(layoutManagerTracker,
+						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker, new FeatureTracker(
+						layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(
+						GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+						new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker backgroundColorTracker = new ChangeTracker() {
 
@@ -387,10 +383,9 @@
 				getPrimaryShape().setBackgroundColor(getColor(modelElement.getBackgroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new MultipleTargetsFeatureTracker(backgroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(backgroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new FeatureTracker(backgroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker foregroundColorTracker = new ChangeTracker() {
 
@@ -398,10 +393,9 @@
 				getPrimaryShape().setForegroundColor(getColor(modelElement.getForegroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new MultipleTargetsFeatureTracker(foregroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(foregroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new FeatureTracker(foregroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker refreshFontTracker = new ChangeTracker() {
 
@@ -409,9 +403,9 @@
 				refreshFont();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
-				.getBasicFont_FaceName()), new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new MultipleTargetsFeatureTracker(
-				refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Style())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_FaceName()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_Style())));
 		modelElement.eAdapters().addAll(myDomainElementAdapters);
 		super.activate();
 	}
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/PointEditPart.java b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/PointEditPart.java
index 0b0bc11..4c13f2f 100644
--- a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/PointEditPart.java
+++ b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/PointEditPart.java
@@ -29,7 +29,7 @@
 import org.eclipse.gmf.graphdef.editor.edit.policies.PointItemSemanticEditPolicy;
 import org.eclipse.gmf.graphdef.editor.edit.polocies.FigureContainerXYLayoutEditPolicy;
 import org.eclipse.gmf.graphdef.editor.sheet.ChangeTracker;
-import org.eclipse.gmf.graphdef.editor.sheet.MultipleTargetsFeatureTracker;
+import org.eclipse.gmf.graphdef.editor.sheet.FeatureTracker;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.NonResizableEditPolicyEx;
 import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;
@@ -279,8 +279,8 @@
 				refreshBounds();
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getPoint_X()));
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y()));
+		myDomainElementAdapters.add(new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getPoint_X()));
+		myDomainElementAdapters.add(new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y()));
 		modelElement.eAdapters().addAll(myDomainElementAdapters);
 		super.activate();
 	}
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Polyline2EditPart.java b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Polyline2EditPart.java
index 6472ca1..686cd6d 100644
--- a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Polyline2EditPart.java
+++ b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Polyline2EditPart.java
@@ -30,7 +30,7 @@
 import org.eclipse.gmf.graphdef.editor.edit.polocies.PointContainerXYLayoutEditPolicy;
 import org.eclipse.gmf.graphdef.editor.sheet.AttachAdapter;
 import org.eclipse.gmf.graphdef.editor.sheet.ChangeTracker;
-import org.eclipse.gmf.graphdef.editor.sheet.MultipleTargetsFeatureTracker;
+import org.eclipse.gmf.graphdef.editor.sheet.FeatureTracker;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
@@ -241,7 +241,7 @@
 				getPrimaryShape().setOutline(modelElement.isOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
 
 		ChangeTracker fillTracker = new ChangeTracker() {
 
@@ -249,7 +249,7 @@
 				getPrimaryShape().setFill(modelElement.isFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
 
 		ChangeTracker lineWidthTracker = new ChangeTracker() {
 
@@ -257,7 +257,7 @@
 				getPrimaryShape().setLineWidth(modelElement.getLineWidth());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
+		myDomainElementAdapters.add(new FeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
 
 		ChangeTracker lineStyleTracker = new ChangeTracker() {
 
@@ -265,7 +265,7 @@
 				getPrimaryShape().setLineStyle(getLineStyle(modelElement.getLineKind()));
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
+		myDomainElementAdapters.add(new FeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
 
 		ChangeTracker fillXORTracker = new ChangeTracker() {
 
@@ -273,7 +273,7 @@
 				getPrimaryShape().setFillXOR(modelElement.isXorFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
 
 		ChangeTracker outlineXORTracker = new ChangeTracker() {
 
@@ -281,7 +281,7 @@
 				getPrimaryShape().setOutlineXOR(modelElement.isXorOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
 
 		ChangeTracker layoutManagerTracker = new ChangeTracker() {
 
@@ -291,18 +291,16 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), layoutManagerTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE.getBorderLayout_Spacing(),
-				layoutManagerTracker, new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorSpacing()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getDimension_Dy())), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()), new FeatureTracker(layoutManagerTracker,
+				GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new FeatureTracker(
+				layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()),
+				new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getFlowLayout_MinorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new FeatureTracker(layoutManagerTracker,
+						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker, new FeatureTracker(
+						layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(
+						GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+						new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker backgroundColorTracker = new ChangeTracker() {
 
@@ -310,10 +308,9 @@
 				getPrimaryShape().setBackgroundColor(getColor(modelElement.getBackgroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new MultipleTargetsFeatureTracker(backgroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(backgroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new FeatureTracker(backgroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker foregroundColorTracker = new ChangeTracker() {
 
@@ -321,10 +318,9 @@
 				getPrimaryShape().setForegroundColor(getColor(modelElement.getForegroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new MultipleTargetsFeatureTracker(foregroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(foregroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new FeatureTracker(foregroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker refreshFontTracker = new ChangeTracker() {
 
@@ -332,9 +328,9 @@
 				refreshFont();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
-				.getBasicFont_FaceName()), new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new MultipleTargetsFeatureTracker(
-				refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Style())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_FaceName()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_Style())));
 
 		ChangeTracker pointsTracker = new ChangeTracker() {
 
@@ -342,8 +338,8 @@
 				getPrimaryShape().setPoints(getPointList(modelElement.getTemplate()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getPolyline_Template(), pointsTracker, new MultipleTargetsFeatureTracker(pointsTracker, GMFGraphPackage.eINSTANCE
-				.getPoint_X()), new MultipleTargetsFeatureTracker(pointsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getPolyline_Template(), pointsTracker, new FeatureTracker(pointsTracker, GMFGraphPackage.eINSTANCE.getPoint_X()),
+				new FeatureTracker(pointsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())));
 		modelElement.eAdapters().addAll(myDomainElementAdapters);
 		super.activate();
 	}
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Polyline3EditPart.java b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Polyline3EditPart.java
index 217be00..dacec3d 100644
--- a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Polyline3EditPart.java
+++ b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Polyline3EditPart.java
@@ -30,7 +30,7 @@
 import org.eclipse.gmf.graphdef.editor.edit.polocies.PointContainerXYLayoutEditPolicy;
 import org.eclipse.gmf.graphdef.editor.sheet.AttachAdapter;
 import org.eclipse.gmf.graphdef.editor.sheet.ChangeTracker;
-import org.eclipse.gmf.graphdef.editor.sheet.MultipleTargetsFeatureTracker;
+import org.eclipse.gmf.graphdef.editor.sheet.FeatureTracker;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
@@ -241,7 +241,7 @@
 				getPrimaryShape().setOutline(modelElement.isOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
 
 		ChangeTracker fillTracker = new ChangeTracker() {
 
@@ -249,7 +249,7 @@
 				getPrimaryShape().setFill(modelElement.isFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
 
 		ChangeTracker lineWidthTracker = new ChangeTracker() {
 
@@ -257,7 +257,7 @@
 				getPrimaryShape().setLineWidth(modelElement.getLineWidth());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
+		myDomainElementAdapters.add(new FeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
 
 		ChangeTracker lineStyleTracker = new ChangeTracker() {
 
@@ -265,7 +265,7 @@
 				getPrimaryShape().setLineStyle(getLineStyle(modelElement.getLineKind()));
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
+		myDomainElementAdapters.add(new FeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
 
 		ChangeTracker fillXORTracker = new ChangeTracker() {
 
@@ -273,7 +273,7 @@
 				getPrimaryShape().setFillXOR(modelElement.isXorFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
 
 		ChangeTracker outlineXORTracker = new ChangeTracker() {
 
@@ -281,7 +281,7 @@
 				getPrimaryShape().setOutlineXOR(modelElement.isXorOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
 
 		ChangeTracker layoutManagerTracker = new ChangeTracker() {
 
@@ -291,18 +291,16 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), layoutManagerTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE.getBorderLayout_Spacing(),
-				layoutManagerTracker, new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorSpacing()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getDimension_Dy())), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()), new FeatureTracker(layoutManagerTracker,
+				GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new FeatureTracker(
+				layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()),
+				new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getFlowLayout_MinorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new FeatureTracker(layoutManagerTracker,
+						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker, new FeatureTracker(
+						layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(
+						GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+						new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker backgroundColorTracker = new ChangeTracker() {
 
@@ -310,10 +308,9 @@
 				getPrimaryShape().setBackgroundColor(getColor(modelElement.getBackgroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new MultipleTargetsFeatureTracker(backgroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(backgroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new FeatureTracker(backgroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker foregroundColorTracker = new ChangeTracker() {
 
@@ -321,10 +318,9 @@
 				getPrimaryShape().setForegroundColor(getColor(modelElement.getForegroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new MultipleTargetsFeatureTracker(foregroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(foregroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new FeatureTracker(foregroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker refreshFontTracker = new ChangeTracker() {
 
@@ -332,9 +328,9 @@
 				refreshFont();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
-				.getBasicFont_FaceName()), new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new MultipleTargetsFeatureTracker(
-				refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Style())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_FaceName()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_Style())));
 
 		ChangeTracker pointsTracker = new ChangeTracker() {
 
@@ -342,8 +338,8 @@
 				getPrimaryShape().setPoints(getPointList(modelElement.getTemplate()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getPolyline_Template(), pointsTracker, new MultipleTargetsFeatureTracker(pointsTracker, GMFGraphPackage.eINSTANCE
-				.getPoint_X()), new MultipleTargetsFeatureTracker(pointsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getPolyline_Template(), pointsTracker, new FeatureTracker(pointsTracker, GMFGraphPackage.eINSTANCE.getPoint_X()),
+				new FeatureTracker(pointsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())));
 		modelElement.eAdapters().addAll(myDomainElementAdapters);
 		super.activate();
 	}
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/PolylineEditPart.java b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/PolylineEditPart.java
index c4d40e5..91adb01 100644
--- a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/PolylineEditPart.java
+++ b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/PolylineEditPart.java
@@ -30,7 +30,7 @@
 import org.eclipse.gmf.graphdef.editor.edit.polocies.PointContainerXYLayoutEditPolicy;
 import org.eclipse.gmf.graphdef.editor.sheet.AttachAdapter;
 import org.eclipse.gmf.graphdef.editor.sheet.ChangeTracker;
-import org.eclipse.gmf.graphdef.editor.sheet.MultipleTargetsFeatureTracker;
+import org.eclipse.gmf.graphdef.editor.sheet.FeatureTracker;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
@@ -262,10 +262,10 @@
 				refreshBounds();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Location(), refreshBoundsTracker, new MultipleTargetsFeatureTracker(refreshBoundsTracker,
-				GMFGraphPackage.eINSTANCE.getPoint_X()), new MultipleTargetsFeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())));
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_PreferredSize(), refreshBoundsTracker, new MultipleTargetsFeatureTracker(refreshBoundsTracker,
-				GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Location(), refreshBoundsTracker, new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE
+				.getPoint_X()), new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_PreferredSize(), refreshBoundsTracker, new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE
+				.getDimension_Dx()), new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())));
 
 		ChangeTracker refreshLayoutDataTracker = new ChangeTracker() {
 
@@ -274,19 +274,17 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_LayoutData(), refreshLayoutDataTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE
-				.getXYLayoutData_TopLeft(), refreshLayoutDataTracker, new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_X()),
-				new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getXYLayoutData_Size(),
-				refreshLayoutDataTracker, new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(
-						refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
-				.getBorderLayoutData_Alignment()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getBorderLayoutData_Vertical()),
-				new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessHorizontalSpace()), new MultipleTargetsFeatureTracker(
-						refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessVerticalSpace()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayoutData_VerticalAlignment()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
-						.getGridLayoutData_HorizontalAlignment()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_VerticalSpan()),
-				new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalSpan()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalIndent()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayoutData_SizeHint(), refreshLayoutDataTracker,
-						new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				.getXYLayoutData_TopLeft(), refreshLayoutDataTracker, new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_X()), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getXYLayoutData_Size(), refreshLayoutDataTracker, new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getBorderLayoutData_Alignment()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
+				.getBorderLayoutData_Vertical()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessHorizontalSpace()), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessVerticalSpace()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
+				.getGridLayoutData_VerticalAlignment()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalAlignment()), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_VerticalSpan()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
+				.getGridLayoutData_HorizontalSpan()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalIndent()), new AttachAdapter(
+				GMFGraphPackage.eINSTANCE.getGridLayoutData_SizeHint(), refreshLayoutDataTracker, new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+				new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker outlineTracker = new ChangeTracker() {
 
@@ -294,7 +292,7 @@
 				getPrimaryShape().setOutline(modelElement.isOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
 
 		ChangeTracker fillTracker = new ChangeTracker() {
 
@@ -302,7 +300,7 @@
 				getPrimaryShape().setFill(modelElement.isFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
 
 		ChangeTracker lineStyleTracker = new ChangeTracker() {
 
@@ -310,7 +308,7 @@
 				getPrimaryShape().setLineStyle(getLineStyle(modelElement.getLineKind()));
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
+		myDomainElementAdapters.add(new FeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
 
 		ChangeTracker fillXORTracker = new ChangeTracker() {
 
@@ -318,7 +316,7 @@
 				getPrimaryShape().setFillXOR(modelElement.isXorFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
 
 		ChangeTracker outlineXORTracker = new ChangeTracker() {
 
@@ -326,7 +324,7 @@
 				getPrimaryShape().setOutlineXOR(modelElement.isXorOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
 
 		ChangeTracker layoutManagerTracker = new ChangeTracker() {
 
@@ -336,18 +334,16 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), layoutManagerTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE.getBorderLayout_Spacing(),
-				layoutManagerTracker, new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorSpacing()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getDimension_Dy())), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()), new FeatureTracker(layoutManagerTracker,
+				GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new FeatureTracker(
+				layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()),
+				new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getFlowLayout_MinorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new FeatureTracker(layoutManagerTracker,
+						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker, new FeatureTracker(
+						layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(
+						GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+						new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker backgroundColorTracker = new ChangeTracker() {
 
@@ -355,10 +351,9 @@
 				getPrimaryShape().setBackgroundColor(getColor(modelElement.getBackgroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new MultipleTargetsFeatureTracker(backgroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(backgroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new FeatureTracker(backgroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker foregroundColorTracker = new ChangeTracker() {
 
@@ -366,10 +361,9 @@
 				getPrimaryShape().setForegroundColor(getColor(modelElement.getForegroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new MultipleTargetsFeatureTracker(foregroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(foregroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new FeatureTracker(foregroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker refreshFontTracker = new ChangeTracker() {
 
@@ -377,9 +371,9 @@
 				refreshFont();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
-				.getBasicFont_FaceName()), new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new MultipleTargetsFeatureTracker(
-				refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Style())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_FaceName()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_Style())));
 
 		ChangeTracker pointsTracker = new ChangeTracker() {
 
@@ -388,8 +382,8 @@
 				refreshMainFigureBounds();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getPolyline_Template(), pointsTracker, new MultipleTargetsFeatureTracker(pointsTracker, GMFGraphPackage.eINSTANCE
-				.getPoint_X()), new MultipleTargetsFeatureTracker(pointsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getPolyline_Template(), pointsTracker, new FeatureTracker(pointsTracker, GMFGraphPackage.eINSTANCE.getPoint_X()),
+				new FeatureTracker(pointsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())));
 
 		ChangeTracker lineWidthTracker = new ChangeTracker() {
 
@@ -398,7 +392,7 @@
 				refreshMainFigureBounds();
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
+		myDomainElementAdapters.add(new FeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
 		modelElement.eAdapters().addAll(myDomainElementAdapters);
 		super.activate();
 	}
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Rectangle2EditPart.java b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Rectangle2EditPart.java
index e3b7d26..dfc43e6 100644
--- a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Rectangle2EditPart.java
+++ b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Rectangle2EditPart.java
@@ -30,7 +30,7 @@
 import org.eclipse.gmf.graphdef.editor.edit.polocies.FigureContainerXYLayoutEditPolicy;
 import org.eclipse.gmf.graphdef.editor.sheet.AttachAdapter;
 import org.eclipse.gmf.graphdef.editor.sheet.ChangeTracker;
-import org.eclipse.gmf.graphdef.editor.sheet.MultipleTargetsFeatureTracker;
+import org.eclipse.gmf.graphdef.editor.sheet.FeatureTracker;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
@@ -285,10 +285,10 @@
 				refreshBounds();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Location(), refreshBoundsTracker, new MultipleTargetsFeatureTracker(refreshBoundsTracker,
-				GMFGraphPackage.eINSTANCE.getPoint_X()), new MultipleTargetsFeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())));
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_PreferredSize(), refreshBoundsTracker, new MultipleTargetsFeatureTracker(refreshBoundsTracker,
-				GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Location(), refreshBoundsTracker, new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE
+				.getPoint_X()), new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_PreferredSize(), refreshBoundsTracker, new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE
+				.getDimension_Dx()), new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())));
 
 		ChangeTracker refreshLayoutDataTracker = new ChangeTracker() {
 
@@ -297,19 +297,17 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_LayoutData(), refreshLayoutDataTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE
-				.getXYLayoutData_TopLeft(), refreshLayoutDataTracker, new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_X()),
-				new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getXYLayoutData_Size(),
-				refreshLayoutDataTracker, new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(
-						refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
-				.getBorderLayoutData_Alignment()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getBorderLayoutData_Vertical()),
-				new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessHorizontalSpace()), new MultipleTargetsFeatureTracker(
-						refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessVerticalSpace()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayoutData_VerticalAlignment()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
-						.getGridLayoutData_HorizontalAlignment()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_VerticalSpan()),
-				new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalSpan()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalIndent()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayoutData_SizeHint(), refreshLayoutDataTracker,
-						new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				.getXYLayoutData_TopLeft(), refreshLayoutDataTracker, new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_X()), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getXYLayoutData_Size(), refreshLayoutDataTracker, new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getBorderLayoutData_Alignment()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
+				.getBorderLayoutData_Vertical()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessHorizontalSpace()), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessVerticalSpace()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
+				.getGridLayoutData_VerticalAlignment()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalAlignment()), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_VerticalSpan()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
+				.getGridLayoutData_HorizontalSpan()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalIndent()), new AttachAdapter(
+				GMFGraphPackage.eINSTANCE.getGridLayoutData_SizeHint(), refreshLayoutDataTracker, new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+				new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker outlineTracker = new ChangeTracker() {
 
@@ -317,7 +315,7 @@
 				getPrimaryShape().setOutline(modelElement.isOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
 
 		ChangeTracker fillTracker = new ChangeTracker() {
 
@@ -325,7 +323,7 @@
 				getPrimaryShape().setFill(modelElement.isFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
 
 		ChangeTracker lineWidthTracker = new ChangeTracker() {
 
@@ -333,7 +331,7 @@
 				getPrimaryShape().setLineWidth(modelElement.getLineWidth());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
+		myDomainElementAdapters.add(new FeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
 
 		ChangeTracker lineStyleTracker = new ChangeTracker() {
 
@@ -341,7 +339,7 @@
 				getPrimaryShape().setLineStyle(getLineStyle(modelElement.getLineKind()));
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
+		myDomainElementAdapters.add(new FeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
 
 		ChangeTracker fillXORTracker = new ChangeTracker() {
 
@@ -349,7 +347,7 @@
 				getPrimaryShape().setFillXOR(modelElement.isXorFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
 
 		ChangeTracker outlineXORTracker = new ChangeTracker() {
 
@@ -357,7 +355,7 @@
 				getPrimaryShape().setOutlineXOR(modelElement.isXorOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
 
 		ChangeTracker layoutManagerTracker = new ChangeTracker() {
 
@@ -367,18 +365,16 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), layoutManagerTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE.getBorderLayout_Spacing(),
-				layoutManagerTracker, new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorSpacing()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getDimension_Dy())), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()), new FeatureTracker(layoutManagerTracker,
+				GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new FeatureTracker(
+				layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()),
+				new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getFlowLayout_MinorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new FeatureTracker(layoutManagerTracker,
+						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker, new FeatureTracker(
+						layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(
+						GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+						new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker backgroundColorTracker = new ChangeTracker() {
 
@@ -386,10 +382,9 @@
 				getPrimaryShape().setBackgroundColor(getColor(modelElement.getBackgroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new MultipleTargetsFeatureTracker(backgroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(backgroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new FeatureTracker(backgroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker foregroundColorTracker = new ChangeTracker() {
 
@@ -397,10 +392,9 @@
 				getPrimaryShape().setForegroundColor(getColor(modelElement.getForegroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new MultipleTargetsFeatureTracker(foregroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(foregroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new FeatureTracker(foregroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker refreshFontTracker = new ChangeTracker() {
 
@@ -408,9 +402,9 @@
 				refreshFont();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
-				.getBasicFont_FaceName()), new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new MultipleTargetsFeatureTracker(
-				refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Style())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_FaceName()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_Style())));
 		modelElement.eAdapters().addAll(myDomainElementAdapters);
 		super.activate();
 	}
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Rectangle3EditPart.java b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Rectangle3EditPart.java
index b641c0c..23b9635 100644
--- a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Rectangle3EditPart.java
+++ b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/Rectangle3EditPart.java
@@ -30,7 +30,7 @@
 import org.eclipse.gmf.graphdef.editor.edit.polocies.FigureContainerXYLayoutEditPolicy;
 import org.eclipse.gmf.graphdef.editor.sheet.AttachAdapter;
 import org.eclipse.gmf.graphdef.editor.sheet.ChangeTracker;
-import org.eclipse.gmf.graphdef.editor.sheet.MultipleTargetsFeatureTracker;
+import org.eclipse.gmf.graphdef.editor.sheet.FeatureTracker;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
@@ -280,7 +280,7 @@
 				getPrimaryShape().setOutline(modelElement.isOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
 
 		ChangeTracker fillTracker = new ChangeTracker() {
 
@@ -288,7 +288,7 @@
 				getPrimaryShape().setFill(modelElement.isFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
 
 		ChangeTracker lineWidthTracker = new ChangeTracker() {
 
@@ -296,7 +296,7 @@
 				getPrimaryShape().setLineWidth(modelElement.getLineWidth());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
+		myDomainElementAdapters.add(new FeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
 
 		ChangeTracker lineStyleTracker = new ChangeTracker() {
 
@@ -304,7 +304,7 @@
 				getPrimaryShape().setLineStyle(getLineStyle(modelElement.getLineKind()));
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
+		myDomainElementAdapters.add(new FeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
 
 		ChangeTracker fillXORTracker = new ChangeTracker() {
 
@@ -312,7 +312,7 @@
 				getPrimaryShape().setFillXOR(modelElement.isXorFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
 
 		ChangeTracker outlineXORTracker = new ChangeTracker() {
 
@@ -320,7 +320,7 @@
 				getPrimaryShape().setOutlineXOR(modelElement.isXorOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
 
 		ChangeTracker layoutManagerTracker = new ChangeTracker() {
 
@@ -330,18 +330,16 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), layoutManagerTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE.getBorderLayout_Spacing(),
-				layoutManagerTracker, new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorSpacing()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getDimension_Dy())), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()), new FeatureTracker(layoutManagerTracker,
+				GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new FeatureTracker(
+				layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()),
+				new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getFlowLayout_MinorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new FeatureTracker(layoutManagerTracker,
+						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker, new FeatureTracker(
+						layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(
+						GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+						new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker backgroundColorTracker = new ChangeTracker() {
 
@@ -349,10 +347,9 @@
 				getPrimaryShape().setBackgroundColor(getColor(modelElement.getBackgroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new MultipleTargetsFeatureTracker(backgroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(backgroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new FeatureTracker(backgroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker foregroundColorTracker = new ChangeTracker() {
 
@@ -360,10 +357,9 @@
 				getPrimaryShape().setForegroundColor(getColor(modelElement.getForegroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new MultipleTargetsFeatureTracker(foregroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(foregroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new FeatureTracker(foregroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker refreshFontTracker = new ChangeTracker() {
 
@@ -371,9 +367,9 @@
 				refreshFont();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
-				.getBasicFont_FaceName()), new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new MultipleTargetsFeatureTracker(
-				refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Style())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_FaceName()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_Style())));
 		modelElement.eAdapters().addAll(myDomainElementAdapters);
 		super.activate();
 	}
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RectangleEditPart.java b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RectangleEditPart.java
index 55daeb8..523059a 100644
--- a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RectangleEditPart.java
+++ b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RectangleEditPart.java
@@ -30,7 +30,7 @@
 import org.eclipse.gmf.graphdef.editor.edit.polocies.FigureContainerXYLayoutEditPolicy;
 import org.eclipse.gmf.graphdef.editor.sheet.AttachAdapter;
 import org.eclipse.gmf.graphdef.editor.sheet.ChangeTracker;
-import org.eclipse.gmf.graphdef.editor.sheet.MultipleTargetsFeatureTracker;
+import org.eclipse.gmf.graphdef.editor.sheet.FeatureTracker;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
@@ -280,7 +280,7 @@
 				getPrimaryShape().setOutline(modelElement.isOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
 
 		ChangeTracker fillTracker = new ChangeTracker() {
 
@@ -288,7 +288,7 @@
 				getPrimaryShape().setFill(modelElement.isFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
 
 		ChangeTracker lineWidthTracker = new ChangeTracker() {
 
@@ -296,7 +296,7 @@
 				getPrimaryShape().setLineWidth(modelElement.getLineWidth());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
+		myDomainElementAdapters.add(new FeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
 
 		ChangeTracker lineStyleTracker = new ChangeTracker() {
 
@@ -304,7 +304,7 @@
 				getPrimaryShape().setLineStyle(getLineStyle(modelElement.getLineKind()));
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
+		myDomainElementAdapters.add(new FeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
 
 		ChangeTracker fillXORTracker = new ChangeTracker() {
 
@@ -312,7 +312,7 @@
 				getPrimaryShape().setFillXOR(modelElement.isXorFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
 
 		ChangeTracker outlineXORTracker = new ChangeTracker() {
 
@@ -320,7 +320,7 @@
 				getPrimaryShape().setOutlineXOR(modelElement.isXorOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
 
 		ChangeTracker layoutManagerTracker = new ChangeTracker() {
 
@@ -330,18 +330,16 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), layoutManagerTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE.getBorderLayout_Spacing(),
-				layoutManagerTracker, new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorSpacing()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getDimension_Dy())), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()), new FeatureTracker(layoutManagerTracker,
+				GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new FeatureTracker(
+				layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()),
+				new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getFlowLayout_MinorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new FeatureTracker(layoutManagerTracker,
+						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker, new FeatureTracker(
+						layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(
+						GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+						new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker backgroundColorTracker = new ChangeTracker() {
 
@@ -349,10 +347,9 @@
 				getPrimaryShape().setBackgroundColor(getColor(modelElement.getBackgroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new MultipleTargetsFeatureTracker(backgroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(backgroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new FeatureTracker(backgroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker foregroundColorTracker = new ChangeTracker() {
 
@@ -360,10 +357,9 @@
 				getPrimaryShape().setForegroundColor(getColor(modelElement.getForegroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new MultipleTargetsFeatureTracker(foregroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(foregroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new FeatureTracker(foregroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker refreshFontTracker = new ChangeTracker() {
 
@@ -371,9 +367,9 @@
 				refreshFont();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
-				.getBasicFont_FaceName()), new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new MultipleTargetsFeatureTracker(
-				refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Style())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_FaceName()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_Style())));
 		modelElement.eAdapters().addAll(myDomainElementAdapters);
 		super.activate();
 	}
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RoundedRectangle2EditPart.java b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RoundedRectangle2EditPart.java
index 62f1bc2..5ce35e7 100644
--- a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RoundedRectangle2EditPart.java
+++ b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RoundedRectangle2EditPart.java
@@ -31,7 +31,7 @@
 import org.eclipse.gmf.graphdef.editor.edit.polocies.FigureContainerXYLayoutEditPolicy;
 import org.eclipse.gmf.graphdef.editor.sheet.AttachAdapter;
 import org.eclipse.gmf.graphdef.editor.sheet.ChangeTracker;
-import org.eclipse.gmf.graphdef.editor.sheet.MultipleTargetsFeatureTracker;
+import org.eclipse.gmf.graphdef.editor.sheet.FeatureTracker;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
@@ -283,7 +283,7 @@
 				getPrimaryShape().setOutline(modelElement.isOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
 
 		ChangeTracker fillTracker = new ChangeTracker() {
 
@@ -291,7 +291,7 @@
 				getPrimaryShape().setFill(modelElement.isFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
 
 		ChangeTracker lineWidthTracker = new ChangeTracker() {
 
@@ -299,7 +299,7 @@
 				getPrimaryShape().setLineWidth(modelElement.getLineWidth());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
+		myDomainElementAdapters.add(new FeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
 
 		ChangeTracker lineStyleTracker = new ChangeTracker() {
 
@@ -307,7 +307,7 @@
 				getPrimaryShape().setLineStyle(getLineStyle(modelElement.getLineKind()));
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
+		myDomainElementAdapters.add(new FeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
 
 		ChangeTracker fillXORTracker = new ChangeTracker() {
 
@@ -315,7 +315,7 @@
 				getPrimaryShape().setFillXOR(modelElement.isXorFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
 
 		ChangeTracker outlineXORTracker = new ChangeTracker() {
 
@@ -323,7 +323,7 @@
 				getPrimaryShape().setOutlineXOR(modelElement.isXorOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
 
 		ChangeTracker cornerDimensionsTracker = new ChangeTracker() {
 
@@ -331,8 +331,8 @@
 				getPrimaryShape().setCornerDimensions(getCornerDimensions(modelElement.getCornerWidth(), modelElement.getCornerHeight()));
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(cornerDimensionsTracker, GMFGraphPackage.eINSTANCE.getRoundedRectangle_CornerWidth()));
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(cornerDimensionsTracker, GMFGraphPackage.eINSTANCE.getRoundedRectangle_CornerHeight()));
+		myDomainElementAdapters.add(new FeatureTracker(cornerDimensionsTracker, GMFGraphPackage.eINSTANCE.getRoundedRectangle_CornerWidth()));
+		myDomainElementAdapters.add(new FeatureTracker(cornerDimensionsTracker, GMFGraphPackage.eINSTANCE.getRoundedRectangle_CornerHeight()));
 
 		ChangeTracker layoutManagerTracker = new ChangeTracker() {
 
@@ -342,18 +342,16 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), layoutManagerTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE.getBorderLayout_Spacing(),
-				layoutManagerTracker, new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorSpacing()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getDimension_Dy())), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()), new FeatureTracker(layoutManagerTracker,
+				GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new FeatureTracker(
+				layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()),
+				new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getFlowLayout_MinorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new FeatureTracker(layoutManagerTracker,
+						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker, new FeatureTracker(
+						layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(
+						GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+						new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker backgroundColorTracker = new ChangeTracker() {
 
@@ -361,10 +359,9 @@
 				getPrimaryShape().setBackgroundColor(getColor(modelElement.getBackgroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new MultipleTargetsFeatureTracker(backgroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(backgroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new FeatureTracker(backgroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker foregroundColorTracker = new ChangeTracker() {
 
@@ -372,10 +369,9 @@
 				getPrimaryShape().setForegroundColor(getColor(modelElement.getForegroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new MultipleTargetsFeatureTracker(foregroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(foregroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new FeatureTracker(foregroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker refreshFontTracker = new ChangeTracker() {
 
@@ -383,9 +379,9 @@
 				refreshFont();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
-				.getBasicFont_FaceName()), new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new MultipleTargetsFeatureTracker(
-				refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Style())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_FaceName()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_Style())));
 		modelElement.eAdapters().addAll(myDomainElementAdapters);
 		super.activate();
 	}
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RoundedRectangle3EditPart.java b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RoundedRectangle3EditPart.java
index fc1000d..cbb10a4 100644
--- a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RoundedRectangle3EditPart.java
+++ b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RoundedRectangle3EditPart.java
@@ -31,7 +31,7 @@
 import org.eclipse.gmf.graphdef.editor.edit.polocies.FigureContainerXYLayoutEditPolicy;
 import org.eclipse.gmf.graphdef.editor.sheet.AttachAdapter;
 import org.eclipse.gmf.graphdef.editor.sheet.ChangeTracker;
-import org.eclipse.gmf.graphdef.editor.sheet.MultipleTargetsFeatureTracker;
+import org.eclipse.gmf.graphdef.editor.sheet.FeatureTracker;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
@@ -283,7 +283,7 @@
 				getPrimaryShape().setOutline(modelElement.isOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
 
 		ChangeTracker fillTracker = new ChangeTracker() {
 
@@ -291,7 +291,7 @@
 				getPrimaryShape().setFill(modelElement.isFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
 
 		ChangeTracker lineWidthTracker = new ChangeTracker() {
 
@@ -299,7 +299,7 @@
 				getPrimaryShape().setLineWidth(modelElement.getLineWidth());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
+		myDomainElementAdapters.add(new FeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
 
 		ChangeTracker lineStyleTracker = new ChangeTracker() {
 
@@ -307,7 +307,7 @@
 				getPrimaryShape().setLineStyle(getLineStyle(modelElement.getLineKind()));
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
+		myDomainElementAdapters.add(new FeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
 
 		ChangeTracker fillXORTracker = new ChangeTracker() {
 
@@ -315,7 +315,7 @@
 				getPrimaryShape().setFillXOR(modelElement.isXorFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
 
 		ChangeTracker outlineXORTracker = new ChangeTracker() {
 
@@ -323,7 +323,7 @@
 				getPrimaryShape().setOutlineXOR(modelElement.isXorOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
 
 		ChangeTracker cornerDimensionsTracker = new ChangeTracker() {
 
@@ -331,8 +331,8 @@
 				getPrimaryShape().setCornerDimensions(getCornerDimensions(modelElement.getCornerWidth(), modelElement.getCornerHeight()));
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(cornerDimensionsTracker, GMFGraphPackage.eINSTANCE.getRoundedRectangle_CornerWidth()));
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(cornerDimensionsTracker, GMFGraphPackage.eINSTANCE.getRoundedRectangle_CornerHeight()));
+		myDomainElementAdapters.add(new FeatureTracker(cornerDimensionsTracker, GMFGraphPackage.eINSTANCE.getRoundedRectangle_CornerWidth()));
+		myDomainElementAdapters.add(new FeatureTracker(cornerDimensionsTracker, GMFGraphPackage.eINSTANCE.getRoundedRectangle_CornerHeight()));
 
 		ChangeTracker layoutManagerTracker = new ChangeTracker() {
 
@@ -342,18 +342,16 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), layoutManagerTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE.getBorderLayout_Spacing(),
-				layoutManagerTracker, new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorSpacing()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getDimension_Dy())), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()), new FeatureTracker(layoutManagerTracker,
+				GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new FeatureTracker(
+				layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()),
+				new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getFlowLayout_MinorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new FeatureTracker(layoutManagerTracker,
+						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker, new FeatureTracker(
+						layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(
+						GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+						new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker backgroundColorTracker = new ChangeTracker() {
 
@@ -361,10 +359,9 @@
 				getPrimaryShape().setBackgroundColor(getColor(modelElement.getBackgroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new MultipleTargetsFeatureTracker(backgroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(backgroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new FeatureTracker(backgroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker foregroundColorTracker = new ChangeTracker() {
 
@@ -372,10 +369,9 @@
 				getPrimaryShape().setForegroundColor(getColor(modelElement.getForegroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new MultipleTargetsFeatureTracker(foregroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(foregroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new FeatureTracker(foregroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker refreshFontTracker = new ChangeTracker() {
 
@@ -383,9 +379,9 @@
 				refreshFont();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
-				.getBasicFont_FaceName()), new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new MultipleTargetsFeatureTracker(
-				refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Style())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_FaceName()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_Style())));
 		modelElement.eAdapters().addAll(myDomainElementAdapters);
 		super.activate();
 	}
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RoundedRectangleEditPart.java b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RoundedRectangleEditPart.java
index 9482ce8..066a3c3 100644
--- a/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RoundedRectangleEditPart.java
+++ b/plugins/org.eclipse.gmf.graphdef.editor/src/org/eclipse/gmf/graphdef/editor/edit/parts/RoundedRectangleEditPart.java
@@ -31,7 +31,7 @@
 import org.eclipse.gmf.graphdef.editor.edit.polocies.FigureContainerXYLayoutEditPolicy;
 import org.eclipse.gmf.graphdef.editor.sheet.AttachAdapter;
 import org.eclipse.gmf.graphdef.editor.sheet.ChangeTracker;
-import org.eclipse.gmf.graphdef.editor.sheet.MultipleTargetsFeatureTracker;
+import org.eclipse.gmf.graphdef.editor.sheet.FeatureTracker;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
@@ -288,10 +288,10 @@
 				refreshBounds();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Location(), refreshBoundsTracker, new MultipleTargetsFeatureTracker(refreshBoundsTracker,
-				GMFGraphPackage.eINSTANCE.getPoint_X()), new MultipleTargetsFeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())));
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_PreferredSize(), refreshBoundsTracker, new MultipleTargetsFeatureTracker(refreshBoundsTracker,
-				GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Location(), refreshBoundsTracker, new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE
+				.getPoint_X()), new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_PreferredSize(), refreshBoundsTracker, new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE
+				.getDimension_Dx()), new FeatureTracker(refreshBoundsTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())));
 
 		ChangeTracker refreshLayoutDataTracker = new ChangeTracker() {
 
@@ -300,19 +300,17 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_LayoutData(), refreshLayoutDataTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE
-				.getXYLayoutData_TopLeft(), refreshLayoutDataTracker, new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_X()),
-				new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getXYLayoutData_Size(),
-				refreshLayoutDataTracker, new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(
-						refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
-				.getBorderLayoutData_Alignment()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getBorderLayoutData_Vertical()),
-				new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessHorizontalSpace()), new MultipleTargetsFeatureTracker(
-						refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessVerticalSpace()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayoutData_VerticalAlignment()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
-						.getGridLayoutData_HorizontalAlignment()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_VerticalSpan()),
-				new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalSpan()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalIndent()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayoutData_SizeHint(), refreshLayoutDataTracker,
-						new MultipleTargetsFeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(refreshLayoutDataTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				.getXYLayoutData_TopLeft(), refreshLayoutDataTracker, new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_X()), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getPoint_Y())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getXYLayoutData_Size(), refreshLayoutDataTracker, new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getBorderLayoutData_Alignment()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
+				.getBorderLayoutData_Vertical()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessHorizontalSpace()), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_GrabExcessVerticalSpace()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
+				.getGridLayoutData_VerticalAlignment()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalAlignment()), new FeatureTracker(
+				refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_VerticalSpan()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE
+				.getGridLayoutData_HorizontalSpan()), new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getGridLayoutData_HorizontalIndent()), new AttachAdapter(
+				GMFGraphPackage.eINSTANCE.getGridLayoutData_SizeHint(), refreshLayoutDataTracker, new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+				new FeatureTracker(refreshLayoutDataTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker outlineTracker = new ChangeTracker() {
 
@@ -320,7 +318,7 @@
 				getPrimaryShape().setOutline(modelElement.isOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineTracker, GMFGraphPackage.eINSTANCE.getShape_Outline()));
 
 		ChangeTracker fillTracker = new ChangeTracker() {
 
@@ -328,7 +326,7 @@
 				getPrimaryShape().setFill(modelElement.isFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillTracker, GMFGraphPackage.eINSTANCE.getShape_Fill()));
 
 		ChangeTracker lineWidthTracker = new ChangeTracker() {
 
@@ -336,7 +334,7 @@
 				getPrimaryShape().setLineWidth(modelElement.getLineWidth());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
+		myDomainElementAdapters.add(new FeatureTracker(lineWidthTracker, GMFGraphPackage.eINSTANCE.getShape_LineWidth()));
 
 		ChangeTracker lineStyleTracker = new ChangeTracker() {
 
@@ -344,7 +342,7 @@
 				getPrimaryShape().setLineStyle(getLineStyle(modelElement.getLineKind()));
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
+		myDomainElementAdapters.add(new FeatureTracker(lineStyleTracker, GMFGraphPackage.eINSTANCE.getShape_LineKind()));
 
 		ChangeTracker fillXORTracker = new ChangeTracker() {
 
@@ -352,7 +350,7 @@
 				getPrimaryShape().setFillXOR(modelElement.isXorFill());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
+		myDomainElementAdapters.add(new FeatureTracker(fillXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorFill()));
 
 		ChangeTracker outlineXORTracker = new ChangeTracker() {
 
@@ -360,7 +358,7 @@
 				getPrimaryShape().setOutlineXOR(modelElement.isXorOutline());
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
+		myDomainElementAdapters.add(new FeatureTracker(outlineXORTracker, GMFGraphPackage.eINSTANCE.getShape_XorOutline()));
 
 		ChangeTracker cornerDimensionsTracker = new ChangeTracker() {
 
@@ -368,8 +366,8 @@
 				getPrimaryShape().setCornerDimensions(getCornerDimensions(modelElement.getCornerWidth(), modelElement.getCornerHeight()));
 			}
 		};
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(cornerDimensionsTracker, GMFGraphPackage.eINSTANCE.getRoundedRectangle_CornerWidth()));
-		myDomainElementAdapters.add(new MultipleTargetsFeatureTracker(cornerDimensionsTracker, GMFGraphPackage.eINSTANCE.getRoundedRectangle_CornerHeight()));
+		myDomainElementAdapters.add(new FeatureTracker(cornerDimensionsTracker, GMFGraphPackage.eINSTANCE.getRoundedRectangle_CornerWidth()));
+		myDomainElementAdapters.add(new FeatureTracker(cornerDimensionsTracker, GMFGraphPackage.eINSTANCE.getRoundedRectangle_CornerHeight()));
 
 		ChangeTracker layoutManagerTracker = new ChangeTracker() {
 
@@ -379,18 +377,16 @@
 			}
 		};
 		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), layoutManagerTracker, new AttachAdapter(GMFGraphPackage.eINSTANCE.getBorderLayout_Spacing(),
-				layoutManagerTracker, new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getDimension_Dy())), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorSpacing()),
-				new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker,
-						new MultipleTargetsFeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new MultipleTargetsFeatureTracker(layoutManagerTracker,
-								GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
+				layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getDimension_Dy())), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_Vertical()), new FeatureTracker(layoutManagerTracker,
+				GMFGraphPackage.eINSTANCE.getFlowLayout_MatchMinorSize()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_ForceSingleLine()), new FeatureTracker(
+				layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorAlignment()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MinorAlignment()),
+				new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getFlowLayout_MajorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE
+						.getFlowLayout_MinorSpacing()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getGridLayout_NumColumns()), new FeatureTracker(layoutManagerTracker,
+						GMFGraphPackage.eINSTANCE.getGridLayout_EqualWidth()), new AttachAdapter(GMFGraphPackage.eINSTANCE.getGridLayout_Margins(), layoutManagerTracker, new FeatureTracker(
+						layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()), new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy())), new AttachAdapter(
+						GMFGraphPackage.eINSTANCE.getGridLayout_Spacing(), layoutManagerTracker, new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dx()),
+						new FeatureTracker(layoutManagerTracker, GMFGraphPackage.eINSTANCE.getDimension_Dy()))));
 
 		ChangeTracker backgroundColorTracker = new ChangeTracker() {
 
@@ -398,10 +394,9 @@
 				getPrimaryShape().setBackgroundColor(getColor(modelElement.getBackgroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new MultipleTargetsFeatureTracker(backgroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(backgroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor(), backgroundColorTracker, new FeatureTracker(backgroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(backgroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker foregroundColorTracker = new ChangeTracker() {
 
@@ -409,10 +404,9 @@
 				getPrimaryShape().setForegroundColor(getColor(modelElement.getForegroundColor()));
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new MultipleTargetsFeatureTracker(foregroundColorTracker,
-				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()),
-				new MultipleTargetsFeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new MultipleTargetsFeatureTracker(foregroundColorTracker,
-						GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor(), foregroundColorTracker, new FeatureTracker(foregroundColorTracker,
+				GMFGraphPackage.eINSTANCE.getConstantColor_Value()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Red()), new FeatureTracker(
+				foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Green()), new FeatureTracker(foregroundColorTracker, GMFGraphPackage.eINSTANCE.getRGBColor_Blue())));
 
 		ChangeTracker refreshFontTracker = new ChangeTracker() {
 
@@ -420,9 +414,9 @@
 				refreshFont();
 			}
 		};
-		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
-				.getBasicFont_FaceName()), new MultipleTargetsFeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new MultipleTargetsFeatureTracker(
-				refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Style())));
+		myDomainElementAdapters.add(new AttachAdapter(GMFGraphPackage.eINSTANCE.getFigure_Font(), refreshFontTracker, new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_FaceName()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE.getBasicFont_Height()), new FeatureTracker(refreshFontTracker, GMFGraphPackage.eINSTANCE
+				.getBasicFont_Style())));
 		modelElement.eAdapters().addAll(myDomainElementAdapters);
 		super.activate();
 	}
diff --git a/plugins/org.eclipse.gmf.graphdef.editor/templates/aspects/diagram/editparts/NodeEditPart.xpt b/plugins/org.eclipse.gmf.graphdef.editor/templates/aspects/diagram/editparts/NodeEditPart.xpt
index b48dfc5..3a7bfa6 100644
--- a/plugins/org.eclipse.gmf.graphdef.editor/templates/aspects/diagram/editparts/NodeEditPart.xpt
+++ b/plugins/org.eclipse.gmf.graphdef.editor/templates/aspects/diagram/editparts/NodeEditPart.xpt
@@ -202,7 +202,7 @@
 
 «DEFINE attachContextListener(wysiwyg::DomainPropertiesSynchronizer synchronizer) FOR context::FeatureContext-»
 	«IF children.size() == 0-»
-		new org.eclipse.gmf.graphdef.editor.sheet.MultipleTargetsFeatureTracker(«EXPAND changeTrackerVarName FOR synchronizer», «EXPAND accessor FOR selector»)
+		new org.eclipse.gmf.graphdef.editor.sheet.FeatureTracker(«EXPAND changeTrackerVarName FOR synchronizer», «EXPAND accessor FOR selector»)
 	«ELSE-»
 		new org.eclipse.gmf.graphdef.editor.sheet.AttachAdapter(«EXPAND accessor FOR selector», «EXPAND changeTrackerVarName FOR synchronizer», «EXPAND attachContextListener(synchronizer) FOREACH children SEPARATOR ", "»)
 	«ENDIF-»