diff --git a/juddi-examples/uddi-createbulk/src/META-INF/simple-publish-uddi.xml b/juddi-examples/uddi-createbulk/src/META-INF/simple-publish-uddi.xml
index a53a558..95f0321 100644
--- a/juddi-examples/uddi-createbulk/src/META-INF/simple-publish-uddi.xml
+++ b/juddi-examples/uddi-createbulk/src/META-INF/simple-publish-uddi.xml
@@ -1,27 +1,27 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>
 
-<uddi>
+<uddi xmlns="urn:juddi-apache-org:v3_client" xsi:schemaLocation="classpath:/xsd/uddi-client.xsd">
     <reloadDelay>5000</reloadDelay>
-    <manager name="example-manager">
-        <nodes>
-            <node>
-                <!-- required 'default' node -->
-                <name>default</name> 
+    <client name="example-client">
+		<nodes>
+			<node>
+			    <!-- required 'default' node -->
+				<name>default</name> 
                 <properties>
                     <property name="serverName" value="localhost"/>
                     <property name="serverPort" value="8080"/>
                 </properties>
-                <description>Main jUDDI node</description>
-                <!-- JAX-WS Transport -->
-                <proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
-                <custodyTransferUrl>http://${serverName}:${serverPort}/juddiv3/services/custody-transfer</custodyTransferUrl>
-                <inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiry</inquiryUrl>
-                <publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publish</publishUrl>
-                <securityUrl>http://${serverName}:${serverPort}/juddiv3/services/security</securityUrl>
-                <subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription</subscriptionUrl>
-                <subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener</subscriptionListenerUrl>
-                <juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api</juddiApiUrl>
-            </node>
-        </nodes>
-    </manager>
+				<description>Main jUDDI node</description>
+				<!-- JAX-WS Transport -->
+				<proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
+				<custodyTransferUrl>http://${serverName}:${serverPort}/juddiv3/services/custody-transfer</custodyTransferUrl>
+				<inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiry</inquiryUrl>
+		        <publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publish</publishUrl>
+		        <securityUrl>http://${serverName}:${serverPort}/juddiv3/services/security</securityUrl>
+				<subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription</subscriptionUrl>
+				<subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener</subscriptionListenerUrl>
+				<juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api</juddiApiUrl>
+			</node>
+		</nodes>
+	</client>
 </uddi>
