diff --git a/currency.info.yml b/currency.info.yml
index f833ebf..057fb00 100755
--- a/currency.info.yml
+++ b/currency.info.yml
@@ -1,7 +1,7 @@
 name: Currency
 description: Provides currency metadata and exchange rates, and amount formatting.
 core: 8.x
-configure: currency.currency.list
+configure: entity.currency.collection
 type: module
 dependencies:
   - plugin
diff --git a/currency.links.action.yml b/currency.links.action.yml
index 69a6d83..4bbf97a 100644
--- a/currency.links.action.yml
+++ b/currency.links.action.yml
@@ -1,24 +1,24 @@
-currency.currency.add:
-  route_name: currency.currency.add
+entity.currency.add:
+  route_name: entity.currency.add
   title: 'Add a custom currency'
   appears_on:
-    - currency.currency.list
-currency.currency.import:
-  route_name: currency.currency.import
+    - entity.currency.collection
+entity.currency.import:
+  route_name: entity.currency.import
   title: 'Import a currency'
   appears_on:
-    - currency.currency.list
+    - entity.currency.collection
   weight: -1
-currency.currency_locale.add:
-  route_name: currency.currency_locale.add
+entity.currency_locale.add:
+  route_name: entity.currency_locale.add
   title: 'Add a currency locale'
   appears_on:
-    - currency.currency_locale.list
-currency.currency_locale.import:
-  route_name: currency.currency_locale.import
+    - entity.currency_locale.collection
+entity.currency_locale.import:
+  route_name: entity.currency_locale.import
   title: 'Import a currency locale'
   appears_on:
-    - currency.currency_locale.list
+    - entity.currency_locale.collection
   weight: -1
 currency.exchange_rate_provider.fixed_rates.add:
   route_name: currency.exchange_rate_provider.fixed_rates.add
diff --git a/currency.links.menu.yml b/currency.links.menu.yml
index 73650b0..23a5c5b 100644
--- a/currency.links.menu.yml
+++ b/currency.links.menu.yml
@@ -1,7 +1,7 @@
-currency.currency.list:
+entity.currency.collection:
   title: Currencies
   parent: system.admin_config_regional
-  route_name: currency.currency.list
+  route_name: entity.currency.collection
 currency.amount_formatting:
   title: Currency amount formatting
   description: Configure amount formatting for different locales.
diff --git a/currency.links.task.yml b/currency.links.task.yml
index 311d9da..3fae73d 100644
--- a/currency.links.task.yml
+++ b/currency.links.task.yml
@@ -3,7 +3,7 @@ currency.amount_formatting:
   route_name: currency.amount_formatting
   title: Formatting
 
-currency.currency_locale.list:
+entity.currency_locale.collection:
   base_route: currency.amount_formatting
-  route_name: currency.currency_locale.list
+  route_name: entity.currency_locale.collection
   title: Locales
diff --git a/currency.routing.yml b/currency.routing.yml
index f087806..2c1c720 100644
--- a/currency.routing.yml
+++ b/currency.routing.yml
@@ -32,7 +32,7 @@ currency.exchange_rate_provider.fixed_rates.edit:
     _permission: 'currency.exchange_rate_provider.fixed_rates.administer'
 
 # Currency entities.
-currency.currency.list:
+entity.currency.collection:
   path: '/admin/config/regional/currency'
   defaults:
     _entity_list: 'currency'
@@ -41,7 +41,7 @@ currency.currency.list:
   requirements:
     _permission: 'currency.currency.view'
 
-currency.currency.add:
+entity.currency.add:
   path: '/admin/config/regional/currency/add'
   defaults:
     _controller: '\Drupal\currency\Controller\AddCurrency::execute'
@@ -49,7 +49,7 @@ currency.currency.add:
   requirements:
     _entity_create_access: 'currency'
 
-currency.currency.import:
+entity.currency.import:
   path: '/admin/config/regional/currency/import'
   defaults:
     _form: '\Drupal\currency\Controller\CurrencyImportForm'
