diff --git a/drupalgap.info.yml b/drupalgap.info.yml
index 31ec732..9c524e3 100644
--- a/drupalgap.info.yml
+++ b/drupalgap.info.yml
@@ -7,5 +7,5 @@ dependencies:
   - node
   - serialization
   - rest
-  - basic_auth
+  - views
 configure: drupalgap.admin_index
diff --git a/drupalgap.js b/drupalgap.js
deleted file mode 100644
index 07806fa..0000000
--- a/drupalgap.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * @file
- * This file contains the JavaScript implementation for the DrupalGap module.
- */
-(function ($) {
-  Drupal.behaviors.drupalgap = {
-    attach: function (context, settings) {
-      try {
-        var drupalgap_documentation_link = '<a href="http://drupal.org/node/2015065" target="_blank">View DrupalGap Troubleshooting Topics</a>';
-        $('#drupalgap-system-connect-status-message').html("<img src='" + Drupal.settings.basePath  + "misc/throbber.gif' />");
-        // Obtain session token.
-        var token_url = "?q=services/session/token"
-        $.ajax({
-          url:token_url,
-          type:"get",
-          dataType:"text",
-          error:function (jqXHR, textStatus, errorThrown) {
-            if (!errorThrown) {
-              errorThrown = Drupal.t('Token retrieval failed!');
-            }
-            var html = '<div class="messages error">' + errorThrown + '</div>';
-                html += '<div class="messages warning">' + drupalgap_documentation_link + '</div>';
-                $('#drupalgap-system-connect-status-message').html(html);
-          },
-          success: function (token) {
-            // Call system connect with session token.
-            $.ajax({
-              url: Drupal.settings.drupalgap.services_endpoint_default + 'system/connect.json',
-              type: "post",
-              dataType: "json",
-              beforeSend: function (request) {
-                request.setRequestHeader("X-CSRF-Token", token);
-              },
-              error: function (jqXHR, textStatus, errorThrown) {
-                if (!errorThrown) {
-                  errorThrown = Drupal.t('System connect failed!');
-                }
-                var html = '<div class="messages error">' + errorThrown + '</div>';
-                html += '<div class="messages warning">' + + '</div>';
-                $('#drupalgap-system-connect-status-message').html(html);
-              },
-              success: function (data) {
-                msg = Drupal.t("The system connect test was successful, <strong>DrupalGap is configured properly!</strong>");
-                $('#drupalgap-system-connect-status-message').html("<div class='messages status'>" + msg + "</div>");
-              }
-            });
-          }
-        });
-      }
-      catch (error) {
-        alert(Drupal.t(error));
-      }
-    }
-  };
-}(jQuery));
-
diff --git a/drupalgap.libraries.yml b/drupalgap.libraries.yml
new file mode 100644
index 0000000..6c33824
--- /dev/null
+++ b/drupalgap.libraries.yml
@@ -0,0 +1,4 @@
+drupalgap.config:
+  version: VERSION
+  js:
+    js/drupalgap.js: {}
diff --git a/drupalgap.links.menu.yml b/drupalgap.links.menu.yml
new file mode 100644
index 0000000..40e7e28
--- /dev/null
+++ b/drupalgap.links.menu.yml
@@ -0,0 +1,5 @@
+drupalgap.admin:
+  title: 'Drupalgap'
+  description: 'Manage Drupalgap configuration.'
+  parent: system.admin_config_services
+  route_name: drupalgap.drupalgap_config
diff --git a/drupalgap.module b/drupalgap.module
index 536ad99..ee3a132 100644
--- a/drupalgap.module
+++ b/drupalgap.module
@@ -8,6 +8,12 @@ function drupalgap_menu() {
     'description' => 'The DrupalGap config page.',
     'route_name' => 'drupalgap.drupalgap_config',
   );
+
+  $items['drupalgap/system/connect'] = array(
+    'title' => 'System Connect',
+    'description' => 'DrupalGap System Connect.',
+    'route_name' => 'drupalgap.drupalgap_system_connect',
+  );
+
   return $items;
 }
-?>
diff --git a/drupalgap.routing.yml b/drupalgap.routing.yml
index 78c06d7..577aff6 100644
--- a/drupalgap.routing.yml
+++ b/drupalgap.routing.yml
@@ -1,6 +1,14 @@
 drupalgap.drupalgap_config:
   path: '/admin/config/drupalgap'
   defaults:
