diff --git a/.travis.yml b/.travis.yml
index 879eac1ea82ba28329cda640fea91a151a6fd059..f112d468073f8b751ab769228e412ce809ae0f72 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -29,6 +29,7 @@ before_script:
   - mysql -e 'CREATE USER "travis'@'localhost";'
   - mysql -e 'GRANT ALL PRIVILEGES ON * . * TO "travis'@'localhost";'
   - mysql -e 'FLUSH PRIVILEGES;'
+  - cp .env.testing-ci .env
   - composer self-update
   - composer install -n --prefer-source
   - chmod -R 777 storage
diff --git a/app/Console/Commands/LdapSync.php b/app/Console/Commands/LdapSync.php
index 46f1cd5bcf6cd5b59686e653ebe8d80a64a6cfa4..dac303251364ca184bb2c8f3b2748a500074cfb1 100755
--- a/app/Console/Commands/LdapSync.php
+++ b/app/Console/Commands/LdapSync.php
@@ -4,10 +4,9 @@ declare(strict_types=1);
 
 namespace App\Console\Commands;
 
-use Log;
+use App\Services\LdapAd;
+use Illuminate\Support\Facades\Log;
 use Exception;
-use App\Models\User;
-use App\Models\LdapAd;
 use App\Models\Location;
 use Illuminate\Console\Command;
 use Adldap\Models\User as AdldapUser;
@@ -48,13 +47,6 @@ class LdapSync extends Command
      */
     private $ldap;
 
