diff --git a/config/install/flags.flags.yml b/config/install/flags.flags.yml
deleted file mode 100644
index fba9dea..0000000
--- a/config/install/flags.flags.yml
+++ /dev/null
@@ -1,265 +0,0 @@
-flags:
-  'ac': 'Flag of Ascension Island'
-  'ad': 'Flag of Andorra'
-  'ae': 'Flag of the United Arab Emirates'
-  'af': 'Flag of Afghanistan'
-  'ag': 'Flag of Antigua and Barbuda'
-  'ai': 'Flag of Anguilla'
-  'al': 'Flag of Albania'
-  'am': 'Flag of Armenia'
-  'an': 'Flag of the Netherlands Antilles'
-  'ao': 'Flag of Angola'
-  'aq': 'Flags of Antarctica'
-  'ar': 'Flag of Argentina'
-  'ara': 'Arabic language icon: Green flag with first letter of Arabic alphabet'
-  'as': 'Flag of American Samoa'
-  'at': 'Flag of Austria'
-  'au': 'Flag of Australia'
-  'aw': 'Flag of Aruba'
-  'ax': 'Flag of Åland'
-  'az': 'Flag of Azerbaijan'
-  'ba': 'Flag of Bosnia and Herzegovina'
-  'bb': 'Flag of Barbados'
-  'bd': 'Flag of Bangladesh'
-  'be': 'Flag of Belgium'
-  'bf': 'Flag of Burkina Faso'
-  'bg': 'Flag of Bulgaria'
-  'bh': 'Flag of Bahrain'
-  'bi': 'Flag of Burundi'
-  'bj': 'Flag of Benin'
-  'bl': 'Flag of Saint Barthelemy'
-  'bm': 'Flag of Bermuda'
-  'bn': 'Flag of Brunei'
-  'bo': 'Flag of Bolivia'
-  'bod': 'Flag of Tibet'
-  'br': 'Flag of Brazil'
-  'bs': 'Flag of the Bahamas'
-  'bt': 'Flag of Bhutan'
-  'bw': 'Flag of Botswana'
-  'by': 'Flag of Belarus'
-  'bz': 'Flag of Belize'
-  'ca': 'Flag of Canada'
-  'cc': 'Flag of the Cocos (Keeling) Islands'
-  'cd': 'Flag of the Democratic Republic of the Congo'
-  'cf': 'Flag of the Central African Republic'
-  'cg': 'Flag of the Republic of the Congo'
-  'ch': 'Flag of Switzerland'
-  'ci': 'Flag of Ivory Coast'
-  'ck': 'Flag of the Cook Islands'
-  'cl': 'Flag of Chile'
-  'cm': 'Flag of Cameroon'
-  'cn': 'Flag of China'
-  'co': 'Flag of Colombia'
-  'cr': 'Flag of Costa Rica'
-  'crs-io': 'Flag of the Chagossians community'
-  'cu': 'Flag of Cuba'
-  'cv': 'Flag of Cape Verde'
-  'cw': 'Flag of Curaçao'
-  'cx': 'Flag of Christmas Island'
-  'cy': 'Flag of Cyprus'
-  'cz': 'Flag of the Czech Republic'
-  'de': 'Flag of Germany'
-  'dj': 'Flag of Djibouti'
-  'dk': 'Flag of Denmark'
-  'dm': 'Flag of Dominica'
-  'do': 'Flag of the Dominican Republic'
-  'dz': 'Flag of Algeria'
-  'ec': 'Flag of Ecuador'
-  'ee': 'Flag of Estonia'
-  'eg': 'Flag of Egypt'
-  'eh': 'Flag of Western Sahara'
-  'epo': 'The Esperanto Flag'
-  'er': 'Flag of Eritrea'
-  'es': 'Flag of Spain'
-  'es-as': 'Flag of Asturias'
-  'es-ct': 'Flag of Catalonia'
-  'es-ga': 'Flag of Galicia'
-  'eu': 'Flag of Europe'
-  'eus': 'The Basque flag'
-  'et': 'Flag of Ethiopia'
-  'fi': 'Flag of Finland'
-  'fj': 'Flag of Fiji'
-  'fk': 'Flag of the Falkland Islands'
-  'fm': 'Flag of the Federated States of Micronesia'
-  'fo': 'Flag of the Faroe Islands'
-  'fr': 'Flag of France'
-  'ga': 'Flag of Gabon'
-  'gb': 'Flag of the United Kingdom'
-  'gb-eng': 'Flag of England'
-  'gb-sct': 'Flag of Scotland'
-  'gb-wls': 'Flag of Wales'
-  'gd': 'Flag of Grenada'
-  'ge': 'Flag of Georgia'
-  'gf': 'Flag of French Guiana'
-  'gg': 'Flag of Guernsey'
-  'gh': 'Flag of Ghana'
-  'gi': 'Flag of Gibraltar'
-  'gl': 'Flag of Greenland'
-  'gm': 'Flag of the Gambia'
-  'gn': 'Flag of Guinea'
-  'gq': 'Flag of Equatorial Guinea'
-  'gr': 'Flag of Greece'
-  'gs': 'Flag of South Georgia and the South Sandwich Islands'
-  'gt': 'Flag of Guatemala'
-  'gu': 'Flag of Guam'
-  'gw': 'Flag of Guinea-Bissau'
-  'gy': 'Flag of Guyana'
-  'hk': 'Flag of Hong Kong'
-  'hn': 'Flag of Honduras'
-  'hr': 'Flag of Croatia'
-  'ht': 'Flag of Haiti'
-  'hu': 'Flag of Hungary'
-  'id': 'Flag of Indonesia'
-  'ie': 'Flag of Ireland'
-  'il': 'Flag of Israel'
-  'im': 'Flag of the Isle of Man'
-  'in': 'Flag of India'
-  'io': 'Flag of British Indian Ocean Territory'
-  'iq': 'Flag of Iraq'
-  'ir': 'Flag of Iran'
-  'is': 'Flag of Iceland'
-  'it': 'Flag of Italy'
-  'je': 'Flag of Jersey'
-  'jm': 'Flag of Jamaica'
-  'jo': 'Flag of Jordan'
-  'jp': 'Flag of Japan'
-  'ke': 'Flag of Kenya'
-  'kg': 'Flag of Kyrgyzstan'
-  'kh': 'Flag of Cambodia'
-  'ki': 'Flag of Kiribati'
-  'km': 'Flag of the Comoros'
-  'kn': 'Flag of Saint Kitts and Nevis'
-  'kp': 'Flag of North Korea'
-  'kr': 'Flag of South Korea'
-  'kur': 'Flag of Kurdistan'
-  'kw': 'Flag of Kuwait'
-  'ky': 'Flag of Cayman Islands'
-  'kz': 'Flag of Kazakhstan'
-  'la': 'Flag of Laos'
-  'lb': 'Flag of Lebanon'
-  'lc': 'Flag of Saint Lucia'
-  'li': 'Flag of Liechtenstein'
-  'lk': 'Flag of Sri Lanka'
-  'lr': 'Flag of Liberia'
-  'ls': 'Flag of Lesotho'
-  'lt': 'Flag of Lithuania'
-  'lu': 'Flag of Luxembourg'
-  'lv': 'Flag of Latvia'
-  'ly': 'Flag of Libya'
-  'ma': 'Flag of Morocco'
-  'mc': 'Flag of Monaco'
-  'md': 'Flag of Moldova'
-  'me': 'Flag of Montenegro'
-  'mg': 'Flag of Madagascar'
-  'mh': 'Flag of Marshall Islands'
-  'mk': 'Flag of Macedonia'
-  'ml': 'Flag of Mali'
-  'mm': 'Flag of Myanmar / Burma'
-  'mn': 'Flag of Mongolia'
-  'mo': 'Flag of Macau'
-  'mp': 'Flag of the Northern Mariana Islands'
-  'mq': 'Flag of Martinique'
-  'mr': 'Flag of Mauritania'
-  'ms': 'Flag of Montserrat'
-  'mt': 'Flag of Malta'
-  'mu': 'Flag of Mauritius'
-  'mv': 'Flag of the Maldives'
-  'mw': 'Flag of Malawi'
-  'mx': 'Flag of Mexico'
-  'my': 'Flag of Malaysia'
-  'mz': 'Flag of Mozambique'
-  'na': 'Flag of Namibia'
-  'nc': 'Flag of New Caledonia'
-  'ne': 'Flag of Niger'
-  'nf': 'Flag of Norfolk Island'
-  'ng': 'Flag of Nigeria'
-  'ni': 'Flag of Nicaragua'
-  'nl': 'Flag of the Netherlands'
-  'nl-fy': 'Flag of Friesland'
-  'no': 'Flag of Norway'
-  'np': 'Flag of Nepal'
-  'nr': 'Flag of Nauru'
-  'nu': 'Flag of Niue'
-  'nz': 'Flag of New Zealand'
-  'oci': 'The Occitan cross'
-  'om': 'Flag of Oman'
-  'pa': 'Flag of Panama'
-  'pe': 'Flag of Peru'
-  'pf': 'Flag of French Polynesia'
-  'pg': 'Flag of Papua New Guinea'
-  'ph': 'Flag of the Philippines'
-  'pk': 'Flag of Pakistan'
-  'pl': 'Flag of Poland'
-  'pm': 'Flag of Saint Pierre and Miquelon'
-  'pn': 'Flag of the Pitcairn Islands'
-  'pr': 'Flag of Puerto Rico'
-  'ps': 'Flag of Saint Lucia'
-  'pt': 'Flag of Portugal'
-  'pw': 'Flag of Palau'
-  'py': 'Flag of Paraguay'
-  'qa': 'Flag of Qatar'
-  'ro': 'Flag of Romania'
-  'rs': 'Flag of Serbia'
-  'ru': 'Flag of Russia'
-  'rw': 'Flag of Rwanda'
-  'sa': 'Flag of Saudi Arabia'
-  'sb': 'Flag of the Solomon Islands'
-  'sc': 'Flag of Seychelles'
-  'sd': 'Flag of Sudan'
-  'se': 'Flag of Sweden'
-  'sg': 'Flag of Singapore'
-  'sh': 'Flag of Saint Helena'
-  'si': 'Flag of Slovenia'
-  'sk': 'Flag of Slovakia'
-  'sl': 'Flag of Sierra Leone'
-  'sm': 'Flag of San Marino'
-  'sme': 'Sami flag'
-  'sn': 'Flag of Senegal'
-  'so': 'Flag of Somalia'
-  'sr': 'Flag of Suriname'
-  'ss': 'Flag of South Sudan'
-  'st': 'Flag of São Tomé and Príncipe'
-  'sv': 'Flag of El Salvador'
-  'sx': 'Flag of Sint Maarten'
-  'sy': 'Flag of Syria'
-  'sz': 'Flag of Swaziland'
-  'ta': 'Flag of Tristan da Cunha'
-  'tam': 'Sri Lankan Tamil Ethnic flag'
-  'tc': 'Flag of the Turks and Caicos Islands'
-  'td': 'Flag of Chad'
-  'tf': 'Flag of French Southern and Antarctic Lands'
-  'tg': 'Flag of Togo'
-  'th': 'Flag of Thailand'
-  'tj': 'Flag of Tajikistan'
-  'tk': 'Flag of Tokelau'
-  'tl': 'Flag of East Timor'
-  'tm': 'Flag of Turkmenistan'
-  'tn': 'Flag of Tunisia'
-  'to': 'Flag of Tonga'
-  'tr': 'Flag of Turkey'
-  'tt': 'Flag of Trinidad and Tobago'
-  'tv': 'Flag of Tuvalu'
-  'tw': 'Flag of Taiwan'
-  'tyv': 'Flag of Tuvalu'
-  'tz': 'Flag of Tanzania'
-  'ua': 'Flag of Ukraine'
-  'ug': 'Flag of Uganda'
-  'uig': 'Flag of East Turkestan'
-  'un': 'Flag of the United Nations'
-  'us': 'Flag of the United States'
-  'uy': 'Flag of Uruguay'
-  'uz': 'Flag of Uzbekistan'
-  'va': 'Flag of Vatican City'
-  'vc': 'Flag of Saint Vincent and the Grenadines'
-  've': 'Flag of Venezuela'
-  'vg': 'Flag of the British Virgin Islands'
-  'vi': 'Flag of the United States Virgin Islands'
-  'vn': 'Flag of Vietnam'
-  'vu': 'Flag of Vanuatu'
-  'wf': 'Flag of Wallis and Futuna'
-  'ws': 'Flag of Samoa'
-  'ye': 'Flag of Yemen'
-  'yt': 'Flag of Mayotte'
-  'za': 'Flag of South Africa'
-  'zm': 'Flag of Zambia'
-  'zw': 'Flag of Zimbabwe'
diff --git a/config/schema/flags.schema.yml b/config/schema/flags.schema.yml
index 765ec51..fde193c 100644
--- a/config/schema/flags.schema.yml
+++ b/config/schema/flags.schema.yml
@@ -1,13 +1,3 @@
-flags.schema.flags:
-  type: config_object
-  mapping:
-    flags:
-      type: mapping
-      label: 'Flags'
-      sequence:
-        type: string
-        label: Flag
-
 flags.country_flag_mapping.*:
   type: config_entity
   label: 'Flag Mapping'
