diff --git a/geolocation.install b/geolocation.install
index b8ef530..216607a 100644
--- a/geolocation.install
+++ b/geolocation.install
@@ -42,6 +42,11 @@ function geolocation_field_schema($field) {
       'not null' => TRUE,
       'default' => 0,
     ),
+    'address' => array(
+      'description' => 'Stores the address if the widget has saved it',
+      'type' => 'text',
+      'not null' => FALSE,
+    ),
   );
   $indexes = array(
     'lat' => array('lat'),
diff --git a/modules/geolocation_googlemaps/geolocation_googlemaps.info b/modules/geolocation_googlemaps/geolocation_googlemaps.info
index fd7bacf..5764ac8 100644
--- a/modules/geolocation_googlemaps/geolocation_googlemaps.info
+++ b/modules/geolocation_googlemaps/geolocation_googlemaps.info
@@ -3,9 +3,3 @@ description = Provides Google Maps widgets and formaters for geolocation field.
 package = Geolocation
 core = 7.x
 dependencies[] = geolocation
-; Information added by drupal.org packaging script on 2011-11-05
-version = "7.x-1.x-dev"
-core = "7.x"
-project = "geolocation"
-datestamp = "1320451720"
-
diff --git a/modules/geolocation_googlemaps/geolocation_googlemaps.js b/modules/geolocation_googlemaps/geolocation_googlemaps.js
index 3863a5d..4e86a49 100644
--- a/modules/geolocation_googlemaps/geolocation_googlemaps.js
+++ b/modules/geolocation_googlemaps/geolocation_googlemaps.js
@@ -31,7 +31,7 @@
     $('#geolocation-lng-item-' + i + ' .geolocation-lat-item-value').html(latLng.lng());
  
     // Update the address field
-    if ((op == 'marker' || op == 'geocoder') && geocoder) {
+    if ((op == 'marker' || op == 'geocoder' || op == 'textinput') && geocoder) {
       geocoder.geocode({'latLng': latLng}, function(results, status) {
         if (status == google.maps.GeocoderStatus.OK) {
           $('#geolocation-address-' + i + ' input').val(results[0].formatted_address);
@@ -57,7 +57,7 @@
    */
   Drupal.Geolocation.codeAddress = function(i) {
     var address = $('#geolocation-address-' + i + ' input').val();
-    geocoder.geocode( { 'address': address }, function(results, status) {
+    geocoder.geocode( {'address': address}, function(results, status) {
       if (status == google.maps.GeocoderStatus.OK) {
         Drupal.Geolocation.maps[i].setCenter(results[0].geometry.location);
         Drupal.Geolocation.setMapMarker(results[0].geometry.location, i);
diff --git a/modules/geolocation_googlemaps/geolocation_googlemaps.module b/modules/geolocation_googlemaps/geolocation_googlemaps.module
index 8c7342d..3f8d6c0 100644
--- a/modules/geolocation_googlemaps/geolocation_googlemaps.module
+++ b/modules/geolocation_googlemaps/geolocation_googlemaps.module
@@ -21,6 +21,10 @@ function geolocation_googlemaps_field_formatter_info() {
         'map_maptype' => 'roadmap',
       ),
     ),
+    'geolocation_googlemaps_address' => array(
+      'label' => t('Simple Google Map Address'),
+      'field types' => array('geolocation_latlng'),
+     ),
   );
 }
 
@@ -28,83 +32,87 @@ function geolocation_googlemaps_field_formatter_info() {
  * Implements hook_field_formatter_settings_form().
  */
 function geolocation_googlemaps_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
-  $display = $instance['display'][$view_mode];
-  $settings = $display['settings'];
+  switch($instance['display']['default']['type']) {
+    case 'geolocation_googlemaps_static' : {
+      $display = $instance['display'][$view_mode];
+      $settings = $display['settings'];
 
-  $element = array();
+      $element = array();
 
-  // Implement some configuration options.
-  // http://code.google.com/intl/en/apis/maps/documentation/staticmaps/
+      // Implement some configuration options.
+      // http://code.google.com/intl/en/apis/maps/documentation/staticmaps/
 
-  $element['map_dimensions'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Map dimensions'),
-    '#description' => t('Enter custom map dimensions, default is 300x300.'),
-    '#default_value' => $settings['map_dimensions'],
-  );
-  
-  $element['marker_icon'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Marker icon'),
-    '#description' => t('Set the path to the icon marker you wish to use. Path can be absolute (wicth http://) or relative to the Drupal instalation. If left blank, the default will be used'),
-    '#default_value' => $settings['marker_icon'],
-  );
+      $element['map_dimensions'] = array(
+        '#type' => 'textfield',
+        '#title' => t('Map dimensions'),
+        '#description' => t('Enter custom map dimensions, default is 300x300.'),
+        '#default_value' => $settings['map_dimensions'],
+      );
 
-  $element['map_imageformat'] = array(
-    '#type' => 'select',
-    '#title' => t('Image format'),
-    '#options' => array(
-      'png8' => '8-bit PNG (default)',
-      'png32' => '32-bit PNG',
-      'gif' => 'GIF',
-      'jpg' => 'JPEG',
-      'jpg-baseline' => 'JPEG (non-progressive)',
-    ),
-    '#description' => t('Choose an Image Format. jpg and jpg-baseline typically provide the smallest image size, though they do so through "lossy" compression which may degrade the image. gif, png8 and png32 provide lossless compression.'),
-    '#default_value' => $settings['map_imageformat'],
-  );
+      $element['marker_icon'] = array(
+        '#type' => 'textfield',
+        '#title' => t('Marker icon'),
+        '#description' => t('Set the path to the icon marker you wish to use. Path can be absolute (wicth http://) or relative to the Drupal instalation. If left blank, the default will be used'),
+        '#default_value' => $settings['marker_icon'],
+      );
 
-  $element['map_maptype'] = array(
-    '#type' => 'select',
-    '#title' => t('Map Type'),
-    '#options' => array(
-      'roadmap' => 'Roadmap (default)',
-      'satellite' => 'Satellite',
-      'terrain' => 'Terrain',
-      'hybrid' => 'Hybrid',
-    ),
-    '#description' => t('Choose map type. <em>roadmap</em> (default) specifies a standard roadmap image, as is normally shown on the Google Maps website. <em>satellite</em> specifies a satellite image. <em>terrain</em> specifies a physical relief map image, showing terrain and vegetation. <em>hybrid</em> specifies a hybrid of the satellite and roadmap image, showing a transparent layer of major streets and place names on the satellite image.'),
-    '#default_value' => $settings['map_maptype'],
-  );
+      $element['map_imageformat'] = array(
+        '#type' => 'select',
+        '#title' => t('Image format'),
+        '#options' => array(
+          'png8' => '8-bit PNG (default)',
+          'png32' => '32-bit PNG',
+          'gif' => 'GIF',
+          'jpg' => 'JPEG',
+          'jpg-baseline' => 'JPEG (non-progressive)',
+        ),
+        '#description' => t('Choose an Image Format. jpg and jpg-baseline typically provide the smallest image size, though they do so through "lossy" compression which may degrade the image. gif, png8 and png32 provide lossless compression.'),
+        '#default_value' => $settings['map_imageformat'],
+      );
 
-  $element['map_zoomlevel'] = array(
-    '#type' => 'select',
-    '#title' => t('Zoom level'),
-    '#options' => array(
-      '1' => '1',
-      '2' => '2',
-      '3' => '3',
-      '4' => '4',
-      '5' => '5',
-      '6' => '6',
-      '7' => '7 (default)',
-      '8' => '8',
-      '9' => '9',
-      '10' => '10',
-      '11' => '11',
-      '12' => '12',
-      '13' => '13',
-      '14' => '14',
-      '15' => '15',
-      '16' => '16',
-      '17' => '17',
-      '18' => '18',
-      '19' => '19',
-    ),
-    '#description' => t('Choose a custom zoom level - the higher the number the closer. <em>High zoom warning:</em> Google might not return images for any combination of Map Type and Zoom Level.'),
-    '#default_value' => $settings['map_zoomlevel'],
-  );
+      $element['map_maptype'] = array(
+        '#type' => 'select',
+        '#title' => t('Map Type'),
+        '#options' => array(
+          'roadmap' => 'Roadmap (default)',
+          'satellite' => 'Satellite',
+          'terrain' => 'Terrain',
+          'hybrid' => 'Hybrid',
+        ),
+        '#description' => t('Choose map type. <em>roadmap</em> (default) specifies a standard roadmap image, as is normally shown on the Google Maps website. <em>satellite</em> specifies a satellite image. <em>terrain</em> specifies a physical relief map image, showing terrain and vegetation. <em>hybrid</em> specifies a hybrid of the satellite and roadmap image, showing a transparent layer of major streets and place names on the satellite image.'),
+        '#default_value' => $settings['map_maptype'],
+      );
 
+      $element['map_zoomlevel'] = array(
+        '#type' => 'select',
+        '#title' => t('Zoom level'),
+        '#options' => array(
+          '1' => '1',
+          '2' => '2',
+          '3' => '3',
+          '4' => '4',
+          '5' => '5',
+          '6' => '6',
+          '7' => '7 (default)',
+          '8' => '8',
+          '9' => '9',
+          '10' => '10',
+          '11' => '11',
+          '12' => '12',
+          '13' => '13',
+          '14' => '14',
+          '15' => '15',
+          '16' => '16',
+          '17' => '17',
+          '18' => '18',
+          '19' => '19',
+        ),
+        '#description' => t('Choose a custom zoom level - the higher the number the closer. <em>High zoom warning:</em> Google might not return images for any combination of Map Type and Zoom Level.'),
+        '#default_value' => $settings['map_zoomlevel'],
+      );
+      break;
+    }
+  }
   return $element;
 }
 
@@ -112,19 +120,25 @@ function geolocation_googlemaps_field_formatter_settings_form($field, $instance,
  * Implements hook_field_formatter_settings_summary().
  */
 function geolocation_googlemaps_field_formatter_settings_summary($field, $instance, $view_mode) {
-  $display = $instance['display'][$view_mode];
-  $settings = $display['settings'];
-
-  $summary = '<strong>Map:</strong> '. $settings['map_dimensions'] .' ('. $settings['map_imageformat'] .')<br />';
-  $summary .= '<strong>Type:</strong> '. $settings['map_maptype'] .'<br />';
-  $summary .= '<strong>Zoom:</strong> '. $settings['map_zoomlevel'];
-  if ($settings['marker_icon']) {
-    $vars = array(
-      'path' => $settings['marker_icon'],
-    );
-    $summary .= '<br /><strong>Icon:</strong> '. theme('image', $vars);
+  switch($instance['display']['default']['type']) {
+    case 'geolocation_googlemaps_static' : {
+      $display = $instance['display'][$view_mode];
+      $settings = $display['settings'];
+
+      $summary = '<strong>Map:</strong> '. $settings['map_dimensions'] .' ('. $settings['map_imageformat'] .')<br />';
+      $summary .= '<strong>Type:</strong> '. $settings['map_maptype'] .'<br />';
+      $summary .= '<strong>Zoom:</strong> '. $settings['map_zoomlevel'];
+      if ($settings['marker_icon']) {
+        $vars = array(
+          'path' => $settings['marker_icon'],
+        );
+        $summary .= '<br /><strong>Icon:</strong> '. theme('image', $vars);
+      }
+      return $summary;
+      break;
+    }
   }
-  return $summary;
+  
 }
 
 /**
@@ -159,7 +173,13 @@ function geolocation_googlemaps_field_formatter_view($entity_type, $entity, $fie
         $element[$delta]['#markup'] = '<div>' . $map_img . '</div>';
       }
       break;
-
+    case 'geolocation_googlemaps_address' : {
+      foreach ($items as $delta => $item) {
+        $address = $item['address'];
+        $element[$delta]['#markup'] = '<a href="http://maps.google.com/maps?q='.urlencode($address).'">'.$address.'</a>';
+      }
+      break;
+    }
   }
   return $element;
 }
