diff --git a/countries.info b/countries.info
index c5c0eab..5b4a258 100644
--- a/countries.info
+++ b/countries.info
@@ -5,6 +5,7 @@ core = 7.x
 
 files[] = views/views_handler_argument_countries_country.inc
 files[] = views/views_handler_field_countries_continent.inc
+files[] = views/views_handler_field_countries_flag.inc
 files[] = views/views_handler_filter_countries_continents_list.inc
 files[] = views/views_handler_filter_countries_list.inc
 files[] = countries.migrate.inc
diff --git a/views/countries.views.inc b/views/countries.views.inc
index 0f27333..4f6d9e6 100755
--- a/views/countries.views.inc
+++ b/views/countries.views.inc
@@ -62,6 +62,19 @@ function countries_views_data() {
     ),
   );
 
+  // Adds a formatter option for the country icon.
+  if (module_exists('countryicons')) {
+    $data['countries_country']['iso2_flag'] = array(
+        'title' => t('Country Flag'),
+        'help' => t('Flag provided by the Country Icons module.'),
+        'real field' => 'iso2',
+        'field' => array(
+            'handler' => 'views_handler_field_countries_flag',
+            'click sortable' => FALSE,
+        ),
+    );
+  }
+
   $data['countries_country']['iso3'] = array(
     'title' => t('ISO3'),
     'help' => t('The ISO3 country code of the country.'),
diff --git a/views/views_handler_field_countries_flag.inc b/views/views_handler_field_countries_flag.inc
new file mode 100644
index 0000000..c363160
--- /dev/null
+++ b/views/views_handler_field_countries_flag.inc
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * @file
+ * Views module field handler class.
+ */
+
+/**
+ * Provides a flag field.
+ */
+class views_handler_field_countries_flag extends views_handler_field {
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['countryiconset'] = array('default' => '');
+    $options['property'] = array('default' => '');
+
+    return $options;
+  }
+
+  /**
+   * Provide countryiconset option.
+   */
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    if (module_exists('countryicons')) {
+
+      $version = function_exists('countryicons_api_version') ? countryicons_api_version() : '1.0';
+      $options = array();
+      foreach (countryicons_get_iconsets() as $iconset) {
+        $iconset = (array) $iconset;
+
+        // The only diff between versions 1 & 2 of countryicons is the key value.
+        $key = version_compare("$version", '2.0') >= 0 ? $iconset['key'] : $iconset['name'];
+        $name = version_compare("$version", '2.0') >= 0 ? $iconset['name'] : $iconset['description'];
+        $options['icon_' . $key] = t('Icon: @country_icon_set', array('@country_icon_set' => empty($name) ? $key : $name));
+        if (!empty($iconset['css_sprite'])) {
+          $options['sprite_' . $key] = t('Icon sprite: @country_icon_set', array('@country_icon_set' => empty($name) ? $key : $name));
+        }
+      }
+      $form['countryiconset'] = array(
+        '#type' => 'select',
+        '#title' => t('Country icon source'),
+        '#options' => $options,
+        '#default_value' => $this->options['countryiconset'],
+      );
+
+
+      $properties = countries_core_properties();
+
+      $properties['continent_code'] = t('Continent code');
+      $form['property'] = array(
+        '#type' => 'select',
+        '#title' => t('Icon suffix'),
+        '#options' => array('' => t('-- None --')) + $properties,
+        '#default_value' => $this->options['property'],
+      );
+    }
+  }
+
+  /**
+   * Render contient as human readable name or continent code
+   */
+  function render($values) {
+    $output = '';
+    if ($value = $this->get_value($values)) {
+      if ($country = countries_get_country($value)) {
+        $variables = array(
+          'country' => $country,
+          'settings' => $this->options,
+        );
+        $output = theme('country_icon_adapter', $variables);
+      }
+    }
+    return $output;
+  }
+}
