diff --git a/.editorconfig b/.editorconfig
index 79207a40cb9326b8c6b8c958fa864b5345f94e68..0fcdf7fd4fc5705384ea40f93be21e0fc85ac557 100755
--- a/.editorconfig
+++ b/.editorconfig
@@ -17,6 +17,3 @@ indent_size = 4
 [{.jshintrc,*.json,*.yml}]
 indent_style = space
 indent_size = 2
-
-[{*.txt,wp-config-sample.php}]
-end_of_line = crlf
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 40c53b76bbfcdb3b614b4ff21a13d2a52de56d50..a4d480111b33701c1f5cd7785d3f506e883a7b21 100755
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,6 +2,7 @@ variables:
   # Configure mysql service (https://hub.docker.com/_/mysql/)
   MYSQL_DATABASE: wordpress_tests
   MYSQL_ROOT_PASSWORD: mysql
+  WP_VERSION: latest
 
 cache:
   paths:
@@ -10,7 +11,7 @@ cache:
 
 before_script:
   # Set up WordPress tests
-  - bash bin/install-wp-tests.sh $MYSQL_DATABASE root $MYSQL_ROOT_PASSWORD mysql latest true
+  - bash bin/install-wp-tests.sh $MYSQL_DATABASE root $MYSQL_ROOT_PASSWORD mysql $WP_VERSION true
 
   # PHPUnit
   - |
@@ -20,10 +21,43 @@ before_script:
       composer global require "phpunit/phpunit=4.8.*"
     fi
 
-  # Install PHPCS and WPCS
-  - composer global require automattic/vipwpcs
-  - composer global require phpcompatibility/phpcompatibility-wp
-  - phpcs --config-set installed_paths $HOME/.composer/vendor/wp-coding-standards/wpcs,$HOME/.composer/vendor/automattic/vipwpcs,$HOME/.composer/vendor/phpcompatibility/php-compatibility,$HOME/.composer/vendor/phpcompatibility/phpcompatibility-paragonie,$HOME/.composer/vendor/phpcompatibility/phpcompatibility-wp
+PHPunit:PHP5.3:MySQL:
+  stage: test
+  variables:
+    WP_VERSION: 5.1.1
+  image: containers.ethitter.com:443/docker/images/php:5.3
+  services:
+    - mysql:5.6
+  script:
+    - find . -type "f" -iname "*.php" | xargs -L "1" php -l
+    - phpunit
+
+PHPunit:PHP5.6:MySQL:
+  stage: test
+  image: containers.ethitter.com:443/docker/images/php:5.6
+  services:
+    - mysql:5.6
+  script:
+    - find . -type "f" -iname "*.php" | xargs -L "1" php -l
+    - phpunit
+
+PHPunit:PHP7.0:MySQL:
+  stage: test
+  image: containers.ethitter.com:443/docker/images/php:7.0
+  services:
+    - mysql:5.6
+  script:
+    - find . -type "f" -iname "*.php" | xargs -L "1" php -l
+    - phpunit
+
+PHPunit:PHP7.1:MySQL:
+  stage: test
+  image: containers.ethitter.com:443/docker/images/php:7.1
+  services:
+    - mysql:5.6
+  script:
+    - find . -type "f" -iname "*.php" | xargs -L "1" php -l
+    - phpunit
 
 PHPunit:PHP7.2:MySQL:
   stage: test
@@ -32,9 +66,7 @@ PHPunit:PHP7.2:MySQL:
     - mysql:5.6
   script:
     - find . -type "f" -iname "*.php" | xargs -L "1" php -l
-    - phpcs -n
     - phpunit
-  allow_failure: true
 
 PHPunit:PHP7.3:MySQL:
   stage: test
@@ -43,13 +75,21 @@ PHPunit:PHP7.3:MySQL:
     - mysql:5.6
   script:
     - find . -type "f" -iname "*.php" | xargs -L "1" php -l
-    - phpcs -n
     - phpunit
-  allow_failure: true
+
+PHPCS:
+  stage: test
+  image: containers.ethitter.com:443/docker/images/php:7.3
+  before_script:
+    - composer global require automattic/vipwpcs
+    - composer global require phpcompatibility/phpcompatibility-wp
+    - phpcs --config-set installed_paths $HOME/.composer/vendor/wp-coding-standards/wpcs,$HOME/.composer/vendor/automattic/vipwpcs,$HOME/.composer/vendor/phpcompatibility/php-compatibility,$HOME/.composer/vendor/phpcompatibility/phpcompatibility-paragonie,$HOME/.composer/vendor/phpcompatibility/phpcompatibility-wp
+  script:
+    - phpcs -n
 
 PluginSVN:
   stage: deploy
-  image: containers.ethitter.com:443/docker/images/php:7.3
+  image: containers.ethitter.com:443/docker/wp-org-plugin-deploy:latest
   before_script:
     - curl -o ./bin/deploy.sh https://git-cdn.e15r.co/open-source/wp-org-plugin-deploy/raw/master/scripts/deploy.sh
     - chmod +x ./bin/deploy.sh
diff --git a/eth-redirect-to-latest.php b/eth-redirect-to-latest.php
new file mode 100644
index 0000000000000000000000000000000000000000..de40f97797bf28b5ac693a68b4b78635884c4c21
--- /dev/null
+++ b/eth-redirect-to-latest.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Load plugin.
+ *
+ * @package ETH_Redirect_To_Latest_Post.
+ */
+
+/**
+ * Plugin Name: ETH Redirect to Latest Post
+ * Plugin URI: https://ethitter.com/plugins/
+ * Description: Redirect a chosen slug to the whatever is currently the latest post
+ * Author: Erick Hitter
+ * Version: 0.2.2
+ * Author URI: https://ethitter.com/
+ * Text Domain: eth_redirect_to_latest_post
+ * Domain Path: /languages/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+require_once __DIR__ . '/inc/class-eth-redirect-to-latest.php';
diff --git a/inc/class-eth-redirect-to-latest.php b/inc/class-eth-redirect-to-latest.php
index b232576cb2c94e11c865a774b6ec0ecadfa56d54..dbbc2814c38f553053a6e8c9835b9cb42dd98931 100644
--- a/inc/class-eth-redirect-to-latest.php
+++ b/inc/class-eth-redirect-to-latest.php
@@ -1,29 +1,13 @@
 <?php
-/*
-Plugin Name: ETH Redirect to Latest Post
-Plugin URI: https://ethitter.com/plugins/
-Description: Redirect a chosen slug to the whatever is currently the latest post
-Author: Erick Hitter
-Version: 0.2.2
-Author URI: https://ethitter.com/
-Text Domain: eth_redirect_to_latest_post
-Domain Path: /languages/
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-*/
+/**
+ * Plugin functionality.
+ *
+ * @package ETH_Redirect_To_Latest_Post
+ */
 
+/**
+ * Class ETH_Redirect_To_Latest_Post.
+ */
 class ETH_Redirect_To_Latest_Post {
 	/**
 	 * PLUGIN SETUP