diff --git addressfield.info addressfield.info
index 8cd2acd..42be5eb 100644
--- addressfield.info
+++ addressfield.info
@@ -7,6 +7,7 @@ files[] = addressfield.module
 files[] = includes/addressfield_form.inc
 files[] = includes/addressfield_form_default.inc
 files[] = includes/addressfield_form_br.inc
+files[] = includes/addressfield_form_gb.inc
 files[] = includes/addressfield_form_us.inc
 
 ; Information added by drupal.org packaging script on 2010-11-21
diff --git addressfield.module addressfield.module
index 5225506..dec432e 100644
--- addressfield.module
+++ addressfield.module
@@ -558,6 +558,7 @@ function addressfield_default_mapping() {
   return array(
     'default' => 'AddressFieldForm_default',
     'BR' => 'AddressFieldForm_br',
+    'GB' => 'AddressFieldForm_gb',
     'US' => 'AddressFieldForm_us',
     // TODO: complete the mapping.
   );
diff --git includes/addressfield_form_gb.inc includes/addressfield_form_gb.inc
new file mode 100644
index 0000000..e257685
--- /dev/null
+++ includes/addressfield_form_gb.inc
@@ -0,0 +1,156 @@
+<?php
+// $Id$
+
+/**
+ * Address handler for the United Kingdom.
+ */
+class AddressFieldForm_gb implements AddressFieldForm {
+  public function form($address, $field, $instance, $langcode, $items, $delta, $element) {
+    $required = $delta == 0 && $instance['required'];
+
+    $form['premise'] = array(
+      '#title' => t('Building name / number'),
+      '#type' => 'textfield',
+      '#default_value' => $address['premise'],
+    );
+    $form['thoroughfare'] = array(
+      '#title' => t('Street'),
+      '#type' => 'textfield',
+      '#required' => $required,
+      '#default_value' => $address['thoroughfare'],
+    );
+    $form['dependent_locality'] = array(
+      '#title' => t('Suburb, post box, ...'),
+      '#type' => 'textfield',
+      '#default_value' => $address['dependent_locality'],
+    );
+    $form['locality'] = array(
+      '#title' => t('City'),
+      '#type' => 'textfield',
+      '#size' => 30,
+      '#required' => $required,
+      '#default_value' => $address['locality'],
+    );
+    $form['administrative_area'] = array(
+      '#title' => t('County'),
+      '#type' => 'select',
+      '#default_value' => $address['administrative_area'],
+      '#required' => $required,
+      '#options' => array(
+        ''   => t('--'),
+        t('England') => array(
+          'Avon' => t('Avon'),
+          'Bedfordshire' => t('Bedfordshire'),
+          'Berkshire' => t('Berkshire'),
+          'Buckinghamshire' => t('Buckinghamshire'),
+          'Cambridgeshire' => t('Cambridgeshire'),
+          'Cheshire' => t('Cheshire'),
+          'Cleveland' => t('Cleveland'),
+          'Cornwall' => t('Cornwall'),
+          'Cumbria' => t('Cumbria'),
+          'Derbyshire' => t('Derbyshire'),
+          'Devon' => t('Devon'),
+          'Dorset' => t('Dorset'),
+          'Durham' => t('Durham'),
+          'East Sussex' => t('East Sussex'),
+          'Essex' => t('Essex'),
+          'Gloucestershire' => t('Gloucestershire'),
+          'Hampshire' => t('Hampshire'),
+          'Herefordshire' => t('Herefordshire'),
+          'Hertfordshire' => t('Hertfordshire'),
+          'Isle of Wight' => t('Isle of Wight'),
+          'Kent' => t('Kent'),
+          'Lancashire' => t('Lancashire'),
+          'Leicestershire' => t('Leicestershire'),
+          'Lincolnshire' => t('Lincolnshire'),
+          'London' => t('London'),
+          'Merseyside' => t('Merseyside'),
+          'Middlesex' => t('Middlesex'),
+          'Norfolk' => t('Norfolk'),
+          'Northamptonshire' => t('Northamptonshire'),
+          'Northumberland' => t('Northumberland'),
+          'North Humberside' => t('North Humberside'),
+          'North Yorkshire' => t('North Yorkshire'),
+          'Nottinghamshire' => t('Nottinghamshire'),
+          'Oxfordshire' => t('Oxfordshire'),
+          'Rutland' => t('Rutland'),
+          'Shropshire' => t('Shropshire'),
+          'Somerset' => t('Somerset'),
+          'South Humberside' => t('South Humberside'),
+          'South Yorkshire' => t('South Yorkshire'),
+          'Staffordshire' => t('Staffordshire'),
+          'Suffolk' => t('Suffolk'),
+          'Surrey' => t('Surrey'),
+          'Tyne and Wear' => t('Tyne and Wear'),
+          'Warwickshire' => t('Warwickshire'),
+          'West Midlands' => t('West Midlands'),
+          'West Sussex' => t('West Sussex'),
+          'West Yorkshire' => t('West Yorkshire'),
+          'Wiltshire' => t('Wiltshire'),
+          'Worcestershire' => t('Worcestershire'),
+        ),
+        t('Wales') => array(
+          'Clwyd' => t('Clwyd'),
+          'Dyfed' => t('Dyfed'),
+          'Gwent' => t('Gwent'),
+          'Gwynedd' => t('Gwynedd'),
+          'Mid Glamorgan' => t('Mid Glamorgan'),
+          'Powys' => t('Powys'),
+          'South Glamorgan' => t('South Glamorgan'),
+          'West Glamorgan' => t('West Glamorgan'),
+        ),
+        t('Scotland') => array(
+          'Aberdeenshire' => t('Aberdeenshire'),
+          'Angus' => t('Angus'),
+          'Argyll' => t('Argyll'),
+          'Ayrshire' => t('Ayrshire'),
+          'Banffshire' => t('Banffshire'),
+          'Berwickshire' => t('Berwickshire'),
+          'Bute' => t('Bute'),
+          'Caithness' => t('Caithness'),
+          'Clackmannanshire' => t('Clackmannanshire'),
+          'Dumfriesshire' => t('Dumfriesshire'),
+          'Dunbartonshire' => t('Dunbartonshire'),
+          'East Lothian' => t('East Lothian'),
+          'Fife' => t('Fife'),
+          'Inverness-shire' => t('Inverness-shire'),
+          'Kincardineshire' => t('Kincardineshire'),
+          'Kinross-shire' => t('Kinross-shire'),
+          'Kirkcudbrightshire' => t('Kirkcudbrightshire'),
+          'Lanarkshire' => t('Lanarkshire'),
+          'Midlothian' => t('Midlothian'),
+          'Moray' => t('Moray'),
+          'Nairnshire' => t('Nairnshire'),
+          'Orkney' => t('Orkney'),
+          'Peeblesshire' => t('Peeblesshire'),
+          'Perthshire' => t('Perthshire'),
+          'Renfrewshire' => t('Renfrewshire'),
+          'Ross-shire' => t('Ross-shire'),
+          'Roxburghshire' => t('Roxburghshire'),
+          'Selkirkshire' => t('Selkirkshire'),
+          'Shetland' => t('Shetland'),
+          'Stirlingshire' => t('Stirlingshire'),
+          'Sutherland' => t('Sutherland'),
+          'West Lothian' => t('West Lothian'),
+          'Wigtownshire' => t('Wigtownshire'),
+        ),
+        t('Northern Ireland') => array(
+          'Antrim' => t('Antrim'),
+          'Armagh' => t('Armagh'),
+          'Down' => t('Down'),
+          'Fermanagh' => t('Fermanagh'),
+          'Londonderry' => t('Londonderry'),
+          'Tyrone' => t('Tyrone'),
+        ),
+      ),
+    );
+    $form['postal_code'] = array(
+      '#title' => t('Postcode'),
+      '#type' => 'textfield',
+      '#size' => 10,
+      '#required' => $required,
+      '#default_value' => $address['postal_code'],
+    );
+    return $form;
+  }
+}
diff --git theme/addressfield-formatter--GB.tpl.php theme/addressfield-formatter--GB.tpl.php
new file mode 100644
index 0000000..b87dab2
--- /dev/null
+++ theme/addressfield-formatter--GB.tpl.php
@@ -0,0 +1,16 @@
+<div class="adr">
+<p class="street-address">
+<?php print implode('<br />', array_filter(array(
+    $address['premise'],
+    $address['thoroughfare'],
+    $address['dependent_locality'],
+  )));
+?>
+</p>
+<p>
+  <span class="locality"><?php print $address['locality'];?></span><br />
+  <span class="administrative_area"><?php print $address['administrative_area'];?></span>
+  <span class="postal-code"><?php print $address['postal_code'];?></span><br />
+  <span class="country"><?php print $address['country'];?></span>
+</p>
+</div>
