lib/py/webnotes/defs.py -> conf.py (see sample in lib/conf/conf.py)
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()