diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/SharedObjectFactory.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/SharedObjectFactory.java
index abc144c..16c1ffe 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/SharedObjectFactory.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/SharedObjectFactory.java
@@ -12,6 +12,7 @@
 import org.eclipse.ecf.core.sharedobject.provider.ISharedObjectInstantiator;
 import org.eclipse.ecf.core.util.Trace;
 import org.eclipse.ecf.internal.core.sharedobject.*;
+import org.eclipse.osgi.util.NLS;
 
 /**
  * Factory for creating {@link ISharedObject} instances. This class provides ECF
@@ -109,7 +110,7 @@
 		SharedObjectTypeDescription res = getDescription0(name);
 		if (res == null) {
 			//throw new SharedObjectCreateException(Messages.SharedObjectFactory_Exception_Create_Shared_Object + name + Messages.SharedObjectFactory_Exception_Create_Shared_Object_Not_Found);
-			throw new SharedObjectCreateException(Messages.bind(Messages.SharedObjectFactory_SharedObjectCreateException_X_Not_Found, name));
+			throw new SharedObjectCreateException(NLS.bind(Messages.SharedObjectFactory_SharedObjectCreateException_X_Not_Found, name));
 		}
 		return res;
 	}
@@ -128,7 +129,7 @@
 		SharedObjectTypeDescription cd = getDescription0(desc);
 		if (cd == null)
 			//throw new SharedObjectCreateException(Messages.SharedObjectFactory_Exception_Create_Shared_Objec + desc.getName() + Messages.SharedObjectFactory_Exception_Create_Shared_Object_Not_Found);
-			throw new SharedObjectCreateException(Messages.bind(Messages.SharedObjectFactory_SharedObjectDescription_X_Not_Found, desc.getName()));
+			throw new SharedObjectCreateException(NLS.bind(Messages.SharedObjectFactory_SharedObjectDescription_X_Not_Found, desc.getName()));
 		ISharedObjectInstantiator instantiator = null;
 		try {
 			instantiator = cd.getInstantiator();
@@ -140,7 +141,7 @@
 		}
 		if (instantiator == null)
 			//throw new SharedObjectCreateException(Messages.SharedObjectFactory_Exception_Create_Instantiator + cd.getName() + Messages.SharedObjectFactory_Exception_Create_Instantiator_Null);
-			throw new SharedObjectCreateException(Messages.bind(Messages.SharedObjectFactory_Exception_Create_Instantiator_X_Null, cd.getName()));
+			throw new SharedObjectCreateException(NLS.bind(Messages.SharedObjectFactory_Exception_Create_Instantiator_X_Null, cd.getName()));
 		// Ask instantiator to actually create instance
 		return instantiator.createInstance(desc, args);
 	}
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/TwoPhaseCommitEventProcessor.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/TwoPhaseCommitEventProcessor.java
index df407e0..b4cd658 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/TwoPhaseCommitEventProcessor.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/TwoPhaseCommitEventProcessor.java
@@ -17,6 +17,7 @@
 import org.eclipse.ecf.core.sharedobject.events.*;
 import org.eclipse.ecf.core.util.*;
 import org.eclipse.ecf.internal.core.sharedobject.*;
+import org.eclipse.osgi.util.NLS;
 
 /**
  * Implementation of two-phase commit for transactional replication of shared
@@ -319,7 +320,7 @@
 					trace("waitForFinish waiting " + wait + "ms on " //$NON-NLS-1$ //$NON-NLS-2$
 							+ getSharedObject().getID());
 					if (wait <= 0L)
-						throw new SharedObjectAddAbortException(Messages.bind(Messages.TwoPhaseCommitEventProcessor_Exception_Commit_Timeout, new Object[] {getSharedObject().getID(), getHomeID()}), (Throwable) null, getTimeout());
+						throw new SharedObjectAddAbortException(NLS.bind(Messages.TwoPhaseCommitEventProcessor_Exception_Commit_Timeout, new Object[] {getSharedObject().getID(), getHomeID()}), (Throwable) null, getTimeout());
 					// Wait right here
 					lock.wait(wait);
 				}
