diff --git a/.gitignore b/.gitignore
index 702dc89..95255be 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,11 +1,10 @@
 *.pyc
 *.comp.js
 .DS_Store
-server_tools
-services
 user_files
 patch.log
 lib
+conf.py
 version.num
 user_files
 *.sql*
diff --git a/erpnext/home/doctype/company_control/company_control.py b/erpnext/home/doctype/company_control/company_control.py
index 567f9f6..567d015 100644
--- a/erpnext/home/doctype/company_control/company_control.py
+++ b/erpnext/home/doctype/company_control/company_control.py
@@ -71,15 +71,7 @@
 			pr.save(1)
 		
 		# Update Membership Type at Gateway
-		import webnotes.defs
 		from webnotes.utils import cint
-		if hasattr(webnotes.defs, 'sync_with_gateway') and \
-				cint(webnotes.defs.sync_with_gateway) or 0:		
-			if 'System Manager' in role_list : membership_type = 'Administrator'
-			else : membership_type = 'Member'
-
-			import server_tools.gateway_utils
-			server_tools.gateway_utils.update_membership_type(cstr(arg['usr']), membership_type)
 
 		sql("delete from __SessionCache where user=%s", cstr(arg['usr']))
 
diff --git a/erpnext/home/page/profile_settings/profile_settings.py b/erpnext/home/page/profile_settings/profile_settings.py
index 9b9f890..dc82812 100644
--- a/erpnext/home/page/profile_settings/profile_settings.py
+++ b/erpnext/home/page/profile_settings/profile_settings.py
@@ -28,13 +28,6 @@
 	if not webnotes.conn.sql('select name from tabProfile where name=%s and password=password(%s)', (webnotes.session['user'], arg['old_password'])):
 		webnotes.msgprint('Old password is not correct', raise_exception=1)
 	
-	import webnotes.defs
-	from webnotes.utils import cint
-	if hasattr(webnotes.defs, 'sync_with_gateway') and \
-			cint(webnotes.defs.sync_with_gateway) or 0:	
-		import server_tools.gateway_utils
-		webnotes.msgprint(server_tools.gateway_utils.change_password(arg['old_password'], arg['new_password'])['message'])
-
 	from webnotes.utils import nowdate
 	webnotes.conn.sql("update tabProfile set password=password(%s), modified=%s where name=%s",(arg['new_password'], nowdate(), webnotes.session['user']))
 	webnotes.msgprint('Password Updated');
diff --git a/erpnext/patches/jan_mar_2012/rename_dt.py b/erpnext/patches/jan_mar_2012/rename_dt.py
index ffdeb7c..e53daf4 100644
--- a/erpnext/patches/jan_mar_2012/rename_dt.py
+++ b/erpnext/patches/jan_mar_2012/rename_dt.py
@@ -1,4 +1,5 @@
 import webnotes
+import conf
 from webnotes.model import rename, delete_doc
 from webnotes.model.code import get_obj
 from wnf import replace_code
@@ -54,7 +55,7 @@
 	#for d in  webnotes.conn.sql("""select name, module from
 	#		`tabSearch Criteria` where ifnull(standard, 'No') = 'Yes' and ifnull(disabled, 0) = 0"""):
 	#
-	for path, folders, files in os.walk(webnotes.defs.modules_path):
+	for path, folders, files in os.walk(conf.modules_path):
 		if not path.endswith('search_criteria'): continue
 		module = path.split(os.sep)[-2]
 		for sc in folders:
@@ -420,7 +421,7 @@
 			modules_list = folders
 		for f in files:
 			if f.endswith(".txt"):
-				rel_path = os.path.relpath(path, webnotes.defs.modules_path)
+				rel_path = os.path.relpath(path, conf.modules_path)
 				path_tuple = rel_path.split(os.sep)
 				if (len(path_tuple)==3 and path_tuple[0] in modules_list and
 						path_tuple[1] == 'doctype'):
