diff --git a/deprecated/plugins/org.eclipse.uml2/about.properties b/deprecated/plugins/org.eclipse.uml2/about.properties
index 04cec22..5e37895 100644
--- a/deprecated/plugins/org.eclipse.uml2/about.properties
+++ b/deprecated/plugins/org.eclipse.uml2/about.properties
@@ -8,7 +8,7 @@
 # * Contributors: 
 # *   IBM - Initial API and implementation
 # *
-# * $Id: about.properties,v 1.4.2.1 2004/07/21 17:59:23 khussey Exp $
+# * $Id: about.properties,v 1.4.2.1.2.1 2004/10/01 17:40:09 khussey Exp $
 # */
 
 # about.properties
@@ -26,7 +26,7 @@
 
 aboutText = Unified Modeling Language 2.0\n\
 \n\
-Version: 1.0.1\n\
+Version: 1.0.1.1\n\
 Build id: {0}\n\
 \n\
 (c) Copyright Eclipse contributors and others 2003, 2004.  All rights reserved.\n\
diff --git a/deprecated/plugins/org.eclipse.uml2/plugin.xml b/deprecated/plugins/org.eclipse.uml2/plugin.xml
index 741bcc1..c702f3d 100644
--- a/deprecated/plugins/org.eclipse.uml2/plugin.xml
+++ b/deprecated/plugins/org.eclipse.uml2/plugin.xml
@@ -12,14 +12,14 @@
  * Contributors: 
  *   IBM - Initial API and implementation
  *
- * $Id: plugin.xml,v 1.10.2.1 2004/07/14 14:50:01 khussey Exp $
+ * $Id: plugin.xml,v 1.10.2.1.2.1 2004/10/01 17:40:09 khussey Exp $
  */
 -->
 
 <plugin
    id="org.eclipse.uml2"
    name="%pluginName"
-   version="1.0.1"
+   version="1.0.1.1"
    provider-name="%providerName"
    class="org.eclipse.uml2.UML2Plugin$Implementation">
 
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/OpaqueExpressionImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/OpaqueExpressionImpl.java
index b714c0e..6a99d9a 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/OpaqueExpressionImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/OpaqueExpressionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: OpaqueExpressionImpl.java,v 1.5 2004/06/18 04:34:31 khussey Exp $
+ * $Id: OpaqueExpressionImpl.java,v 1.5.4.1 2004/10/01 17:40:09 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -542,4 +542,11 @@
 		return result.toString();
 	}
 
+	/**
+	 * @see org.eclipse.uml2.ValueSpecification#stringValue()
+	 */
+	public String stringValue() {
+		return getBody();
+	}
+
 } //OpaqueExpressionImpl
diff --git a/deprecated/tests/org.eclipse.uml2.tests/about.properties b/deprecated/tests/org.eclipse.uml2.tests/about.properties
index e4234ec..72b6fb7 100644
--- a/deprecated/tests/org.eclipse.uml2.tests/about.properties
+++ b/deprecated/tests/org.eclipse.uml2.tests/about.properties
@@ -8,7 +8,7 @@
 # * Contributors: 
 # *   IBM - Initial API and implementation
 # *
-# * $Id: about.properties,v 1.3.2.1 2004/07/21 17:59:24 khussey Exp $
+# * $Id: about.properties,v 1.3.2.1.2.1 2004/10/01 17:40:02 khussey Exp $
 # */
 
 # about.properties
@@ -26,7 +26,7 @@
 
 aboutText = Unified Modeling Language 2.0 Tests\n\
 \n\
-Version: 1.0.1\n\
+Version: 1.0.1.1\n\
 Build id: {0}\n\
 \n\
 (c) Copyright Eclipse contributors and others 2003, 2004.  All rights reserved.\n\
diff --git a/deprecated/tests/org.eclipse.uml2.tests/plugin.xml b/deprecated/tests/org.eclipse.uml2.tests/plugin.xml
index e5def46..36f1b00 100644
--- a/deprecated/tests/org.eclipse.uml2.tests/plugin.xml
+++ b/deprecated/tests/org.eclipse.uml2.tests/plugin.xml
@@ -12,14 +12,14 @@
  * Contributors: 
  *   IBM - Initial API and implementation
  *
- * $Id: plugin.xml,v 1.5.2.1 2004/07/16 19:43:27 khussey Exp $
+ * $Id: plugin.xml,v 1.5.2.1.2.1 2004/10/01 17:40:02 khussey Exp $
  */
 -->
 
 <plugin
    id="org.eclipse.uml2.tests"
    name="%pluginName"
-   version="1.0.1"
+   version="1.0.1.1"
    provider-name="%providerName">
 
    <runtime>
