diff --git a/plugins/format/address.inc b/plugins/format/address.inc
index d7745ab..bfa6697 100644
--- a/plugins/format/address.inc
+++ b/plugins/format/address.inc
@@ -89,7 +89,36 @@ function addressfield_format_address_generate(&$format, $address, $context = arr
       '#attributes' => array('class' => array('state')),
     );
   }
-
+  
+  // GB-specific tweaks
+  if ($address['country'] == 'GB') {
+    $locality = $format['locality_block']['locality'];
+    unset($format['locality_block']['locality']);
+    $locality['#title'] = t('Town/City');
+    $locality['#weight'] = 40;
+    $locality['#tag'] = 'div';
+    $locality['#prefix'] = '';
+    $format['locality'] = $locality;
+    // County
+    $administrative_area = $format['locality_block']['administrative_area'];
+    unset($format['locality_block']['administrative_area']);
+    $administrative_area['#title'] = t('County');
+    $administrative_area['#required'] = FALSE;
+    $administrative_area['#size'] = 30;
+    $administrative_area['#weight'] = 50;
+    $administrative_area['#tag'] = 'div';
+    $administrative_area['#prefix'] = '';
+    $format['administrative_area'] = $administrative_area;
+    // Postcode
+    $postal_code = $format['locality_block']['postal_code'];
+    unset($format['locality_block']['postal_code']);
+    $postal_code['#title']  = t('Postcode');
+    $postal_code['#weight'] = 60;
+    $postal_code['#prefix'] = '';
+    $postal_code['#tag'] = 'div';
+    $format['postal_code'] = $postal_code;
+  }
+  
   // A few contries have a well-known list of administrative divisions.
   if ($address['country'] == 'US') {
     $format['locality_block']['administrative_area']['#options'] = array(
@@ -324,22 +353,9 @@ function addressfield_format_address_generate(&$format, $address, $context = arr
     );
     $format['locality_block']['administrative_area']['#title'] = t('Province');
   }
-  else if ($address['country'] == 'AU') {
-    $format['locality_block']['administrative_area']['#options'] = array(
-      ''   => t('--'),
-      'ACT' => t('Australian Capital Territory'),
-      'NSW' => t('New South Wales'),
-      'NT' => t('Northern Territory'),
-      'QLD' => t('Queensland'),
-      'SA' => t('South Australia'),
-      'TAS' => t('Tasmania'),
-      'VIC' => t('Victoria'),
-      'WA' => t('Western Australia'),
-    );
-  }
 
   // Those countries tend to put the postal code after the locality.
-  if (in_array($address['country'], array('AU', 'BD', 'BF', 'BH', 'BM', 'BN', 'BT', 'CA', 'FM', 'GB', 'ID', 'IE', 'IN', 'JM', 'JO', 'KH', 'LB', 'LS', 'LV', 'MM', 'MN', 'MV', 'MW', 'NG', 'NP', 'NZ', 'PE', 'PK', 'PR', 'PW', 'SA', 'SG', 'SO', 'TH', 'US', 'VI', 'VG', 'VN'))) {
+  if (in_array($address['country'], array('AU', 'BD', 'BF', 'BH', 'BM', 'BN', 'BT', 'CA', 'FM', 'ID', 'IE', 'IN', 'JM', 'JO', 'KH', 'LB', 'LS', 'LV', 'MM', 'MN', 'MV', 'MW', 'NG', 'NP', 'NZ', 'PE', 'PK', 'PR', 'PW', 'SA', 'SG', 'SO', 'TH', 'US', 'VI', 'VG', 'VN'))) {
     // Take the widget out of the array.
     $postal_code_widget = $format['locality_block']['postal_code'];
     $postal_code_widget['#prefix'] = ' ';
