diff --git a/src/com/google/wireless/gdata/contacts/data/ContactEntry.java b/src/com/google/wireless/gdata/contacts/data/ContactEntry.java
index 2d3246e..716a5fe 100644
--- a/src/com/google/wireless/gdata/contacts/data/ContactEntry.java
+++ b/src/com/google/wireless/gdata/contacts/data/ContactEntry.java
@@ -25,6 +25,7 @@
   private final Vector organizations = new Vector();
   private final Vector extendedProperties = new Vector();
   private final Vector groups = new Vector();
+  private String yomiName;
 
   public ContactEntry() {
     super();
@@ -112,6 +113,14 @@
     return organizations;
   }
 
+  public void setYomiName(String yomiName) {
+    this.yomiName = yomiName;
+  }
+
+  public String getYomiName() {
+    return yomiName;
+  }
+
   /*
   * (non-Javadoc)
   * @see com.google.wireless.gdata.data.Entry#clear()
@@ -129,6 +138,7 @@
     organizations.removeAllElements();
     extendedProperties.removeAllElements();
     groups.removeAllElements();
+    yomiName = null;
   }
 
   protected void toString(StringBuffer sb) {
@@ -189,6 +199,9 @@
       ((GroupMembershipInfo) iter.nextElement()).toString(sb);
       sb.append("\n");
     }
+    if (!StringUtils.isEmpty(yomiName)) {
+      sb.append(" yomiName:").append(yomiName).append("\n");
+    }
   }
 
   public void validate() throws ParseException {
diff --git a/src/com/google/wireless/gdata/contacts/parser/xml/XmlContactsGDataParser.java b/src/com/google/wireless/gdata/contacts/parser/xml/XmlContactsGDataParser.java
index 5c7f551..42a2534 100644
--- a/src/com/google/wireless/gdata/contacts/parser/xml/XmlContactsGDataParser.java
+++ b/src/com/google/wireless/gdata/contacts/parser/xml/XmlContactsGDataParser.java
@@ -237,6 +237,9 @@
       group.setGroup(parser.getAttributeValue(null  /* ns */, "href"));
       group.setDeleted("true".equals(parser.getAttributeValue(null  /* ns */, "deleted")));
       contactEntry.addGroup(group);
+    } else if ("yomiName".equals(name)) {
+      String yomiName = XmlUtils.extractChildText(parser);
+      contactEntry.setYomiName(yomiName);
     }
   }
 
diff --git a/src/com/google/wireless/gdata/contacts/serializer/xml/XmlContactEntryGDataSerializer.java b/src/com/google/wireless/gdata/contacts/serializer/xml/XmlContactEntryGDataSerializer.java
index 670e24b..70752b3 100644
--- a/src/com/google/wireless/gdata/contacts/serializer/xml/XmlContactEntryGDataSerializer.java
+++ b/src/com/google/wireless/gdata/contacts/serializer/xml/XmlContactEntryGDataSerializer.java
@@ -94,6 +94,8 @@
     while (eachGroup.hasMoreElements()) {
       serialize(serializer, (GroupMembershipInfo) eachGroup.nextElement());
     }
+
+    serializeYomiName(serializer, entry.getYomiName());
   }
 
   private static void serialize(XmlSerializer serializer, EmailAddress email)
@@ -240,4 +242,15 @@
       throws IOException, ParseException {
      serializer.text(blob);
   }
+
+  private static void serializeYomiName(XmlSerializer serializer,
+      String yomiName)
+      throws IOException {
+    if (StringUtils.isEmpty(yomiName)) {
+      return;
+    }
+    serializer.startTag(XmlContactsGDataParser.NAMESPACE_CONTACTS_URI, "yomiName");
+    serializer.text(yomiName);
+    serializer.endTag(XmlContactsGDataParser.NAMESPACE_CONTACTS_URI, "yomiName");
+  }
 }
