diff --git a/src/ComponentBase.php b/src/ComponentBase.php
index 140fe03..393ba51 100644
--- a/src/ComponentBase.php
+++ b/src/ComponentBase.php
@@ -13,6 +13,21 @@ use Drupal\node\Entity\Node;
 
 class ComponentBase extends PluginBase implements ComponentInterface {
 
+  /**
+   * $support_* variables are use to determine if a particular feature.
+   * This allows common form elements to be kept in the buildform of this class.
+   * @todo Is there a better way to do this? In the constructor?
+   */
+  protected $supports_unique = FALSE;
+
+  protected $supports_disabled = FALSE;
+
+  protected $supports_prefix_suffix = FALSE;
+
+  protected $supports_placeholder = FALSE;
+
+  protected $supports_width = FALSE;
+
   public function getLabel() {
     return $this->pluginDefinition['label'];
   }
@@ -21,90 +36,111 @@ class ComponentBase extends PluginBase implements ComponentInterface {
     return $this->pluginDefinition['description'];
   }
 
-  public function buildForm(array $form, \Drupal\Core\Form\FormStateInterface $form_state, $node = NULL) {
-    $form['#node'] = Node::load($node);
+  public function buildForm(array $form, FormStateInterface $form_state, Node $node = NULL) {
+    $form['#node'] = $node;
 
+    $config = $this->getConfiguration();
     $form['nid'] = array(
       '#type' => 'value',
-      '#value' => $node,
+      '#value' => $node->id(),
+    );
+
+    $form['cid'] = array(
+      '#type' => 'value',
+      '#value' => $config['cid'],
     );
 
+    $form['#component'] = $this;
+
+
     // Load basic component information from query string
     $form['type'] = array(
       '#type' => 'value',
-      '#value' => \Drupal::request()->query->get('type'),
+      '#value' => $config['type'],
     );
     $form['pid'] = array(
       '#type' => 'value',
-      '#value' => \Drupal::request()->query->get('pid'),
+      '#value' => $config['pid'],
     );
     $form['weight'] = array(
       '#type' => 'value',
-      '#value' => \Drupal::request()->query->get('weight'),
+      '#value' => $config['weight'],
     );
 
     $form['name'] = [
       '#type' => 'textfield',
       '#title' => t('Name'),
-			'#description' => t('This is used as a descriptive label when displaying this form element.'),
+      '#description' => t('This is used as a descriptive label when displaying this form element.'),
       '#size' => 60,
       '#maxlength' => NULL,
-			'#required' => TRUE,
-			'#value' => \Drupal::request()->query->get('name'),
+      '#required' => TRUE,
+      '#default_value' => $config['name'],
       '#weight' => -20,
       '#attributes' => [
-				'required' => TRUE,
+        'required' => TRUE,
         'class' => ['webform-component-name'],
       ],
     ];
     $form['form_key'] = [
       '#type' => 'machine_name',
       '#title' => t('Field key'),
-			'#description' => t('Enter a machine readable key for this form element. May contain only alphanumeric characters and underscores. This key will be used as the name attribute of the form element. This value has no effect on the way data is saved, but may be helpful if doing custom form processing.'),
+      '#description' => t('Enter a machine readable key for this form element. May contain only alphanumeric characters and underscores. This key will be used as the name attribute of the form element. This value has no effect on the way data is saved, but may be helpful if doing custom form processing.'),
       '#size' => 60,
-			'#machine_name' => [
+      '#machine_name' => [
         'exists' => array($this, 'componentKeyExists'),
-				'source' => array('name'),
-			],
+        'source' => array('name'),
+      ],
       '#maxlength' => NULL,
-			'#required' => TRUE,
+      '#required' => TRUE,
       '#weight' => -19,
       '#attributes' => [
-				'required' => TRUE,
+        'required' => TRUE,
         'class' => ['webform-component-form-key'],
       ],
     ];
     $form['validation'] = [
       '#type' => 'details',
       '#title' => t('Validation'),
-	    '#collapsible' => TRUE,
-	    '#open' => TRUE,
+      '#collapsible' => TRUE,
+      '#open' => TRUE,
       '#attributes' => [
         'class' => ['webform-component-validation'],
       ],
     ];
-		$form['validation']['required'] = [
-			'#type' => 'checkbox',
-			'#title' => t('Required'),
-			'#description' => t('Check this option if the user must enter a value.'),
-			'#value' => \Drupal::request()->query->get('required'),
+    $form['validation']['required'] = [
+      '#type' => 'checkbox',
+      '#title' => t('Required'),
+      '#description' => t('Check this option if the user must enter a value.'),
+      '#default_value' => $config['required'],
       '#attributes' => [
         'class' => ['webform-component-required'],
       ],
-		];
+    ];
+    if ($this->supports_unique) {
+      $form['validation']['unique'] = array(
+        '#type' => 'checkbox',
+        '#title' => t('Unique'),
+        '#return_value' => 1,
+        '#description' => t('Check that all entered values for this field are unique. The same value is not allowed to be used twice.'),
+        '#weight' => 1,
+        '#default_value' => $config['extra']['unique'],
+        '#parents' => array('extra', 'unique'),
+      );
+    }
+
     $form['display'] = [
       '#type' => 'details',
       '#title' => t('Display'),
-	    '#collapsible' => TRUE,
-	    '#open' => TRUE,
+      '#collapsible' => TRUE,
+      '#open' => TRUE,
       '#attributes' => [
         'class' => ['webform-component-display'],
       ],
     ];
-		$form['display']['wrapper_css'] = [
-			'#type' => 'textfield',
-			'#title' => t('Wrapper CSS classes'),
-			'#description' => t('Apply a class to the wrapper around both the field and its label. Separate multiple classes by spaces.'),
+    $form['display']['wrapper_css'] = [
+      '#type' => 'textfield',
+      '#title' => t('Wrapper CSS classes'),
+      '#description' => t('Apply a class to the wrapper around both the field and its label. Separate multiple classes by spaces.'),
       '#size' => 60,
       '#maxlength' => NULL,
       '#weight' => 20,
@@ -112,11 +148,11 @@ class ComponentBase extends PluginBase implements ComponentInterface {
       '#attributes' => [
         'class' => ['webform-component-wrapper-css'],
       ],
-		];
-		$form['display']['field_css'] = [
-			'#type' => 'textfield',
-			'#title' => t('Field CSS classes'),
-			'#description' => t('Apply a class to the field. Separate multiple by spaces.'),
+    ];
+    $form['display']['field_css'] = [
+      '#type' => 'textfield',
+      '#title' => t('Field CSS classes'),
+      '#description' => t('Apply a class to the field. Separate multiple by spaces.'),
       '#size' => 60,
       '#maxlength' => NULL,
       '#weight' => 22,
@@ -124,7 +160,63 @@ class ComponentBase extends PluginBase implements ComponentInterface {
       '#attributes' => [
         'class' => ['webform-component-field-css'],
       ],
-		];
+    ];
+    if ($this->supports_disabled) {
+      $form['display']['disabled'] = array(
+        '#type' => 'checkbox',
+        '#title' => t('Disabled'),
+        '#return_value' => 1,
+        '#description' => t('Make this field non-editable. Useful for setting an unchangeable default value.'),
+        '#weight' => 11,
+        '#default_value' => $config['extra']['disabled'],
+        '#parents' => array('extra', 'disabled'),
+      );
+    }
+    if ($this->supports_prefix_suffix) {
+      $form['display']['field_prefix'] = array(
+        '#type' => 'textfield',
+        '#title' => t('Prefix text placed to the left of the textfield'),
+        '#default_value' => $config['extra']['field_prefix'],
+        '#description' => t('Examples: $, #, -.'),
+        '#size' => 20,
+        '#maxlength' => 127,
+        '#weight' => 2.1,
+        '#parents' => array('extra', 'field_prefix'),
+      );
+      $form['display']['field_suffix'] = array(
+        '#type' => 'textfield',
+        '#title' => t('Postfix text placed to the right of the textfield'),
+        '#default_value' => $config['extra']['field_suffix'],
+        '#description' => t('Examples: lb, kg, %.'),
+        '#size' => 20,
+        '#maxlength' => 127,
+        '#weight' => 2.2,
+        '#parents' => array('extra', 'field_suffix'),
+      );
+    }
+    if ($this->supports_placeholder) {
+      $form['display']['placeholder'] = array(
+        '#type' => 'textfield',
+        '#title' => t('Placeholder'),
+        '#default_value' => $config['extra']['placeholder'],
+        '#description' => t('The placeholder will be shown in the field until the user starts entering a value.'),
+        '#weight' => 1,
+        '#parents' => array('extra', 'placeholder'),
+      );
+    }
+    if ($this->supports_width) {
+      $form['display']['width'] = array(
+        '#type' => 'textfield',
+        '#title' => t('Width'),
+        '#default_value' => $config['extra']['width'],
+        '#description' => t('Width of the textfield.') . ' ' . t('Leaving blank will use the default size.'),
+        '#size' => 5,
+        '#maxlength' => 10,
+        '#weight' => 0,
+        '#parents' => array('extra', 'width'),
+      );
+    }
+
     $form['actions']['submit'] = [
       '#type' => 'submit',
       '#value' => t('Save component'),
@@ -134,9 +226,80 @@ class ComponentBase extends PluginBase implements ComponentInterface {
     return $form;
   }
 
-  public function componentKeyExists($value, $element, \Drupal\Core\Form\FormStateInterface $form_state) {
+  public function componentKeyExists($value, $element, FormStateInterface $form_state) {
     // @TODO Actually check whether the field key has been used on the current
     // webform.
-    return false;
+    return FALSE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setConfiguration(array $configuration) {
+    $this->configuration = $configuration + $this->defaultConfiguration();
+    return $this;
+  }
+
+  /**
+   * @return array
+   */
+  public function getConfiguration() {
+    return $this->configuration;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function defaultConfiguration() {
+    return array();
   }
-}
\ No newline at end of file
+
+  /**
+   * @throws \Exception
+   */
+  public function save() {
+    $config = $this->configuration;
+    // @TODO Allow components/modules to modify the component before saving.
+    if (!isset($config['cid'])) {
+      $config['cid'] = $this->getNextCid($config);
+    }
+
+   if (isset($config['extra'])) {
+      $config['extra'] = serialize($config['extra']);
+    }
+
+    \Drupal::database()->merge('webform_component')
+      ->key(['nid' => $config['nid'], 'cid' => $config['cid']])
+      ->fields(array_keys($config), array_values($config))
+      ->execute();
+
+    // Reset configuration with cid.
+    $this->setConfiguration($config);
+  }
+
+  /**
+   * @param $config
+   *
+   * @return mixed
+   */
+  protected function getNextCid() {
+    $config = $this->getConfiguration();
+    $nid = $config['nid'];
+    $lock = \Drupal::lock();
+    if ($lock->acquire('webform_component_insert_' . $nid, 5)) {
+      $next_id_query = db_select('webform_component')->condition('nid', $nid);
+      $next_id_query->addExpression('MAX(cid) + 1', 'cid');
+      $cid = $next_id_query->execute()->fetchField();
+      if ($cid == NULL) {
+        $cid = 1;
+      }
+      $lock->release('webform_component_insert_' . $nid);
+      return $cid;
+    }
+    else {
+      \Drupal::logger('webform')->critical('A Webform component could not be saved because a timeout occurred while trying to acquire a lock for the node. Details: <pre>@component</pre>', array('@component' => print_r($config, TRUE)));
+      return NULL;
+    }
+  }
+
+}
diff --git a/src/ComponentInterface.php b/src/ComponentInterface.php
index 53f6f51..7f75ba3 100644
--- a/src/ComponentInterface.php
+++ b/src/ComponentInterface.php
@@ -8,6 +8,8 @@
 namespace Drupal\webform;
 
 use Drupal\Component\Plugin\PluginInspectionInterface;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\node\Entity\Node;
 
 /**
  * Defines an interface for webform component plugins.
@@ -27,4 +29,16 @@ interface ComponentInterface extends PluginInspectionInterface {
    */
   public function getDescription();
 
+  public function buildForm(array $form, FormStateInterface $form_state, Node $node = NULL);
+
+  /**
+   *
+   */
+  public function setConfiguration(array $configuration);
+
+  /**
+   *
+   */
+  public function defaultConfiguration();
+
 }
diff --git a/src/ComponentManager.php b/src/ComponentManager.php
index feacb68..cf17cde 100644
--- a/src/ComponentManager.php
+++ b/src/ComponentManager.php
@@ -28,7 +28,7 @@ class ComponentManager extends DefaultPluginManager {
    *   The module handler to invoke the alter hook with.
    */
   public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler) {
-    parent::__construct('Plugin/Component', $namespaces, $module_handler, 'Drupal\webform\ComponentInterface', 'Drupal\webform\Annotation\Component');
+    parent::__construct('Plugin/WebformComponent', $namespaces, $module_handler, 'Drupal\webform\ComponentInterface', 'Drupal\webform\Annotation\Component');
 
     $this->alterInfo('webform_component_info');
     $this->setCacheBackend($cache_backend, 'webform_component');
diff --git a/src/Form/WebformComponentAddForm.php b/src/Form/WebformComponentAddForm.php
index 7c52262..53f6e74 100644
--- a/src/Form/WebformComponentAddForm.php
+++ b/src/Form/WebformComponentAddForm.php
@@ -9,41 +9,34 @@ namespace Drupal\webform\Form;
 
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Form\FormBase;
+use Drupal\node\Entity\Node;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Drupal\webform\ComponentManager;
 use Drupal\Core\Database\Connection;
 
 /**
- * Add / edit components on a webform.
+ * Provides a form for adding Webform components.
  */
-class WebformComponentAddForm extends FormBase {
-
-  /**
-   * The component manager service.
-   *
-   * @var \Drupal\webform\ComponentManager
-   */
-  protected $componentManager;
-
-  /**
-   * Constructs a WebformComponentsForm object.
-   *
-   * @param ComponentManager $component_manager
-   *   The component manager service.
-   */
-  public function __construct(ComponentManager $component_manager) {
-    $this->componentManager = $component_manager;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function create(ContainerInterface $container) {
-    return new static(
-      $container->get('plugin.manager.webform.component')
+class WebformComponentAddForm extends WebformComponentFormBase {
+  /**
+   * {inheritdoc}
+   */
+  protected function prepareComponent($node, $component) {
+    /** @var \Drupal\webform\ComponentInterface $loaded_component */
+    $loaded_component = $this->componentManager->createInstance($component);
+    $loaded_component->setConfiguration(
+      [
+        'type' => \Drupal::request()->query->get('type'),
+        'pid' => \Drupal::request()->query->get('pid'),
+        'weight' => \Drupal::request()->query->get('weight'),
+        'required' => \Drupal::request()->query->get('required'),
+        'name' => \Drupal::request()->query->get('name'),
+      ]
     );
+    return $loaded_component;
   }
 
+
   /**
    * {@inheritdoc}
    */
@@ -53,28 +46,8 @@ class WebformComponentAddForm extends FormBase {
 
   /**
    * {@inheritdoc}
-   */
-  public function buildForm(array $form, FormStateInterface $form_state, $node = NULL, $component = NULL) {
-    // Load the component plugin.
-    $component = $this->componentManager->createInstance($component);
-
-    // Get the form from the component plugin.
-    $form = $component->buildForm($form, $form_state, $node);
-
-    return $form;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function validateForm(array &$form, FormStateInterface $form_state) {
-    $values = $form_state->getValues();
-
-    //parent::submitForm($form, $form_state);
-  }
-
-  /**
-   * {@inheritdoc}
+   *
+   * @todo Is this just leftover function?
    */
   public function validateComponentEditForm(array &$form, FormStateInterface $form_state) {
     $values = $form_state->getValues();
@@ -82,83 +55,5 @@ class WebformComponentAddForm extends FormBase {
     //parent::submitForm($form, $form_state);
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function submitForm(array &$form, FormStateInterface $form_state) {
-    $node = $form['#node'];
-    $values = $form_state->getValues();
-
-    $component = array(
-      'nid' => $values['nid'],
-      'pid' => $values['pid'],
-      'form_key' => $values['form_key'],
-      'name' => $values['name'],
-      'type' => $values['type'],
-      'value' => $values['value'],
-      'extra' => $values['extra'],
-      'required' => $values['required'],
-      'weight' => $values['weight'],
-    );
-    // echo "<pre>Values: \n";
-    // print_r($values);
-    // echo "\nComponent: \n";
-    // print_r($component);
-    // die();
-
-    $form['cid'] = array(
-      '#type' => 'value',
-      '#value' => $this->insertComponent($component),
-    );
-
-    $form_state->setRedirect( 'webform.components', array( 'node' => $node->id()));
-
-    // parent::submitForm($form, $form_state);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function save(array $form, FormStateInterface $form_state) {
-    // parent::save($form, $form_state);
-    drupal_set_message($this->t('Changes to the webform have been saved.'));
-  }
-
-  private function insertComponent(&$component) {
-    // @TODO Allow components/modules to modify the component before saving.
-    
-    if (!isset($component['cid'])) {
-      $lock = \Drupal::lock();
-      if ($lock->acquire('webform_component_insert_' . $component['nid'], 5)) {
-        $next_id_query = db_select('webform_component')->condition('nid', $component['nid']);
-        $next_id_query->addExpression('MAX(cid) + 1', 'cid');
-        $component['cid'] = $next_id_query->execute()->fetchField();
-        if ($component['cid'] == NULL) {
-          $component['cid'] = 1;
-        }
-        $lock->release('webform_component_insert_' . $component['nid']);
-      }
-      else {
-        watchdog('webform', 'A Webform component could not be saved because a timeout occurred while trying to acquire a lock for the node. Details: <pre>@component</pre>', array('@component' => print_r($component, TRUE)));
-        return FALSE;
-      }
-    }
-
-    $query = db_insert('webform_component')
-      ->fields(array(
-        'nid' => $component['nid'],
-        'cid' => $component['cid'],
-        'pid' => $component['pid'],
-        'form_key' => $component['form_key'],
-        'name' => $component['name'],
-        'type' => $component['type'],
-        'value' => (string) $component['value'],
-        'extra' => serialize($component['extra']),
-        'required' => $component['required'],
-        'weight' => $component['weight'],
-      ))
-      ->execute();
 
-      return $component['cid'];
-  }
 }
diff --git a/src/Form/WebformComponentEditForm.php b/src/Form/WebformComponentEditForm.php
new file mode 100644
index 0000000..89218f4
--- /dev/null
+++ b/src/Form/WebformComponentEditForm.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\webform\Form\WebformComponentEditForm.
+ */
+
+
+namespace Drupal\webform\Form;
+
+
+use Drupal\Core\Form\FormStateInterface;
+
+/**
+ * Provides a form for editing Webform components.
+ */
+class WebformComponentEditForm extends WebformComponentFormBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function prepareComponent($node, $component) {
+    $config = isset($node->webform['components'][$component]) ? $node->webform['components'][$component] : FALSE;
+    $component = $this->componentManager->createInstance($config['type']);
+    $component->setConfiguration($config);
+    return $component;
+
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return 'webform_component_edit';
+  }
+
+}
diff --git a/src/Form/WebformComponentFormBase.php b/src/Form/WebformComponentFormBase.php
new file mode 100644
index 0000000..9066fe5
--- /dev/null
+++ b/src/Form/WebformComponentFormBase.php
@@ -0,0 +1,113 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\webform\Form\WebformComponentFormBase.
+ */
+
+
+namespace Drupal\webform\Form;
+
+
+use Drupal\Core\Form\FormBase;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\node\Entity\Node;
+use Drupal\webform\ComponentManager;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+abstract class WebformComponentFormBase extends FormBase {
+  /**
+   * Prepares the component used by this form.
+   *
+   * @param string $component
+   *   Either a component ID, or the plugin ID used to create a new
+   *   component.
+   *
+   * @return \Drupal\webform\ComponentInterface
+   *   The condition object.
+   */
+  abstract protected function prepareComponent($node, $component);
+
+  /**
+   * The component manager service.
+   *
+   * @var \Drupal\webform\ComponentManager
+   */
+  protected $componentManager;
+
+  /**
+   * Constructs a WebformComponentsForm object.
+   *
+   * @param ComponentManager $component_manager
+   *   The component manager service.
+   */
+  public function __construct(ComponentManager $component_manager) {
+    $this->componentManager = $component_manager;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container) {
+    return new static(
+      $container->get('plugin.manager.webform.component')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   *
+   * @todo Change this because $component could be component type or component id
+   *       Would make sense to make our own ParamConverterInterface's so component is loaded at this point?
+   */
+  public function buildForm(array $form, FormStateInterface $form_state, Node $node = NULL, $component = NULL) {
+    // Load the component plugin.
+     $form_state->getFormObject();
+    if (empty($form['#component'])) {
+      $component = $this->prepareComponent($node, $component);
+    }
+    else {
+      $component = $form['#component'];
+    }
+    // Get the form from the component plugin.
+    $form = $component->buildForm($form, $form_state, $node);
+
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+    $node = $form['#node'];
+
+    /** @var \Drupal\webform\ComponentBase $component */
+    $component = $form['#component'];
+
+    $values = $form_state->cleanValues()->getValues();
+
+    $component->setConfiguration($values);
+
+    $component->save();
+    drupal_set_message($this->t('Changes to the webform have been saved.'));
+    $config = $component->getConfiguration();
+    // @todo Is value actually being used in the form after save()?
+    $form['cid'] = array(
+      '#type' => 'value',
+      '#value' => $config['cid'],
+    );
+
+    $form_state->setRedirect( 'webform.components', array( 'node' => $node->id()));
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function validateForm(array &$form, FormStateInterface $form_state) {
+    $values = $form_state->getValues();
+
+    //parent::submitForm($form, $form_state);
+  }
+
+
+
+}
diff --git a/src/Form/WebformComponentsForm.php b/src/Form/WebformComponentsForm.php
index 14675cd..670db94 100644
--- a/src/Form/WebformComponentsForm.php
+++ b/src/Form/WebformComponentsForm.php
@@ -458,7 +458,7 @@ class WebformComponentsForm extends FormBase {
     // @todo Fix these links once the routes exist.
     $form['components'][$cid]['operations']['#links']['edit'] = [
       'title' => $this->t('Edit'),
-      'url' => Url::fromRoute('entity.node.webform', ['node' => $node->id()]),
+      'url' => Url::fromRoute('webform.component_edit_form', ['node' => $node->id(), 'component' => $cid]),
     ];
     $form['components'][$cid]['operations']['#links']['clone'] = [
       'title' => $this->t('Clone'),
diff --git a/src/Plugin/Component/Date.php b/src/Plugin/Component/Date.php
deleted file mode 100644
index e8258f8..0000000
--- a/src/Plugin/Component/Date.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\webform\Plugin\Component\Date.
- */
-
-namespace Drupal\webform\Plugin\Component;
-
-use Drupal\webform\ComponentBase;
-
-/**
- * Provides a 'date' component.
- *
- * @Component(
- *   id = "date",
- *   label = @Translation("Date"),
- *   description = @Translation("Presents month, day, and year fields.")
- * )
- */
-class Date extends ComponentBase {}
diff --git a/src/Plugin/Component/Email.php b/src/Plugin/Component/Email.php
deleted file mode 100644
index 40391f0..0000000
--- a/src/Plugin/Component/Email.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\webform\Plugin\Component\Email.
- */
-
-namespace Drupal\webform\Plugin\Component;
-
-use Drupal\webform\ComponentBase;
-
-/**
- * Provides a 'email' component.
- *
- * @Component(
- *   id = "email",
- *   label = @Translation("E-mail"),
- *   description = @Translation("A special textfield that accepts e-mail addresses.")
- * )
- */
-class Email extends ComponentBase {}
diff --git a/src/Plugin/Component/Fieldset.php b/src/Plugin/Component/Fieldset.php
deleted file mode 100644
index 8927f5e..0000000
--- a/src/Plugin/Component/Fieldset.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\webform\Plugin\Component\Fieldset.
- */
-
-namespace Drupal\webform\Plugin\Component;
-
-use Drupal\webform\ComponentBase;
-
-/**
- * Provides a 'fieldset' component.
- *
- * @Component(
- *   id = "fieldset",
- *   label = @Translation("Fieldset"),
- *   description = @Translation("A special component that allows grouping of fields.")
- * )
- */
-class Fieldset extends ComponentBase {}
diff --git a/src/Plugin/Component/File.php b/src/Plugin/Component/File.php
deleted file mode 100644
index f29d03c..0000000
--- a/src/Plugin/Component/File.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\webform\Plugin\Component\File.
- */
-
-namespace Drupal\webform\Plugin\Component;
-
-use Drupal\webform\ComponentBase;
-
-/**
- * Provides a 'file' component.
- *
- * @Component(
- *   id = "file",
- *   label = @Translation("File"),
- *   description = @Translation("A validated field that allows both public or private file uploads.")
- * )
- */
-class File extends ComponentBase {}
diff --git a/src/Plugin/Component/Grid.php b/src/Plugin/Component/Grid.php
deleted file mode 100644
index 9224f37..0000000
--- a/src/Plugin/Component/Grid.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\webform\Plugin\Component\Grid.
- */
-
-namespace Drupal\webform\Plugin\Component;
-
-use Drupal\webform\ComponentBase;
-
-/**
- * Provides a 'grid' component.
- *
- * @Component(
- *   id = "grid",
- *   label = @Translation("Grid"),
- *   description = @Translation("A tabular display of questions and radio button
- *    options.")
- * )
- */
-class Grid extends ComponentBase {}
diff --git a/src/Plugin/Component/Hidden.php b/src/Plugin/Component/Hidden.php
deleted file mode 100644
index 019870c..0000000
--- a/src/Plugin/Component/Hidden.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\webform\Plugin\Component\Hidden.
- */
-
-namespace Drupal\webform\Plugin\Component;
-
-use Drupal\webform\ComponentBase;
-
-/**
- * Provides a 'hidden' component.
- *
- * @Component(
- *   id = "hidden",
- *   label = @Translation("Hidden"),
- *   description = @Translation("A form field that is not shown to end-users.")
- * )
- */
-class Hidden extends ComponentBase {}
diff --git a/src/Plugin/Component/Markup.php b/src/Plugin/Component/Markup.php
deleted file mode 100644
index 60b906e..0000000
--- a/src/Plugin/Component/Markup.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\webform\Plugin\Component\Markup.
- */
-
-namespace Drupal\webform\Plugin\Component;
-
-use Drupal\webform\ComponentBase;
-
-/**
- * Provides a 'markup' component.
- *
- * @Component(
- *   id = "markup",
- *   label = @Translation("Markup"),
- *   description = @Translation("A field to display custom HTML on a form.")
- * )
- */
-class Markup extends ComponentBase {}
diff --git a/src/Plugin/Component/Number.php b/src/Plugin/Component/Number.php
deleted file mode 100644
index cb36b37..0000000
--- a/src/Plugin/Component/Number.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\webform\Plugin\Component\Number.
- */
-
-namespace Drupal\webform\Plugin\Component;
-
-use Drupal\webform\ComponentBase;
-
-/**
- * Provides a 'number' component.
- *
- * @Component(
- *   id = "number",
- *   label = @Translation("Number"),
- *   description = @Translation("A field that accepts numerical values only.")
- * )
- */
-class Number extends ComponentBase {}
diff --git a/src/Plugin/Component/PageBreak.php b/src/Plugin/Component/PageBreak.php
deleted file mode 100644
index f97a116..0000000
--- a/src/Plugin/Component/PageBreak.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\webform\Plugin\Component\PageBreak.
- */
-
-namespace Drupal\webform\Plugin\Component;
-
-use Drupal\webform\ComponentBase;
-
-/**
- * Provides a 'pagebreak' component.
- *
- * @Component(
- *   id = "pagebreak",
- *   label = @Translation("PageBreak"),
- *   description = @Translation("Creates a way to have multi-page forms.")
- * )
- */
-class PageBreak extends ComponentBase {}
diff --git a/src/Plugin/Component/SelectOptions.php b/src/Plugin/Component/SelectOptions.php
deleted file mode 100644
index 9ee3342..0000000
--- a/src/Plugin/Component/SelectOptions.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\webform\Plugin\Component\SelectOptions.
- */
-
-namespace Drupal\webform\Plugin\Component;
-
-use Drupal\webform\ComponentBase;
-
-/**
- * Provides a 'selectoptions' component.
- *
- * @Component(
- *   id = "selectoptions",
- *   label = @Translation("SelectOptions"),
- *   description = @Translation("A field that displays options in a select box.")
- * )
- */
-class SelectOptions extends ComponentBase {}
diff --git a/src/Plugin/Component/TextArea.php b/src/Plugin/Component/TextArea.php
deleted file mode 100644
index 1152b2a..0000000
--- a/src/Plugin/Component/TextArea.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\webform\Plugin\Component\Textarea.
- */
-
-namespace Drupal\webform\Plugin\Component;
-
-use Drupal\webform\ComponentBase;
-
-/**
- * Provides a 'textarea' component.
- *
- * @Component(
- *   id = "textarea",
- *   label = @Translation("Textarea"),
- *   description = @Translation("A textarea field.")
- * )
- */
-class Textarea extends ComponentBase {}
diff --git a/src/Plugin/Component/TextField.php b/src/Plugin/Component/TextField.php
deleted file mode 100644
index 075e934..0000000
--- a/src/Plugin/Component/TextField.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\webform\Plugin\Component\TextField.
- */
-
-namespace Drupal\webform\Plugin\Component;
-
-use Drupal\webform\ComponentBase;
-
-/**
- * Provides a 'textfield' component.
- *
- * @Component(
- *   id = "textfield",
- *   label = @Translation("TextField"),
- *   description = @Translation("A textfield field.")
- * )
- */
-class TextField extends ComponentBase {
-
-  public function buildForm(array $form, \Drupal\Core\Form\FormStateInterface $form_state, $node = NULL) {
-    // @TODO Load component default values.
-    $component = array(
-      'value' => '',
-      'extra' => array(
-        'width' => '',
-        'placeholder' => '',
-        'field_prefix' => '',
-        'field_suffix' => '',
-        'disabled' => '',
-        'unique' => '',
-        'maxlength' => '',
-      ),
-    );
-
-    // Begin with the parent object's basic form.
-    $form = parent::buildForm($form, $form_state, $node);
-
-    $form['value'] = array(
-      '#type' => 'textfield',
-      '#title' => t('Default value'),
-      '#default_value' => $component['value'],
-      '#description' => t('The default value of the field.'),
-      '#size' => 60,
-      '#maxlength' => 1024,
-      '#weight' => 0,
-    );
-    $form['display']['width'] = array(
-      '#type' => 'textfield',
-      '#title' => t('Width'),
-      '#default_value' => $component['extra']['width'],
-      '#description' => t('Width of the textfield.') . ' ' . t('Leaving blank will use the default size.'),
-      '#size' => 5,
-      '#maxlength' => 10,
-      '#weight' => 0,
-      '#parents' => array('extra', 'width'),
-    );
-    $form['display']['placeholder'] = array(
-      '#type' => 'textfield',
-      '#title' => t('Placeholder'),
-      '#default_value' => $component['extra']['placeholder'],
-      '#description' => t('The placeholder will be shown in the field until the user starts entering a value.'),
-      '#weight' => 1,
-      '#parents' => array('extra', 'placeholder'),
-    );
-    $form['display']['field_prefix'] = array(
-      '#type' => 'textfield',
-      '#title' => t('Prefix text placed to the left of the textfield'),
-      '#default_value' => $component['extra']['field_prefix'],
-      '#description' => t('Examples: $, #, -.'),
-      '#size' => 20,
-      '#maxlength' => 127,
-      '#weight' => 2.1,
-      '#parents' => array('extra', 'field_prefix'),
-    );
-    $form['display']['field_suffix'] = array(
-      '#type' => 'textfield',
-      '#title' => t('Postfix text placed to the right of the textfield'),
-      '#default_value' => $component['extra']['field_suffix'],
-      '#description' => t('Examples: lb, kg, %.'),
-      '#size' => 20,
-      '#maxlength' => 127,
-      '#weight' => 2.2,
-      '#parents' => array('extra', 'field_suffix'),
-    );
-    $form['display']['disabled'] = array(
-      '#type' => 'checkbox',
-      '#title' => t('Disabled'),
-      '#return_value' => 1,
-      '#description' => t('Make this field non-editable. Useful for setting an unchangeable default value.'),
-      '#weight' => 11,
-      '#default_value' => $component['extra']['disabled'],
-      '#parents' => array('extra', 'disabled'),
-    );
-    $form['validation']['unique'] = array(
-      '#type' => 'checkbox',
-      '#title' => t('Unique'),
-      '#return_value' => 1,
-      '#description' => t('Check that all entered values for this field are unique. The same value is not allowed to be used twice.'),
-      '#weight' => 1,
-      '#default_value' => $component['extra']['unique'],
-      '#parents' => array('extra', 'unique'),
-    );
-    $form['validation']['maxlength'] = array(
-      '#type' => 'textfield',
-      '#title' => t('Maxlength'),
-      '#default_value' => $component['extra']['maxlength'],
-      '#description' => t('Maximum length of the textfield value.'),
-      '#size' => 5,
-      '#maxlength' => 10,
-      '#weight' => 2,
-      '#parents' => array('extra', 'maxlength'),
-    );
-
-    return $form;
-  }
-}
diff --git a/src/Plugin/Component/Time.php b/src/Plugin/Component/Time.php
deleted file mode 100644
index 6edfbf1..0000000
--- a/src/Plugin/Component/Time.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\webform\Plugin\Component\Time.
- */
-
-namespace Drupal\webform\Plugin\Component;
-
-use Drupal\webform\ComponentBase;
-
-/**
- * Provides a 'time' component.
- *
- * @Component(
- *   id = "time",
- *   label = @Translation("Time"),
- *   description = @Translation("A special textfield that accepts time entries.")
- * )
- */
-class Time extends ComponentBase {}
diff --git a/src/Plugin/WebformComponent/Date.php b/src/Plugin/WebformComponent/Date.php
new file mode 100644
index 0000000..0cd79a2
--- /dev/null
+++ b/src/Plugin/WebformComponent/Date.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\webform\Plugin\WebformComponent\Date.
+ */
+
+namespace Drupal\webform\Plugin\WebformComponent;
+
+use Drupal\webform\ComponentBase;
+
+/**
+ * Provides a 'date' component.
+ *
+ * @Component(
+ *   id = "date",
+ *   label = @Translation("Date"),
+ *   description = @Translation("Presents month, day, and year fields.")
+ * )
+ */
+class Date extends ComponentBase {}
diff --git a/src/Plugin/WebformComponent/Email.php b/src/Plugin/WebformComponent/Email.php
new file mode 100644
index 0000000..8aa16ca
--- /dev/null
+++ b/src/Plugin/WebformComponent/Email.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\webform\Plugin\WebformComponent\Email.
+ */
+
+namespace Drupal\webform\Plugin\WebformComponent;
+
+use Drupal\webform\ComponentBase;
+
+/**
+ * Provides a 'email' component.
+ *
+ * @Component(
+ *   id = "email",
+ *   label = @Translation("E-mail"),
+ *   description = @Translation("A special textfield that accepts e-mail addresses.")
+ * )
+ */
+class Email extends ComponentBase {}
diff --git a/src/Plugin/WebformComponent/Fieldset.php b/src/Plugin/WebformComponent/Fieldset.php
new file mode 100644
index 0000000..e566921
--- /dev/null
+++ b/src/Plugin/WebformComponent/Fieldset.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\webform\Plugin\WebformComponent\Fieldset.
+ */
+
+namespace Drupal\webform\Plugin\WebformComponent;
+
+use Drupal\webform\ComponentBase;
+
+/**
+ * Provides a 'fieldset' component.
+ *
+ * @Component(
+ *   id = "fieldset",
+ *   label = @Translation("Fieldset"),
+ *   description = @Translation("A special component that allows grouping of fields.")
+ * )
+ */
+class Fieldset extends ComponentBase {}
diff --git a/src/Plugin/WebformComponent/File.php b/src/Plugin/WebformComponent/File.php
new file mode 100644
index 0000000..08ee511
--- /dev/null
+++ b/src/Plugin/WebformComponent/File.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\webform\Plugin\WebformComponent\File.
+ */
+
+namespace Drupal\webform\Plugin\WebformComponent;
+
+use Drupal\webform\ComponentBase;
+
+/**
+ * Provides a 'file' component.
+ *
+ * @Component(
+ *   id = "file",
+ *   label = @Translation("File"),
+ *   description = @Translation("A validated field that allows both public or private file uploads.")
+ * )
+ */
+class File extends ComponentBase {}
diff --git a/src/Plugin/WebformComponent/Grid.php b/src/Plugin/WebformComponent/Grid.php
new file mode 100644
index 0000000..9fddabb
--- /dev/null
+++ b/src/Plugin/WebformComponent/Grid.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\webform\Plugin\WebformComponent\Grid.
+ */
+
+namespace Drupal\webform\Plugin\WebformComponent;
+
+use Drupal\webform\ComponentBase;
+
+/**
+ * Provides a 'grid' component.
+ *
+ * @Component(
+ *   id = "grid",
+ *   label = @Translation("Grid"),
+ *   description = @Translation("A tabular display of questions and radio button
+ *    options.")
+ * )
+ */
+class Grid extends ComponentBase {}
diff --git a/src/Plugin/WebformComponent/Hidden.php b/src/Plugin/WebformComponent/Hidden.php
new file mode 100644
index 0000000..37ea0be
--- /dev/null
+++ b/src/Plugin/WebformComponent/Hidden.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\webform\Plugin\WebformComponent\Hidden.
+ */
+
+namespace Drupal\webform\Plugin\WebformComponent;
+
+use Drupal\webform\ComponentBase;
+
+/**
+ * Provides a 'hidden' component.
+ *
+ * @Component(
+ *   id = "hidden",
+ *   label = @Translation("Hidden"),
+ *   description = @Translation("A form field that is not shown to end-users.")
+ * )
+ */
+class Hidden extends ComponentBase {}
diff --git a/src/Plugin/WebformComponent/Markup.php b/src/Plugin/WebformComponent/Markup.php
new file mode 100644
index 0000000..38fcc47
--- /dev/null
+++ b/src/Plugin/WebformComponent/Markup.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\webform\Plugin\WebformComponent\Markup.
+ */
+
+namespace Drupal\webform\Plugin\WebformComponent;
+
+use Drupal\webform\ComponentBase;
+
+/**
+ * Provides a 'markup' component.
+ *
+ * @Component(
+ *   id = "markup",
+ *   label = @Translation("Markup"),
+ *   description = @Translation("A field to display custom HTML on a form.")
+ * )
+ */
+class Markup extends ComponentBase {}
diff --git a/src/Plugin/WebformComponent/Number.php b/src/Plugin/WebformComponent/Number.php
new file mode 100644
index 0000000..9e18e3d
--- /dev/null
+++ b/src/Plugin/WebformComponent/Number.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\webform\Plugin\WebformComponent\Number.
+ */
+
+namespace Drupal\webform\Plugin\WebformComponent;
+
+use Drupal\webform\ComponentBase;
+
+/**
+ * Provides a 'number' component.
+ *
+ * @Component(
+ *   id = "number",
+ *   label = @Translation("Number"),
+ *   description = @Translation("A field that accepts numerical values only.")
+ * )
+ */
+class Number extends ComponentBase {}
diff --git a/src/Plugin/WebformComponent/PageBreak.php b/src/Plugin/WebformComponent/PageBreak.php
new file mode 100644
index 0000000..6d60572
--- /dev/null
+++ b/src/Plugin/WebformComponent/PageBreak.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\webform\Plugin\WebformComponent\PageBreak.
+ */
+
+namespace Drupal\webform\Plugin\WebformComponent;
+
+use Drupal\webform\ComponentBase;
+
+/**
+ * Provides a 'pagebreak' component.
+ *
+ * @Component(
+ *   id = "pagebreak",
+ *   label = @Translation("PageBreak"),
+ *   description = @Translation("Creates a way to have multi-page forms.")
+ * )
+ */
+class PageBreak extends ComponentBase {}
diff --git a/src/Plugin/WebformComponent/SelectOptions.php b/src/Plugin/WebformComponent/SelectOptions.php
new file mode 100644
index 0000000..eed79fd
--- /dev/null
+++ b/src/Plugin/WebformComponent/SelectOptions.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\webform\Plugin\WebformComponent\SelectOptions.
+ */
+
+namespace Drupal\webform\Plugin\WebformComponent;
+
+use Drupal\webform\ComponentBase;
+
+/**
+ * Provides a 'selectoptions' component.
+ *
+ * @Component(
+ *   id = "selectoptions",
+ *   label = @Translation("SelectOptions"),
+ *   description = @Translation("A field that displays options in a select box.")
+ * )
+ */
+class SelectOptions extends ComponentBase {}
diff --git a/src/Plugin/WebformComponent/TextArea.php b/src/Plugin/WebformComponent/TextArea.php
new file mode 100644
index 0000000..eeddd71
--- /dev/null
+++ b/src/Plugin/WebformComponent/TextArea.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\webform\Plugin\WebformComponent\Textarea.
+ */
+
+namespace Drupal\webform\Plugin\WebformComponent;
+
+use Drupal\webform\ComponentBase;
+
+/**
+ * Provides a 'textarea' component.
+ *
+ * @Component(
+ *   id = "textarea",
+ *   label = @Translation("Textarea"),
+ *   description = @Translation("A textarea field.")
+ * )
+ */
+class Textarea extends ComponentBase {}
diff --git a/src/Plugin/WebformComponent/TextField.php b/src/Plugin/WebformComponent/TextField.php
new file mode 100644
index 0000000..f0f6e0a
--- /dev/null
+++ b/src/Plugin/WebformComponent/TextField.php
@@ -0,0 +1,79 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\webform\Plugin\WebformComponent\TextField.
+ */
+
+namespace Drupal\webform\Plugin\WebformComponent;
+
+use Drupal\node\Entity\Node;
+use Drupal\webform\ComponentBase;
+
+/**
+ * Provides a 'textfield' component.
+ *
+ * @Component(
+ *   id = "textfield",
+ *   label = @Translation("TextField"),
+ *   description = @Translation("A textfield field.")
+ * )
+ */
+class TextField extends ComponentBase {
+
+  protected $supports_unique = TRUE;
+
+  protected $supports_disabled = TRUE;
+
+  protected $supports_placeholder = TRUE;
+
+  protected $supports_width = TRUE;
+
+  public function buildForm(array $form, \Drupal\Core\Form\FormStateInterface $form_state, Node $node = NULL) {
+    // @TODO Load component default values.
+    $component = array(
+      'value' => '',
+      'extra' => array(
+        'width' => '',
+        'placeholder' => '',
+        'field_prefix' => '',
+        'field_suffix' => '',
+        'disabled' => '',
+        'unique' => '',
+        'maxlength' => '',
+      ),
+    );
+
+    $config = $this->getConfiguration();
+
+    // Begin with the parent object's basic form.
+    $form = parent::buildForm($form, $form_state, $node);
+
+    $form['value'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Default value'),
+      '#default_value' => $config['value'],
+      '#description' => t('The default value of the field.'),
+      '#size' => 60,
+      '#maxlength' => 1024,
+      '#weight' => 0,
+    );
+
+
+
+
+
+    $form['validation']['maxlength'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Maxlength'),
+      '#default_value' => $config['extra']['maxlength'],
+      '#description' => t('Maximum length of the textfield value.'),
+      '#size' => 5,
+      '#maxlength' => 10,
+      '#weight' => 2,
+      '#parents' => array('extra', 'maxlength'),
+    );
+
+    return $form;
+  }
+}
diff --git a/src/Plugin/WebformComponent/Time.php b/src/Plugin/WebformComponent/Time.php
new file mode 100644
index 0000000..2b25893
--- /dev/null
+++ b/src/Plugin/WebformComponent/Time.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\webform\Plugin\WebformComponent\Time.
+ */
+
+namespace Drupal\webform\Plugin\WebformComponent;
+
+use Drupal\webform\ComponentBase;
+
+/**
+ * Provides a 'time' component.
+ *
+ * @Component(
+ *   id = "time",
+ *   label = @Translation("Time"),
+ *   description = @Translation("A special textfield that accepts time entries.")
+ * )
+ */
+class Time extends ComponentBase {}
diff --git a/webform.module b/webform.module
index 873271f..fbc4530 100644
--- a/webform.module
+++ b/webform.module
@@ -602,7 +602,7 @@ function webform_submission_access($node, $submission, $op = 'view', $account =
     webform_disable_page_cache();
   }
 
-  $module_access = count(array_filter(\Drupal::moduleHandler()->invokeAll('webform_submission_access', $node, $submission, $op, $account))) > 0;
+  $module_access = count(array_filter(\Drupal::moduleHandler()->invokeAll('webform_submission_access', array($node, $submission, $op, $account)))) > 0;
 
   switch ($op) {
     case 'view':
@@ -2215,7 +2215,7 @@ function webform_block_view($delta = '') {
         '#node' => $node,
         '#sid' => $_SESSION['webform_confirmation'][$nid]['sid'],
       );
-    } 
+    }
     elseif (strlen(trim(strip_tags($node->webform['confirmation'])))) {
       // Display confirmation link drupal status messages, but in the block.
       $message = webform_replace_tokens($node->webform['confirmation'],
