diff --git modules/geonames_content/geonames_content.info modules/geonames_content/geonames_content.info
new file mode 100755
index 0000000..5ae2277
--- /dev/null
+++ modules/geonames_content/geonames_content.info
@@ -0,0 +1,4 @@
+name = Geonames Content
+description = Geonames Content
+core = 6.x
+package = Geonames
\ No newline at end of file
diff --git modules/geonames_content/geonames_content.module modules/geonames_content/geonames_content.module
new file mode 100755
index 0000000..50fe766
--- /dev/null
+++ modules/geonames_content/geonames_content.module
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * Implementation of hook_theme
+ * @return
+ */
+function geonames_content_theme() {
+  return array(
+    'geonames_content_formatter_location_hierarchy' => array(
+      'arguments' => array('element' => NULL),
+    ),
+    'geonames_content_display_hierarchy' => array(
+      'arguments' => array('items' => NULL),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_field_formatter_info().
+ */
+function geonames_content_field_formatter_info() {
+  return array(
+    'location_hierarchy' => array(
+      'label' => t('Geonames Location Hierarchy'),
+      'field types' => array('text'),
+    )
+  );
+}
+
+function theme_geonames_content_formatter_location_hierarchy($element) {
+  $geocode_id = (int) $element['#item']['value'];
+
+  $query = array(
+    'geonameid' => $geocode_id,
+    'style' => 'short',
+  );
+  $response = geonames_query('hierarchy', $query);
+
+  if(!$response || !$response->total_results_count) {
+    return '';
+  }
+
+  $results = $response->results;
+
+  $items = array();
+  if (!empty($results)) {
+    foreach ($results as $result) {
+      if ($result['geonameid'] == '6295630') { // remove 'globe' geoname from results
+        continue;
+      }
+      $items[] = array('name' => $result['name']);
+    }
+  }
+
+  return theme('geonames_content_display_hierarchy', $items);
+}
+
+function theme_geonames_content_display_hierarchy($items) {
+  $output = '';
+
+  foreach($items as $item) {
+    if(isset($item['href'])) {
+      $options = isset($item['link_options']) ? $item['link_options'] : NULL;
+      $output .= l($item['name'], $item['href'], $options);
+    }
+    else {
+      $output .= $item['name'] . ' > ';
+    }
+  }
+
+  return trim($output, ' > ');
+}
