diff --git a/examples.module b/examples.module
index 1f7cd9a..96cb44f 100644
--- a/examples.module
+++ b/examples.module
@@ -45,7 +45,7 @@ function examples_toolbar() {
     'dbtng_example' => 'dbtng_example',
     'email_example' => 'email_example.description',
     'events_example' => 'events_example.description',
-    'fapi_example' => 'fapi_example.description',
+    'form_api_example' => 'form_api_example.description',
     'field_example' => 'field_example.description',
     'field_permission_example' => 'field_permission_example.description',
     'file_example' => 'file_example.fileapi',
diff --git a/fapi_example/fapi_example.links.menu.yml b/fapi_example/fapi_example.links.menu.yml
deleted file mode 100644
index a2844d7..0000000
--- a/fapi_example/fapi_example.links.menu.yml
+++ /dev/null
@@ -1,78 +0,0 @@
-# Define default links for this module.
-fapi_example.description:
-  title: Form API Examples
-  description: Form examples using Drupal Form API.
-  route_name: fapi_example.description
-  expanded: TRUE
-
-fapi_example.simple_form:
-  title: Simple form
-  description: A simple form example with submit processing.
-  route_name: fapi_example.simple_form
-  parent: fapi_example.description
-  weight: -9
-
-fapi_example.multistep_form:
-  title: Multistep form
-  description: Multistep form example with submit processing.
-  route_name: fapi_example.multistep_form
-  parent: fapi_example.description
-  weight: -8
-
-fapi_example.input_demo:
-  title: Common input elements
-  description: A form to demonstrate input elements.
-  route_name: fapi_example.input_demo
-  parent: fapi_example.description
-  weight: -7
-
-fapi_example.build_demo:
-  title: Build form demo
-  description: Demonstrates the order of firing of from controller methods.
-  route_name: fapi_example.build_demo
-  parent: fapi_example.description
-  weight: -6
-
-fapi_example.container_demo:
-  title: Container elements
-  description: A form to demonstrate use of containers.
-  route_name: fapi_example.container_demo
-  parent: fapi_example.description
-  weight: -5
-
-fapi_example.state_demo:
-  title: Form state binding
-  description: A form to demonstrate binding of form state.
-  route_name: fapi_example.state_demo
-  parent: fapi_example.description
-  weight: -4
-
-fapi_example.vertical_tabs_demo:
-  title: Vertical tab elements
-  description: A form to demonstrate use of vertical tabs.
-  route_name: fapi_example.vertical_tabs_demo
-  parent: fapi_example.description
-  weight: -3
-
-fapi_example.ajax_demo:
-  title: Ajax form
-  description: A form to demonstrate use of AJAX.
-  route_name: fapi_example.ajax_demo
-  parent: fapi_example.description
-  weight: -2
-
-fapi_example.ajax_addmore:
-  title: Add-more button
-  description: Form with 'add more' and 'remove' buttons.
-  route_name: fapi_example.ajax_addmore
-  parent: fapi_example.description
-  weight: -1
-
-fapi_example.modal_form:
-  title: Modal form
-  description: Demonstrates using Drupal's modal form.
-  route_name: fapi_example.modal_form
-  route_parameters:
-    nojs: nojs
-  parent: fapi_example.description
-  weight: 0
diff --git a/fapi_example/fapi_example.info.yml b/form_api_example/form_api_example.info.yml
similarity index 80%
rename from fapi_example/fapi_example.info.yml
rename to form_api_example/form_api_example.info.yml
index 7bddbc4..131252f 100644
--- a/fapi_example/fapi_example.info.yml
+++ b/form_api_example/form_api_example.info.yml
@@ -3,7 +3,7 @@ type: module
 description: Demonstrates the Drupal Form API.
 package: Example modules
 core: 8.x
-configure: fapi_example.description
+configure: form_api_example.description
 dependencies:
   - drupal:node
   - examples:examples
diff --git a/form_api_example/form_api_example.links.menu.yml b/form_api_example/form_api_example.links.menu.yml
new file mode 100644
index 0000000..8f23678
--- /dev/null
+++ b/form_api_example/form_api_example.links.menu.yml
@@ -0,0 +1,78 @@
+# Define default links for this module.
+form_api_example.description:
+  title: Form API Examples
+  description: Form examples using Drupal Form API.
+  route_name: form_api_example.description
+  expanded: TRUE
+
+form_api_example.simple_form:
+  title: Simple form
+  description: A simple form example with submit processing.
+  route_name: form_api_example.simple_form
+  parent: form_api_example.description
+  weight: -9
+
+form_api_example.multistep_form:
+  title: Multistep form
+  description: Multistep form example with submit processing.
+  route_name: form_api_example.multistep_form
+  parent: form_api_example.description
+  weight: -8
+
+form_api_example.input_demo:
+  title: Common input elements
+  description: A form to demonstrate input elements.
+  route_name: form_api_example.input_demo
+  parent: form_api_example.description
+  weight: -7
+
+form_api_example.build_demo:
+  title: Build form demo
+  description: Demonstrates the order of firing of from controller methods.
+  route_name: form_api_example.build_demo
+  parent: form_api_example.description
+  weight: -6
+
+form_api_example.container_demo:
+  title: Container elements
+  description: A form to demonstrate use of containers.
+  route_name: form_api_example.container_demo
+  parent: form_api_example.description
+  weight: -5
+
+form_api_example.state_demo:
+  title: Form state binding
+  description: A form to demonstrate binding of form state.
+  route_name: form_api_example.state_demo
+  parent: form_api_example.description
+  weight: -4
+
+form_api_example.vertical_tabs_demo:
+  title: Vertical tab elements
+  description: A form to demonstrate use of vertical tabs.
+  route_name: form_api_example.vertical_tabs_demo
+  parent: form_api_example.description
+  weight: -3
+
+form_api_example.ajax_demo:
+  title: Ajax form
+  description: A form to demonstrate use of AJAX.
+  route_name: form_api_example.ajax_demo
+  parent: form_api_example.description
+  weight: -2
+
+form_api_example.ajax_addmore:
+  title: Add-more button
+  description: Form with 'add more' and 'remove' buttons.
+  route_name: form_api_example.ajax_addmore
+  parent: form_api_example.description
+  weight: -1
+
+form_api_example.modal_form:
+  title: Modal form
+  description: Demonstrates using Drupal's modal form.
+  route_name: form_api_example.modal_form
+  route_parameters:
+    nojs: nojs
+  parent: form_api_example.description
+  weight: 0
diff --git a/fapi_example/fapi_example.module b/form_api_example/form_api_example.module
similarity index 60%
rename from fapi_example/fapi_example.module
rename to form_api_example/form_api_example.module
index a3b8608..b42522e 100644
--- a/fapi_example/fapi_example.module
+++ b/form_api_example/form_api_example.module
@@ -6,7 +6,7 @@
  */
 
 /**
- * @defgroup fapi_example Example: Forms API
+ * @defgroup form_api_example Example: Forms API
  * @ingroup examples
  * @{
  * Examples using Forms API.
@@ -14,30 +14,30 @@
  * Creating A Drupal Form requires:
  * - Creating a class that extends \Drupal\Core\Form\FormBase or
  *   \Drupal\Core\Form\ConfigFormBase
- *   - \Drupal\fapi_example\Form\SimpleForm
+ *   - \Drupal\form_api_example\Form\SimpleForm
  * - Register the route to the form or invoke using
  *   \Drupal::formBuilder()->getForm()
- *   - fapi_example.routing.yml
+ *   - form_api_example.routing.yml
  *
  * In addition to the simple example described above this module provides
  * examples that demonstrate:
  * - Elements used for data input
- *   -\Drupal\fapi_example\Form\InputDemo
+ *   -\Drupal\form_api_example\Form\InputDemo
  * - The order of execution of form controller methods
- *   - \Drupal\fapi_example\Form\BuildDemo
+ *   - \Drupal\form_api_example\Form\BuildDemo
  * - Container elements used to group items
- *   - \Drupal\fapi_example\Form\ContainerDemo
+ *   - \Drupal\form_api_example\Form\ContainerDemo
  * - Hiding elements based on the state of other elements
- *   - \Drupal\fapi_example\Form\StateDemo
+ *   - \Drupal\form_api_example\Form\StateDemo
  * - Vertical Tabs elements in forms
- *   - \Drupal\fapi_example\Form\VerticalTabsDemo
+ *   - \Drupal\form_api_example\Form\VerticalTabsDemo
  * - Populating a portion on a form with Ajax callbacks
- *   - \Drupal\fapi_example\Form\AjaxDemo
+ *   - \Drupal\form_api_example\Form\AjaxDemo
  * - Adding additional fields to a form with Ajax callbacks
- *   - \Drupal\fapi_example\Form\AjaxAddMore
+ *   - \Drupal\form_api_example\Form\AjaxAddMore
  * - Modal form creation
- *   - \Drupal\fapi_example\Controller\Page
- *   - \Drupal\fapi_example\Form\ModalForm
+ *   - \Drupal\form_api_example\Controller\Page
+ *   - \Drupal\form_api_example\Form\ModalForm
  *
  * @} End of "defgroup field_example".
  */
diff --git a/fapi_example/fapi_example.routing.yml b/form_api_example/form_api_example.routing.yml
similarity index 51%
rename from fapi_example/fapi_example.routing.yml
rename to form_api_example/form_api_example.routing.yml
index 4e345c6..536a072 100644
--- a/fapi_example/fapi_example.routing.yml
+++ b/form_api_example/form_api_example.routing.yml
@@ -9,92 +9,92 @@
 # 'access content'. This is notated as _permission: 'access content'.
 
 # Menu items corresponding to these URLs are defined separately in the
-# fapi_example.links.menu.yml file.
-fapi_example.description:
-  path: 'examples/fapi-example'
+# form_api_example.links.menu.yml file.
+form_api_example.description:
+  path: 'examples/form-api-example'
   defaults:
-    _controller:  '\Drupal\fapi_example\Controller\Page::description'
+    _controller:  '\Drupal\form_api_example\Controller\Page::description'
     _title: 'Form API Examples'
   requirements:
     _permission: 'access content'
 
-fapi_example.simple_form:
-  path: 'examples/fapi-example/simple-form'
+form_api_example.simple_form:
+  path: 'examples/form-api-example/simple-form'
   defaults:
-    _form:  '\Drupal\fapi_example\Form\SimpleForm'
+    _form:  '\Drupal\form_api_example\Form\SimpleForm'
     _title: 'Simple form'
   requirements:
     _permission: 'access content'
 
-fapi_example.input_demo:
-  path: 'examples/fapi-example/input-demo'
+form_api_example.input_demo:
+  path: 'examples/form-api-example/input-demo'
   defaults:
-    _form:  '\Drupal\fapi_example\Form\InputDemo'
+    _form:  '\Drupal\form_api_example\Form\InputDemo'
     _title: 'Common input elements'
   requirements:
     _permission: 'access content'
 
-fapi_example.state_demo:
-  path: 'examples/fapi-example/state-demo'
+form_api_example.state_demo:
+  path: 'examples/form-api-example/state-demo'
   defaults:
-    _form:  '\Drupal\fapi_example\Form\StateDemo'
+    _form:  '\Drupal\form_api_example\Form\StateDemo'
     _title: 'Form state binding'
   requirements:
     _permission: 'access content'
 
-fapi_example.container_demo:
-  path: 'examples/fapi-example/container-demo'
+form_api_example.container_demo:
+  path: 'examples/form-api-example/container-demo'
   defaults:
-    _form:  '\Drupal\fapi_example\Form\ContainerDemo'
+    _form:  '\Drupal\form_api_example\Form\ContainerDemo'
     _title: 'Container elements'
   requirements:
     _permission: 'access content'
 
-fapi_example.vertical_tabs_demo:
-  path: 'examples/fapi-example/vertical-tabs-demo'
+form_api_example.vertical_tabs_demo:
+  path: 'examples/form-api-example/vertical-tabs-demo'
   defaults:
-    _form:  '\Drupal\fapi_example\Form\VerticalTabsDemo'
+    _form:  '\Drupal\form_api_example\Form\VerticalTabsDemo'
     _title: 'Vertical tab elements'
   requirements:
     _permission: 'access content'
 
-fapi_example.modal_form:
-  path: 'examples/fapi-example/modal-form/{nojs}'
+form_api_example.modal_form:
+  path: 'examples/form-api-example/modal-form/{nojs}'
   defaults:
-    _form:  '\Drupal\fapi_example\Form\ModalForm'
+    _form:  '\Drupal\form_api_example\Form\ModalForm'
     _title: 'Modal form'
     nojs: ajax
   requirements:
     _permission: 'access content'
 
-fapi_example.ajax_demo:
-  path: 'examples/fapi-example/ajax-demo'
+form_api_example.ajax_demo:
+  path: 'examples/form-api-example/ajax-demo'
   defaults:
-    _form:  '\Drupal\fapi_example\Form\AjaxDemo'
+    _form:  '\Drupal\form_api_example\Form\AjaxDemo'
     _title: 'Ajax form'
   requirements:
     _permission: 'access content'
 
-fapi_example.build_demo:
-  path: 'examples/fapi-example/build-demo'
+form_api_example.build_demo:
+  path: 'examples/form-api-example/build-demo'
   defaults:
-    _form:  '\Drupal\fapi_example\Form\BuildDemo'
+    _form:  '\Drupal\form_api_example\Form\BuildDemo'
     _title: 'Build form demo'
   requirements:
     _permission: 'access content'
 
-fapi_example.ajax_addmore:
-  path: 'examples/fapi-example/ajax-addmore'
+form_api_example.ajax_addmore:
+  path: 'examples/form-api-example/ajax-addmore'
   defaults:
-    _form:  '\Drupal\fapi_example\Form\AjaxAddMore'
+    _form:  '\Drupal\form_api_example\Form\AjaxAddMore'
     _title: 'Add-more button'
   requirements:
     _permission: 'access content'
 
-fapi_example.multistep_form:
-  path: 'examples/fapi-example/multistep-form'
+form_api_example.multistep_form:
+  path: 'examples/form-api-example/multistep-form'
   defaults:
-    _form: '\Drupal\fapi_example\Form\MultistepForm'
+    _form: '\Drupal\form_api_example\Form\MultistepForm'
     _title: 'Multistep form'
   requirements:
     _permission: 'access content'
diff --git a/fapi_example/src/Controller/Page.php b/form_api_example/src/Controller/Page.php
similarity index 74%
rename from fapi_example/src/Controller/Page.php
rename to form_api_example/src/Controller/Page.php
index 7c4e964..c7b24a9 100644
--- a/fapi_example/src/Controller/Page.php
+++ b/form_api_example/src/Controller/Page.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\fapi_example\Controller;
+namespace Drupal\form_api_example\Controller;
 
 use Drupal\examples\Utility\DescriptionTemplateTrait;
 
@@ -15,7 +15,7 @@ class Page {
    * {@inheritdoc}
    */
   public function getModuleName() {
-    return 'fapi_example';
+    return 'form_api_example';
   }
 
 }
diff --git a/fapi_example/src/Form/AjaxAddMore.php b/form_api_example/src/Form/AjaxAddMore.php
similarity index 97%
rename from fapi_example/src/Form/AjaxAddMore.php
rename to form_api_example/src/Form/AjaxAddMore.php
index 8172428..5fb6a1c 100644
--- a/fapi_example/src/Form/AjaxAddMore.php
+++ b/form_api_example/src/Form/AjaxAddMore.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\fapi_example\Form;
+namespace Drupal\form_api_example\Form;
 
 use Drupal\Core\Form\FormStateInterface;
 
@@ -87,7 +87,7 @@ class AjaxAddMore extends DemoBase {
    * {@inheritdoc}
    */
   public function getFormId() {
-    return 'fapi_example_ajax_addmore';
+    return 'form_api_example_ajax_addmore';
   }
 
   /**
diff --git a/fapi_example/src/Form/AjaxDemo.php b/form_api_example/src/Form/AjaxDemo.php
similarity index 98%
rename from fapi_example/src/Form/AjaxDemo.php
rename to form_api_example/src/Form/AjaxDemo.php
index 63e255a..9d60d04 100644
--- a/fapi_example/src/Form/AjaxDemo.php
+++ b/form_api_example/src/Form/AjaxDemo.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\fapi_example\Form;
+namespace Drupal\form_api_example\Form;
 
 use Drupal\Core\Form\FormStateInterface;
 
@@ -20,7 +20,7 @@ class AjaxDemo extends DemoBase {
    * {@inheritdoc}
    */
   public function getFormId() {
-    return 'fapi_example_ajax_demo';
+    return 'form_api_example_ajax_demo';
   }
 
   /**
diff --git a/fapi_example/src/Form/BuildDemo.php b/form_api_example/src/Form/BuildDemo.php
similarity index 97%
rename from fapi_example/src/Form/BuildDemo.php
rename to form_api_example/src/Form/BuildDemo.php
index 7ba26fe..5dfe16f 100644
--- a/fapi_example/src/Form/BuildDemo.php
+++ b/form_api_example/src/Form/BuildDemo.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\fapi_example\Form;
+namespace Drupal\form_api_example\Form;
 
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
@@ -108,7 +108,7 @@ class BuildDemo extends FormBase {
    */
   public function getFormId() {
     $this->displayMethodInvocation('getFormId');
-    return 'fapi_example_simple_form';
+    return 'form_api_example_simple_form';
   }
 
   /**
diff --git a/fapi_example/src/Form/ContainerDemo.php b/form_api_example/src/Form/ContainerDemo.php
similarity index 96%
rename from fapi_example/src/Form/ContainerDemo.php
rename to form_api_example/src/Form/ContainerDemo.php
index 6a4cdd2..5033519 100644
--- a/fapi_example/src/Form/ContainerDemo.php
+++ b/form_api_example/src/Form/ContainerDemo.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\fapi_example\Form;
+namespace Drupal\form_api_example\Form;
 
 use Drupal\Core\Form\FormStateInterface;
 
@@ -89,7 +89,7 @@ class ContainerDemo extends DemoBase {
    * {@inheritdoc}
    */
   public function getFormId() {
-    return 'fapi_example_container_demo';
+    return 'form_api_example_container_demo';
   }
 
 }
diff --git a/fapi_example/src/Form/DemoBase.php b/form_api_example/src/Form/DemoBase.php
similarity index 92%
rename from fapi_example/src/Form/DemoBase.php
rename to form_api_example/src/Form/DemoBase.php
index 1d83624..6c29265 100644
--- a/fapi_example/src/Form/DemoBase.php
+++ b/form_api_example/src/Form/DemoBase.php
@@ -1,12 +1,12 @@
 <?php
 
-namespace Drupal\fapi_example\Form;
+namespace Drupal\form_api_example\Form;
 
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
 
 /**
- * Implements common submit handler used in fapi_example demo forms.
+ * Implements common submit handler used in form_api_example demo forms.
  *
  * We extend FormBase, which is the simplest form base class used in Drupal, to
  * add a common submitForm method that will display the submitted values via
diff --git a/fapi_example/src/Form/InputDemo.php b/form_api_example/src/Form/InputDemo.php
similarity index 97%
rename from fapi_example/src/Form/InputDemo.php
rename to form_api_example/src/Form/InputDemo.php
index 2c4c27e..b841ac3 100644
--- a/fapi_example/src/Form/InputDemo.php
+++ b/form_api_example/src/Form/InputDemo.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\fapi_example\Form;
+namespace Drupal\form_api_example\Form;
 
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
@@ -233,11 +233,11 @@ class InputDemo extends FormBase {
       '#links' => [
         'simple_form' => [
           'title' => $this->t('Simple Form'),
-          'url' => Url::fromRoute('fapi_example.simple_form'),
+          'url' => Url::fromRoute('form_api_example.simple_form'),
         ],
         'demo' => [
           'title' => $this->t('Build Demo'),
-          'url' => Url::fromRoute('fapi_example.build_demo'),
+          'url' => Url::fromRoute('form_api_example.build_demo'),
         ],
       ],
     ];
@@ -296,7 +296,7 @@ class InputDemo extends FormBase {
    * {@inheritdoc}
    */
   public function getFormId() {
-    return 'fapi_example_input_demo_form';
+    return 'form_api_example_input_demo_form';
   }
 
   /**
diff --git a/fapi_example/src/Form/ModalForm.php b/form_api_example/src/Form/ModalForm.php
similarity index 96%
rename from fapi_example/src/Form/ModalForm.php
rename to form_api_example/src/Form/ModalForm.php
index fd8e26e..b6ccaec 100644
--- a/fapi_example/src/Form/ModalForm.php
+++ b/form_api_example/src/Form/ModalForm.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\fapi_example\Form;
+namespace Drupal\form_api_example\Form;
 
 use Drupal\Component\Render\FormattableMarkup;
 use Drupal\Core\Ajax\AjaxResponse;
@@ -15,7 +15,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
  *
  * This example demonstrates implementation of a form that is designed to be
  * used as a modal form.  To properly display the modal the link presented by
- * the \Drupal\fapi_example\Controller\Page page controller loads the Drupal
+ * the \Drupal\form_api_example\Controller\Page page controller loads the Drupal
  * dialog and ajax libraries.  The submit handler in this class returns ajax
  * commands to replace text in the calling page after submission .
  *
@@ -38,7 +38,7 @@ class ModalForm extends FormBase {
    * {@inheritdoc}
    */
   public function getFormId() {
-    return 'fapi_example_modal_form';
+    return 'form_api_example_modal_form';
   }
 
   /**
@@ -78,7 +78,7 @@ class ModalForm extends FormBase {
       $form['use_ajax_container']['use_ajax'] = [
         '#type' => 'link',
         '#title' => $this->t('See this form as a modal.'),
-        '#url' => Url::fromRoute('fapi_example.modal_form', ['nojs' => 'ajax']),
+        '#url' => Url::fromRoute('form_api_example.modal_form', ['nojs' => 'ajax']),
         '#attributes' => [
           'class' => ['use-ajax'],
           'data-dialog-type' => 'modal',
diff --git a/fapi_example/src/Form/MultistepForm.php b/form_api_example/src/Form/MultistepForm.php
similarity index 98%
rename from fapi_example/src/Form/MultistepForm.php
rename to form_api_example/src/Form/MultistepForm.php
index ed6bdbb..3bfacaf 100644
--- a/fapi_example/src/Form/MultistepForm.php
+++ b/form_api_example/src/Form/MultistepForm.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\fapi_example\Form;
+namespace Drupal\form_api_example\Form;
 
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
@@ -19,7 +19,7 @@ class MultistepForm extends FormBase {
    * {@inheritdoc}
    */
   public function getFormId() {
-    return 'fapi_example_multistep_form';
+    return 'form_api_example_multistep_form';
   }
 
   /**
diff --git a/fapi_example/src/Form/SimpleForm.php b/form_api_example/src/Form/SimpleForm.php
similarity index 97%
rename from fapi_example/src/Form/SimpleForm.php
rename to form_api_example/src/Form/SimpleForm.php
index ceaf8ec..5b10536 100644
--- a/fapi_example/src/Form/SimpleForm.php
+++ b/form_api_example/src/Form/SimpleForm.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\fapi_example\Form;
+namespace Drupal\form_api_example\Form;
 
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
@@ -70,7 +70,7 @@ class SimpleForm extends FormBase {
    *   The unique ID of the form defined by this class.
    */
   public function getFormId() {
-    return 'fapi_example_simple_form';
+    return 'form_api_example_simple_form';
   }
 
   /**
diff --git a/fapi_example/src/Form/StateDemo.php b/form_api_example/src/Form/StateDemo.php
similarity index 92%
rename from fapi_example/src/Form/StateDemo.php
rename to form_api_example/src/Form/StateDemo.php
index 0fd4d75..e047f2c 100644
--- a/fapi_example/src/Form/StateDemo.php
+++ b/form_api_example/src/Form/StateDemo.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\fapi_example\Form;
+namespace Drupal\form_api_example\Form;
 
 use Drupal\Core\Form\FormStateInterface;
 
@@ -13,10 +13,10 @@ use Drupal\Core\Form\FormStateInterface;
  * form elements are made visible.
  *
  * The submit handler for this form is implemented by the
- * \Drupal\fapi_example\Form\DemoBase class.
+ * \Drupal\form_api_example\Form\DemoBase class.
  *
  * @see \Drupal\Core\Form\FormBase
- * @see \Drupal\fapi_example\Form\DemoBase
+ * @see \Drupal\form_api_example\Form\DemoBase
  */
 class StateDemo extends DemoBase {
 
@@ -70,7 +70,7 @@ class StateDemo extends DemoBase {
    * @inheritdoc
    */
   public function getFormId() {
-    return 'fapi_example_state_demo';
+    return 'form_api_example_state_demo';
   }
 
   /**
diff --git a/fapi_example/src/Form/VerticalTabsDemo.php b/form_api_example/src/Form/VerticalTabsDemo.php
similarity index 94%
rename from fapi_example/src/Form/VerticalTabsDemo.php
rename to form_api_example/src/Form/VerticalTabsDemo.php
index e426b79..4a6d35d 100644
--- a/fapi_example/src/Form/VerticalTabsDemo.php
+++ b/form_api_example/src/Form/VerticalTabsDemo.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\fapi_example\Form;
+namespace Drupal\form_api_example\Form;
 
 use Drupal\Core\Form\FormStateInterface;
 
@@ -70,7 +70,7 @@ class VerticalTabsDemo extends DemoBase {
    * @inheritdoc
    */
   public function getFormId() {
-    return 'fapi_example_vertical_tabs_demo';
+    return 'form_api_example_vertical_tabs_demo';
   }
 
 }
diff --git a/fapi_example/templates/description.html.twig b/form_api_example/templates/description.html.twig
similarity index 54%
rename from fapi_example/templates/description.html.twig
rename to form_api_example/templates/description.html.twig
index 9b40a7a..ce56f20 100644
--- a/fapi_example/templates/description.html.twig
+++ b/form_api_example/templates/description.html.twig
@@ -5,16 +5,16 @@ Description text for the Fapi Example.
 #}
 
 {{ attach_library('core/drupal.dialog.ajax') }}
-{% set simple_form = path('fapi_example.simple_form') %}
-{% set multistep_form = path('fapi_example.multistep_form') %}
-{% set input_demo = path('fapi_example.input_demo') %}
-{% set build_demo = path('fapi_example.build_demo') %}
-{% set container_demo = path('fapi_example.container_demo') %}
-{% set state_demo = path('fapi_example.state_demo') %}
-{% set vertical_tabs_demo = path('fapi_example.vertical_tabs_demo') %}
-{% set ajax_demo = path('fapi_example.ajax_demo') %}
-{% set ajax_addmore = path('fapi_example.ajax_addmore') %}
-{% set modal_form = path('fapi_example.modal_form') %}
+{% set simple_form = path('form_api_example.simple_form') %}
+{% set multistep_form = path('form_api_example.multistep_form') %}
+{% set input_demo = path('form_api_example.input_demo') %}
+{% set build_demo = path('form_api_example.build_demo') %}
+{% set container_demo = path('form_api_example.container_demo') %}
+{% set state_demo = path('form_api_example.state_demo') %}
+{% set vertical_tabs_demo = path('form_api_example.vertical_tabs_demo') %}
+{% set ajax_demo = path('form_api_example.ajax_demo') %}
+{% set ajax_addmore = path('form_api_example.ajax_addmore') %}
+{% set modal_form = path('form_api_example.modal_form') %}
 {% trans %}
 
 <p>Form examples to demonstrate common UI solutions using the Drupal Form API</p>
diff --git a/fapi_example/tests/src/Functional/FapiExampleTest.php b/form_api_example/tests/src/Functional/FapiExampleTest.php
similarity index 86%
rename from fapi_example/tests/src/Functional/FapiExampleTest.php
rename to form_api_example/tests/src/Functional/FapiExampleTest.php
index 534fb57..7b76f25 100644
--- a/fapi_example/tests/src/Functional/FapiExampleTest.php
+++ b/form_api_example/tests/src/Functional/FapiExampleTest.php
@@ -1,17 +1,17 @@
 <?php
 
-namespace Drupal\Tests\fapi_example\Functional;
+namespace Drupal\Tests\form_api_example\Functional;
 
 use Drupal\Core\Url;
 use Drupal\Tests\examples\Functional\ExamplesBrowserTestBase;
 
 /**
- * Ensure that the fapi_example forms work properly.
+ * Ensure that the form_api_example forms work properly.
  *
- * @group fapi_example
+ * @group form_api_example
  * @group examples
  *
- * @ingroup fapi_example
+ * @ingroup form_api_example
  */
 class FapiExampleTest extends ExamplesBrowserTestBase {
 
@@ -20,7 +20,7 @@ class FapiExampleTest extends ExamplesBrowserTestBase {
    *
    * @var string[]
    */
-  static public $modules = ['fapi_example'];
+  static public $modules = ['form_api_example'];
 
   /**
    * The installation profile to use with this test.
@@ -60,19 +60,19 @@ class FapiExampleTest extends ExamplesBrowserTestBase {
 
     // Routes with menu links, and their form buttons.
     $routes = [
-      'fapi_example.description' => [],
-      'fapi_example.simple_form' => ['Submit'],
-      'fapi_example.input_demo' => ['Submit'],
-      'fapi_example.state_demo' => ['Submit'],
-      'fapi_example.container_demo' => ['Submit'],
-      'fapi_example.vertical_tabs_demo' => ['Submit'],
+      'form_api_example.description' => [],
+      'form_api_example.simple_form' => ['Submit'],
+      'form_api_example.input_demo' => ['Submit'],
+      'form_api_example.state_demo' => ['Submit'],
+      'form_api_example.container_demo' => ['Submit'],
+      'form_api_example.vertical_tabs_demo' => ['Submit'],
       // Modal form has a submit button, but requires input.
-      'fapi_example.modal_form' => [],
-      'fapi_example.ajax_demo' => ['Submit'],
-      'fapi_example.build_demo' => ['Submit'],
-      'fapi_example.ajax_addmore' => ['Submit'],
+      'form_api_example.modal_form' => [],
+      'form_api_example.ajax_demo' => ['Submit'],
+      'form_api_example.build_demo' => ['Submit'],
+      'form_api_example.ajax_addmore' => ['Submit'],
       // Multistep form has submit buttons, but requires input.
-      'fapi_example.multistep_form' => [],
+      'form_api_example.multistep_form' => [],
     ];
 
     // Ensure the links appear in the tools menu sidebar.
@@ -104,7 +104,7 @@ class FapiExampleTest extends ExamplesBrowserTestBase {
     $edit = [
       'temperature' => 'warm',
     ];
-    $this->drupalPostForm(Url::fromRoute('fapi_example.ajax_demo'), $edit, 'Submit');
+    $this->drupalPostForm(Url::fromRoute('form_api_example.ajax_demo'), $edit, 'Submit');
     $assert->statusCodeEquals(200);
     $assert->pageTextContains('Value for Temperature: warm');
   }
@@ -114,7 +114,7 @@ class FapiExampleTest extends ExamplesBrowserTestBase {
    */
   public function doTestBuildDemo() {
     $assert = $this->assertSession();
-    $build_demo_url = Url::fromRoute('fapi_example.build_demo');
+    $build_demo_url = Url::fromRoute('form_api_example.build_demo');
 
     $edit = [
       'change' => '1',
@@ -145,7 +145,7 @@ class FapiExampleTest extends ExamplesBrowserTestBase {
       'publisher' => 'me',
       'diet' => 'vegan',
     ];
-    $this->drupalPostForm(Url::fromRoute('fapi_example.container_demo'), $edit, 'Submit');
+    $this->drupalPostForm(Url::fromRoute('form_api_example.container_demo'), $edit, 'Submit');
     $assert->pageTextContains('Value for name: Dave');
     $assert->pageTextContains('Value for pen_name: DMan');
     $assert->pageTextContains('Value for title: My Book');
@@ -184,7 +184,7 @@ class FapiExampleTest extends ExamplesBrowserTestBase {
       'subject' => 'Form test',
       'weight' => '3',
     ];
-    $this->drupalPostForm(Url::fromRoute('fapi_example.input_demo'), $edit, 'Submit');
+    $this->drupalPostForm(Url::fromRoute('form_api_example.input_demo'), $edit, 'Submit');
     $assert->statusCodeEquals(200);
 
     $assert->pageTextContains('Value for What standardized tests did you take?');
@@ -219,19 +219,19 @@ class FapiExampleTest extends ExamplesBrowserTestBase {
     $edit = [
       'title' => 'My Book',
     ];
-    $this->drupalPostForm(Url::fromRoute('fapi_example.modal_form'), $edit, 'Submit');
+    $this->drupalPostForm(Url::fromRoute('form_api_example.modal_form'), $edit, 'Submit');
     $assert->pageTextContains('Submit handler: You specified a title of My Book.');
   }
 
   /**
-   * Check routes defined by fapi_example.
+   * Check routes defined by form_api_example.
    */
   public function doTestSimpleFormExample() {
     $assert = $this->assertSession();
 
     // Post a title.
     $edit = ['title' => 'My Custom Title'];
-    $this->drupalPostForm(Url::fromRoute('fapi_example.simple_form'), $edit, 'Submit');
+    $this->drupalPostForm(Url::fromRoute('form_api_example.simple_form'), $edit, 'Submit');
     $assert->pageTextContains('You specified a title of My Custom Title.');
   }
 
@@ -246,7 +246,7 @@ class FapiExampleTest extends ExamplesBrowserTestBase {
       'needs_accommodation' => TRUE,
       'diet' => 'vegan',
     ];
-    $this->drupalPostForm(Url::fromRoute('fapi_example.state_demo'), $edit, 'Submit');
+    $this->drupalPostForm(Url::fromRoute('form_api_example.state_demo'), $edit, 'Submit');
     $assert->pageTextContains('Dietary Restriction Requested: vegan');
   }
 
@@ -261,7 +261,7 @@ class FapiExampleTest extends ExamplesBrowserTestBase {
       'name' => 'Dave',
       'publisher' => 'me',
     ];
-    $this->drupalPostForm(Url::fromRoute('fapi_example.container_demo'), $edit, 'Submit');
+    $this->drupalPostForm(Url::fromRoute('form_api_example.container_demo'), $edit, 'Submit');
     $assert->pageTextContains('Value for name: Dave');
     $assert->pageTextContains('Value for publisher: me');
   }
@@ -274,7 +274,7 @@ class FapiExampleTest extends ExamplesBrowserTestBase {
     // ID will have a hash value at the end.
     $button_xpath = '//input[contains(@id,"edit-names-fieldset-actions-remove-name")]';
 
-    $ajax_addmore_url = Url::fromRoute('fapi_example.ajax_addmore');
+    $ajax_addmore_url = Url::fromRoute('form_api_example.ajax_addmore');
 
     // Verify that anonymous can access the ajax_add_more page.
     $this->drupalGet($ajax_addmore_url);
diff --git a/fapi_example/tests/src/Functional/MultistepFormTest.php b/form_api_example/tests/src/Functional/MultistepFormTest.php
similarity index 90%
rename from fapi_example/tests/src/Functional/MultistepFormTest.php
rename to form_api_example/tests/src/Functional/MultistepFormTest.php
index 1bcece1..95c1226 100644
--- a/fapi_example/tests/src/Functional/MultistepFormTest.php
+++ b/form_api_example/tests/src/Functional/MultistepFormTest.php
@@ -1,24 +1,25 @@
 <?php
 
-namespace Drupal\Tests\fapi_example\Functional;
+namespace Drupal\Tests\form_api_example\Functional;
 
+use Drupal\Core\Url;
 use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the Multistep FAPI Example.
  *
- * @group fapi_example
+ * @group form_api_example
  * @group examples
  */
 class MultistepFormTest extends BrowserTestBase {
 
-  public static $modules = ['fapi_example'];
+  public static $modules = ['form_api_example'];
 
   /**
    * Test of paths through the example wizard form.
    */
   public function testWizardForm() {
-    $this->drupalGet('examples/fapi-example/multistep-form');
+    $this->drupalGet(Url::fromRoute('form_api_example.multistep_form'));
     $page = $this->getSession()->getPage();
     $h1 = $page->find('css', 'h1');
     $this->assertContains('Multistep form', $h1->getText());
diff --git a/fapi_example/tests/src/FunctionalJavascript/ModalFormTest.php b/form_api_example/tests/src/FunctionalJavascript/ModalFormTest.php
similarity index 88%
rename from fapi_example/tests/src/FunctionalJavascript/ModalFormTest.php
rename to form_api_example/tests/src/FunctionalJavascript/ModalFormTest.php
index 3c1e09b..3322bcf 100644
--- a/fapi_example/tests/src/FunctionalJavascript/ModalFormTest.php
+++ b/form_api_example/tests/src/FunctionalJavascript/ModalFormTest.php
@@ -1,14 +1,14 @@
 <?php
 
-namespace Drupal\Tests\fapi_example\FunctionalJavascript;
+namespace Drupal\Tests\form_api_example\FunctionalJavascript;
 
 use Drupal\FunctionalJavascriptTests\JavascriptTestBase;
 use Drupal\Core\Url;
 
 /**
- * @group fapi_example
+ * @group form_api_example
  *
- * @ingroup fapi_example
+ * @ingroup form_api_example
  */
 class ModalFormTest extends JavascriptTestBase {
 
@@ -17,7 +17,7 @@ class ModalFormTest extends JavascriptTestBase {
    *
    * @var string[]
    */
-  static public $modules = ['fapi_example'];
+  static public $modules = ['form_api_example'];
 
   /**
    * Functional test of the modal form example.
@@ -34,7 +34,7 @@ class ModalFormTest extends JavascriptTestBase {
    */
   public function testModalForm() {
     // Visit form route.
-    $modal_route_nojs = Url::fromRoute('fapi_example.modal_form', ['nojs' => 'nojs']);
+    $modal_route_nojs = Url::fromRoute('form_api_example.modal_form', ['nojs' => 'nojs']);
     $this->drupalGet($modal_route_nojs);
 
     // Get Mink stuff.