diff --git a/deprecated/tests/org.eclipse.uml2.tests/src/org/eclipse/uml2/impl/tests/OpaqueExpressionImplTest.java b/deprecated/tests/org.eclipse.uml2.tests/src/org/eclipse/uml2/impl/tests/OpaqueExpressionImplTest.java
index cc6ebd2..47c5bd2 100644
--- a/deprecated/tests/org.eclipse.uml2.tests/src/org/eclipse/uml2/impl/tests/OpaqueExpressionImplTest.java
+++ b/deprecated/tests/org.eclipse.uml2.tests/src/org/eclipse/uml2/impl/tests/OpaqueExpressionImplTest.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: OpaqueExpressionImplTest.java,v 1.2 2004/05/20 03:03:32 khussey Exp $
+ * $Id: OpaqueExpressionImplTest.java,v 1.2.4.1 2004/10/01 17:40:02 khussey Exp $
  */
 package org.eclipse.uml2.impl.tests;
 
@@ -99,6 +99,17 @@
 	}
 
 	/* (non-Javadoc)
+	 * @see org.eclipse.uml2.impl.tests.ValueSpecificationImplTest#testStringValue()
+	 */
+	public void testStringValue() {
+		getFixture().setBody(getName());
+		assertEquals(getName(), getFixture().stringValue()); //$NON-NLS-1$
+
+		getFixture().setBody(null);
+		assertEquals("", getFixture().stringValue()); //$NON-NLS-1$
+	}
+
+	/* (non-Javadoc)
 	 * @see org.eclipse.uml2.impl.tests.NamedElementImplTest#setUpNamespace()
 	 */
 	protected void setUpNamespace() {
diff --git a/plugins/org.eclipse.uml2-feature/feature.xml b/plugins/org.eclipse.uml2-feature/feature.xml
index 8a51bd3..2a82c9a 100644
--- a/plugins/org.eclipse.uml2-feature/feature.xml
+++ b/plugins/org.eclipse.uml2-feature/feature.xml
@@ -12,13 +12,13 @@
  * Contributors: 
  *   IBM - Initial API and implementation
  *
- * $Id: feature.xml,v 1.3.2.3 2004/07/16 21:26:34 khussey Exp $
+ * $Id: feature.xml,v 1.3.2.3.2.1 2004/10/01 17:40:07 khussey Exp $
  */
 -->
 
 <feature
       id="org.eclipse.uml2"
-      version="1.0.1"
+      version="1.0.1.1"
       provider-name="%feature.provider-name"
       label="%feature.label"
       image="eclipse_update_120.jpg">
@@ -49,7 +49,7 @@
       id="org.eclipse.uml2"
       download-size="0"
       install-size="0"
-      version="1.0.1"/>
+      version="1.0.1.1"/>
 
    <plugin
       id="org.eclipse.uml2.edit"
diff --git a/plugins/org.eclipse.uml2.sdk-feature/feature.xml b/plugins/org.eclipse.uml2.sdk-feature/feature.xml
index 94acb39..6b6ba38 100644
--- a/plugins/org.eclipse.uml2.sdk-feature/feature.xml
+++ b/plugins/org.eclipse.uml2.sdk-feature/feature.xml
@@ -12,14 +12,14 @@
  * Contributors: 
  *   IBM - Initial API and implementation
  *
- * $Id: feature.xml,v 1.1.2.1 2004/07/14 14:53:50 khussey Exp $
+ * $Id: feature.xml,v 1.1.2.1.2.1 2004/10/01 17:40:06 khussey Exp $
  */
 -->
 
 <feature
       id="org.eclipse.uml2.sdk"
       label="%feature.label"
-      version="1.0.1"
+      version="1.0.1.1"
       provider-name="%feature.provider-name">
 
    <description>
@@ -36,12 +36,12 @@
 
    <includes
       id="org.eclipse.uml2"
-      version="1.0.1"
+      version="1.0.1.1"
       match="compatible"/> 
 
    <includes
       id="org.eclipse.uml2.source"
-      version="1.0.1"
+      version="1.0.1.1"
       match="compatible"/> 
 
    <includes
diff --git a/tests/org.eclipse.uml2.tests-feature/feature.xml b/tests/org.eclipse.uml2.tests-feature/feature.xml
index d7fe8e1..b4c502f 100644
--- a/tests/org.eclipse.uml2.tests-feature/feature.xml
+++ b/tests/org.eclipse.uml2.tests-feature/feature.xml
@@ -12,14 +12,14 @@
  * Contributors: 
  *   IBM - Initial API and implementation
  *
- * $Id: feature.xml,v 1.2.2.1.2.1 2004/10/01 14:55:29 khussey Exp $
+ * $Id: feature.xml,v 1.2.2.1.2.2 2004/10/01 17:40:04 khussey Exp $
  */
 -->
 
 <feature
       id="org.eclipse.uml2.tests"
       label="%feature-label"
-      version="1.0.1"
+      version="1.0.1.1"
       provider-name="%feature.provider-name"
       image="eclipse_update_120.jpg">
 
@@ -47,7 +47,7 @@
          id="org.eclipse.uml2.tests"
          download-size="0"
          install-size="0"
-         version="1.0.1"/>
+         version="1.0.1.1"/>
 
    <plugin
          id="org.eclipse.uml2.edit.tests"
