diff --git a/org.eclipse.epf.library.tests/src/org/eclipse/epf/library/tester/impl/testcommands/TCEditMethodElementBase.java b/org.eclipse.epf.library.tests/src/org/eclipse/epf/library/tester/impl/testcommands/TCEditMethodElementBase.java
index a3a01d0..a678abf 100644
--- a/org.eclipse.epf.library.tests/src/org/eclipse/epf/library/tester/impl/testcommands/TCEditMethodElementBase.java
+++ b/org.eclipse.epf.library.tests/src/org/eclipse/epf/library/tester/impl/testcommands/TCEditMethodElementBase.java
@@ -120,15 +120,15 @@
 	}
 	
 	protected void parseValueChildren() {
-		for (Iterator it = tagData.attMap.entrySet().iterator(); it.hasNext();) {
+		for (Iterator it = tagData.refMap.entrySet().iterator(); it.hasNext();) {
 			Map.Entry entry = (Map.Entry) it.next();
 			String childTag = (String) entry.getKey();
-			setAttribute(childTag, element.getAttribute(childTag));			
-			parseChildTagAsValue(element, childTag);									
+			setAttribute(childTag, element.getAttribute(childTag));
+			parseChildTagAsValue(childTag);									
 		}
 	}
 
-	private void parseChildTagAsValue(Element element, String childTag) {
+	private void parseChildTagAsValue(String childTag) {
 		NodeList cnodes = element.getElementsByTagName(childTag);
 		if (cnodes == null || cnodes.getLength() == 0) {
 			return;
@@ -173,10 +173,12 @@
 		return tagData;
 	}
 	
-	private void parseChildTagAsCommand(Element element, String childTag) {
+	private boolean parseChildTagAsCommand(Element cElement, String childTag) {
 		if (childTag.equals("presentation")) {
-			parsePresentation(element);
+			parsePresentation(cElement);
+			return true;
 		}
+		return false;
 	}
 	
 	private void parseCommandChildren() {
diff --git a/org.eclipse.epf.library.tests/src/org/eclipse/epf/library/tester/impl/testcommands/TCNewMethodElement.java b/org.eclipse.epf.library.tests/src/org/eclipse/epf/library/tester/impl/testcommands/TCNewMethodElement.java
index 9ef8aa9..86b883f 100644
--- a/org.eclipse.epf.library.tests/src/org/eclipse/epf/library/tester/impl/testcommands/TCNewMethodElement.java
+++ b/org.eclipse.epf.library.tests/src/org/eclipse/epf/library/tester/impl/testcommands/TCNewMethodElement.java
@@ -49,6 +49,7 @@
 	private static Map typeClassMap = new HashMap();	
 	static {
 		UmaFactory uf = UmaFactory.eINSTANCE;
+		typeClassMap.put("MethodPlugin", uf.createMethodPlugin().eClass());
 		typeClassMap.put("ContentPackage", uf.createContentPackage().eClass());
 		typeClassMap.put("Role", uf.createRole().eClass());
 		typeClassMap.put("Task", uf.createTask().eClass());