@@ -57,6 +57,14 @@ currency.currency.import:
   requirements:
     _entity_create_access: 'currency'
 
+entity.currency.canonical:
+  path: '/admin/config/regional/currency/{currency}'
+  defaults:
+    _entity_form: 'currency.default'
+    _title_callback: \Drupal\currency\Controller\EditCurrency::title
+  requirements:
+    _entity_access: 'currency.update'
+
 entity.currency.edit_form:
   path: '/admin/config/regional/currency/{currency}'
   defaults:
@@ -87,7 +95,7 @@ entity.currency.disable:
     _entity_access: 'currency.disable'
 
 # Currency currency locale entities.
-currency.currency_locale.list:
+entity.currency_locale.collection:
   path: '/admin/config/regional/currency-formatting/locale'
   defaults:
     _entity_list: 'currency_locale'
@@ -95,7 +103,7 @@ currency.currency_locale.list:
   requirements:
     _permission: 'currency.currency_locale.view'
 
-currency.currency_locale.add:
+entity.currency_locale.add:
   path: '/admin/config/regional/currency-formatting/locale/add'
   defaults:
     _controller: '\Drupal\currency\Controller\AddCurrencyLocale::execute'
@@ -103,7 +111,7 @@ currency.currency_locale.add:
   requirements:
     _entity_create_access: 'currency_locale'
 
-currency.currency_locale.import:
+entity.currency_locale.import:
   path: '/admin/config/regional/currency-formatting/locale/import'
   defaults:
     _form: '\Drupal\currency\Controller\CurrencyLocaleImportForm'
@@ -111,6 +119,14 @@ currency.currency_locale.import:
   requirements:
     _entity_create_access: 'currency_locale'
 
+entity.currency_locale.canonical:
+  path: '/admin/config/regional/currency-formatting/locale/{currency_locale}'
+  defaults:
+    _entity_form: 'currency_locale.default'
+    _title_callback: \Drupal\currency\Controller\EditCurrencyLocale::title
+  requirements:
+    _entity_access: 'currency_locale.update'
+
 entity.currency_locale.edit_form:
   path: '/admin/config/regional/currency-formatting/locale/{currency_locale}'
   defaults:
diff --git a/src/Controller/CurrencyImportForm.php b/src/Controller/CurrencyImportForm.php
index ffd7916..d67592a 100644
--- a/src/Controller/CurrencyImportForm.php
+++ b/src/Controller/CurrencyImportForm.php
@@ -115,7 +115,7 @@ class CurrencyImportForm extends FormBase implements ContainerInjectionInterface
       $form_state->setRedirectUrl($currency->urlInfo('edit-form'));
     }
     else {
-      $form_state->setRedirectUrl(new Url('currency.currency.list'));
+      $form_state->setRedirectUrl(new Url('entity.currency.collection'));
     }
   }
 
diff --git a/src/Controller/CurrencyLocaleImportForm.php b/src/Controller/CurrencyLocaleImportForm.php
index d6f9aa6..c846ae3 100644
--- a/src/Controller/CurrencyLocaleImportForm.php
+++ b/src/Controller/CurrencyLocaleImportForm.php
@@ -115,7 +115,7 @@ class CurrencyLocaleImportForm extends FormBase implements ContainerInjectionInt
       $form_state->setRedirectUrl($currency_locale->urlInfo('edit-form'));
     }
     else {
-      $form_state->setRedirectUrl(new Url('currency.currency_locale.list'));
+      $form_state->setRedirectUrl(new Url('entity.currency_locale.collection'));
     }
   }
 
diff --git a/src/Controller/DisableCurrency.php b/src/Controller/DisableCurrency.php
index 4d3c6ba..0dbf300 100644
--- a/src/Controller/DisableCurrency.php
+++ b/src/Controller/DisableCurrency.php
@@ -47,7 +47,7 @@ class DisableCurrency extends ControllerBase implements ContainerInjectionInterf
     $currency->disable();
     $currency->save();
 