-    _content: '\Drupal\drupalgap\Controller\DrupalGapController::drupalgapConfig'
+    _controller: '\Drupal\drupalgap\Controller\DrupalGapController::drupalgapConfig'
   requirements:
     _permission: 'administer drupalgap'
+
+drupalgap.drupalgap_system_connect:
+  path: '/drupalgap/system/connect'
+  defaults:
+    _controller: '\Drupal\drupalgap\Controller\DrupalGapController::systemConnect'
+  requirements:
+    _format: json
+    _access: 'TRUE'
\ No newline at end of file
diff --git a/js/drupalgap.js b/js/drupalgap.js
new file mode 100644
index 0000000..4ed74b2
--- /dev/null
+++ b/js/drupalgap.js
@@ -0,0 +1,55 @@
+/**
+ * @file
+ * This file contains the JavaScript implementation for the DrupalGap module.
+ */
+(function ($) {
+  Drupal.behaviors.drupalgap = {
+    attach: function (context, settings) {
+      try {
+        var drupalgap_documentation_link = '<a href="http://drupal.org/node/2015065" target="_blank">View DrupalGap Troubleshooting Topics</a>';
+        $('#drupalgap-system-connect-status-message').html("<img src='" + drupalSettings.basePath  + "misc/throbber.gif' />");
+        // Obtain session token.
+        var token_url = "/rest/session/token";
+        $.ajax({
+          url:window.location.origin + token_url,
+          type:"get",
+          dataType:"text",
+          error:function (jqXHR, textStatus, errorThrown) {
+            if (!errorThrown) {
+              errorThrown = Drupal.t('Token retrieval failed!');
+            }
+            var html = '<div class="messages error">' + errorThrown + '</div>';
+                html += '<div class="messages warning">' + drupalgap_documentation_link + '</div>';
+                $('#drupalgap-system-connect-status-message').html(html);
+          },
+          success: function (token) {
+            // Call system connect with session token.
+            $.ajax({
+              url: window.location.origin + '/drupalgap/system/connect',
+              type: "post",
+              dataType: "json",
+              beforeSend: function (request) {
+                request.setRequestHeader("X-CSRF-Token", token);
+              },
+              error: function (jqXHR, textStatus, errorThrown) {
+                if (!errorThrown) {
+                  errorThrown = Drupal.t('System connect failed!');
+                }
+                var html = '<div class="messages error">' + errorThrown + '</div>';
+                html += '<div class="messages warning">' + + '</div>';
+                $('#drupalgap-system-connect-status-message').html(html);
+              },
+              success: function (data) {
+                msg = Drupal.t("The system connect test was successful, <strong>DrupalGap is configured properly!</strong>");
+                $('#drupalgap-system-connect-status-message').html("<div class='messages status'>" + msg + "</div>");
+              }
+            });
+          }
+        });
+      }
+      catch (error) {
+        alert(Drupal.t(error));
+      }
+    }
+  };
+}(jQuery));
diff --git a/lib/Drupal/drupalgap/Controller/DrupalGapController.php b/lib/Drupal/drupalgap/Controller/DrupalGapController.php
deleted file mode 100644
index 4f57cc8..0000000
--- a/lib/Drupal/drupalgap/Controller/DrupalGapController.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
-* @file
-* Contains \Drupal\drupalgap\Controller\DrupalGapController.
-*/
-
-namespace Drupal\drupalgap\Controller;
-
-use
-Drupal\Core\Controller\ControllerBase;
-
-/**
-* Controller routines for drupalgap module routes.
-*/
-class DrupalGapController extends ControllerBase {
-
- 
-/**
-   * Return the 'DrupalGap World' page.
-   *
-   * @return string
-   *   A render array containing our 'DrupalGap World' page content.
-   */
-  public function drupalgapConfig() {
-    $output = array();
-
-    $output['drupalgap'] = array(
-      '#markup' => 'DrupalGap Hello World COnfig!',
-    );
-
-    return $output;
-  }
-
-}
-?>
diff --git a/src/Controller/DrupalGapController.php b/src/Controller/DrupalGapController.php
new file mode 100644
index 0000000..a5ab0dc
--- /dev/null
+++ b/src/Controller/DrupalGapController.php
@@ -0,0 +1,146 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\drupalgap\Controller\DrupalGapController.
+ */
+
+namespace Drupal\drupalgap\Controller;
+
+use Drupal\Core\Controller\ControllerBase;
+
+
+/**
+ * Returns responses for DrupalGap module routes.
+ */
+class DrupalGapController extends ControllerBase {
+
+  /**
+   * Return the DrupalGap configuration page.
+   *
+   * @return string
+   *   A render array containing our DrupalGap configuration page content.
+   */
+  public function drupalgapConfig() {
+    $output = array();
+
+    $output['drupalgap'] = array(
+      '#attached' => array(
+        'library' => array('drupalgap/drupalgap.config')
+      ),
+      // Render the Status connection and some help docs.
+     '#markup' => \Drupal::service('renderer')->render($this->drupalStatus()),
+    );
+
+    return $output;
+  }
+
+  /**
+   * Checks the current status and add help link.
+   *
+   * @return array
+   *   An array to be rendered with the id for the div where we will check the status and an information link.
+   */
+  public function drupalStatus() {
+    // Set div id for system connect status message box.
+    $div_id = 'drupalgap-system-connect-status-message';
+
+    // Build more info text and help link string.
+    $msg = t('Please refer to the <a href="@help_page">DrupalGap Module Help Page</a> for more information.', array('@help_page' => 'admin/help/drupalgap'));
+
+    // Create output fieldsets.
+    $output = array(
+      'drupalgap_system_connect_status' => array(
+        '#theme' => 'fieldset',
+        '#title' => t('System Connect Status'),
+        '#description' => '<div id="' . $div_id . '">&nbsp;</div>',
+      ),
+      'drupalgap_information' => array(
+        '#theme' => 'fieldset',
+        '#title' => t('More Information'),
+        '#description' => "<p>$msg</p>"
+      ),
+    );
+
+    return $output;
+  }
+
+  /**
+   *
+   *
+   */
+  public function systemConnect() {
+
+    $results = array();
+    // Make calls to various DrupalGap resources.
+    $results['site_settings'] = $this->drupalgapResourceSystemSiteSettings();
+    $results['remote_addr'] = $_SERVER['REMOTE_ADDR'];
+    $results['user'] = $this->userSystemResources();
+    $results['user_permissions'] = user_role_permissions(\Drupal::currentUser()->getRoles());
+
+    return json_encode($results);
+  }
+
+
+  /**
+   * Obtain current user data. This is basically copied from D7 Services module.
+   * For more info take a look at _system_resource_connect() function (Services).
+   */
+  public function userSystemResources() {
+    // Currently logged in user.
+    $output = new \stdClass();
+    $output->sessid = \Drupal::currentUser()->getSessionId();
+    $output->user_name = \Drupal::currentUser()->getSessionData();
+    $output->uid = \Drupal::currentUser()->getAccount()->id();
+    $output->roles = (object) \Drupal::currentUser()->getRoles();
+
+
+    return $output;
+  }
+
+
+  /**
+   * Returns a collection of variables from the current Drupal site.
+   *
+   * @return array
+   *   Array of variables from the configuration.
+   */
+  public function drupalgapResourceSystemSiteSettings() {
+
+    // Config names.
+    $names = array(
+      // @TODO for the moment only working for 'user_register'
+      /*'admin_theme',
+      'clean_url',
+      'date_default_timezone',
+      'site_name',
+      'theme_default',
+      'user_pictures',
+      'user_email_verification',*/
+      'user.settings' => array('register'),
+    );
+
+    // Invoke hook_drupalgap_site_settings() to let others specify variable names
+    // to use.
+    if (sizeof(\Drupal::moduleHandler()->getImplementations('drupalgap_site_settings')) > 0) {
+      \Drupal::moduleHandler()->invokeAll('drupalgap_site_settings', $names);
+    }
+
+    // Now fetch the values.
+    $settings = new \stdClass();
+    foreach($names as $settingKeys => $settingKey) {
+      foreach($settingKey as $name) {
+        $value = \Drupal::config($settingKeys)->get($name);
+        $settings->variable = new \stdClass();
+        $settings->variable->$name = $value;
+      }
+    }
+
+    // Add Drupal core version into settings.
+    $settings->variable->drupal_core = "8";
+
+    return $settings->variable;
+
+  }
+
+}
