diff --git addressfield.module addressfield.module
index bc60698..9a3c4e5 100644
--- addressfield.module
+++ addressfield.module
@@ -181,7 +181,7 @@ function addressfield_field_widget_form(&$form, &$form_state, $field, $instance,
     '#type' => 'select',
     '#title' => t('Country'),
     '#options' => $country_list,
-    '#required' => true,
+    '#required' => TRUE,
     '#default_value' => $address['country'],
     '#ajax' => array(
       'callback' => 'addressfield_update_js',
@@ -192,7 +192,7 @@ function addressfield_field_widget_form(&$form, &$form_state, $field, $instance,
     '#limit_validation_errors' => array(),
   );
 
-  $element += addressfield_edit_form($address['country'], $address);
+  $element += addressfield_edit_form($address, $field, $instance, $langcode, $items, $delta, $element);
 
   return $element;
 }
@@ -220,23 +220,21 @@ function addressfield_update_js($form, $form_state) {
 /**
  * Return a form snippet for editing an address in a given country.
  *
- * @param $country
- *   The country of the address.
  * @param array $address
  *   An address array.
  * @return
  *   A form snippet.
  */
-function addressfield_edit_form($country, array $address) {
+function addressfield_edit_form(array $address, $field, $instance, $langcode, $items, $delta, $element) {
   $form_controller = addressfield_get_form_controller($address);
 
   // Build the form from the controller.
-  $form = $form_controller->form($address);
+  $form = $form_controller->form($address, $field, $instance, $langcode, $items, $delta, $element);
 
   return $form;
 }
 
-/** 
+/**
  * Implementation of hook_field_widget_settings_form()
  */
 function addressfield_field_widget_settings_form($field, $instance) {
diff --git includes/addressfield_form.inc includes/addressfield_form.inc
index 4172d3b..3335259 100644
--- includes/addressfield_form.inc
+++ includes/addressfield_form.inc
@@ -9,6 +9,6 @@ interface AddressFieldForm {
   /**
    * Return the edit form for a given address.
    */
-  public function form($address);
+  public function form($address, $field, $instance, $langcode, $items, $delta, $element);
 
 }
diff --git includes/addressfield_form_default.inc includes/addressfield_form_default.inc
index a00d064..08dd032 100644
--- includes/addressfield_form_default.inc
+++ includes/addressfield_form_default.inc
@@ -5,11 +5,13 @@
  * Default address handler.
  */
 class AddressFieldForm_default implements AddressFieldForm {
-  public function form($address) {
+  public function form($address, $field, $instance, $langcode, $items, $delta, $element) {
+    $required = $delta == 0 && $instance['required'];
+
     $form['thoroughfare'] = array(
       '#title' => t('Street'),
       '#type' => 'textfield',
-      '#required' => true,
+      '#required' => $required,
       '#default_value' => $address['thoroughfare'],
     );
     $form['premise'] = array(
@@ -31,14 +33,14 @@ class AddressFieldForm_default implements AddressFieldForm {
       '#title' => t('Postal Code'),
       '#type' => 'textfield',
       '#size' => 5,
-      '#required' => true,
+      '#required' => $required,
       '#default_value' => $address['postal_code'],
     );
     $form['locality'] = array(
       '#title' => t('City'),
       '#type' => 'textfield',
       '#size' => 30,
-      '#required' => true,
+      '#required' => $required,
       '#default_value' => $address['locality'],
     );
 
diff --git includes/addressfield_form_us.inc includes/addressfield_form_us.inc
index 7a965d4..4077832 100644
--- includes/addressfield_form_us.inc
+++ includes/addressfield_form_us.inc
@@ -5,11 +5,13 @@
  * Address handler for the US.
  */
 class AddressFieldForm_us implements AddressFieldForm {
-  public function form($address) {
+  public function form($address, $field, $instance, $langcode, $items, $delta, $element) {
+    $required = $delta == 0 && $instance['required'];
+
     $form['thoroughfare'] = array(
       '#title' => t('Street'),
       '#type' => 'textfield',
-      '#required' => true,
+      '#required' => $required,
       '#default_value' => $address['thoroughfare'],
     );
     $form['premise'] = array(
@@ -21,21 +23,21 @@ class AddressFieldForm_us implements AddressFieldForm {
       '#title' => t('City'),
       '#type' => 'textfield',
       '#size' => 30,
-      '#required' => true,
+      '#required' => $required,
       '#default_value' => $address['locality'],
     );
     $form['postal_code'] = array(
       '#title' => t('ZIP Code'),
       '#type' => 'textfield',
       '#size' => 5,
-      '#required' => true,
+      '#required' => $required,
       '#default_value' => $address['postal_code'],
     );
     $form['administrative_area'] = array(
       '#title' => t('State'),
       '#type' => 'select',
       '#default_value' => $address['administrative_area'],
-      '#required' => TRUE,
+      '#required' => $required,
       '#options' => array(
         ''   => t('--'),
         'AL' => t('Alabama'),