-    /**
-     * LDAP settings collection.
-     *
-     * @var \Illuminate\Support\Collection
-     */
-    private $settings = null;
-
     /**
      * A default location collection.
      *
@@ -92,13 +84,16 @@ class LdapSync extends Command
 
     /**
      * Create a new command instance.
+     *
+     * @param LdapAd $ldap
      */
     public function __construct(LdapAd $ldap)
     {
+
         parent::__construct();
-        $this->ldap     = $ldap;
-        $this->settings = $this->ldap->ldapSettings;
         $this->summary  = collect();
+
+        $this->ldap = $ldap;
     }
 
     /**
@@ -333,7 +328,7 @@ class LdapSync extends Command
      */
     private function checkIfLdapIsEnabled(): void
     {
-        if (false === $this->settings['ldap_enabled']) {
+        if (!$this->ldap->init()) {
             $msg = 'LDAP intergration is not enabled. Exiting sync process.';
             $this->info($msg);
             Log::info($msg);
diff --git a/app/Http/Controllers/Api/SettingsController.php b/app/Http/Controllers/Api/SettingsController.php
index bbc819901165bdeb088785b6578192fa7e736f4e..b08cb064127b91f2e17714b5001c24132277e4f9 100644
--- a/app/Http/Controllers/Api/SettingsController.php
+++ b/app/Http/Controllers/Api/SettingsController.php
@@ -2,12 +2,9 @@
 
 namespace App\Http\Controllers\Api;
 
-use DB;
-use Mail;
-use Validator;
-use Notification;
-use App\Models\Ldap;
-use App\Models\LdapAd;
+use App\Services\LdapAd;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Notification;
 use App\Models\Setting;
 use Illuminate\Http\Request;
 use App\Notifications\MailTest;
@@ -32,8 +29,8 @@ class SettingsController extends Controller
      * @return \Illuminate\Http\JsonResponse
      */
     public function ldapAdSettingsTest(LdapAd $ldap): JsonResponse
-    {   
-        if($ldap->ldapSettings['ldap_enabled'] === false) {
+    {
+        if(!$ldap->init()) {
             Log::info('LDAP is not enabled cannot test.');
             return response()->json(['message' => 'LDAP is not enabled, cannot test.'], 400);
         }
diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
index 503cf8ac4863809a9444b5014645784614ece5ba..03d829bfb4d0105557aa850687b8e99ab3cc6928 100644
--- a/app/Http/Controllers/Auth/LoginController.php
+++ b/app/Http/Controllers/Auth/LoginController.php
@@ -2,21 +2,19 @@
 
 namespace App\Http\Controllers\Auth;
 
-use Validator;
+use App\Services\LdapAd;
+use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\Session;
+use Illuminate\Support\Facades\Validator;
 use App\Http\Controllers\Controller;
 use Illuminate\Foundation\Auth\ThrottlesLogins;
 use App\Models\Setting;
-use App\Models\Ldap;
 use App\Models\User;
-use Auth;
-use Config;
+use Illuminate\Support\Facades\Auth;
 use Illuminate\Http\Request;
-use Input;
+use Illuminate\Support\Facades\Input;
 use Redirect;
-use Log;
-use View;
-use PragmaRX\Google2FA\Google2FA;
-use App\Models\LdapAd;
+use Illuminate\Support\Facades\Log;
 
 /**
  * This controller handles authentication for the user, including local
@@ -41,23 +39,23 @@ class LoginController extends Controller
     protected $redirectTo = '/';
 
     /**
-     * An LdapAd instance
-     *
-     * @var \App\Models\LdapAd
+     * @var LdapAd
      */
-    protected $ldapAd;
+    protected $ldap;
 
     /**
      * Create a new authentication controller instance.
      *
+     * @param LdapAd $ldap
+     *
      * @return void
      */
-    public function __construct(LdapAd $ldapAd)
+    public function __construct(LdapAd $ldap)
     {
+        parent::__construct();
         $this->middleware('guest', ['except' => ['logout','postTwoFactorAuth','getTwoFactorAuth','getTwoFactorEnroll']]);
-        \Session::put('backUrl', \URL::previous());
-
-        $this->ldapAd = $ldapAd;
+        Session::put('backUrl', \URL::previous());
+        $this->ldap = $ldap;
     }
 
     function showLoginForm(Request $request)
@@ -85,12 +83,12 @@ class LoginController extends Controller
      * 
      * @return User
      * 
-     * @throws Exception
+     * @throws \Exception
      */
     private function loginViaLdap(Request $request): User
     {
         try {
-            return $this->ldapAd->ldapLogin($request->input('username'), $request->input('password'));
+            return $this->ldap->ldapLogin($request->input('username'), $request->input('password'));
         } catch (\Exception $ex) {
             LOG::debug("LDAP user login: " . $ex->getMessage());
             throw new \Exception($ex->getMessage());
@@ -146,7 +144,7 @@ class LoginController extends Controller
         $user = null;
 
         // Should we even check for LDAP users?
-        if (Setting::getSettings()->ldap_enabled=='1') {
+        if ($this->ldap->init()) {
             LOG::debug("LDAP is enabled.");
             try {
                 LOG::debug("Attempting to log user in by LDAP authentication.");
@@ -179,8 +177,8 @@ class LoginController extends Controller
         }
 
         if ($user = Auth::user()) {
-            $user->last_login = \Carbon::now();
-            \Log::debug('Last login:'.$user->last_login);
+            $user->last_login = Carbon::now();
+            Log::debug('Last login:'.$user->last_login);
             $user->save();
         }
         // Redirect to the users page
@@ -233,6 +231,8 @@ class LoginController extends Controller
     /**
      * Two factor code submission
      *
+     * @param Request $request
+     *
      * @return Redirect
      */
     public function postTwoFactorAuth(Request $request)
@@ -263,6 +263,8 @@ class LoginController extends Controller
     /**
      * Logout page.
      *
+     * @param Request $request
+     *
      * @return Redirect
      */
     public function logout(Request $request)
@@ -327,7 +329,7 @@ class LoginController extends Controller
     * Override the lockout time and duration
     *
     * @param  \Illuminate\Http\Request  $request
-    * @return \Illuminate\Http\RedirectResponse
+    * @return  bool
     */
     protected function hasTooManyLoginAttempts(Request $request)
     {
diff --git a/app/Http/Controllers/Users/LDAPImportController.php b/app/Http/Controllers/Users/LDAPImportController.php
index 5627adb7eb306f6abdc04fc0b98553c5738289cb..006046ab98fe5fdf2ca804e53571de8e78b06b9c 100644
--- a/app/Http/Controllers/Users/LDAPImportController.php
+++ b/app/Http/Controllers/Users/LDAPImportController.php
@@ -3,10 +3,10 @@
 namespace App\Http\Controllers\Users;
 
 use App\Models\Ldap;
+use App\Services\LdapAd;
 use Illuminate\Http\Request;
 use App\Http\Controllers\Controller;
 use Illuminate\Support\Facades\Artisan;
-use App\Models\LdapAd;
 
 class LDAPImportController extends Controller
 {
@@ -24,6 +24,7 @@ class LDAPImportController extends Controller
      */
     public function __construct(LdapAd $ldap)
     {
+        parent::__construct();
         $this->ldap = $ldap;
     }
 
diff --git a/app/Http/Controllers/ViewAssetsController.php b/app/Http/Controllers/ViewAssetsController.php
index 8022815bad1651ca4a19f87db3af9da2b7e0cd07..03aa03bbee9baf1548bca53fb403df8034e1da28 100755
--- a/app/Http/Controllers/ViewAssetsController.php
+++ b/app/Http/Controllers/ViewAssetsController.php
@@ -63,7 +63,7 @@ class ViewAssetsController extends Controller
         $assets = Asset::with('model', 'defaultLoc', 'location', 'assignedTo', 'requests')->Hardware()->RequestableAssets()->get();
         $models = AssetModel::with('category', 'requests', 'assets')->RequestableModels()->get();
 
-        return view('account/requestable-assets', compact('user', 'assets', 'models'));
+        return view('account/requestable-assets', compact('assets', 'models'));
     }
 
 
diff --git a/app/Providers/LdapServiceProvider.php b/app/Providers/LdapServiceProvider.php
new file mode 100644
index 0000000000000000000000000000000000000000..fc1354a468154bffb14a3d6716a9f121760d5098
--- /dev/null
+++ b/app/Providers/LdapServiceProvider.php
@@ -0,0 +1,29 @@
+<?php namespace App\Providers;
+
+use App\Services\LdapAd;
+use Illuminate\Support\ServiceProvider;
+
+class LdapServiceProvider extends ServiceProvider
+{
+
+    /**
+     * Bootstrap the application services.
+     *
+     * @return void
+     */
+    public function boot()
+    {
+        $this->app->singleton(LdapAd::class, LdapAd::class);
+    }
+
+
+    /**
+     * Register any application services.
+     *
+     * @return void
+     */
+    public function register()
+    {
+
+    }
+}
diff --git a/app/Models/LdapAd.php b/app/Services/LdapAd.php
similarity index 96%
rename from app/Models/LdapAd.php
rename to app/Services/LdapAd.php
index e3777374f558e46f5907242c25b7044a66875529..d5df03fdb2e97945d42ac8719de4b59dace99fee 100644
--- a/app/Models/LdapAd.php
+++ b/app/Services/LdapAd.php
@@ -2,11 +2,11 @@
 
 declare(strict_types=1);
 
-namespace App\Models;
+namespace App\Services;
 
+use App\Models\User;
 use Exception;
 use Adldap\Adldap;
-use App\Traits\UserTrait;
 use Adldap\Query\Paginator;
 use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Log;
@@ -22,8 +22,6 @@ use Adldap\Models\ModelNotFoundException;
  */
 class LdapAd extends LdapAdConfiguration
 {
-    use UserTrait;
-
     /**
      * @see https://wdmsb.wordpress.com/2014/12/03/descriptions-of-active-directory-useraccountcontrol-value/
      */
@@ -49,18 +47,29 @@ class LdapAd extends LdapAdConfiguration
     protected $ldap;
 
     /**
-     * __construct.
+     * Initialize LDAP from user settings
+     *
+     * @since 5.0.0
+     *
+     * @return bool
      */
-    public function __construct()
+    public function init() : bool
     {
+        // Already initialized
+        if($this->ldap) {
+            return true;
+        }
+
+        parent::init();
         if($this->isLdapEnabled()) {
-            parent::__construct();
             $this->ldap = new Adldap();
             $this->ldap->addProvider($this->ldapConfig);
+            return true;
         }
+        return false;
     }
 
-    /**
+        /**
      * Create a user if they successfully login to the LDAP server.
      *
      * @author Wes Hulette <jwhulette@gmail.com>
@@ -250,7 +259,7 @@ class LdapAd extends LdapAdConfiguration
      *
      * @since 5.0.0
      *
-     * @param Adldap\Models\User $user
+     * @param \Adldap\Models\User $user
      * @param Collection|null    $defaultLocation
      * @param Collection|null    $mappedLocations
      *
diff --git a/app/Models/LdapAdConfiguration.php b/app/Services/LdapAdConfiguration.php
similarity index 96%
rename from app/Models/LdapAdConfiguration.php
rename to app/Services/LdapAdConfiguration.php
index ffb4c2f44ef1f12af50983290787a4767cc4fbba..e6267a97dbf02ebff6810767e3ca5b94d3df0f93 100644
--- a/app/Models/LdapAdConfiguration.php
+++ b/app/Services/LdapAdConfiguration.php
@@ -2,8 +2,9 @@
 
 declare(strict_types=1);
 
-namespace App\Models;
+namespace App\Services;
 
+use App\Models\Setting;
 use Exception;
 use Illuminate\Support\Collection;
 
@@ -38,10 +39,11 @@ class LdapAdConfiguration
     public $ldapConfig;
 
     /**
-     * __construct.
+     * Initialize LDAP from user settings
+     *
+     * @since 5.0.0
      */
-    public function __construct()
-    {
+    public function init() {
         $this->ldapSettings = $this->getSnipeItLdapSettings();
         if ($this->isLdapEnabled()) {
             $this->setSnipeItConfig();
@@ -92,7 +94,7 @@ class LdapAdConfiguration
                     }
                 }
 
-                if (($item) && ('ldap_server' === $key)) {
+                if ($item && 'ldap_server' === $key) {
                     return collect(parse_url($item));
                 }
 
@@ -246,7 +248,7 @@ class LdapAdConfiguration
      *
      * @return bool
      */
-    protected function isLdapEnabled(): bool
+    public function isLdapEnabled(): bool
     {
         return $this->ldapSettings && $this->ldapSettings->get('ldap_enabled');
     }
diff --git a/config/app.php b/config/app.php
index 3967fa0024a310325df202e7fbef1e46ab44c36c..fd44818037039a0209538c1edeafe6f71d6b3db3 100755
--- a/config/app.php
+++ b/config/app.php
@@ -277,6 +277,7 @@ return [
         * Custom service provider
         */
         App\Providers\MacroServiceProvider::class,
+        App\Providers\LdapServiceProvider::class,
 
 
     ],
diff --git a/public/css/blue.png b/public/css/blue.png
new file mode 100755
index 0000000000000000000000000000000000000000..a3e040fcce00622a17085d447f1a18c68989357e
Binary files /dev/null and b/public/css/blue.png differ
diff --git a/webpack.mix.js b/webpack.mix.js
index c05ee67e133b1f9e658ab10739ac42986f8f8d13..6d7d0aad2b0ef08c6aa20d3d35319e1f6a5ae14f 100644
--- a/webpack.mix.js
+++ b/webpack.mix.js
@@ -29,6 +29,9 @@ mix
     "./public/css/all.css"
   );
 
+mix.copy(["./node_modules/icheck/skins/minimal/blue.png",
+          "./node_modules/icheck/skins/minimal/blue@2x.png"], "./public/css");
+
 /**
  * Copy, minify and version skins
  */