-    return new RedirectResponse($this->urlGenerator->generateFromRoute('currency.currency.list', array(
+    return new RedirectResponse($this->urlGenerator->generateFromRoute('entity.currency.collection', array(
       'absolute' => TRUE,
     )));
   }
diff --git a/src/Controller/EnableCurrency.php b/src/Controller/EnableCurrency.php
index 1966233..8c33b12 100644
--- a/src/Controller/EnableCurrency.php
+++ b/src/Controller/EnableCurrency.php
@@ -49,7 +49,7 @@ class EnableCurrency extends ControllerBase implements ContainerInjectionInterfa
     $currency->enable();
     $currency->save();
 
-    return new RedirectResponse($this->urlGenerator->generateFromRoute('currency.currency.list', array(
+    return new RedirectResponse($this->urlGenerator->generateFromRoute('entity.currency.collection', array(
       'absolute' => TRUE,
     )));
   }
diff --git a/src/Entity/Currency.php b/src/Entity/Currency.php
index a885bfc..7fa1ec2 100644
--- a/src/Entity/Currency.php
+++ b/src/Entity/Currency.php
@@ -35,10 +35,10 @@ use Drupal\currency\Usage;
  *   id = "currency",
  *   label = @Translation("Currency"),
  *   links = {
- *     "canonical" = "currency.currency.edit",
- *     "create-form" = "currency.currency.add",
- *     "edit-form" = "currency.currency.edit",
- *     "delete-form" = "currency.currency.delete"
+ *     "canonical" = "/admin/config/regional/currency",
+ *     "create-form" = "/admin/config/regional/currency/add",
+ *     "edit-form" = "/admin/config/regional/currency/{currency}",
+ *     "delete-form" = "/admin/config/regional/currency/{currency}/delete"
  *   }
  * )
  */
diff --git a/src/Entity/Currency/CurrencyDeleteForm.php b/src/Entity/Currency/CurrencyDeleteForm.php
index b9f4956..d6011e0 100644
--- a/src/Entity/Currency/CurrencyDeleteForm.php
+++ b/src/Entity/Currency/CurrencyDeleteForm.php
@@ -57,7 +57,7 @@ class CurrencyDeleteForm extends EntityConfirmFormBase {
    * {@inheritdoc}
    */
   public function getCancelUrl() {
-    return new Url('currency.currency.list');
+    return new Url('entity.currency.collection');
   }
 
   /**
diff --git a/src/Entity/Currency/CurrencyForm.php b/src/Entity/Currency/CurrencyForm.php
index 13156d4..acff283 100644
--- a/src/Entity/Currency/CurrencyForm.php
+++ b/src/Entity/Currency/CurrencyForm.php
@@ -167,7 +167,7 @@ class CurrencyForm extends EntityForm {
     drupal_set_message($this->t('The currency %label has been saved.', array(
       '%label' => $currency->label(),
     )));
-    $form_state->setRedirect('currency.currency.list');
+    $form_state->setRedirect('entity.currency.collection');
   }
 
   /**
diff --git a/src/Entity/CurrencyLocale.php b/src/Entity/CurrencyLocale.php
index e640ded..86af70a 100644
--- a/src/Entity/CurrencyLocale.php
+++ b/src/Entity/CurrencyLocale.php
@@ -34,10 +34,10 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  *   id = "currency_locale",
  *   label = @Translation("Currency currency locale"),
  *   links = {
- *     "canonical" = "currency.currency_locale.edit",
- *     "create-form" = "currency.currency_locale.add",
- *     "edit-form" = "currency.currency_locale.edit",
- *     "delete-form" = "currency.currency_locale.delete"
+ *     "canonical" = "/admin/config/regional/currency-formatting/locale",
+ *     "create-form" = "/admin/config/regional/currency-formatting/locale/add",
+ *     "edit-form" = "/admin/config/regional/currency-formatting/locale/{currency_locale}",
+ *     "delete-form" = "/admin/config/regional/currency-formatting/locale/{currency_locale}/delete"
  *   }
  * )
  */
diff --git a/src/Entity/CurrencyLocale/CurrencyLocaleDeleteForm.php b/src/Entity/CurrencyLocale/CurrencyLocaleDeleteForm.php
index 12efdf5..180df9c 100644
--- a/src/Entity/CurrencyLocale/CurrencyLocaleDeleteForm.php
+++ b/src/Entity/CurrencyLocale/CurrencyLocaleDeleteForm.php
@@ -48,7 +48,7 @@ class CurrencyLocaleDeleteForm extends EntityConfirmFormBase {
    * {@inheritdoc}
    */
   public function getCancelUrl() {
-    return new Url('currency.currency_locale.list');
+    return new Url('entity.currency_locale.collection');
   }
 
   /**
diff --git a/src/Entity/CurrencyLocale/CurrencyLocaleForm.php b/src/Entity/CurrencyLocale/CurrencyLocaleForm.php
index d93fb9c..51346d0 100644
--- a/src/Entity/CurrencyLocale/CurrencyLocaleForm.php
+++ b/src/Entity/CurrencyLocale/CurrencyLocaleForm.php
@@ -147,7 +147,7 @@ class CurrencyLocaleForm extends EntityForm {
   /**
    * {@inheritdoc}
    */
-  function validateForm(array &$form, FormStateInterface $form_state) {
+  public function validateForm(array &$form, FormStateInterface $form_state) {
     parent::validateForm($form, $form_state);
     $currency_locale = $this->getEntity();
     if ($currency_locale->isNew()) {
@@ -169,7 +169,7 @@ class CurrencyLocaleForm extends EntityForm {
     drupal_set_message($this->t('The currency locale %label has been saved.', array(
       '%label' => $currency_locale->label(),
     )));
-    $form_state->setRedirect('currency.currency_locale.list');
+    $form_state->setRedirect('entity.currency_locale.collection');
   }
 
 }
diff --git a/src/Tests/Controller/CurrencyLocaleWebTest.php b/src/Tests/Controller/CurrencyLocaleWebTest.php
index 031b259..4799aa6 100644
--- a/src/Tests/Controller/CurrencyLocaleWebTest.php
+++ b/src/Tests/Controller/CurrencyLocaleWebTest.php
@@ -33,9 +33,9 @@ class CurrencyLocaleWebTest extends WebTestBase {
    * Tests the user interface.
    */
   function testUserInterface() {
-    $currency_locale_overview_path = 'admin/config/regional/currency-formatting/locale';
-    $currency_formatting_path = 'admin/config/regional/currency-formatting';
-    $regional_path = 'admin/config/regional';
+    $currency_locale_overview_path = '/admin/config/regional/currency-formatting/locale';
+    $currency_formatting_path = '/admin/config/regional/currency-formatting';
+    $regional_path = '/admin/config/regional';
 
     // Test the appearance of the link on the "Regional and language" page.
     $account = $this->drupalCreateUser(array('access administration pages'));
diff --git a/tests/src/Unit/Controller/DisableCurrencyUnitTest.php b/tests/src/Unit/Controller/DisableCurrencyUnitTest.php
index 59b65a4..6c741c5 100644
--- a/tests/src/Unit/Controller/DisableCurrencyUnitTest.php
+++ b/tests/src/Unit/Controller/DisableCurrencyUnitTest.php
@@ -74,7 +74,7 @@ class DisableCurrencyUnitTest extends UnitTestCase {
 
     $this->urlGenerator->expects($this->once())
       ->method('generateFromRoute')
-      ->with('currency.currency.list')
+      ->with('entity.currency.collection')
       ->will($this->returnValue($url));
 
     $response = $this->controller->execute($currency);
diff --git a/tests/src/Unit/Controller/EnableCurrencyUnitTest.php b/tests/src/Unit/Controller/EnableCurrencyUnitTest.php
index 38f44ab..beabc32 100644
--- a/tests/src/Unit/Controller/EnableCurrencyUnitTest.php
+++ b/tests/src/Unit/Controller/EnableCurrencyUnitTest.php
@@ -74,7 +74,7 @@ class EnableCurrencyUnitTest extends UnitTestCase {
 
     $this->urlGenerator->expects($this->once())
       ->method('generateFromRoute')
-      ->with('currency.currency.list')
+      ->with('entity.currency.collection')
       ->will($this->returnValue($url));
 
     $response = $this->controller->execute($currency);
diff --git a/tests/src/Unit/Entity/Currency/CurrencyDeleteFormUnitTest.php b/tests/src/Unit/Entity/Currency/CurrencyDeleteFormUnitTest.php
index 5ee3db6..b31c7b6 100644
--- a/tests/src/Unit/Entity/Currency/CurrencyDeleteFormUnitTest.php
+++ b/tests/src/Unit/Entity/Currency/CurrencyDeleteFormUnitTest.php
@@ -109,7 +109,7 @@ class CurrencyDeleteFormUnitTest extends UnitTestCase {
   function testGetCancelUrl() {
     $url = $this->form->getCancelUrl();
     $this->assertInstanceOf('\Drupal\Core\Url', $url);
-    $this->assertSame('currency.currency.list', $url->getRouteName());
+    $this->assertSame('entity.currency.collection', $url->getRouteName());
   }
 
   /**
diff --git a/tests/src/Unit/Entity/Currency/CurrencyFormUnitTest.php b/tests/src/Unit/Entity/Currency/CurrencyFormUnitTest.php
index 307ace5..daf690f 100644
--- a/tests/src/Unit/Entity/Currency/CurrencyFormUnitTest.php
+++ b/tests/src/Unit/Entity/Currency/CurrencyFormUnitTest.php
@@ -284,7 +284,7 @@ class CurrencyFormUnitTest extends UnitTestCase {
     $form_state = $this->getMock('\Drupal\Core\Form\FormStateInterface');
     $form_state->expects($this->once())
       ->method('setRedirect')
-      ->with('currency.currency.list');
+      ->with('entity.currency.collection');
 
     $this->form->save($form, $form_state);
   }
diff --git a/tests/src/Unit/Entity/CurrencyLocale/CurrencyLocaleDeleteFormUnitTest.php b/tests/src/Unit/Entity/CurrencyLocale/CurrencyLocaleDeleteFormUnitTest.php
index f493567..72a5b06 100644
--- a/tests/src/Unit/Entity/CurrencyLocale/CurrencyLocaleDeleteFormUnitTest.php
+++ b/tests/src/Unit/Entity/CurrencyLocale/CurrencyLocaleDeleteFormUnitTest.php
@@ -109,7 +109,7 @@ class CurrencyLocaleDeleteFormUnitTest extends UnitTestCase {
   function testGetCancelUrl() {
     $url = $this->form->getCancelUrl();
     $this->assertInstanceOf('\Drupal\Core\Url', $url);
-    $this->assertSame('currency.currency_locale.list', $url->getRouteName());
+    $this->assertSame('entity.currency_locale.collection', $url->getRouteName());
   }
 
   /**
diff --git a/tests/src/Unit/Entity/CurrencyLocale/CurrencyLocaleFormUnitTest.php b/tests/src/Unit/Entity/CurrencyLocale/CurrencyLocaleFormUnitTest.php
index 3ac338f..7c7241b 100644
--- a/tests/src/Unit/Entity/CurrencyLocale/CurrencyLocaleFormUnitTest.php
+++ b/tests/src/Unit/Entity/CurrencyLocale/CurrencyLocaleFormUnitTest.php
@@ -367,7 +367,7 @@ class CurrencyLocaleFormUnitTest extends UnitTestCase {
     $form_state = $this->getMock('\Drupal\Core\Form\FormStateInterface');
     $form_state->expects($this->once())
       ->method('setRedirect')
-      ->with('currency.currency_locale.list');
+      ->with('entity.currency_locale.collection');
 
     $this->form->save($form, $form_state);
   }
