diff --git a/geocoder.widget.inc b/geocoder.widget.inc
index 371820f..01a17b8 100644
--- a/geocoder.widget.inc
+++ b/geocoder.widget.inc
@@ -473,26 +473,32 @@ function geocoder_widget_values_from_geometry($geometry, $target_info) {
  * Geocoder Widget - Parse an address field.
  */
 function geocoder_widget_parse_addressfield($field_item) {
-  $address = '';
-  if (!empty($field_item['premise']))                 $address .= $field_item['premise'] . ',';
-  if (!empty($field_item['thoroughfare']))            $address .= $field_item['thoroughfare'] . ',';
-  if (!empty($field_item['locality']))                $address .= $field_item['locality'] . ',';
-  if (!empty($field_item['administrative_area']))     $address .= $field_item['administrative_area'] . ',';
-  if (!empty($field_item['sub_administrative_area'])) $address .= $field_item['sub_administrative_area'] . ',';
+  $address = array();
+
+  $address[] = !empty($field_item['premise']) ? $field_item['premise'] : NULL;
+  $address[] = !empty($field_item['thoroughfare']) ? $field_item['thoroughfare'] : NULL;
+  $address[] = !empty($field_item['locality']) ? $field_item['locality'] : NULL;
+  $address[] = !empty($field_item['administrative_area']) ? $field_item['administrative_area'] : NULL;
+  $address[] = !empty($field_item['sub_administrative_area']) ? $field_item['sub_administrative_area'] : NULL;
+
   if (!empty($field_item['country'])) {
-    // Convert country code to country name.
-    include_once DRUPAL_ROOT . '/includes/locale.inc';
-    $countries = country_get_list();
-    if (array_key_exists($field_item['country'], $countries)) {
-      $field_item['country'] = $countries[$field_item['country']];
+    if ($country_entity = entity_load('country', array($field_item['country']))){
+      $field_item['country'] = $country_entity->name;
+    }
+    else {
+      // Convert country code to country name.
+      include_once DRUPAL_ROOT . '/includes/locale.inc';
+      $countries = country_get_list();
+      if (array_key_exists($field_item['country'], $countries)) {
+        $field_item['country'] = $countries[$field_item['country']];
+      }
     }
-    $address .= $field_item['country'] . ',';
+    $address[] = $field_item['country'];
   }
-  if (!empty($field_item['postal_code']))             $address .= $field_item['postal_code'] . ',';
 
-  $address = rtrim($address, ', ');
+  $address[] = !empty($field_item['postal_code']) ? $field_item['postal_code'] : NULL;
 
-  return $address;
+  return implode(',', array_filter($address));
 }
 
 /**
