diff --git a/erpnext/hub_node/api.py b/erpnext/hub_node/api.py
index fe41919..84042e8 100644
--- a/erpnext/hub_node/api.py
+++ b/erpnext/hub_node/api.py
@@ -1,12 +1,64 @@
 from __future__ import unicode_literals
-import frappe, json
-import io, base64, os, requests
+
+import frappe
+import json
+import io
+import base64
+import os
+import requests
+
+from frappe import _
 from frappe.frappeclient import FrappeClient
 from frappe.desk.form.load import get_attachments
 from frappe.utils.file_manager import get_file_path
 from six import string_types
 
 @frappe.whitelist()
+def register_seller(**kwargs):
+	settings = frappe.get_single('Marketplace Settings')
+	settings.update(kwargs)
+	settings.users = []
+
+	validate_registerer()
+
+	message = settings.register()
+
+	if message.get('email'):
+		settings.registered = 1
+
+		user_emails = kwargs.get('users').strip()[:-1].split(', ')
+		settings.users = get_users_object_list(
+			user_emails,
+			kwargs.get('username'),
+			message.get('password')
+		)
+
+		settings.save()
+
+	return message
+
+def validate_registerer():
+	if frappe.session.user == 'Administrator':
+		frappe.throw(_('Please login as another user to register on Marketplace'))
+
+	if 'System Manager' not in frappe.get_roles():
+		frappe.throw(_('Only users with System Manager role can register on Marketplace'), frappe.PermissionError)
+
+def get_users_object_list(user_emails, session_user_username, session_user_password):
+	users = []
+
+	for user_email in user_emails:
+		users.append({ 'user': user_email })
+
+	users.insert(0, {
+		'user': frappe.session.user,
+		'username': session_user_username,
+		'password': session_user_password
+	})
+
+	return users
+
+@frappe.whitelist()
 def call_hub_method(method, params=None):
 	connection = get_hub_connection()
 
diff --git a/erpnext/hub_node/doctype/marketplace_settings/marketplace_settings.json b/erpnext/hub_node/doctype/marketplace_settings/marketplace_settings.json
index 2663dc5..066202a 100644
--- a/erpnext/hub_node/doctype/marketplace_settings/marketplace_settings.json
+++ b/erpnext/hub_node/doctype/marketplace_settings/marketplace_settings.json
@@ -215,38 +215,6 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "company_email", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_global_search": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Company Email", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "translatable": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_bulk_edit": 0, 
-   "allow_in_quick_entry": 0, 
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
    "fieldname": "company_logo", 
    "fieldtype": "Attach Image", 
    "hidden": 0, 
@@ -512,7 +480,7 @@
  "issingle": 1, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-08-31 17:56:23.354092", 
+ "modified": "2018-08-31 22:14:59.497780", 
  "modified_by": "cave@aperture.com", 
  "module": "Hub Node", 
  "name": "Marketplace Settings", 
diff --git a/erpnext/hub_node/doctype/marketplace_settings/marketplace_settings.py b/erpnext/hub_node/doctype/marketplace_settings/marketplace_settings.py
index 6dcbd13..f0046d0 100644
--- a/erpnext/hub_node/doctype/marketplace_settings/marketplace_settings.py
+++ b/erpnext/hub_node/doctype/marketplace_settings/marketplace_settings.py
@@ -15,107 +15,29 @@
 	def validate(self):
 		self.site_name = frappe.utils.get_url()
 
+
 	def get_marketplace_url(self):
 		return self.marketplace_url
 
+
 	def register(self):
 		""" Create a User on hub.erpnext.org and return username/password """
-
-		if frappe.session.user == 'Administrator':
-			frappe.throw(_('Please login as another user to register on Marketplace'))
-
-		if 'System Manager' not in frappe.get_roles():
-			frappe.throw(_('Only users with System Manager role can register on Marketplace'), frappe.PermissionError)
-
 		self.site_name = frappe.utils.get_url()
 
-		data = {
-			'profile': self.as_json()
-		}
-		post_url = self.get_marketplace_url() + '/api/method/hub.hub.api.register'
+		register_url = self.get_marketplace_url() + '/api/method/hub.hub.api.register'
+		data = {'profile': self.as_json(), 'email': frappe.session.user}
+		headers = {'accept': 'application/json'}
 