diff --git a/flags.module b/flags.module
index 7560130..ecff366 100644
--- a/flags.module
+++ b/flags.module
@@ -5,12 +5,6 @@ use Drupal\flags\Mapping\FlagMappingInterface;
 
 /**
  * Implements hook_theme().
- *
- * @param $existing
- * @param $type
- * @param $theme
- * @param $path
- * @return array
  */
 function flags_theme($existing, $type, $theme, $path) {
   return array(
diff --git a/flags.services.yml b/flags.services.yml
index 31c3586..a3223bd 100644
--- a/flags.services.yml
+++ b/flags.services.yml
@@ -10,3 +10,7 @@ services:
   flags.language_helper:
     class: Drupal\flags\FullLanguageManager
     arguments: ['@language_manager', '@config.factory']
+
+  flags.manager:
+    class: Drupal\flags\Flags\FlagsManager
+    arguments: ['@module_handler']
diff --git a/flags_ui/src/Form/ConfigEntityFormBase.php b/flags_ui/src/Form/ConfigEntityFormBase.php
index dd06cd6..1d0c0c5 100644
--- a/flags_ui/src/Form/ConfigEntityFormBase.php
+++ b/flags_ui/src/Form/ConfigEntityFormBase.php
@@ -61,7 +61,7 @@ abstract class ConfigEntityFormBase extends EntityForm {
    */
   public static function create(ContainerInterface $container) {
     return new static(
-      $container->get('config.factory')->get('flags.flags')->get('flags')
+      $container->get('flags.manager')->getList()
     );
   }
 
diff --git a/flags_ui/src/Form/CountryMappingForm.php b/flags_ui/src/Form/CountryMappingForm.php
index 238dd29..e0f1458 100644
--- a/flags_ui/src/Form/CountryMappingForm.php
+++ b/flags_ui/src/Form/CountryMappingForm.php
@@ -30,7 +30,7 @@ class CountryMappingForm extends ConfigEntityFormBase {
    */
   public static function create(ContainerInterface $container) {
     $instance = new static(
-      $container->get('config.factory')->get('flags.flags')->get('flags')
+      $container->get('flags.manager')->getList()
     );
 
     $instance->setCountries($container->get('country_manager')->getList());
diff --git a/flags_ui/src/Form/LanguageConfigEntityFormBase.php b/flags_ui/src/Form/LanguageConfigEntityFormBase.php
index 2b882d1..126dae7 100644
--- a/flags_ui/src/Form/LanguageConfigEntityFormBase.php
+++ b/flags_ui/src/Form/LanguageConfigEntityFormBase.php
@@ -57,7 +57,7 @@ class LanguageConfigEntityFormBase extends EntityForm {
   public static function create(ContainerInterface $container) {
     return new static(
       $container->get('flags.language_helper'),
-      $container->get('config.factory')->get('flags.flags')->get('flags')
+      $container->get('flags.manager')->getList()
     );
   }
 
@@ -116,7 +116,7 @@ class LanguageConfigEntityFormBase extends EntityForm {
 
     $form['flag'] += [
       '#title' => $this->t('Flag'),
-      '#options' => $this->flags,//$countries,
+      '#options' => $this->flags,
       '#empty_value' => '',
       '#default_value' => $mapping->getFlag(),
       '#description' => $this->t('Select a target territory flag.'),
diff --git a/src/Entity/FlagMappingListBuilder.php b/src/Entity/FlagMappingListBuilder.php
index 8292139..ae1fabf 100644
--- a/src/Entity/FlagMappingListBuilder.php
+++ b/src/Entity/FlagMappingListBuilder.php
@@ -34,7 +34,7 @@ class FlagMappingListBuilder extends ConfigEntityListBuilder {
       $entity_type,
       $container->get('entity.manager')->getStorage($entity_type->id()),
       $container->get('country_manager')->getList(),
-      $container->get('config.factory')->get('flags.flags')->get('flags')
+      $container->get('flags.manager')->getList()
     );
   }
 
diff --git a/src/Entity/LanguageFlagMappingListBuilder.php b/src/Entity/LanguageFlagMappingListBuilder.php
index 8b076de..5868cff 100644
--- a/src/Entity/LanguageFlagMappingListBuilder.php
+++ b/src/Entity/LanguageFlagMappingListBuilder.php
@@ -38,7 +38,7 @@ class LanguageFlagMappingListBuilder extends ConfigEntityListBuilder {
       $entity_type,
       $container->get('entity.manager')->getStorage($entity_type->id()),
       $container->get('flags.language_helper'),
-      $container->get('config.factory')->get('flags.flags')->get('flags')
+      $container->get('flags.manager')->getList()
     );
   }
 
@@ -50,6 +50,8 @@ class LanguageFlagMappingListBuilder extends ConfigEntityListBuilder {
    * @param \Drupal\Core\Entity\EntityStorageInterface $storage
    *   The entity storage class.
    * @param \Drupal\flags\FullLanguageManagerInterface $fullLanguageManager
+   * @param string[] $flags
+   *   Array of all available flags with their names.
    */
   public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, FullLanguageManagerInterface $fullLanguageManager, $flags) {
     parent::__construct($entity_type, $storage);
diff --git a/src/Flags/FlagsManager.php b/src/Flags/FlagsManager.php
new file mode 100644
index 0000000..0b47e30
--- /dev/null
+++ b/src/Flags/FlagsManager.php
@@ -0,0 +1,333 @@
+<?php
+
+namespace Drupal\flags\Flags;
+
+use Drupal\Core\Extension\ModuleHandlerInterface;
+
+/**
+ * Provides list of countries.
+ */
+class FlagsManager implements FlagsManagerInterface {
+
+  /**
+   * The module handler service.
+   *
+   * @var \Drupal\Core\Extension\ModuleHandlerInterface
+   */
+  protected $moduleHandler;
+
+  /**
+   * An array of country code => country name pairs.
+   */
+  protected $flags;
+
+  /**
+   * Constructor.
+   *
+   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
+   */
+  public function __construct(ModuleHandlerInterface $module_handler) {
+    $this->moduleHandler = $module_handler;
+  }
+
+  /**
+   * Get an array of all two-letter country code => country name pairs.
+   *
+   * @return array
+   *   An array of country code => country name pairs.
+   */
+  public function getStandardList() {
+    $flags = [
+      'ac' => t('Ascension Island'),
+      'ad' => t('Andorra'),
+      'ae' => t('United Arab Emirates'),
+      'af' => t('Afghanistan'),
+      'ag' => t('Antigua and Barbuda'),
+      'ai' => t('Anguilla'),
+      'al' => t('Albania'),
+      'am' => t('Armenia'),
+      'an' => t('Netherlands Antilles'),
+      'ao' => t('Angola'),
+      'aq' => t('Antarctica'),
+      'ar' => t('Argentina'),
+      'ara' => t('Arabic'),
+      'as' => t('American Samoa'),
+      'at' => t('Austria'),
+      'au' => t('Australia'),
+      'aw' => t('Aruba'),
+      'ax' => t('Åland'),
+      'az' => t('Azerbaijan'),
+      'ba' => t('Bosnia and Herzegovina'),
+      'bb' => t('Barbados'),
+      'bd' => t('Bangladesh'),
+      'be' => t('Belgium'),
+      'bf' => t('Burkina Faso'),
+      'bg' => t('Bulgaria'),
+      'bh' => t('Bahrain'),
+      'bi' => t('Burundi'),
+      'bj' => t('Benin'),
+      'bl' => t('Saint Barthelemy'),
+      'bm' => t('Bermuda'),
+      'bn' => t('Brunei'),
+      'bo' => t('Bolivia'),
+      'bod' => t('Tibet'),
+      'br' => t('Brazil'),
+      'bs' => t('Bahamas'),
+      'bt' => t('Bhutan'),
+      'bw' => t('Botswana'),
+      'by' => t('Belarus'),
+      'bz' => t('Belize'),
+      'ca' => t('Canada'),
+      'cc' => t('Cocos (Keeling) Islands'),
+      'cd' => t('Congo, Democratic Republic of'),
+      'cf' => t('Central African Republic'),
+      'cg' => t('Congo, Republic of'),
+      'ch' => t('Switzerland'),
+      'ci' => t('Ivory Coast'),
+      'ck' => t('Cook Islands'),
+      'cl' => t('Chile'),
+      'cm' => t('Cameroon'),
+      'cn' => t('China'),
+      'co' => t('Colombia'),
+      'cr' => t('Costa Rica'),
+      'crs-io' => t('Chagossians'),
+      'cu' => t('Cuba'),
+      'cv' => t('Cape Verde'),
+      'cw' => t('Curaçao'),
+      'cx' => t('Christmas Island'),
+      'cy' => t('Cyprus'),
+      'cz' => t('Czech Republic'),
+      'de' => t('Germany'),
+      'dj' => t('Djibouti'),
+      'dk' => t('Denmark'),
+      'dm' => t('Dominica'),
+      'do' => t('Dominican Republic'),
+      'dz' => t('Algeria'),
+      'ec' => t('Ecuador'),
+      'ee' => t('Estonia'),
+      'eg' => t('Egypt'),
+      'eh' => t('Western Sahara'),
+      'epo' => t('Esperanto'),
+      'er' => t('Eritrea'),
+      'es' => t('Spain'),
+      'es-as' => t('Asturias'),
+      'es-ct' => t('Catalonia'),
+      'es-ga' => t('Galicia'),
+      'eu' => t('Europe'),
+      'eus' => t('Basqueland'),
+      'et' => t('Ethiopia'),
+      'fi' => t('Finland'),
+      'fj' => t('Fiji'),
+      'fk' => t('Falkland Islands'),
+      'fm' => t('Federated States of Micronesia'),
+      'fo' => t('Faroe Islands'),
+      'fr' => t('France'),
+      'ga' => t('Gabon'),
+      'gb' => t('United Kingdom'),
+      'gb-eng' => t('England'),
+      'gb-sct' => t('Scotland'),
+      'gb-wls' => t('Wales'),
+      'gd' => t('Grenada'),
+      'ge' => t('Georgia'),
+      'gf' => t('French Guiana'),
+      'gg' => t('Guernsey'),
+      'gh' => t('Ghana'),
+      'gi' => t('Gibraltar'),
+      'gl' => t('Greenland'),
+      'gm' => t('Gambia'),
+      'gn' => t('Guinea'),
+      'gp' => t('Guadeloupe'),
+      'gq' => t('Equatorial Guinea'),
+      'gr' => t('Greece'),
+      'gs' => t('South Georgia and the South Sandwich Islands'),
+      'gt' => t('Guatemala'),
+      'gu' => t('Guam'),
+      'gw' => t('Guinea-Bissau'),
+      'gy' => t('Guyana'),
+      'hk' => t('Hong Kong'),
+      'hn' => t('Honduras'),
+      'hr' => t('Croatia'),
+      'ht' => t('Haiti'),
+      'hu' => t('Hungary'),
+      'id' => t('Indonesia'),
+      'ie' => t('Ireland'),
+      'il' => t('Israel'),
+      'im' => t('Isle of Man'),
+      'in' => t('India'),
+      'io' => t('British Indian Ocean Territory'),
+      'iq' => t('Iraq'),
+      'ir' => t('Iran'),
+      'is' => t('Iceland'),
+      'it' => t('Italy'),
+      'je' => t('Jersey'),
+      'jm' => t('Jamaica'),
+      'jo' => t('Jordan'),
+      'jp' => t('Japan'),
+      'ke' => t('Kenya'),
+      'kg' => t('Kyrgyzstan'),
+      'kh' => t('Cambodia'),
+      'ki' => t('Kiribati'),
+      'km' => t('Comoros'),
+      'kn' => t('Saint Kitts and Nevis'),
+      'kp' => t('North Korea'),
+      'kr' => t('South Korea'),
+      'kur' => t('Kurdistan'),
+      'kw' => t('Kuwait'),
+      'ky' => t('Cayman Islands'),
+      'kz' => t('Kazakhstan'),
+      'la' => t('Laos'),
+      'lb' => t('Lebanon'),
+      'lc' => t('Saint Lucia'),
+      'li' => t('Liechtenstein'),
+      'lk' => t('Sri Lanka'),
+      'lr' => t('Liberia'),
+      'ls' => t('Lesotho'),
+      'lt' => t('Lithuania'),
+      'lu' => t('Luxembourg'),
+      'lv' => t('Latvia'),
+      'ly' => t('Libya'),
+      'ma' => t('Morocco'),
+      'mc' => t('Monaco'),
+      'md' => t('Moldova'),
+      'me' => t('Montenegro'),
+      'mg' => t('Madagascar'),
+      'mh' => t('Marshall Islands'),
+      'mk' => t('Macedonia'),
+      'ml' => t('Mali'),
+      'mm' => t('Myanmar / Burma'),
+      'mn' => t('Mongolia'),
+      'mo' => t('Macau'),
+      'mp' => t('Northern Mariana Islands'),
+      'mq' => t('Martinique'),
+      'mr' => t('Mauritania'),
+      'ms' => t('Montserrat'),
+      'mt' => t('Malta'),
+      'mu' => t('Mauritius'),
+      'mv' => t('Maldives'),
+      'mw' => t('Malawi'),
+      'mx' => t('Mexico'),
+      'my' => t('Malaysia'),
+      'mz' => t('Mozambique'),
+      'na' => t('Namibia'),
+      'nc' => t('New Caledonia'),
+      'ne' => t('Niger'),
+      'nf' => t('Norfolk Island'),
+      'ng' => t('Nigeria'),
+      'ni' => t('Nicaragua'),
+      'nl' => t('Netherlands'),
+      'nl-fy' => t('Friesland'),
+      'no' => t('Norway'),
+      'np' => t('Nepal'),
+      'nr' => t('Nauru'),
+      'nu' => t('Niue'),
+      'nz' => t('New Zealand'),
+      'oci' => t('Occitania'),
+      'om' => t('Oman'),
+      'pa' => t('Panama'),
+      'pe' => t('Peru'),
+      'pf' => t('French Polynesia'),
+      'pg' => t('Papua New Guinea'),
+      'ph' => t('Philippines'),
+      'pk' => t('Pakistan'),
+      'pl' => t('Poland'),
+      'pm' => t('Saint Pierre and Miquelon'),
+      'pn' => t('Pitcairn Islands'),
+      'pr' => t('Puerto Rico'),
+      'ps' => t('Saint Lucia'),
+      'pt' => t('Portugal'),
+      'pw' => t('Palau'),
+      'py' => t('Paraguay'),
+      'qa' => t('Qatar'),
+      'ro' => t('Romania'),
+      'rs' => t('Serbia'),
+      'ru' => t('Russia'),
+      'ru-ty' => t('Tuvalu'),
+      'rw' => t('Rwanda'),
+      'sa' => t('Saudi Arabia'),
+      'sb' => t('Solomon Islands'),
+      'sc' => t('Seychelles'),
+      'sd' => t('Sudan'),
+      'se' => t('Sweden'),
+      'sg' => t('Singapore'),
+      'sh' => t('Saint Helena'),
+      'si' => t('Slovenia'),
+      'sk' => t('Slovakia'),
+      'sl' => t('Sierra Leone'),
+      'sm' => t('San Marino'),
+      'sme' => t('Sami'),
+      'sn' => t('Senegal'),
+      'so' => t('Somalia'),
+      'sr' => t('Suriname'),
+      'ss' => t('South Sudan'),
+      'st' => t('São Tomé and Príncipe'),
+      'sv' => t('El Salvador'),
+      'sx' => t('Sint Maarten'),
+      'sy' => t('Syria'),
+      'sz' => t('Swaziland'),
+      'ta' => t('Tristan da Cunha'),
+      'tam' => t('Tamil'),
+      'tc' => t('Turks and Caicos Islands'),
+      'td' => t('Chad'),
+      'tf' => t('French Southern and Antarctic Lands'),
+      'tg' => t('Togo'),
+      'th' => t('Thailand'),
+      'tj' => t('Tajikistan'),
+      'tk' => t('Tokelau'),
+      'tl' => t('East Timor'),
+      'tm' => t('Turkmenistan'),
+      'tn' => t('Tunisia'),
+      'to' => t('Tonga'),
+      'tr' => t('Turkey'),
+      'tt' => t('Trinidad and Tobago'),
+      'tv' => t('Tuvalu'),
+      'tw' => t('Taiwan'),
+      'tz' => t('Tanzania'),
+      'ua' => t('Ukraine'),
+      'ug' => t('Uganda'),
+      'uig' => t('East Turkestan'),
+      'un' => t('United Nations'),
+      'us' => t('United States'),
+      'uy' => t('Uruguay'),
+      'uz' => t('Uzbekistan'),
+      'va' => t('Vatican City'),
+      'vc' => t('Saint Vincent and the Grenadines'),
+      've' => t('Venezuela'),
+      'vg' => t('British Virgin Islands'),
+      'vi' => t('United States Virgin Islands'),
+      'vn' => t('Vietnam'),
+      'vu' => t('Vanuatu'),
+      'wf' => t('Wallis and Futuna'),
+      'ws' => t('Samoa'),
+      'xk' => t('Kosovo'),
+      'ye' => t('Yemen'),
+      'yt' => t('Mayotte'),
+      'za' => t('South Africa'),
+      'zm' => t('Zambia'),
+      'zw' => t('Zimbabwe'),
+    ];
+
+    // Sort the list.
+    natcasesort($flags);
+
+    return $flags;
+  }
+
+  /**
+   * Get an array of country code => country name pairs, altered by alter hooks.
+   *
+   * @return array
+   *   An array of country code => country name pairs.
+   *
+   * @see \Drupal\Core\Locale\CountryManager::getStandardList()
+   */
+  public function getList() {
+    // Populate the country list if it is not already populated.
+    if (!isset($this->flags)) {
+      $this->flags = static::getStandardList();
+      $this->moduleHandler->alter('flags', $this->flags);
+    }
+
+    return $this->flags;
+  }
+
+}
diff --git a/src/Flags/FlagsManagerInterface.php b/src/Flags/FlagsManagerInterface.php
new file mode 100644
index 0000000..437f603
--- /dev/null
+++ b/src/Flags/FlagsManagerInterface.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Drupal\flags\Flags;
+
+/**
+ * Defines a common interface for country managers.
+ */
+interface FlagsManagerInterface {
+
+  /**
+   * Returns a list of country code => country name pairs.
+   *
+   * @return array
+   *   An array of country code => country name pairs.
+   */
+  public function getList();
+
+}
