diff --git a/.htaccess b/.htaccess
index 0ad7be3..4a14c8e 100644
--- a/.htaccess
+++ b/.htaccess
@@ -90,14 +90,14 @@ DirectoryIndex index.php index.html index.htm
   # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
   #
   # To redirect all users to access the site WITH the 'www.' prefix,
-  # (http://example.com/... will be redirected to http://www.example.com/...)
+  # (http://example.com/foo will be redirected to http://www.example.com/foo)
   # uncomment the following:
   # RewriteCond %{HTTP_HOST} .
   # RewriteCond %{HTTP_HOST} !^www\. [NC]
   # RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
   #
   # To redirect all users to access the site WITHOUT the 'www.' prefix,
-  # (http://www.example.com/... will be redirected to http://example.com/...)
+  # (http://www.example.com/foo will be redirected to http://example.com/foo)
   # uncomment the following:
   # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
   # RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
diff --git a/core/CHANGELOG.txt b/core/CHANGELOG.txt
index 83fc766..d7ddd95 100644
--- a/core/CHANGELOG.txt
+++ b/core/CHANGELOG.txt
@@ -95,7 +95,7 @@ Drupal 8.0, xxxx-xx-xx (development version)
       * Added language selectors to most configuration options (views, menus,
         etc.)
       * Added a configuration translation user interface that works with any
-        configuration with translatable values (blocks, views, fields, etc).
+        configuration with translatable values (blocks, views, fields, etc.).
       * Added language options to block visibility.
     * Much improved language APIs for developers:
       * Added simple APIs and hooks to save/delete/update languages.
@@ -680,7 +680,7 @@ Drupal 4.7.0, 2006-05-01
 - Added support for PHP5's 'mysqli' extension.
 - Search module:
     * Made indexer smarter and more robust.
-    * Added advanced search operators (e.g. phrase, node type, ...).
+    * Added advanced search operators (e.g. phrase, node type, etc.).
     * Added customizable result ranking.
 - PostgreSQL support:
     * Removed dependency on PL/pgSQL procedural language.
@@ -1057,7 +1057,7 @@ Drupal 4.0.0, 2002-06-15
     * Made each cloud site have its own settings.
     * Modules and themes can now be enabled/disabled using the administration pages.
     * Added URL abstraction for links.
-    * Usability changes (renamed links, better UI, etc).
+    * Usability changes (renamed links, better UI, etc.).
 - Collaboratively revised and expanded the Drupal documentation.
 
 Drupal 3.0.1, 2001-10-15
diff --git a/core/includes/common.inc b/core/includes/common.inc
index f656206..cd21521 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -1328,7 +1328,7 @@ function drupal_clean_id_identifier($id) {
  *   box, etc.). This should only be used for JavaScript that cannot be executed
  *   from a file. When adding inline code, make sure that you are not relying on
  *   $() being the jQuery function. Wrap your code in
- *   @code (function ($) {... })(jQuery); @endcode
+ *   @code (function ($) { ... })(jQuery); @endcode
  *   or use jQuery() instead of $().
  * - Add external JavaScript ('external'): Allows the inclusion of external
  *   JavaScript files that are not hosted on the local server. Note that these
