diff --git a/src/main/java/org/apache/ws/scout/util/ScoutUddiJaxrHelper.java b/src/main/java/org/apache/ws/scout/util/ScoutUddiJaxrHelper.java
index 9d8529d..c56cdd6 100644
--- a/src/main/java/org/apache/ws/scout/util/ScoutUddiJaxrHelper.java
+++ b/src/main/java/org/apache/ws/scout/util/ScoutUddiJaxrHelper.java
@@ -112,19 +112,32 @@
 	throws JAXRException
 	{
 		List<Name> namesList = businessEntity.getName();
-		Name n = null;
-		if (namesList.size()>0) n = namesList.get(0);
-
 		List<Description> descriptionList = businessEntity.getDescription();
-		Description desc =null;
-		if (descriptionList.size()>0) desc = descriptionList.get(0);
 
 		Organization org = new OrganizationImpl(lifeCycleManager);
-		if(n != null ) {
-			org.setName(getIString(n.getLang(), n.getValue(), lifeCycleManager));
+		if ((namesList != null) && (namesList.size() > 0)) {
+			InternationalString is = null;
+			for (int i = 0; i < namesList.size(); i++)  {
+				Name n = namesList.get(i);
+				if (is == null) {
+					is = getIString(n.getLang(), n.getValue(), lifeCycleManager);
+				} else {
+					is.setValue(getLocale(n.getLang()), n.getValue());
+				}
+			}
+			org.setName(is);
 		}
-		if( desc != null) {
-			org.setDescription(getIString(desc.getLang(), desc.getValue(), lifeCycleManager));
+		if ((descriptionList != null) && (descriptionList.size() > 0)) {
+			InternationalString is = null;
+			for (int i = 0; i < descriptionList.size(); i++)  {
+				Description desc = descriptionList.get(i);
+				if (is == null) {
+					is = getIString(desc.getLang(), desc.getValue(), lifeCycleManager);
+				} else {
+					is.setValue(getLocale(desc.getLang()), desc.getValue());
+				}
+			}
+			org.setDescription(is);
 		}
 		org.setKey(lifeCycleManager.createKey(businessEntity.getBusinessKey()));
 
@@ -196,20 +209,35 @@
 			throw new JAXRException("Unexpected count of organizations in BusinessDetail: " + bizEntityList.size());
 		}
 		BusinessEntity entity = bizEntityList.get(0);
-		Name n = null;
-		if (entity.getName().size()>0) n = entity.getName().get(0);
-
+		List<Name> namesList = entity.getName();
 		List<Description> descriptionList = entity.getDescription();
-		Description desc =null;
-		if (descriptionList.size()>0) desc = descriptionList.get(0);
 
 		Organization org = new OrganizationImpl(lifeCycleManager);
-		if( n != null ) {
-			org.setName(getIString(n.getLang(), n.getValue(), lifeCycleManager));
+		if ((namesList != null) && (namesList.size() > 0)) {
+			InternationalString is = null;
+			for (int i = 0; i < namesList.size(); i++)  {
+				Name n = namesList.get(i);
+				if (is == null) {
+					is = getIString(n.getLang(), n.getValue(), lifeCycleManager);
+				} else {
+					is.setValue(getLocale(n.getLang()), n.getValue());
+				}
+			}
+			org.setName(is);
 		}
-		if( desc != null ) {
-			org.setDescription(getIString(desc.getLang(), desc.getValue(), lifeCycleManager));
+		if ((descriptionList != null) && (descriptionList.size() > 0)) {
+			InternationalString is = null;
+			for (int i = 0; i < descriptionList.size(); i++)  {
+				Description desc = descriptionList.get(i);
+				if (is == null) {
+					is = getIString(desc.getLang(), desc.getValue(), lifeCycleManager);
+				} else {
+					is.setValue(getLocale(desc.getLang()), desc.getValue());
+				}
+			}
+			org.setDescription(is);
 		}
+
 		org.setKey(lifeCycleManager.createKey(entity.getBusinessKey()));
 
 		//Set Services also
@@ -353,20 +381,31 @@
 			serve.setKey(lifeCycleManager.createKey(keystr));
 		}
 
-		Name n = null;
-		if (businessService.getName().size()>0) n = businessService.getName().get(0);
+		List<Name> namesList = businessService.getName();
+		List<Description> descriptionList = businessService.getDescription();
 
-		if (n != null) {
-			String name = n.getValue();
-			serve.setName(lifeCycleManager.createInternationalString(getLocale(n.getLang()), name));
+		InternationalString is = null;
+		for (int i = 0; i < namesList.size(); i++) {
+			Name n = namesList.get(i);
+			if (is == null) {
+				is = lifeCycleManager.createInternationalString(getLocale(n.getLang()), n.getValue());
+			} else {
+				is.setValue(getLocale(n.getLang()), n.getValue());
+			}
 		}
-
-		Description desc =null;
-		if (businessService.getDescription().size()>0) desc = businessService.getDescription().get(0);
-		if (desc != null ) {
-			serve.setDescription(lifeCycleManager.createInternationalString(getLocale(desc.getLang()), desc.getValue()));
+		serve.setName(is);
+		
+		InternationalString dis = null;
+		for (int i = 0; i < namesList.size(); i++) {
+			Description desc = descriptionList.get(i);
+			if (dis == null) {
+				dis = lifeCycleManager.createInternationalString(getLocale(desc.getLang()), desc.getValue());
+			} else {
+				dis.setValue(getLocale(desc.getLang()), desc.getValue());
+			}
 		}
-
+		serve.setDescription(dis);
+		
 		//Populate the ServiceBindings for this Service
 		BindingTemplates bts = businessService.getBindingTemplates();
 		List<BindingTemplate> bindingTemplateList = bts.getBindingTemplate();
@@ -390,12 +429,18 @@
 			service.setKey(lifeCycleManager.createKey(keystr));
 		}
 
-		Name n = null;
-		if (serviceInfo.getName().size()>0) n = serviceInfo.getName().get(0);
-		if (n != null) {
-			String name = n.getValue();
-			service.setName(lifeCycleManager.createInternationalString(getLocale(n.getLang()), name));
+		List<Name> namesList = serviceInfo.getName();
+		InternationalString is = null;
+		for (int i = 0; i < namesList.size(); i++) {
+			Name n = namesList.get(i);
+			if (is == null) {
+				is = lifeCycleManager.createInternationalString(getLocale(n.getLang()), n.getValue());
+			} else {
+				is.setValue(getLocale(n.getLang()), n.getValue());
+			}
 		}
+		service.setName(is);
+
 		return service;
 	}
 
diff --git a/src/test/java/org/apache/ws/scout/registry/JAXRLocaleTest.java b/src/test/java/org/apache/ws/scout/registry/JAXRLocaleTest.java
index 139ed74..2b49c6f 100644
--- a/src/test/java/org/apache/ws/scout/registry/JAXRLocaleTest.java
+++ b/src/test/java/org/apache/ws/scout/registry/JAXRLocaleTest.java
@@ -80,8 +80,10 @@
         Organization organization = (Organization) blm.createObject(BusinessLifeCycleManager.ORGANIZATION);
 
         is = getIString(locale, "Apache Scout Org");
+        is.setValue(Locale.JAPANESE, "Apache Scoot Org");
         organization.setName(is);
         is = getIString(locale, "This is the org for Apache Scout Test");
+        is.setValue(Locale.JAPANESE, "This is the org for Apache Scout Test");
         organization.setDescription(is);
 
         Collection<Organization> organizations = new ArrayList<Organization>();
@@ -99,16 +101,22 @@
         
         assertEquals(organization.getName().getValue(locale),
                      organization1.getName().getValue(locale));
+        assertEquals(organization.getName().getValue(Locale.JAPANESE),
+                organization1.getName().getValue(Locale.JAPANESE));
         
         assertEquals(organization.getDescription().getValue(locale), 
                      organization1.getDescription().getValue(locale));
-                       
+        assertEquals(organization.getDescription().getValue(Locale.JAPANESE), 
+                organization1.getDescription().getValue(Locale.JAPANESE));
+
         // create Service
         Service service = (Service) blm.createObject(BusinessLifeCycleManager.SERVICE);
 
         is = getIString(locale, "Apache Scout Service");
+        is.setValue(Locale.JAPANESE, "Apache Scoot Service");
         service.setName(is);
         is = getIString(locale, "This is the service for Apache Scout Test");
+        is.setValue(Locale.JAPANESE, "This is the service for Apache Scoot Test");
         service.setDescription(is);
 
         organization1.addService(service);
@@ -128,6 +136,8 @@
         
         assertEquals(service.getName().getValue(locale),
                      service1.getName().getValue(locale));
+        assertEquals(service.getName().getValue(Locale.JAPANESE),
+        			service1.getName().getValue(Locale.JAPANESE));
         
         assertEquals(service.getDescription().getValue(locale), 
                      service1.getDescription().getValue(locale));
