diff --git a/skyquake/framework/core/api_utils/utils.js b/skyquake/framework/core/api_utils/utils.js
index bd99fe1..163769a 100644
--- a/skyquake/framework/core/api_utils/utils.js
+++ b/skyquake/framework/core/api_utils/utils.js
@@ -1,5 +1,5 @@
 /*
- *
+ * 
  *   Copyright 2016 RIFT.IO Inc
  *
  *   Licensed under the Apache License, Version 2.0 (the "License");
@@ -217,34 +217,6 @@
 	});
 }
 
-
-var testAuthentication = function(app) {
-    app.get('/check-auth', function(req, res) {
-        console.log('testing auth')
-        var api_server = req.query["api_server"];
-        var uri = confdPort(api_server) + '/api/config/';
-                new Promise(function(resolve, reject) {
-            request({
-                uri: uri,
-                method: 'GET',
-                headers: _.extend({}, CONSTANTS.HTTP_HEADERS.accept[type], {
-                    'Authorization': req.get('Authorization'),
-                    forever: CONSTANTS.FOREVER_ON,
-                    rejectUnauthorized: false,
-                })
-            }, function(error, response, body) {
-                if (validateResponse('Passthrough: ' + url, error, response, body, resolve, reject)) {
-                    resolve(JSON.parse(response.body))
-                };
-            });
-        }).then(function(data) {
-            res.send(data);
-        }, function(error) {
-			res.send({'error': error, uri: uri})
-        });;
-    })
-}
-
 module.exports = {
 	/**
 	 * Ensure confd port is on api_server variable.
@@ -261,7 +233,5 @@
 
 	sendSuccessResponse: sendSuccessResponse,
 
-    passThroughConstructor: passThroughConstructor,
-
-    testAuthentication: testAuthentication
+	passThroughConstructor: passThroughConstructor
 };
diff --git a/skyquake/framework/core/modules/routes/configuration.js b/skyquake/framework/core/modules/routes/configuration.js
index b789ff0..3a686f0 100644
--- a/skyquake/framework/core/modules/routes/configuration.js
+++ b/skyquake/framework/core/modules/routes/configuration.js
@@ -1,6 +1,6 @@
 
 /*
- *
+ * 
  *   Copyright 2016 RIFT.IO Inc
  *
  *   Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,7 +18,7 @@
  */
 
 /**
- * Node configuration routes module.
+ * Node configuration routes module. 
  * Provides a RESTful API to provide configuration
  * details such as api_server.
  * @module framework/core/modules/routes/configuration
@@ -30,9 +30,6 @@
 var configurationAPI = require('../api/configuration');
 var Router = require('express').Router();
 var utils = require('../../api_utils/utils');
-var CONSTANTS = require('../../api_utils/constants.js');
-var request = require('request');
-var _ = require('lodash');
 
 Router.use(bodyParser.json());
 Router.use(cors());
@@ -51,43 +48,9 @@
 Router.get('/server-configuration', cors(), function(req, res) {
     configurationAPI.get(req).then(function(data) {
         utils.sendSuccessResponse(data, res);
-    }, function(error) {
-        utils.sendErrorResponse(error, res);
-    });
+	}, function(error) {
+		utils.sendErrorResponse(error, res);
+	});
 });
 
-Router.get('/check-auth', function(req, res) {
-    console.log('testing auth')
-    var api_server = req.query["api_server"];
-    var uri = utils.confdPort(api_server) + '/api/config/';
-
-    checkAuth(uri, req).then(function(data) {
-        utils.sendSuccessResponse(data, res);
-    }, function(error) {
-        utils.sendErrorResponse(error, res);
-    });
-});
-
-function checkAuth(uri, req){
-    return new Promise(function(resolve, reject) {
-        request({
-            uri: uri,
-            method: 'GET',
-            headers: _.extend({}, {
-                'Authorization': req.get('Authorization'),
-                forever: CONSTANTS.FOREVER_ON,
-                rejectUnauthorized: false,
-            })
-        }, function(error, response, body) {
-            console.log(arguments)
-            if( response.statusCode == 401) {
-                reject({statusCode: 401, error: response.body});
-            } else {
-                resolve({statusCode:200, data:response.body})
-            }
-        });
-    });
-}
-
-
 module.exports = Router;
diff --git a/skyquake/framework/utils/utils.js b/skyquake/framework/utils/utils.js
index 3d84f4b..d08fe5f 100644
--- a/skyquake/framework/utils/utils.js
+++ b/skyquake/framework/utils/utils.js
@@ -1,5 +1,5 @@
 /*
- *
+ * 
  *   Copyright 2016 RIFT.IO Inc
  *
  *   Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 var $ = require('jquery');
 var rw = require('utils/rw.js');
 var API_SERVER = rw.getSearchParams(window.location).api_server;
-var NODE_PORT = 8000;
+var NODE_PORT = 3000;
 var SockJS = require('sockjs-client');
 
 var Utils = {};
@@ -188,20 +188,9 @@
     var AuthBase64 = btoa(username + ":" + password);
     window.sessionStorage.setItem("auth", AuthBase64);
     self.detectInactivity();
-    $.ajax({
-            url: '//' + window.location.hostname + ':' + NODE_PORT + '/check-auth?api_server=' + API_SERVER,
-            type: 'GET',
-            beforeSend: Utils.addAuthorizationStub,
-            success: function(data) {
-              //console.log("LoggingSource.getLoggingConfig success call. data=", data);
-                if (cb) {
-                    cb();
-                };
-            },
-            error: function(data) {
-                Utils.clearAuthentication();
-            }
-          });
+    if (cb) {
+        cb();
+    }
 }
 Utils.clearAuthentication = function(callback) {
     var self = this;
diff --git a/skyquake/plugins/accounts/api/accounts.js b/skyquake/plugins/accounts/api/accounts.js
index 83e841e..1b51c7b 100644
--- a/skyquake/plugins/accounts/api/accounts.js
+++ b/skyquake/plugins/accounts/api/accounts.js
@@ -1,5 +1,5 @@
 /*
- *
+ * 
  *   Copyright 2016 RIFT.IO Inc
  *
  *   Licensed under the Apache License, Version 2.0 (the "License");
@@ -42,9 +42,7 @@
                             type: req.params.type
                         })
                     });
-                }, function(reason) {
-            reject(reason);
-        })
+                })
         } else {
             getAll(req, resolve, reject);
         }
@@ -68,8 +66,6 @@
                 statusCode: 200,
                 data: ReturnData
             });
-        }, function(reason) {
-            reject(reason);
         })
     }
 }
diff --git a/skyquake/plugins/accounts/src/account/account.jsx b/skyquake/plugins/accounts/src/account/account.jsx
index 6797cb3..c40e627 100644
--- a/skyquake/plugins/accounts/src/account/account.jsx
+++ b/skyquake/plugins/accounts/src/account/account.jsx
@@ -1,5 +1,5 @@
 /*
- *
+ * 
  *   Copyright 2016 RIFT.IO Inc
  *
  *   Licensed under the Apache License, Version 2.0 (the "License");
@@ -47,7 +47,6 @@
         }
     }
     componentWillUnmount() {
-        this.props.store.closeSocket();
         this.props.store.unlisten(this.storeListener);
     }
     setUp(props){
diff --git a/skyquake/plugins/accounts/src/account/accountSource.js b/skyquake/plugins/accounts/src/account/accountSource.js
index c0fd36b..4506724 100644
--- a/skyquake/plugins/accounts/src/account/accountSource.js
+++ b/skyquake/plugins/accounts/src/account/accountSource.js
@@ -34,7 +34,6 @@
             return new Promise(function(resolve, reject) {
               //If socket connection already exists, eat the request.
               if(state.socket) {
-                console.log('connection already exists')
                 return resolve(false);
               }
                $.ajax({
diff --git a/skyquake/plugins/accounts/src/account/accountStore.js b/skyquake/plugins/accounts/src/account/accountStore.js
index a9a6d1e..002a9e1 100644
--- a/skyquake/plugins/accounts/src/account/accountStore.js
+++ b/skyquake/plugins/accounts/src/account/accountStore.js
@@ -18,7 +18,7 @@
 import AccountActions from './accountActions.js';
 import AccountSource from './accountSource.js';
 
-var Utils = require('utils/utils.js');
+
 var rw = require('utils/rw.js');
 var altImage = rw.getSearchParams(window.location).alt_image;
 
@@ -252,6 +252,7 @@
     openAccountSocketSuccess = (connection) => {
         let self = this;
         let  ws = window.multiplexer.channel(connection);
+
         if (!connection) return;
         this.setState({
             socket: ws.ws,
@@ -260,9 +261,6 @@
         ws.onmessage = (socket) => {
             try {
                 var data = JSON.parse(socket.data);
-                Utils.checkAuthentication(data.statusCode, function() {
-                    self.closeSocket();
-                });
                 let SdnOptions = [{
                     label: 'Select an SDN Account',
                     value: false
@@ -409,3 +407,18 @@
     }
 }
 
+
+/**
+ *Cloud
+ *
+ * {"name":"eng2","account-type":"openstack","openstack":{"key":"lmaultsb","secret":"mypasswd","auth_url":"http://engstack.eng.riftio.com:5000/v3/","tenant":"lmaultsb","mgmt-network":"private"}}
+Name
+Path
+
+
+SDN
+
+
+ *
+ *
+ */
diff --git a/skyquake/plugins/config/src/dashboard/configStore.js b/skyquake/plugins/config/src/dashboard/configStore.js
index 54f3568..c5ba696 100644
--- a/skyquake/plugins/config/src/dashboard/configStore.js
+++ b/skyquake/plugins/config/src/dashboard/configStore.js
@@ -52,7 +52,7 @@
     }
 }
 
-export default class ConfigStore {
+export default class AccountStore {
     constructor() {
         this.account = {};
         this.accountType = 'openmano';
diff --git a/skyquake/plugins/config/src/dashboard/dashboard.jsx b/skyquake/plugins/config/src/dashboard/dashboard.jsx
index 99bff06..b8a743f 100644
--- a/skyquake/plugins/config/src/dashboard/dashboard.jsx
+++ b/skyquake/plugins/config/src/dashboard/dashboard.jsx
@@ -123,6 +123,7 @@
                             }
                 </div>
                 <div className="form-actions">
+                    <Button  className="light" label="Cancel" />
                     <Button key="4" role="button" className="update dark" label="Update"  onClick={this.updateAccount} />
                 </div>
             </form>