diff --git a/erpnext/startup/event_handlers.py b/erpnext/startup/event_handlers.py
index e5846b5..27c34a1 100644
--- a/erpnext/startup/event_handlers.py
+++ b/erpnext/startup/event_handlers.py
@@ -15,25 +15,9 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 import webnotes
-import webnotes.defs
 from webnotes.utils import cint
 import home
 
-def on_login(login_manager):
-	"""
-		called from login manager, before login
-	"""
-	if login_manager.user not in ('Guest', None, '') and webnotes.conn.cur_db_name!='accounts' and webnotes.conn.get_value('Control Panel', 'Control Panel', 'account_id')!='s5u011':
-		try:
-			login_manager = login_as(login_manager)
-			if hasattr(webnotes.defs, 'sync_with_gateway') and \
-					cint(webnotes.defs.sync_with_gateway) or 0:
-				update_account_details()
-				import server_tools.gateway_utils
-				server_tools.gateway_utils.check_login(login_manager.user)
-			
-		except ImportError:
-			pass
 		
 def on_login_post_session(login_manager):
 	"""
@@ -99,6 +83,11 @@
 			
 		bootinfo['user_background'] = webnotes.conn.get_value("Profile", webnotes.session['user'], 'background_image') or ''
 
+		import conf
+		bootinfo['sync_with_gateway'] = hasattr(conf, 'sync_with_gateway') and \
+				cint(conf.sync_with_gateway) or 0
+
+
 def get_letter_heads():
 	"""load letter heads with startup"""
 	import webnotes
@@ -123,45 +112,9 @@
 
 		login_manager.user_fullname = (first_name and first_name or "") + (last_name and " " + last_name or "")
 
-		if hasattr(webnotes.defs, 'validate_ip'):
-			msg = getattr(webnotes.defs, 'validate_ip')()
-			if msg: webnotes.msgprint(msg, raise_exception=1)
-
 		# alisaing here... so check if the user is disabled
 		if not webnotes.conn.sql("select ifnull(enabled,0) from tabProfile where name=%s", user)[0][0]:
 			# throw execption
 			webnotes.msgprint("Authentication Failed", raise_exception=1)
 
-	return login_manager
-
-#
-# update account details
-#
-def update_account_details():
-	# additional details (if from gateway)
-	if webnotes.form_dict.get('is_trial'):
-		webnotes.conn.set_global('is_trial', cint(webnotes.form_dict.get('is_trial')))
-
-	if webnotes.form_dict.get('days_to_expiry'):
-		webnotes.conn.set_global('days_to_expiry', webnotes.form_dict.get('days_to_expiry'))
-
-	if webnotes.form_dict.get('first_name'):
-		from server_tools.gateway_utils import update_user_details
-		update_user_details()
-
-	if webnotes.form_dict.get('xpassword') and webnotes.form_dict.get('login_as')!='Administrator':
-		webnotes.conn.sql("""update tabProfile set password=password(%(xpassword)s) where name=%(login_as)s""", (webnotes.form_dict))
-
-	if webnotes.form_dict.get('url_name'):
-		from webnotes.utils import set_default
-		set_default('account_url', 'http://'+webnotes.form_dict.get('url_name'))
-
-#
-# logout the user from SSO
-#
-def on_logout(login_manager):
-	import webnotes.defs
-	if hasattr(webnotes.defs, 'sync_with_gateway') and \
-			cint(webnotes.defs.sync_with_gateway) or 0:
-		from server_tools.gateway_utils import logout_sso
-		logout_sso(user=login_manager.user)
+	return login_manager
\ No newline at end of file
diff --git a/erpnext/startup/startup.js b/erpnext/startup/startup.js
index 3a51a84..e550b01 100644
--- a/erpnext/startup/startup.js
+++ b/erpnext/startup/startup.js
@@ -39,6 +39,7 @@
 }
 
 erpnext.startup.set_globals = function() {
+	wn.control_panel.sync_with_gateway = wn.boot.sync_with_gateway
 	pscript.is_erpnext_saas = cint(wn.control_panel.sync_with_gateway)
 	if(inList(user_roles,'System Manager')) is_system_manager = 1;
 }
diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py
index 2499f91..70a2cb9 100644
--- a/erpnext/stock/doctype/bin/bin.py
+++ b/erpnext/stock/doctype/bin/bin.py
@@ -78,10 +78,7 @@
 				msg = """Actual Qty(%s) in Bin is mismatched with total number(%s) of serial no in store 
 					for item: '%s' and warehouse: '%s'""" % \
 					(self.doc.actual_qty, sr_count, self.doc.item_code, self.doc.warehouse)
-					
-				if getattr(webnotes.defs,'admin_email_notification',1):
-					sendmail(['developers@iwebnotes.com'], sender='automail@webnotestech.com', \
-						subject='Serial No Count vs Bin Actual Qty', parts=[['text/plain', msg]])			
+
 				msgprint(msg, raise_exception=1)
 
 	# --------------------------------
diff --git a/erpnext/utilities/page/users/users.py b/erpnext/utilities/page/users/users.py
index ec01479..6735dc0 100644
--- a/erpnext/utilities/page/users/users.py
+++ b/erpnext/utilities/page/users/users.py
@@ -83,15 +83,7 @@
 	webnotes.conn.set_value('Profile', args['user'], 'enabled', int(args.get('enabled',0)) or 0)
 
 	if args.get('new_password') and args.get('sys_admin_pwd'):
-		import webnotes.defs
 		from webnotes.utils import cint
-		if hasattr(webnotes.defs, 'sync_with_gateway') and \
-				cint(webnotes.defs.sync_with_gateway) or 0:
-			import server_tools.gateway_utils
-			res = server_tools.gateway_utils.change_password('', args['new_password'], 
-				args['user'], args['sys_admin_pwd'])
-			if 'Traceback' not in res['message']:
-				webnotes.msgprint(res['message'])
 		webnotes.conn.sql("update tabProfile set password=password(%s) where name=%s", 
 			(args['new_password'], args['user']))
 	else: 
@@ -106,14 +98,6 @@
 @webnotes.whitelist()
 def add_user(args):
 	args = json.loads(args)
-	# erpnext-saas
-	import webnotes.defs
-	from webnotes.utils import cint
-	if hasattr(webnotes.defs, 'sync_with_gateway') and \
-			cint(webnotes.defs.sync_with_gateway) or 0:	
-		from server_tools.gateway_utils import add_user_gateway
-		add_user_gateway(args)
-	
 	add_profile(args)
 	
 @webnotes.whitelist()
@@ -174,14 +158,6 @@
 	"""delete user"""
 	webnotes.conn.sql("update tabProfile set enabled=0, docstatus=2 where name=%s", 
 		webnotes.form_dict['uid'])
-	# erpnext-saas
-	import webnotes.defs
-	from webnotes.utils import cint
-	if hasattr(webnotes.defs, 'sync_with_gateway') and \
-			cint(webnotes.defs.sync_with_gateway) or 0:
-		from server_tools.gateway_utils import remove_user_gateway
-		remove_user_gateway(webnotes.form_dict['uid'])
-
 	webnotes.login_manager.logout(user=webnotes.form_dict['uid'])
 	
 welcome_txt = """
diff --git a/index.cgi b/index.cgi
index 60a9167..e597239 100755
--- a/index.cgi
+++ b/index.cgi
@@ -27,6 +27,7 @@
 cgitb.enable()
 
 # import libs
+sys.path.append('.')
 sys.path.append('lib/py')
 sys.path.append('erpnext')
 
diff --git a/wnf.py b/wnf.py
index d4076d1..839f7a0 100755
--- a/wnf.py
+++ b/wnf.py
@@ -146,8 +146,8 @@
 	sys.path.append('lib')
 	sys.path.append('lib/py')
 	import webnotes
-	import webnotes.defs
-	sys.path.append(webnotes.defs.modules_path)
+	import conf
+	sys.path.append(conf.modules_path)
 
 	(options, args) = setup_options()
 