diff --git a/core/lib/Drupal/Component/Utility/NestedArray.php b/core/lib/Drupal/Component/Utility/NestedArray.php
index c494c24..9c3b866 100644
--- a/core/lib/Drupal/Component/Utility/NestedArray.php
+++ b/core/lib/Drupal/Component/Utility/NestedArray.php
@@ -42,7 +42,8 @@ class NestedArray {
    * $key_exists = NULL;
    * $value = NestedArray::getValue($form, $parents, $key_exists);
    * if ($key_exists) {
-   *   // ... do something with $value ...
+   *   // Do something with $value.
+   *   ...
    * }
    * @endcode
    *
diff --git a/core/lib/Drupal/Core/Archiver/ArchiveTar.php b/core/lib/Drupal/Core/Archiver/ArchiveTar.php
index ac54bde..4e993e2 100644
--- a/core/lib/Drupal/Core/Archiver/ArchiveTar.php
+++ b/core/lib/Drupal/Core/Archiver/ArchiveTar.php
@@ -118,7 +118,7 @@ function __construct($p_tarname, $p_compress = null)
                     if ($data == "\37\213") {
                         $this->_compress = true;
                         $this->_compress_type = 'gz';
-                    // No sure it's enough for a magic code ....
+                    // Not sure it's enough for a magic code.
                     } elseif ($data == "BZ") {
                         $this->_compress = true;
                         $this->_compress_type = 'bz2';
@@ -451,7 +451,7 @@ function addString($p_filename, $p_string)
         if (!$this->_openAppend())
             return false;
 
-        // Need to check the get back to the temporary file ? ....
+        // Need to check the get back to the temporary file?
         $v_result = $this->_addString($p_filename, $p_string);
 
         $this->_writeFooter();
@@ -1186,13 +1186,13 @@ function _writeHeaderBlock($p_filename, $p_size, $p_mtime=0, $p_perms=0,
 
         // ----- Calculate the checksum
         $v_checksum = 0;
-        // ..... First part of the header
+        // First part of the header.
         for ($i=0; $i<148; $i++)
             $v_checksum += ord(substr($v_binary_data_first,$i,1));
-        // ..... Ignore the checksum value and replace it by ' ' (space)
+        // Ignore the checksum value and replace it by ' ' (space).
         for ($i=148; $i<156; $i++)
             $v_checksum += ord(' ');
-        // ..... Last part of the header
+        // Last part of the header.
         for ($i=156, $j=0; $i<512; $i++, $j++)
             $v_checksum += ord(substr($v_binary_data_last,$j,1));
 
@@ -1243,13 +1243,13 @@ function _writeLongHeader($p_filename)
 
         // ----- Calculate the checksum
         $v_checksum = 0;
-        // ..... First part of the header
+        // First part of the header.
         for ($i=0; $i<148; $i++)
             $v_checksum += ord(substr($v_binary_data_first,$i,1));
-        // ..... Ignore the checksum value and replace it by ' ' (space)
+        // Ignore the checksum value and replace it by ' ' (space).
         for ($i=148; $i<156; $i++)
             $v_checksum += ord(' ');
-        // ..... Last part of the header
+        // Last part of the header.
         for ($i=156, $j=0; $i<512; $i++, $j++)
             $v_checksum += ord(substr($v_binary_data_last,$j,1));
 
@@ -1294,13 +1294,13 @@ function _readHeader($v_binary_data, &$v_header)
         }
         // ----- Calculate the checksum
         $v_checksum = 0;
-        // ..... First part of the header
+        // First part of the header.
         for ($i=0; $i<148; $i++)
             $v_checksum+=ord(substr($v_binary_data,$i,1));
-        // ..... Ignore the checksum value and replace it by ' ' (space)
+        // Ignore the checksum value and replace it by ' ' (space).
         for ($i=148; $i<156; $i++)
             $v_checksum += ord(' ');
-        // ..... Last part of the header
+        // Last part of the header.
         for ($i=156; $i<512; $i++)
            $v_checksum+=ord(substr($v_binary_data,$i,1));
 
@@ -1657,7 +1657,7 @@ function _extractList($p_path, &$p_list_detail, $p_mode,
           $this->_jumpBlock(ceil(($v_header['size']/512)));
       }
 
-      /* TBC : Seems to be unused ...
+      /* TBC : Seems to be unused.
       if ($this->_compress)
         $v_end_of_file = @gzeof($this->_file);
       else
diff --git a/core/lib/Drupal/Core/Asset/CssOptimizer.php b/core/lib/Drupal/Core/Asset/CssOptimizer.php
index baa2de4..734db19 100644
--- a/core/lib/Drupal/Core/Asset/CssOptimizer.php
+++ b/core/lib/Drupal/Core/Asset/CssOptimizer.php
@@ -142,7 +142,7 @@ protected function loadNestedFile($matches) {
     $directory = $directory == '.' ? '' : $directory .'/';
 
     // Alter all internal _url() paths. Leave external paths alone. We don't need
-    // to normalize absolute paths here (i.e. remove folder/... segments)
+    // to normalize absolute paths here (i.e. remove folder/* segments)
     // because that will be done later.
     return preg_replace('/url\(\s*([\'"]?)(?![a-z]+:|\/+)([^\'")]+)([\'"]?)\s*\)/i', 'url(\1' . $directory . '\2\3)', $file);
   }
diff --git a/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php b/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php
index 669a722..578b1d9 100644
--- a/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php
+++ b/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php
@@ -247,7 +247,7 @@ public function renameTable($table, $new_name) {
     $schema = $this->introspectSchema($table);
 
     // SQLite doesn't allow you to rename tables outside of the current
-    // database. So the syntax '...RENAME TO database.table' would fail.
+    // database. So the syntax '... RENAME TO database.table' would fail.
     // So we must determine the full table name here rather than surrounding
     // the table with curly braces in case the db_prefix contains a reference
     // to a database outside of our existing database.
diff --git a/core/lib/Drupal/Core/Entity/Display/EntityFormDisplayInterface.php b/core/lib/Drupal/Core/Entity/Display/EntityFormDisplayInterface.php
index 57b5abf..1293d0f 100644
--- a/core/lib/Drupal/Core/Entity/Display/EntityFormDisplayInterface.php
+++ b/core/lib/Drupal/Core/Entity/Display/EntityFormDisplayInterface.php
@@ -40,7 +40,7 @@
    *   // widget is 'single-value' (provides the input for one field value,
    *   // most common case), and will therefore be repeated as many times as
    *   // needed, or 'multiple-values' (one single widget allows the input of
-   *   // several values, e.g checkboxes, select box...).
+   *   // several values, e.g checkboxes, select box, etc.).
    *   'field_foo' => array(
    *     '#access' => TRUE if the current user has 'edit' grants for the field,
    *       FALSE if not.
diff --git a/core/lib/Drupal/Core/Field/WidgetInterface.php b/core/lib/Drupal/Core/Field/WidgetInterface.php
index 25978be..785e4b7 100644
--- a/core/lib/Drupal/Core/Field/WidgetInterface.php
+++ b/core/lib/Drupal/Core/Field/WidgetInterface.php
@@ -66,7 +66,7 @@ public function settingsSummary();
    * hook_field_widget_WIDGET_TYPE_form_alter().
    *
    * The FAPI element callbacks (such as #process, #element_validate,
-   * #value_callback...) used by the widget do not have access to the original
+   * #value_callback, etc.) used by the widget do not have access to the original
    * $field_definition passed to the widget's constructor. Therefore, if any
    * information is needed from that definition by those callbacks, the widget
    * implementing this method, or a hook_field_widget[_WIDGET_TYPE]_form_alter()
@@ -77,7 +77,7 @@ public function settingsSummary();
    * @param \Drupal\Core\Field\FieldItemListInterface $items
    *   Array of default values for this field.
    * @param int $delta
-   *   The order of this item in the array of sub-elements (0, 1, 2, etc).
+   *   The order of this item in the array of sub-elements (0, 1, 2, etc.).
    * @param array $element
    *   A form element array containing basic properties for the widget:
    *   - #field_parents: The 'parents' space for the field in the form. Most
diff --git a/core/modules/block/src/BlockForm.php b/core/modules/block/src/BlockForm.php
index 73e7ea4..5bfd93f 100644
--- a/core/modules/block/src/BlockForm.php
+++ b/core/modules/block/src/BlockForm.php
@@ -209,7 +209,7 @@ public function getUniqueMachineName(BlockInterface $block) {
     }, $block_ids);
 
     // Iterate through potential IDs until we get a new one. E.g.
-    // 'plugin', 'plugin_2', 'plugin_3'...
+    // 'plugin', 'plugin_2', 'plugin_3', etc.
     $count = 1;
     $machine_default = $suggestion;
     while (in_array($machine_default, $block_ids)) {
diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module
index bdf53bf..581397c 100644
--- a/core/modules/comment/comment.module
+++ b/core/modules/comment/comment.module
@@ -277,7 +277,7 @@ function comment_prepare_thread(&$comments) {
  * @param \Drupal\comment\CommentInterface $comment
  *   The comment object.
  * @param $view_mode
- *   (optional) View mode, e.g. 'full', 'teaser'... Defaults to 'full'.
+ *   (optional) View mode, e.g. 'full', 'teaser', etc. Defaults to 'full'.
  * @param $langcode
  *   (optional) A language code to use for rendering. Defaults to the global
  *   content language of the current request.
@@ -295,7 +295,7 @@ function comment_view(CommentInterface $comment, $view_mode = 'full', $langcode
  * @param $comments
  *   An array of comments as returned by entity_load_multiple().
  * @param $view_mode
- *   View mode, e.g. 'full', 'teaser'...
+ *   View mode, e.g. 'full', 'teaser', etc.
  * @param $langcode
  *   (optional) A string indicating the language field values are to be shown
  *   in. If no language is provided the current content language is used.
diff --git a/core/modules/entity_reference/src/ConfigurableEntityReferenceItem.php b/core/modules/entity_reference/src/ConfigurableEntityReferenceItem.php
index cbbac44..4207877 100644
--- a/core/modules/entity_reference/src/ConfigurableEntityReferenceItem.php
+++ b/core/modules/entity_reference/src/ConfigurableEntityReferenceItem.php
@@ -144,9 +144,9 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     $handlers = \Drupal::service('plugin.manager.entity_reference.selection')->getDefinitions();
     $handlers_options = array();
     foreach ($handlers as $plugin_id => $plugin) {
-      // We only display base plugins (e.g. 'default', 'views', ...) and not
+      // We only display base plugins (e.g. 'default', 'views', etc.) and not
       // entity type specific plugins (e.g. 'default_node', 'default_user',
-      // ...).
+      // etc.).
       if (in_array($plugin_id, $handler_groups)) {
         $handlers_options[$plugin_id] = String::checkPlain($plugin['label']);
       }
diff --git a/core/modules/field/src/Tests/FieldInstanceCrudTest.php b/core/modules/field/src/Tests/FieldInstanceCrudTest.php
new file mode 100644
index 0000000..8c63da8
--- /dev/null
+++ b/core/modules/field/src/Tests/FieldInstanceCrudTest.php
@@ -0,0 +1,223 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\field\Tests\FieldInstanceCrudTest.
+ */
+
+namespace Drupal\field\Tests;
+
+use Drupal\Core\Entity\EntityStorageException;
+use Drupal\field\Entity\FieldStorageConfig;
+use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\FieldException;
+
+/**
+ * Create field entities by attaching fields to entities.
+ *
+ * @group field
+ */
+class FieldInstanceCrudTest extends FieldUnitTestBase {
+
+  /**
+   * The field storage entity.
+   *
+   * @var \Drupal\field\Entity\FieldStorageConfig
+   */
+  protected $fieldStorage;
+
+  /**
+   * The field entity definition.
+   *
+   * @var array
+   */
+  protected $fieldStorageDefinition;
+
+  /**
+   * The field instance entity definition.
+   *
+   * @var array
+   */
+  protected $instanceDefinition;
+
+  function setUp() {
+    parent::setUp();
+
+    $this->fieldStorageDefinition = array(
+      'name' => drupal_strtolower($this->randomMachineName()),
+      'entity_type' => 'entity_test',
+      'type' => 'test_field',
+    );
+    $this->fieldStorage = entity_create('field_storage_config', $this->fieldStorageDefinition);
+    $this->fieldStorage->save();
+    $this->instanceDefinition = array(
+      'field_name' => $this->fieldStorage->getName(),
+      'entity_type' => 'entity_test',
+      'bundle' => 'entity_test',
+    );
+  }
+
+  // TODO : test creation with
+  // - a full fledged $instance structure, check that all the values are there
+  // - a minimal $instance structure, check all default values are set
+  // defer actual $instance comparison to a helper function, used for the two cases above,
+  // and for testUpdateFieldInstance
+
+  /**
+   * Test the creation of a field instance.
+   */
+  function testCreateFieldInstance() {
+    $instance = entity_create('field_instance_config', $this->instanceDefinition);
+    $instance->save();
+
+    // Read the configuration. Check against raw configuration data rather than
+    // the loaded ConfigEntity, to be sure we check that the defaults are
+    // applied on write.
+    $config = \Drupal::config('field.instance.' . $instance->id())->get();
+    $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
+
+    // Check that default values are set.
+    $this->assertEqual($config['required'], FALSE, 'Required defaults to false.');
+    $this->assertIdentical($config['label'], $this->instanceDefinition['field_name'], 'Label defaults to field name.');
+    $this->assertIdentical($config['description'], '', 'Description defaults to empty string.');
+
+    // Check that default settings are set.
+    $this->assertEqual($config['settings'], $field_type_manager->getDefaultInstanceSettings($this->fieldStorageDefinition['type']) , 'Default instance settings have been written.');
+
+    // Check that the denormalized 'field_type' was properly written.
+    $this->assertEqual($config['field_type'], $this->fieldStorageDefinition['type']);
+
+    // Guarantee that the field/bundle combination is unique.
+    try {
+      entity_create('field_instance_config', $this->instanceDefinition)->save();
+      $this->fail(t('Cannot create two instances with the same field / bundle combination.'));
+    }
+    catch (EntityStorageException $e) {
+      $this->pass(t('Cannot create two instances with the same field / bundle combination.'));
+    }
+
+    // Check that the specified field exists.
+    try {
+      $this->instanceDefinition['field_name'] = $this->randomMachineName();
+      entity_create('field_instance_config', $this->instanceDefinition)->save();
+      $this->fail(t('Cannot create an instance of a non-existing field.'));
+    }
+    catch (FieldException $e) {
+      $this->pass(t('Cannot create an instance of a non-existing field.'));
+    }
+
+    // TODO: test other failures.
+  }
+
+  /**
+   * Test reading back an instance definition.
+   */
+  function testReadFieldInstance() {
+    entity_create('field_instance_config', $this->instanceDefinition)->save();
+
+    // Read the instance back.
+    $instance = entity_load('field_instance_config', 'entity_test.' . $this->instanceDefinition['bundle'] . '.' . $this->instanceDefinition['field_name']);
+    $this->assertTrue($this->instanceDefinition['field_name'] == $instance->getName(), 'The field was properly read.');
+    $this->assertTrue($this->instanceDefinition['entity_type'] == $instance->entity_type, 'The field was properly read.');
+    $this->assertTrue($this->instanceDefinition['bundle'] == $instance->bundle, 'The field was properly read.');
+  }
+
+  /**
+   * Test the update of a field instance.
+   */
+  function testUpdateFieldInstance() {
+    entity_create('field_instance_config', $this->instanceDefinition)->save();
+
+    // Check that basic changes are saved.
+    $instance = entity_load('field_instance_config', 'entity_test.' . $this->instanceDefinition['bundle'] . '.' . $this->instanceDefinition['field_name']);
+    $instance->required = !$instance->isRequired();
+    $instance->label = $this->randomMachineName();
+    $instance->description = $this->randomMachineName();
+    $instance->settings['test_instance_setting'] = $this->randomMachineName();
+    $instance->save();
+
+    $instance_new = entity_load('field_instance_config', 'entity_test.' . $this->instanceDefinition['bundle'] . '.' . $this->instanceDefinition['field_name']);
+    $this->assertEqual($instance->isRequired(), $instance_new->isRequired(), '"required" change is saved');
+    $this->assertEqual($instance->getLabel(), $instance_new->getLabel(), '"label" change is saved');
+    $this->assertEqual($instance->getDescription(), $instance_new->getDescription(), '"description" change is saved');
+
+    // TODO: test failures.
+  }
+
+  /**
+   * Test the deletion of a field instance.
+   */
+  function testDeleteFieldInstance() {
+    // TODO: Test deletion of the data stored in the field also.
+    // Need to check that data for a 'deleted' field / instance doesn't get
+    // loaded. Need to check data marked deleted is cleaned on cron (not
+    // implemented yet).
+
+    // Create two instances for the same field so we can test that only one
+    // is deleted.
+    entity_create('field_instance_config', $this->instanceDefinition)->save();
+    $another_instance_definition = $this->instanceDefinition;
+    $another_instance_definition['bundle'] .= '_another_bundle';
+    entity_test_create_bundle($another_instance_definition['bundle']);
+    entity_create('field_instance_config', $another_instance_definition)->save();
+
+    // Test that the first instance is not deleted, and then delete it.
+    $instance = current(entity_load_multiple_by_properties('field_instance_config', array('entity_type' => 'entity_test', 'field_name' => $this->instanceDefinition['field_name'], 'bundle' => $this->instanceDefinition['bundle'], 'include_deleted' => TRUE)));
+    $this->assertTrue(!empty($instance) && empty($instance->deleted), 'A new field instance is not marked for deletion.');
+    $instance->delete();
+
+    // Make sure the instance is marked as deleted when the instance is
+    // specifically loaded.
+    $instance = current(entity_load_multiple_by_properties('field_instance_config', array('entity_type' => 'entity_test', 'field_name' => $this->instanceDefinition['field_name'], 'bundle' => $this->instanceDefinition['bundle'], 'include_deleted' => TRUE)));
+    $this->assertTrue(!empty($instance->deleted), 'A deleted field instance is marked for deletion.');
+
+    // Try to load the instance normally and make sure it does not show up.
+    $instance = entity_load('field_instance_config', 'entity_test.' . '.' . $this->instanceDefinition['bundle'] . '.' . $this->instanceDefinition['field_name']);
+    $this->assertTrue(empty($instance), 'A deleted field instance is not loaded by default.');
+
+    // Make sure the other field instance is not deleted.
+    $another_instance = entity_load('field_instance_config', 'entity_test.' . $another_instance_definition['bundle'] . '.' . $another_instance_definition['field_name']);
+    $this->assertTrue(!empty($another_instance) && empty($another_instance->deleted), 'A non-deleted field instance is not marked for deletion.');
+  }
+
+  /**
+   * Tests the cross deletion behavior between fields and instances.
+   */
+  function testDeleteFieldInstanceCrossDeletion() {
+    $instance_definition_2 = $this->instanceDefinition;
+    $instance_definition_2['bundle'] .= '_another_bundle';
+    entity_test_create_bundle($instance_definition_2['bundle']);
+
+    // Check that deletion of a field deletes its instances.
+    $field_storage = $this->fieldStorage;
+    entity_create('field_instance_config', $this->instanceDefinition)->save();
+    entity_create('field_instance_config', $instance_definition_2)->save();
+    $field_storage->delete();
+    $this->assertFalse(FieldInstanceConfig::loadByName('entity_test', $this->instanceDefinition['bundle'], $field_storage->name));
+    $this->assertFalse(FieldInstanceConfig::loadByName('entity_test', $instance_definition_2['bundle'], $field_storage->name));
+
+    // Chack that deletion of the last instance deletes the field.
+    $field_storage = entity_create('field_storage_config', $this->fieldStorageDefinition);
+    $field_storage->save();
+    $instance = entity_create('field_instance_config', $this->instanceDefinition);
+    $instance->save();
+    $instance_2 = entity_create('field_instance_config', $instance_definition_2);
+    $instance_2->save();
+    $instance->delete();
+    $this->assertTrue(FieldStorageConfig::loadByName('entity_test', $field_storage->name));
+    $instance_2->delete();
+    $this->assertFalse(FieldStorageConfig::loadByName('entity_test', $field_storage->name));
+
+    // Check that deletion of all instances of the same field simultaneously
+    // deletes the field.
+    $field_storage = entity_create('field_storage_config', $this->fieldStorageDefinition);
+    $field_storage->save();
+    $instance = entity_create('field_instance_config', $this->instanceDefinition);
+    $instance->save();
+    $instance_2 = entity_create('field_instance_config', $instance_definition_2);
+    $instance_2->save();
+    $this->container->get('entity.manager')->getStorage('field_instance_config')->delete(array($instance, $instance_2));
+    $this->assertFalse(FieldStorageConfig::loadByName('entity_test', $field_storage->name));
+  }
+
+}
diff --git a/core/modules/field/src/Tests/FormTest.php b/core/modules/field/src/Tests/FormTest.php
index 67c8baa..95764d7 100644
--- a/core/modules/field/src/Tests/FormTest.php
+++ b/core/modules/field/src/Tests/FormTest.php
@@ -257,7 +257,7 @@ function testFieldFormUnlimited() {
     $this->assertFieldByName("{$field_name}[0][value]", '', 'Widget 1 is displayed');
     $this->assertFieldByName("{$field_name}[1][value]", '', 'New widget is displayed');
     $this->assertNoField("{$field_name}[2][value]", 'No extraneous widget is displayed');
-    // TODO : check that non-field inpurs are preserved ('title')...
+    // TODO : check that non-field inputs are preserved ('title'), etc.
 
     // Yet another time so that we can play with more values -> 3 widgets.
     $this->drupalPostForm(NULL, array(), t('Add another item'));
diff --git a/core/modules/filter/src/Tests/FilterUnitTest.php b/core/modules/filter/src/Tests/FilterUnitTest.php
index 50813ea..205dee3 100644
--- a/core/modules/filter/src/Tests/FilterUnitTest.php
+++ b/core/modules/filter/src/Tests/FilterUnitTest.php
@@ -506,7 +506,8 @@ function testUrlFilter() {
       ),
       // Absolute URL protocols.
       // The list to test is found in the beginning of _filter_url() at
-      // $protocols = \Drupal::config('system.filter')->get('protocols')... (approx line 1555).
+      // $protocols = \Drupal::config('system.filter')->get('protocols').
+      // (approx line 1555).
       '
 https://example.com,
 ftp://ftp.example.com,
diff --git a/core/modules/image/image.module b/core/modules/image/image.module
index f1faacb..20d56ad 100644
--- a/core/modules/image/image.module
+++ b/core/modules/image/image.module
@@ -171,7 +171,7 @@ function image_file_download($uri) {
       // Confirm there's at least one module granting access and none denying access.
       if (!empty($headers) && !in_array(-1, $headers)) {
         return array(
-          // Send headers describing the image's size, and MIME-type...
+          // Send headers describing the image's size, and MIME-type.
           'Content-Type' => $image->getMimeType(),
           'Content-Length' => $image->getFileSize(),
           // By not explicitly setting them here, this uses normal Drupal
diff --git a/core/modules/locale/src/StringDatabaseStorage.php b/core/modules/locale/src/StringDatabaseStorage.php
index ea4f12e..6de7ffc 100644
--- a/core/modules/locale/src/StringDatabaseStorage.php
+++ b/core/modules/locale/src/StringDatabaseStorage.php
@@ -431,7 +431,7 @@ protected function dbStringSelect(array $conditions, array $options = array()) {
       }
     }
 
-    // Process other options, string filter, query limit, etc...
+    // Process other options, string filter, query limit, etc.
     if (!empty($options['filters'])) {
       if (count($options['filters']) > 1) {
         $filter = db_or();
diff --git a/core/modules/locale/src/StringInterface.php b/core/modules/locale/src/StringInterface.php
index 046f414..0992c1d 100644
--- a/core/modules/locale/src/StringInterface.php
+++ b/core/modules/locale/src/StringInterface.php
@@ -156,7 +156,7 @@ public function getValues(array $fields);
    *
    * Locations are arbitrary pairs of type and name strings, used to store
    * information about the origins of the string, like the file name it
-   * was found on, the path on which it was discovered, etc...
+   * was found on, the path on which it was discovered, etc.
    *
    * A string can have any number of locations since the same string may be
    * found on different places of Drupal code and configuration.
@@ -179,7 +179,7 @@ public function getLocations($check_only = FALSE);
    * @param string $name
    *   Location name. Drupal path in case of online discovered translations,
    *   file path in case of imported strings, configuration name for strings
-   *   that come from configuration, etc...
+   *   that come from configuration, etc.
    *
    * @return $this
    */
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 11f2092..dd9e593 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -578,7 +578,7 @@ function node_theme_suggestions_node(array $variables) {
  *   An associative array containing:
  *   - elements: An array of elements to display in view mode.
  *   - node: The node object.
- *   - view_mode: View mode; e.g., 'full', 'teaser'...
+ *   - view_mode: View mode; e.g., 'full', 'teaser', etc.
  */
 function template_preprocess_node(&$variables) {
   $variables['view_mode'] = $variables['elements']['#view_mode'];
@@ -854,7 +854,7 @@ function node_get_recent($number = 10) {
  * @param \Drupal\node\NodeInterface $node
  *   A node entity.
  * @param $view_mode
- *   (optional) View mode, e.g., 'full', 'teaser'... Defaults to 'full.'
+ *   (optional) View mode, e.g., 'full', 'teaser', etc. Defaults to 'full.'
  * @param $langcode
  *   (optional) A language code to use for rendering. Defaults to NULL which is
  *   the global content language of the current request.
@@ -872,7 +872,7 @@ function node_view(NodeInterface $node, $view_mode = 'full', $langcode = NULL) {
  * @param $nodes
  *   An array of nodes as returned by node_load_multiple().
  * @param $view_mode
- *   (optional) View mode, e.g., 'full', 'teaser'... Defaults to 'teaser.'
+ *   (optional) View mode, e.g., 'full', 'teaser', etc. Defaults to 'teaser.'
  * @param $langcode
  *   (optional) A language code to use for rendering. Defaults to the global
  *   content language of the current request.
diff --git a/core/modules/simpletest/simpletest.module b/core/modules/simpletest/simpletest.module
index 3768b90..79ec969 100644
--- a/core/modules/simpletest/simpletest.module
+++ b/core/modules/simpletest/simpletest.module
@@ -462,7 +462,7 @@ function simpletest_log_read($test_id, $database_prefix, $test_class) {
  *     $groups['Block'] => array(
  *       'BlockTestCase' => array(
  *         'name' => 'Block functionality',
- *         'description' => 'Add, edit and delete custom block...',
+ *         'description' => 'Add, edit and delete custom block.',
  *         'group' => 'Block',
  *       ),
  *     );
diff --git a/core/modules/system/entity.api.php b/core/modules/system/entity.api.php
index 5974440..befb908 100644
--- a/core/modules/system/entity.api.php
+++ b/core/modules/system/entity.api.php
@@ -1498,7 +1498,7 @@ function hook_entity_build_defaults_alter(array &$build, \Drupal\Core\Entity\Ent
  *   An associative array containing:
  *   - entity_type: The entity type, e.g., 'node' or 'user'.
  *   - bundle: The bundle, e.g., 'page' or 'article'.
- *   - view_mode: The view mode, e.g. 'full', 'teaser'...
+ *   - view_mode: The view mode, e.g. 'full', 'teaser', etc.
  *
  * @ingroup entity_crud
  */
@@ -1607,7 +1607,7 @@ function hook_ENTITY_TYPE_prepare_form(\Drupal\Core\Entity\EntityInterface $enti
  *   An associative array containing:
  *   - entity_type: The entity type, e.g., 'node' or 'user'.
  *   - bundle: The bundle, e.g., 'page' or 'article'.
- *   - form_mode: The form mode, e.g. 'default', 'profile', 'register'...
+ *   - form_mode: The form mode, e.g. 'default', 'profile', 'register', etc.
  *
  * @ingroup entity_crud
  */
diff --git a/core/modules/system/system.api.php b/core/modules/system/system.api.php
index bdbc03f..49ade1e 100644
--- a/core/modules/system/system.api.php
+++ b/core/modules/system/system.api.php
@@ -1856,7 +1856,7 @@ function hook_update_N(&$sandbox) {
   if (!isset($sandbox['progress'])) {
     $sandbox['progress'] = 0;
     $sandbox['current_uid'] = 0;
-    // We'll -1 to disregard the uid 0...
+    // We'll subtract 1 to disregard the uid 0.
     $sandbox['max'] = db_query('SELECT COUNT(DISTINCT uid) FROM {users}')->fetchField() - 1;
   }
 
diff --git a/core/modules/taxonomy/taxonomy.module b/core/modules/taxonomy/taxonomy.module
index 9cc7ba2..4a2dcfb 100644
--- a/core/modules/taxonomy/taxonomy.module
+++ b/core/modules/taxonomy/taxonomy.module
@@ -250,7 +250,7 @@ function taxonomy_check_vocabulary_hierarchy(VocabularyInterface $vocabulary, $c
  * @param \Drupal\taxonomy\Entity\Term $term
  *   A taxonomy term object.
  * @param string $view_mode
- *   View mode, e.g. 'full', 'teaser'...
+ *   View mode, e.g. 'full', 'teaser', etc.
  * @param string $langcode
  *   (optional) A language code to use for rendering. Defaults to the global
  *   content language of the current request.
@@ -268,7 +268,7 @@ function taxonomy_term_view(Term $term, $view_mode = 'full', $langcode = NULL) {
  * @param array $terms
  *   An array of taxonomy terms as returned by Term::loadMultiple().
  * @param string $view_mode
- *   View mode, e.g. 'full', 'teaser'...
+ *   View mode, e.g. 'full', 'teaser', etc.
  * @param string $langcode
  *   (optional) A language code to use for rendering. Defaults to the global
  *   content language of the current request.
diff --git a/core/modules/update/src/Tests/UpdateContribTest.php b/core/modules/update/src/Tests/UpdateContribTest.php
index 118a60e..31e6dab 100644
--- a/core/modules/update/src/Tests/UpdateContribTest.php
+++ b/core/modules/update/src/Tests/UpdateContribTest.php
@@ -341,8 +341,8 @@ function testUpdateBrokenFetchURL() {
     $this->assertNoText(t('Update available'));
 
     // We need to check that this string is found as part of a project row,
-    // not just in the "Failed to get available update data for ..." message
-    // at the top of the page.
+    // not just in the "Failed to get available update data" message at the top
+    // of the page.
     $this->assertRaw('<div class="version-status">' . t('Failed to get available update data'));
 
     // We should see the output messages from fetching manually.
diff --git a/core/modules/update/src/Tests/UpdateCoreTest.php b/core/modules/update/src/Tests/UpdateCoreTest.php
index 969f15c..71a15f4 100644
--- a/core/modules/update/src/Tests/UpdateCoreTest.php
+++ b/core/modules/update/src/Tests/UpdateCoreTest.php
@@ -164,7 +164,7 @@ function testModulePageSecurityUpdate() {
 
     // Make sure duplicate messages don't appear on Update status pages.
     $this->drupalGet('admin/reports/status');
-    // We're expecting "There is a security update..." inside the status report
+    // We're expecting "There is a security update ..." inside the status report
     // itself, but the drupal_set_message() appears as an li so we can prefix
     // with that and search for the raw HTML.
     $this->assertNoRaw('<li>' . t('There is a security update available for your version of Drupal.'));
@@ -181,7 +181,7 @@ function testModulePageSecurityUpdate() {
    */
   function testServiceUnavailable() {
     $this->refreshUpdateStatus(array(), '503-error');
-    // Ensure that no "Warning: SimpleXMLElement..." parse errors are found.
+    // Ensure that no "Warning: SimpleXMLElement ..." parse errors are found.
     $this->assertNoText('SimpleXMLElement');
     $this->assertUniqueText(t('Failed to get available update data for one project.'));
   }
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index c2037de..1093da1 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -990,7 +990,7 @@ function user_view($account, $view_mode = 'full', $langcode = NULL) {
  * @param $accounts
  *   An array of user accounts as returned by user_load_multiple().
  * @param $view_mode
- *   (optional) View mode, e.g., 'full', 'teaser'... Defaults to 'teaser.'
+ *   (optional) View mode, e.g., 'full', 'teaser', etc. Defaults to 'teaser.'
  * @param $langcode
  *   (optional) A language code to use for rendering. Defaults to the global
  *   content language of the current request.
diff --git a/core/modules/views/src/Form/ViewsForm.php b/core/modules/views/src/Form/ViewsForm.php
index c1296b2..3e543c5 100644
--- a/core/modules/views/src/Form/ViewsForm.php
+++ b/core/modules/views/src/Form/ViewsForm.php
@@ -134,7 +134,8 @@ public function buildForm(array $form, FormStateInterface $form_state, ViewExecu
     $query = UrlHelper::filterQueryParameters($query, array(), '');
 
     $form['#action'] = $this->urlGenerator->generateFromPath($view->getUrl(), array('query' => $query));
-    // Tell the preprocessor whether it should hide the header, footer, pager...
+    // Tell the preprocessor whether it should hide the header, footer, pager,
+    // etc.
     $form['show_view_elements'] = array(
       '#type' => 'value',
       '#value' => ($step == 'views_form_views_form') ? TRUE : FALSE,
diff --git a/core/modules/views/src/Plugin/views/query/Sql.php b/core/modules/views/src/Plugin/views/query/Sql.php
index f3796bb..8351b07 100644
--- a/core/modules/views/src/Plugin/views/query/Sql.php
+++ b/core/modules/views/src/Plugin/views/query/Sql.php
@@ -1393,7 +1393,7 @@ function execute(ViewExecutable $view) {
       $count_query = $count_query->countQuery();
 
       // Add additional arguments as a fake condition.
-      // XXX: this doesn't work... because PDO mandates that all bound arguments
+      // XXX: this doesn't work. because PDO mandates that all bound arguments
       // are used on the query. TODO: Find a better way to do this.
       if (!empty($additional_arguments)) {
         // $query->where('1 = 1', $additional_arguments);
diff --git a/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php b/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php
index db300db..1462f38 100644
--- a/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php
+++ b/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php
@@ -269,7 +269,7 @@ protected function leftQuery($options) {
     // Not sure why, but our sort order clause doesn't have a table.
     // TODO: the call to addHandler() above to add the sort handler is probably
     // wrong -- needs attention from someone who understands it.
-    // In the meantime, this works, but with a leap of faith...
+    // In the meantime, this works, but with a leap of faith.
     $orders = &$subquery->getOrderBy();
     foreach ($orders as $order_key => $order) {
       // But if we're using a whole view, we don't know what we have!
diff --git a/core/modules/views/src/Tests/PluginInstanceTest.php b/core/modules/views/src/Tests/PluginInstanceTest.php
index 1893432..189399f 100644
--- a/core/modules/views/src/Tests/PluginInstanceTest.php
+++ b/core/modules/views/src/Tests/PluginInstanceTest.php
@@ -90,7 +90,7 @@ public function testPluginInstances() {
         if ($reflection->isSubclassOf('Drupal\views\Plugin\views\PluginBase')) {
           // Create a plugin instance and check what it is. This is not just
           // good to check they can be created but for throwing any notices for
-          // method signatures etc... too.
+          // method signatures etc. too.
           $instance = $manager->createInstance($id);
           $this->assertTrue($instance instanceof $definition['class'], format_string('Instance of @type:@id created', array('@type' => $type, '@id' => $id)));
         }
diff --git a/core/modules/views/src/Tests/QueryGroupByTest.php b/core/modules/views/src/Tests/QueryGroupByTest.php
index 5958e8d..c30ae55 100644
--- a/core/modules/views/src/Tests/QueryGroupByTest.php
+++ b/core/modules/views/src/Tests/QueryGroupByTest.php
@@ -159,7 +159,7 @@ public function testGroupByMax() {
    */
   public function testGroupByCountOnlyFilters() {
     // Check if GROUP BY and HAVING are included when a view
-    // Doesn't display SUM, COUNT, MAX... functions in SELECT statement
+    // Doesn't display SUM, COUNT, MAX, etc. functions in SELECT statement.
 
     for ($x = 0; $x < 10; $x++) {
       $this->storage->create(array('name' => 'name1'))->save();
diff --git a/core/modules/views_ui/src/Tests/DefaultViewsTest.php b/core/modules/views_ui/src/Tests/DefaultViewsTest.php
index 080d774..a75d41f 100644
--- a/core/modules/views_ui/src/Tests/DefaultViewsTest.php
+++ b/core/modules/views_ui/src/Tests/DefaultViewsTest.php
@@ -183,7 +183,7 @@ public function testPathDestination() {
    * @param $unique_href_part
    *   A unique string that is expected to occur within the href of the desired
    *   link. For example, if the link URL is expected to look like
-   *   "admin/structure/views/view/glossary/...", then "/glossary/" could be
+   *   "admin/structure/views/view/glossary/*", then "/glossary/" could be
    *   passed as the expected unique string.
    *
    * @return
diff --git a/core/modules/views_ui/views_ui.module b/core/modules/views_ui/views_ui.module
index 94b45ea..da3bb05 100644
--- a/core/modules/views_ui/views_ui.module
+++ b/core/modules/views_ui/views_ui.module
@@ -321,7 +321,7 @@ function views_ui_views_analyze(ViewExecutable $view) {
 }
 
 /**
- * Truncate strings to a set length and provide a ... if they truncated.
+ * Truncate strings to a set length and provide a '...' if they truncated.
  *
  * This is often used in the UI to ensure long strings fit.
  */
diff --git a/web.config b/web.config
index b71c37c..5d1cb7e 100644
--- a/web.config
+++ b/web.config
@@ -35,7 +35,7 @@
         </rule>
 
     <!-- To redirect all users to access the site WITH the 'www.' prefix,
-     http://example.com/... will be redirected to http://www.example.com/...)
+     http://example.com/foo will be redirected to http://www.example.com/foo)
      adapt and uncomment the following:   -->
     <!--
         <rule name="Redirect to add www" stopProcessing="true">
@@ -48,7 +48,7 @@
     -->
 
     <!-- To redirect all users to access the site WITHOUT the 'www.' prefix,
-     http://www.example.com/... will be redirected to http://example.com/...)
+     http://www.example.com/foo will be redirected to http://example.com/foo)
      adapt and uncomment the following:   -->
     <!--
         <rule name="Redirect to remove www" stopProcessing="true">