-		response = requests.post(post_url, data=data, headers = {'accept': 'application/json'})
-
+		response = requests.post(register_url, data = data, headers = headers)
 		response.raise_for_status()
-
 		if response.ok:
 			message = response.json().get('message')
 		else:
 			frappe.throw(json.loads(response.text))
 
-		if message.get('email'):
-			self.registered = 1
-			self.users[0].password = message.get('password')
-			self.save()
-
 		return message or None
 
-	# def unregister(self):
-	# 	""" Disable the User on hub.erpnext.org"""
 
-	# 	hub_connector = frappe.get_doc(
-	# 		'Data Migration Connector', 'Hub Connector')
-
-	# 	connection = hub_connector.get_connection()
-	# 	response_doc = connection.update('User', frappe._dict({'enabled': 0}), hub_connector.username)
-
-	# 	if response_doc['enabled'] == 0:
-	# 		self.enabled = 0
-	# 		self.save()
-
-	def create_hub_connector(self, message):
-		if frappe.db.exists('Data Migration Connector', 'Hub Connector'):
-			hub_connector = frappe.get_doc('Data Migration Connector', 'Hub Connector')
-			hub_connector.hostname = self.get_marketplace_url()
-			hub_connector.username = message['email']
-			hub_connector.password = message['password']
-			hub_connector.save()
-			return
-
-		frappe.get_doc({
-			'doctype': 'Data Migration Connector',
-			'connector_type': 'Frappe',
-			'connector_name': 'Hub Connector',
-			'hostname': self.get_marketplace_url(),
-			'username': message['email'],
-			'password': message['password']
-		}).insert()
-
-def reset_hub_publishing_settings(last_sync_datetime = ""):
-	doc = frappe.get_doc("Marketplace Settings", "Marketplace Settings")
-	doc.reset_publishing_settings(last_sync_datetime)
-	doc.in_callback = 1
-	doc.save()
-
-def reset_hub_settings(last_sync_datetime = ""):
-	doc = frappe.get_doc("Marketplace Settings", "Marketplace Settings")
-	doc.reset_publishing_settings(last_sync_datetime)
-	doc.reset_enable()
-	doc.in_callback = 1
-	doc.save()
-	frappe.msgprint(_("Successfully unregistered."))
-
-@frappe.whitelist()
-def register_seller(**kwargs):
-	settings = frappe.get_doc('Marketplace Settings')
-	user_emails = kwargs.get('users').strip()[:-1].split(', ')
-
-	users = []
-
-	for user_email in user_emails:
-		users.append({
-			"user": user_email
-		})
-
-	users.insert(0, {
-		"user": frappe.session.user,
-		"hub_username": kwargs.get('username')
-	})
-
-	kwargs['users'] = users
-	settings.update(kwargs)
-
-	settings.save()
-
-	message = settings.register()
-	return message.get('email')
+	def unregister(self):
+		""" Disable the User on hub.erpnext.org"""
+		pass
diff --git a/erpnext/public/js/hub/Sidebar.vue b/erpnext/public/js/hub/Sidebar.vue
index cff580e..6e0b26c 100644
--- a/erpnext/public/js/hub/Sidebar.vue
+++ b/erpnext/public/js/hub/Sidebar.vue
@@ -19,7 +19,7 @@
 export default {
 	data() {
 		return {
-			hub_registered: hub.settings.registered && frappe.session.user === hub.settings.company_email,
+			hub_registered: hub.settings.registered,
 			items: [
 				{
 					label: __('Browse'),
diff --git a/erpnext/public/js/hub/marketplace.js b/erpnext/public/js/hub/marketplace.js
index 7659a36..a4f38c7 100644
--- a/erpnext/public/js/hub/marketplace.js
+++ b/erpnext/public/js/hub/marketplace.js
@@ -101,7 +101,7 @@
 
 	register_seller(form_values) {
 		frappe.call({
-		    method: 'erpnext.hub_node.doctype.marketplace_settings.marketplace_settings.register_seller',
+		    method: 'erpnext.hub_node.api.register_seller',
 		    args: form_values
 		}).then(() => {
 			this.register_dialog.hide();