diff --git a/juddi-examples/uddi-createbulk/src/uddi/createbulk/UddiKeyGenerator.java b/juddi-examples/uddi-createbulk/src/uddi/createbulk/UddiKeyGenerator.java
new file mode 100644
index 0000000..edbdd5a
--- /dev/null
+++ b/juddi-examples/uddi-createbulk/src/uddi/createbulk/UddiKeyGenerator.java
@@ -0,0 +1,90 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package uddi.createbulk;
+
+import javax.xml.bind.JAXB;
+import org.apache.juddi.v3.client.config.UDDIClerk;
+import org.apache.juddi.v3.client.config.UDDIClient;
+import org.apache.juddi.v3.client.config.UDDIClientContainer;
+import org.apache.juddi.v3.client.transport.Transport;
+import org.apache.juddi.v3_service.JUDDIApiPortType;
+import org.uddi.api_v3.*;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDIPublicationPortType;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ *
+ * @author Alex
+ */
+public class UddiKeyGenerator {
+
+    private static UDDISecurityPortType security = null;
+    private static JUDDIApiPortType juddiApi = null;
+    private static UDDIPublicationPortType publish = null;
+    private static UDDIInquiryPortType inquiry = null;
+
+    public UddiKeyGenerator() {
+        try {
+            // create a manager and read the config in the archive; 
+            // you can use your config file name
+            UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
+            // register the clerkManager with the client side container
+            UDDIClientContainer.addClient(clerkManager);
+            // a ClerkManager can be a client to multiple UDDI nodes, so 
+            // supply the nodeName (defined in your uddi.xml.
+            // The transport can be WS, inVM, RMI etc which is defined in the uddi.xml
+            Transport transport = clerkManager.getTransport("default");
+            // Now you create a reference to the UDDI API
+            security = transport.getUDDISecurityService();
+            juddiApi = transport.getJUDDIApiService();
+            publish = transport.getUDDIPublishService();
+            inquiry = transport.getUDDIInquiryService();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void find() {
+        try {
+            // Setting up the values to get an authentication token for the 'root' user ('root' user has admin privileges
+            // and can save other publishers).
+            GetAuthToken getAuthTokenRoot = new GetAuthToken();
+            getAuthTokenRoot.setUserID("uddi");
+            getAuthTokenRoot.setCred("uddi");
+
+            // Making API call that retrieves the authentication token for the 'root' user.
+            AuthToken rootAuthToken = security.getAuthToken(getAuthTokenRoot);
+            System.out.println("uddi AUTHTOKEN = " + rootAuthToken.getAuthInfo());
+            SaveTModel st = new SaveTModel();
+           /*st.setAuthInfo(rootAuthToken.getAuthInfo());
+            st.getTModel().add(UDDIClerk.createKeyGenator("uddi:bea.com:keygenerator", "uddi:bea.com:keygenerator", "en"));
+            publish.saveTModel(st);
+
+            st = new SaveTModel();
+            st.setAuthInfo(rootAuthToken.getAuthInfo());
+            st.getTModel().add(UDDIClerk.createKeyGenator("uddi:bea.com:servicebus.default:keygenerator", "bea.com:servicebus.default", "en"));
+            publish.saveTModel(st);
+*/
+            st = new SaveTModel();
+            TModel m = new TModel();
+            m.setTModelKey("uddi:bea.com:servicebus.default.proxytest2");
+            m.setName(new Name("name", "lang"));
+            st.setAuthInfo(rootAuthToken.getAuthInfo());
+            st.getTModel().add(m);
+            publish.saveTModel(st);
+
+
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void main(String args[]) {
+        UddiKeyGenerator sp = new UddiKeyGenerator();
+        sp.find();
+    }
+}
diff --git a/juddi-examples/uddi-createbulk/src/uddi/createbulk/WsdlImport.java b/juddi-examples/uddi-createbulk/src/uddi/createbulk/WsdlImport.java
index eecd2a2..ef0cce9 100644
--- a/juddi-examples/uddi-createbulk/src/uddi/createbulk/WsdlImport.java
+++ b/juddi-examples/uddi-createbulk/src/uddi/createbulk/WsdlImport.java
@@ -14,7 +14,7 @@
 import javax.xml.namespace.QName;
 import org.apache.juddi.jaxb.PrintUDDI;
 import org.apache.juddi.v3.client.config.UDDIClerk;
-import org.apache.juddi.v3.client.config.UDDIClerkManager;
+import org.apache.juddi.v3.client.config.UDDIClient;
 import org.apache.juddi.v3.client.config.UDDIClientContainer;
 import org.apache.juddi.v3.client.mapping.ReadWSDL;
 import org.apache.juddi.v3.client.mapping.URLLocalizerDefaultImpl;
@@ -50,9 +50,9 @@
 
         // create a manager and read the config in the archive; 
         // you can use your config file name
-        UDDIClerkManager clerkManager = new UDDIClerkManager("META-INF/simple-publish-uddi.xml");
+        UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
         // register the clerkManager with the client side container
-        UDDIClientContainer.addClerkManager(clerkManager);
+        UDDIClientContainer.addClient(clerkManager);            // a ClerkManager can be a client to multiple UDDI nodes, so 
         // a ClerkManager can be a client to multiple UDDI nodes, so 
         // supply the nodeName (defined in your uddi.xml.
         // The transport can be WS, inVM, RMI etc which is defined in the uddi.xml
@@ -159,7 +159,7 @@
         sb.getBusinessEntity().add(be);
         PrintUDDI<SaveBusiness> sbp = new PrintUDDI<SaveBusiness>();
         System.out.println("Request " + sbp.print(sb));
-       // publish.saveBusiness(sb);
+        // publish.saveBusiness(sb);
 
         //and we're done
 
@@ -177,7 +177,7 @@
         }
     }
 
-    private void someting() throws Exception{
+    private void someting() throws Exception {
         URL url = new URL("http://graphical.weather.gov/xml/SOAP_server/ndfdXMLserver.php?wsdl");
         String domain = url.getHost();
         ReadWSDL rw = new ReadWSDL();
diff --git a/uddi-ws/src/main/java/org/uddi/api_v3/Name.java b/uddi-ws/src/main/java/org/uddi/api_v3/Name.java
index 8b5c346..138a0c7 100644
--- a/uddi-ws/src/main/java/org/uddi/api_v3/Name.java
+++ b/uddi-ws/src/main/java/org/uddi/api_v3/Name.java
@@ -57,16 +57,6 @@
     @XmlAttribute(namespace = "http://www.w3.org/XML/1998/namespace")
     protected String lang;
 
-    public Name(String value, String lang) {
-        this.value = value;
-        this.lang = lang;
-    }
-
-    public Name() {
-        value=null;
-        lang=null;
-    }
-
     /**
      * A simple convenience constructor
      * @param value max length is 255 chars
