diff --git a/css/all-app.css b/css/all-app.css
index 66229fd..41feae8 100644
--- a/css/all-app.css
+++ b/css/all-app.css
@@ -3615,3 +3615,12 @@
 	max-width: 260px !important;
 }
 
+.expiry-info {
+	margin-top: 40px;
+	margin-bottom: -40px;
+	text-align: center;
+	background-color: rgb(255, 255, 204);
+	padding: 7px;
+	z-index: 1;
+}
+
diff --git a/css/all-web.css b/css/all-web.css
index c7ab6f8..c3139d4 100644
--- a/css/all-web.css
+++ b/css/all-web.css
@@ -2313,6 +2313,15 @@
 	max-width: 260px !important;
 }
 
+.expiry-info {
+	margin-top: 40px;
+	margin-bottom: -40px;
+	text-align: center;
+	background-color: rgb(255, 255, 204);
+	padding: 7px;
+	z-index: 1;
+}
+
 
 /*
  *	erpnext/website/css/website.css
diff --git a/erpnext/setup/doctype/setup_control/setup_control.py b/erpnext/setup/doctype/setup_control/setup_control.py
index ba39358..af7bf9a 100644
--- a/erpnext/setup/doctype/setup_control/setup_control.py
+++ b/erpnext/setup/doctype/setup_control/setup_control.py
@@ -27,42 +27,6 @@
 	def __init__(self, d, dl):
 		self.doc, self.doclist = d, dl
 	
-	#Default Naming Series
-	#---------------------------------------------------
-	def naming_series(self):
-		ns = [['TDS Payment', 'TDSP'], ['Purchase Invoice', 'BILL'], ['Journal Voucher', 'JV'], ['Sales Invoice', 'INV'], ['Lead', 'Lead'], ['Purchase Request', 'IDT'], ['Opportunity', 'Opportunity'], ['Purchase Order', 'PO'], ['Quotation', 'QTN'], ['Purchase Receipt', 'GRN'], ['Stock Entry', 'STE'], ['Sales Order', 'SO'], ['Delivery Note', 'DN'], ['Employee', 'EMP/']]
-		for r in ns: 
-			rec = Document('Naming Series')
-			rec.select_doc_for_series = r[0]
-			rec.new_series = r[1]
-			rec_obj = get_obj(doc=rec)
-			rec_obj.add_series()
-
-	# set account details
-	#-----------------------
-	def set_account_details(self, args):
-		"""
-			Called from gateway after allocation
-		"""
-		import json
-		args = json.loads(args)
-
-		self.set_cp_defaults(args['company'], args['industry'], args['time_zone'], args['country'], args['account_name'])
-		self.create_profile(args['user'], args['first_name'], args['last_name'], args.get('pwd'))
-
-		# Domain related updates
-		try:
-			from server_tools.gateway_utils import add_domain_map
-			add_domain_map(args)
-		except ImportError, e:
-			pass
-
-		# add record in domain_list of Website Settings
-		account_url = args['url_name'] + '.erpnext.com'
-		webnotes.conn.set_value('Website Settings', 'Website Settings',
-				'subdomain', account_url)
-		
-	
 	# Account Setup
 	# ---------------
 	def setup_account(self, args):
@@ -117,6 +81,7 @@
 
 		# Set 
 		self.set_defaults(def_args)
+		self.set_cp_defaults(**args)
 
 		self.create_feed_and_todo()
 
@@ -204,14 +169,12 @@
 
 	# Set Control Panel Defaults
 	# --------------------------
-	def set_cp_defaults(self, cname, industry, timezone, country, acc_name):
+	def set_cp_defaults(self, industry, country, timezone, company_name):
 		cp = Document('Control Panel','Control Panel')
-		cp.account_id = acc_name
-		cp.company_name = cname
+		cp.company_name = company_name
 		cp.industry = industry
 		cp.time_zone = timezone
 		cp.country = country
-		cp.client_name = '<div style="padding:4px; font-size:20px;">'+cname+'</div>'
 		cp.save()
 			
 	# Create Profile
@@ -238,25 +201,4 @@
 		for r in roles_list:
 			d = addchild(pr,'userroles', 'UserRole', 1)
 			d.role = r
-			d.save(1)
-		
-	
-	def is_setup_okay(self, args):
-		"""
-		Validates if setup has been performed after database allocation
-		"""
-
-		from server_tools.gateway_utils import get_total_users
-		
-		args = eval(args)		
-		cp_defaults = webnotes.conn.get_value('Control Panel', None, 'account_id')
-		user_profile = webnotes.conn.get_value('Profile', args['user'], 'name')
-		
-		from webnotes.utils import cint
-		
-		total_users = get_total_users()
-						
-		if (cp_defaults==args['account_name']) and user_profile and \
-		   (total_users==cint(args['total_users'])):
-		   return 'True'
-		
+			d.save(1)
\ No newline at end of file
diff --git a/erpnext/startup/event_handlers.py b/erpnext/startup/event_handlers.py
index 0527045..fc0e118 100644
--- a/erpnext/startup/event_handlers.py
+++ b/erpnext/startup/event_handlers.py
@@ -34,7 +34,10 @@
 				sid!=%s""", \
 			(webnotes.session['user'], webnotes.session['sid']), as_list=1)
 
-	if webnotes.session['user'] not in ('Guest', 'demo@webnotestech.com') and webnotes.conn.cur_db_name!='accounts':
+		# check if account is expired
+		check_if_expired()
+
+	if webnotes.session['user'] not in ('Guest', 'demo@webnotestech.com'):
 		# create feed
 		from webnotes.utils import nowtime
 		home.make_feed('Login', 'Profile', login_manager.user, login_manager.user,
@@ -82,6 +85,11 @@
 			tabCompany limit 1""") and 'Yes' or 'No'
 			
 		bootinfo['user_background'] = webnotes.conn.get_value("Profile", webnotes.session['user'], 'background_image') or ''
+		
+		# load subscription info
+		import conf
+		if hasattr(conf, 'max_users'): bootinfo['max_users'] = conf.max_users
+		if hasattr(conf, 'expires_on'): bootinfo['expires_on'] = conf.expires_on
 
 
 def get_letter_heads():
@@ -90,27 +98,37 @@
 	ret = webnotes.conn.sql("""select name, content from `tabLetter Head` 
 		where ifnull(disabled,0)=0""")
 	return dict(ret)
+	
 
-def login_as(login_manager):
-	"""
-		Login as functionality -- allows signin from signin.erpnext.com
-	"""
-	# login as user
-	user = webnotes.form.getvalue('login_as')
-	if user:
-		if isinstance(webnotes.session, dict):
-			webnotes.session['user'] = user
-		else:
-			webnotes.session = {'user': user}
-		
-		login_manager.user = user
-		first_name, last_name = webnotes.conn.sql("select first_name, last_name from `tabProfile` where name=%s", user)[0]
-
-		login_manager.user_fullname = (first_name and first_name or "") + (last_name and " " + last_name or "")
-
-		# 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
+def check_if_expired():
+	"""check if account is expired. If expired, do not allow login"""
+	import conf
+	# check if expires_on is specified
+	if not hasattr(conf, 'expires_on'): return
+	
+	# check if expired
+	from datetime import datetime, date
+	expires_on = datetime.strptime(conf.expires_on, '%Y-%m-%d').date()
+	if date.today() <= expires_on: return
+	
+	# if expired, stop user from logging in
+	from webnotes.utils import formatdate
+	if 'System Manager' in webnotes.user.roles:
+		webnotes.response['server_messages'] = """Oops! \
+			Your subscription expired on <b>%s</b>.
+			
+			Nothing catastrophic.
+			
+			Just drop in a mail at <b>support@erpnext.com</b> and \
+			we will guide you to get your account re-activated.""" % formatdate(conf.expires_on)
+	else:
+		webnotes.response['server_messages'] = """Oops! \
+			Your subscription expired on <b>%s</b>.
+			
+			Nothing catastrophic.
+					
+			Just ask your System Manager to drop in a mail at <b>support@erpnext.com</b> and \
+			we will guide him to get your account re-activated.""" % formatdate(conf.expires_on)
+	
+	webnotes.response['message'] = 'Account Expired'
+	raise webnotes.AuthenticationError
\ No newline at end of file
diff --git a/erpnext/startup/js/complete_setup.js b/erpnext/startup/js/complete_setup.js
index c643813..88fb1f0 100644
--- a/erpnext/startup/js/complete_setup.js
+++ b/erpnext/startup/js/complete_setup.js
@@ -16,78 +16,463 @@
 
 // complete my company registration
 // --------------------------------
+wn.provide('erpnext.complete_setup');
 
-erpnext.complete_setup = function() {
-	var currency_list = ['', 'AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AZN', 
-	'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BTN', 'BYR', 
-	'BZD', 'CAD', 'CDF', 'CFA', 'CFP', 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CUC', 'CZK', 'DJF', 
-	'DKK', 'DOP', 'DZD', 'EEK', 'EGP', 'ERN', 'ETB', 'EUR', 'EURO', 'FJD', 'FKP', 'FMG', 'GBP', 
-	'GEL', 'GHS', 'GIP', 'GMD', 'GNF', 'GQE', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 
-	'IDR', 'ILS', 'INR', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 
-	'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LTL', 'LVL', 'LYD', 
-	'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 
-	'MZM', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NRs', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 
-	'PKR', 'PLN', 'PYG', 'QAR', 'RMB', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SCR', 'SDG', 'SDR', 
-	'SEK', 'SGD', 'SHP', 'SOS', 'SRD', 'STD', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TRY', 
-	'TTD', 'TWD', 'TZS', 'UAE', 'UAH', 'UGX', 'USD', 'USh', 'UYU', 'UZS', 'VEB', 'VND', 'VUV', 
-	'WST', 'XAF', 'XCD', 'XDR', 'XOF', 'XPF', 'YEN', 'YER', 'YTL', 'ZAR', 'ZMK', 'ZWR'];
+$.extend(erpnext.complete_setup, {
+		
+	show: function() {
+		d = erpnext.complete_setup.prepare_dialog();
+		d.show();
+	},
 	
-	var d = new wn.widgets.Dialog({
-		title: "Setup",
-		fields: [
-			{fieldname:'first_name', label:'Your First Name', fieldtype:'Data', reqd: 1},
-			{fieldname:'last_name', label:'Your Last Name', fieldtype:'Data'},
-			{fieldname:'company_name', label:'Company Name', fieldtype:'Data', reqd:1,
-				description: 'e.g. "My Company LLC"'},
-			{fieldname:'company_abbr', label:'Company Abbreviation', fieldtype:'Data',
-				description:'e.g. "MC"',reqd:1},
-			{fieldname:'fy_start', label:'Financial Year Start Date', fieldtype:'Select',
-				description:'Your financial year begins on"', reqd:1,
-				options: ['', '1st Jan', '1st Apr', '1st Jul', '1st Oct'].join('\n')},
-			{fieldname:'currency', label: 'Default Currency', reqd:1,
-				options: currency_list.join('\n'), fieldtype: 'Select'},
-			{fieldname:'update', label:'Setup',fieldtype:'Button'}
-		]
-	})
-	
-	// prepare
-	if(user != 'Administrator'){
-		d.no_cancel(); // Hide close image
-		$('header').toggle(false); // hide toolbar
-	}
-	
-	// company name already set
-	if(wn.control_panel.company_name) {
-		var inp = d.fields_dict.company_name.input;
-		inp.value = wn.control_panel.company_name;
-		inp.disabled = true;
-	}
-	
-	// set first name, last name
-	if(user_fullname) {
-		u = user_fullname.split(' ');
-		if(u[0]) {
-			d.fields_dict.first_name.input.value = u[0];
-		}
-		if(u[1]) {
-			d.fields_dict.last_name.input.value = u[1];			
-		}
-	}
-	
-	// setup
-	d.fields_dict.update.input.onclick = function() {
-		var data = d.get_values();
-		if(!data) return;
-		$(this).set_working();
-		$c_obj('Setup Control','setup_account',data,function(r, rt){
-			sys_defaults = r.message;
-			user_fullname = r.message.user_fullname;
-			wn.boot.user_info[user].fullname = user_fullname;
-			d.hide();
-			$('header').toggle(true);
-			wn.container.wntoolbar.set_user_name();
+	prepare_dialog: function() {
+				
+		var d = new wn.widgets.Dialog({
+			title: "Setup",
+			fields: [
+				{fieldname:'first_name', label:'Your First Name', fieldtype:'Data', reqd: 1},
+				{fieldname:'last_name', label:'Your Last Name', fieldtype:'Data'},
+				{fieldname:'company_name', label:'Company Name', fieldtype:'Data', reqd:1,
+					description: 'e.g. "My Company LLC"'},
+				{fieldname:'company_abbr', label:'Company Abbreviation', fieldtype:'Data',
+					description:'e.g. "MC"',reqd:1},
+				{fieldname:'fy_start', label:'Financial Year Start Date', fieldtype:'Select',
+					description:'Your financial year begins on"', reqd:1,
+					options: erpnext.complete_setup.fy_start_list.join('\n')},
+				{fieldname:'currency', label: 'Default Currency', reqd:1,
+					options: erpnext.complete_setup.currency_list.join('\n'), fieldtype: 'Select'},
+				{fieldname:'industry', label: 'Industry', reqd:1,
+					options: erpnext.complete_setup.industry_list.join('\n'), fieldtype: 'Select'},
+				{fieldname:'country', label: 'Country', reqd:1,
+					options: erpnext.complete_setup.country_list.join('\n'), fieldtype: 'Select'},
+				{fieldname:'timezone', label: 'Time Zone', reqd:1,
+					options: "", fieldtype: 'Select'},
+				{fieldname:'update', label:'Setup',fieldtype:'Button'},
+			],
 		});
-	}
+		
+		if(user != 'Administrator'){
+			$(d.appframe.$titlebar).find('.close').toggle(false); // Hide close image
+			$('header').toggle(false); // hide toolbar
+		}
+		
+		// on clicking update
+		d.fields_dict.update.input.onclick = function() {
+			var data = d.get_values();
+			if(!data) return;
+			$(this).set_working();
+			$c_obj('Setup Control','setup_account',data,function(r, rt){
+				sys_defaults = r.message;
+				user_fullname = r.message.user_fullname;
+				wn.boot.user_info[user].fullname = user_fullname;
+				d.hide();
+				$('header').toggle(true);
+				wn.container.wntoolbar.set_user_name();
+			});
+		};
+		
+		d.fields_dict.country.input.onchange = function() {
+			var country = d.fields_dict.country.input.value;
+			var $timezone = $(d.fields_dict.timezone.input);
+			$timezone.empty();
+			if(country){
+				var timezone_list = erpnext.complete_setup.timezone_dict[country];
+				if(timezone_list.length > 1) {
+					timezone_list = [""].concat(timezone_list);				
+				}
+				$timezone.add_options(timezone_list);
+			}
+		};
+		
+		// company name already set
+		if(wn.control_panel.company_name) {
+			var inp = d.fields_dict.company_name.input;
+			inp.value = wn.control_panel.company_name;
+			inp.disabled = true;
+		}
+
+		// set first name, last name
+		if(user_fullname) {
+			u = user_fullname.split(' ');
+			if(u[0]) {
+				d.fields_dict.first_name.input.value = u[0];
+			}
+			if(u[1]) {
+				d.fields_dict.last_name.input.value = u[1];			
+			}
+		}
+		
+		return d;	
+	},
 	
-	d.show();
-}
+	fy_start_list: ['', '1st Jan', '1st Apr', '1st Jul', '1st Oct'],
+	
+	currency_list: ['', 'AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AZN', 
+		'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BTN', 'BYR', 
+		'BZD', 'CAD', 'CDF', 'CFA', 'CFP', 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CUC', 'CZK', 'DJF', 
+		'DKK', 'DOP', 'DZD', 'EEK', 'EGP', 'ERN', 'ETB', 'EUR', 'EURO', 'FJD', 'FKP', 'FMG', 'GBP', 
+		'GEL', 'GHS', 'GIP', 'GMD', 'GNF', 'GQE', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 
+		'IDR', 'ILS', 'INR', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 
+		'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LTL', 'LVL', 'LYD', 
+		'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 
+		'MZM', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NRs', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 
+		'PKR', 'PLN', 'PYG', 'QAR', 'RMB', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SCR', 'SDG', 'SDR', 
+		'SEK', 'SGD', 'SHP', 'SOS', 'SRD', 'STD', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TRY', 
+		'TTD', 'TWD', 'TZS', 'UAE', 'UAH', 'UGX', 'USD', 'USh', 'UYU', 'UZS', 'VEB', 'VND', 'VUV', 
+		'WST', 'XAF', 'XCD', 'XDR', 'XOF', 'XPF', 'YEN', 'YER', 'YTL', 'ZAR', 'ZMK', 'ZWR'],
+	
+	industry_list: ['', 'Aerospace and Defence', 'Agriculture', 'Apparel', 'Automobile', 
+		'Banking', 'Biotechnology', 'Chemical', 'Communications', 'Consulting', 'Customer Service',
+		'Education', 'Electronics', 'Energy', 'Engineering', 'Entertainment', 'Environmental', 
+		'Finance', 'Food and Beverage', 'Government', 'Healthcare', 'Hospitality', 
+		'Information Technology', 'Insurance', 'Machinery', 'Manufacturing', 'Media', 
+		'Not For Profit', 'Recreation', 'Retail', 'Shipping', 'Technology', 
+		'Telecommunications', 'Transportation', 'Trading', 'Utilities', 'Other'],
+	
+	country_list: ["", 'Afghanistan', 'Albania', 'Algeria', 'Andorra', 'Angola', 'Antigua and Barbuda',
+		'Argentina', 'Armenia', 'Australia', 'Austria', 'Azerbaijan', 'Bahamas', 'Bahrain', 
+		'Bangladesh', 'Barbados', 'Belarus', 'Belgium', 'Belize', 'Benin', 'Bhutan', 'Bolivia', 
+		'Bosnia and Herzegovina', 'Botswana', 'Brazil', 'Brunei Darussalam', 'Bulgaria', 
+		'Burkina Faso', 'Burundi', 'Cambodia', 'Cameroon', 'Canada', 'Cape Verde', 
+		'Central African Republic', 'Chad', 'Chile', 'Colombia', 'Comoros', 'Costa Rica', 
+		'Croatia', 'Cuba', 'Cyprus', 'Czech Republic', "C\xc3\xb4te d'Ivoire", 
+		'Democratic Republic of the Congo', 'Denmark', 'Djibouti', 'Dominica', 
+		'Dominican Republic', 'East Timor', 'Ecuador', 'Egypt', 'El Salvador', 
+		'Equatorial Guinea', 'Eritrea', 'Estonia', 'Ethiopia', 'Federated States of Micronesia', 
+		'Fiji', 'Finland', 'France', 'Gabon', 'Georgia', 'Germany', 'Ghana', 'Greece', 
+		'Grenada', 'Guatemala', 'Guinea', 'Guinea-Bissau', 'Guyana', 'Haiti', 'Honduras', 
+		'Hungary', 'Iceland', 'India', 'Indonesia', 'Iran', 'Iraq', 'Israel', 'Italy', 
+		'Jamaica', 'Japan', 'Jordan', 'Kazakhstan', 'Kenya', 'Kingdom of the Netherlands', 
+		'Kiribati', 'Kuwait', 'Kyrgyzstan', 'Laos', 'Latvia', 'Lebanon', 'Lesotho', 'Liberia', 
+		'Libya', 'Liechtenstein', 'Lithuania', 'Luxembourg', 'Macedonia', 'Madagascar', 'Malawi', 
+		'Malaysia', 'Maldives', 'Mali', 'Malta', 'Marshall Islands', 'Mauritania', 'Mauritius', 
+		'Mexico', 'Moldova', 'Monaco', 'Mongolia', 'Montenegro', 'Morocco', 'Mozambique', 
+		'Myanmar', 'Namibia', 'Nauru', 'Nepal', 'New Zealand', 'Nicaragua', 'Niger', 'Nigeria', 
+		'North Korea', 'Norway', 'Oman', 'Pakistan', 'Palau', 'Panama', 'Papua New Guinea', 
+		'Paraguay', "People's Republic of China", 'Peru', 'Philippines', 'Poland', 'Portugal', 
+		'Qatar', 'Republic of Ireland', 'Republic of the Congo', 'Romania', 'Russia', 'Rwanda', 
+		'Saint Kitts and Nevis', 'Saint Lucia', 'Saint Vincent and the Grenadines', 'Samoa', 
+		'San Marino', 'Saudi Arabia', 'Senegal', 'Serbia', 'Seychelles', 'Sierra Leone', 
+		'Singapore', 'Slovakia', 'Slovenia', 'Solomon Islands', 'Somalia', 'South Africa', 
+		'South Korea', 'Spain', 'Sri Lanka', 'Sudan', 'Suriname', 'Swaziland', 'Sweden', 
+		'Switzerland', 'Syria', 'S\xc3\xa3o Tom\xc3\xa9 and Pr\xc3\xadncipe', 'Tajikistan', 
+		'Tanzania', 'Thailand', 'The Gambia', 'Togo', 'Tonga', 'Trinidad and Tobago', 'Tunisia', 
+		'Turkey', 'Turkmenistan', 'Tuvalu', 'Uganda', 'Ukraine', 'United Arab Emirates', 
+		'United Kingdom', 'United States', 'Uruguay', 'Uzbekistan', 'Vanuatu', 'Vatican City', 
+		'Venezuela', 'Vietnam', 'Yemen', 'Zambia', 'Zimbabwe'],
+	
+	timezone_dict: {
+			'Afghanistan': ['Asia/Kabul'],
+			'Albania': ['Europe/Tirane'],
+			'Algeria': ['Africa/Algiers'],
+			'Andorra': ['Europe/Andorra'],
+			'Angola': ['Africa/Luanda'],
+			'Antigua and Barbuda': ['America/Antigua'],
+			'Argentina': ['America/Argentina/Buenos_Aires',
+			              'America/Argentina/Cordoba',
+			              'America/Argentina/Jujuy',
+			              'America/Argentina/Tucuman',
+			              'America/Argentina/Catamarca',
+			              'America/Argentina/La_Rioja',
+			              'America/Argentina/San_Juan',
+			              'America/Argentina/Mendoza',
+			              'America/Argentina/Rio_Gallegos',
+			              'America/Argentina/Ushuaia'],
+			'Armenia': ['Asia/Yerevan'],
+			'Australia': ['Australia/Lord_Howe',
+			              'Australia/Hobart',
+			              'Australia/Currie',
+			              'Australia/Melbourne',
+			              'Australia/Sydney',
+			              'Australia/Broken_Hill',
+			              'Australia/Brisbane',
+			              'Australia/Lindeman',
+			              'Australia/Adelaide',
+			              'Australia/Darwin',
+			              'Australia/Perth'],
+			'Austria': ['Europe/Vienna'],
+			'Azerbaijan': ['Asia/Baku'],
+			'Bahamas': ['America/Nassau'],
+			'Bahrain': ['Asia/Bahrain'],
+			'Bangladesh': ['Asia/Dhaka'],
+			'Barbados': ['America/Barbados'],
+			'Belarus': ['Europe/Minsk'],
+			'Belgium': ['Europe/Brussels'],
+			'Belize': ['America/Belize'],
+			'Benin': ['Africa/Porto-Novo'],
+			'Bhutan': ['Asia/Thimphu'],
+			'Bolivia': ['America/La_Paz'],
+			'Bosnia and Herzegovina': ['Europe/Sarajevo'],
+			'Botswana': ['Africa/Gaborone'],
+			'Brazil': ['America/Noronha',
+			           'America/Belem',
+			           'America/Fortaleza',
+			           'America/Recife',
+			           'America/Araguaina',
+			           'America/Maceio',
+			           'America/Bahia',
+			           'America/Sao_Paulo',
+			           'America/Campo_Grande',
+			           'America/Cuiaba',
+			           'America/Porto_Velho',
+			           'America/Boa_Vista',
+			           'America/Manaus',
+			           'America/Eirunepe',
+			           'America/Rio_Branco'],
+			'Brunei Darussalam': ['Asia/Brunei'],
+			'Bulgaria': ['Europe/Sofia'],
+			'Burkina Faso': ['Africa/Ouagadougou'],
+			'Burundi': ['Africa/Bujumbura'],
+			'Cambodia': ['Asia/Phnom_Penh'],
+			'Cameroon': ['Africa/Douala'],
+			'Canada': ['America/St_Johns',
+			           'America/Halifax',
+			           'America/Glace_Bay',
+			           'America/Moncton',
+			           'America/Goose_Bay',
+			           'America/Blanc-Sablon',
+			           'America/Montreal',
+			           'America/Toronto',
+			           'America/Nipigon',
+			           'America/Thunder_Bay',
+			           'America/Pangnirtung',
+			           'America/Iqaluit',
+			           'America/Atikokan',
+			           'America/Rankin_Inlet',
+			           'America/Winnipeg',
+			           'America/Rainy_River',
+			           'America/Cambridge_Bay',
+			           'America/Regina',
+			           'America/Swift_Current',
+			           'America/Edmonton',
+			           'America/Yellowknife',
+			           'America/Inuvik',
+			           'America/Dawson_Creek',
+			           'America/Vancouver',
+			           'America/Whitehorse',
+			           'America/Dawson'],
+			'Cape Verde': ['Atlantic/Cape_Verde'],
+			'Central African Republic': ['Africa/Bangui'],
+			'Chad': ['Africa/Ndjamena'],
+			'Chile': ['America/Santiago', 'Pacific/Easter'],
+			'Colombia': ['America/Bogota'],
+			'Comoros': ['Indian/Comoro'],
+			'Costa Rica': ['America/Costa_Rica'],
+			'Croatia': ['Europe/Zagreb'],
+			'Cuba': ['America/Havana'],
+			'Cyprus': ['Asia/Nicosia'],
+			'Czech Republic': ['Europe/Prague'],
+			"C\xc3\xb4te d'Ivoire": ['Africa/Abidjan'],
+			'Democratic Republic of the Congo': ['Africa/Kinshasa', 'Africa/Lubumbashi'],
+			'Denmark': ['Europe/Copenhagen'],
+			'Djibouti': ['Africa/Djibouti'],
+			'Dominica': ['America/Dominica'],
+			'Dominican Republic': ['America/Santo_Domingo'],
+			'East Timor': ['Asia/Dili'],
+			'Ecuador': ['America/Guayaquil', 'Pacific/Galapagos'],
+			'Egypt': ['Africa/Cairo'],
+			'El Salvador': ['America/El_Salvador'],
+			'Equatorial Guinea': ['Africa/Malabo'],
+			'Eritrea': ['Africa/Asmera'],
+			'Estonia': ['Europe/Tallinn'],
+			'Ethiopia': ['Africa/Addis_Ababa'],
+			'Federated States of Micronesia': ['Pacific/Truk',
+			                                   'Pacific/Ponape',
+			                                   'Pacific/Kosrae'],
+			'Fiji': ['Pacific/Fiji'],
+			'Finland': ['Europe/Helsinki'],
+			'France': ['Europe/Paris'],
+			'Gabon': ['Africa/Libreville'],
+			'Georgia': ['Asia/Tbilisi'],
+			'Germany': ['Europe/Berlin'],
+			'Ghana': ['Africa/Accra'],
+			'Greece': ['Europe/Athens'],
+			'Grenada': ['America/Grenada'],
+			'Guatemala': ['America/Guatemala'],
+			'Guinea': ['Africa/Conakry'],
+			'Guinea-Bissau': ['Africa/Bissau'],
+			'Guyana': ['America/Guyana'],
+			'Haiti': ['America/Guatemala'],
+			'Honduras': ['America/Tegucigalpa'],
+			'Hungary': ['Europe/Budapest'],
+			'Iceland': ['Atlantic/Reykjavik'],
+			'India': ['Asia/Calcutta'],
+			'Indonesia': ['Asia/Jakarta',
+			              'Asia/Pontianak',
+			              'Asia/Makassar',
+			              'Asia/Jayapura'],
+			'Iran': ['Asia/Tehran'],
+			'Iraq': ['Asia/Baghdad'],
+			'Israel': ['Asia/Jerusalem'],
+			'Italy': ['Europe/Rome'],
+			'Jamaica': ['America/Jamaica'],
+			'Japan': ['Asia/Tokyo'],
+			'Jordan': ['Asia/Amman'],
+			'Kazakhstan': ['Asia/Almaty',
+			               'Asia/Qyzylorda',
+			               'Asia/Aqtobe',
+			               'Asia/Aqtau',
+			               'Asia/Oral'],
+			'Kenya': ['Africa/Nairobi'],
+			'Kingdom of the Netherlands': ['Europe/Amsterdam'],
+			'Kiribati': ['Pacific/Tarawa', 'Pacific/Enderbury', 'Pacific/Kiritimati'],
+			'Kuwait': ['Asia/Kuwait'],
+			'Kyrgyzstan': ['Asia/Bishkek'],
+			'Laos': ['Asia/Vientiane'],
+			'Latvia': ['Europe/Riga'],
+			'Lebanon': ['Asia/Beirut'],
+			'Lesotho': ['Africa/Maseru'],
+			'Liberia': ['Africa/Monrovia'],
+			'Libya': ['Africa/Tripoli'],
+			'Liechtenstein': ['Europe/Vaduz'],
+			'Lithuania': ['Europe/Vilnius'],
+			'Luxembourg': ['Europe/Luxembourg'],
+			'Macedonia': ['Europe/Skopje'],
+			'Madagascar': ['Indian/Antananarivo'],
+			'Malawi': ['Africa/Blantyre'],
+			'Malaysia': ['Asia/Kuala_Lumpur', 'Asia/Kuching'],
+			'Maldives': ['Indian/Maldives'],
+			'Mali': ['Africa/Bamako'],
+			'Malta': ['Europe/Malta'],
+			'Marshall Islands': ['Pacific/Majuro', 'Pacific/Kwajalein'],
+			'Mauritania': ['Africa/Nouakchott'],
+			'Mauritius': ['Indian/Mauritius'],
+			'Mexico': ['America/Mexico_City',
+			           'America/Cancun',
+			           'America/Merida',
+			           'America/Monterrey',
+			           'America/Mazatlan',
+			           'America/Chihuahua',
+			           'America/Hermosillo',
+			           'America/Tijuana'],
+			'Moldova': ['Europe/Chisinau'],
+			'Monaco': ['Europe/Monaco'],
+			'Mongolia': ['Asia/Ulaanbaatar', 'Asia/Hovd', 'Asia/Choibalsan'],
+			'Montenegro': ['Europe/Podgorica'],
+			'Morocco': ['Africa/Casablanca'],
+			'Mozambique': ['Africa/Maputo'],
+			'Myanmar': ['Asia/Rangoon'],
+			'Namibia': ['Africa/Windhoek'],
+			'Nauru': ['Pacific/Nauru'],
+			'Nepal': ['Asia/Katmandu'],
+			'New Zealand': ['Pacific/Auckland', 'Pacific/Chatham'],
+			'Nicaragua': ['America/Managua'],
+			'Niger': ['Africa/Niamey'],
+			'Nigeria': ['Africa/Lagos'],
+			'North Korea': ['Asia/Pyongyang'],
+			'Norway': ['Europe/Oslo'],
+			'Oman': ['Asia/Muscat'],
+			'Pakistan': ['Asia/Karachi'],
+			'Palau': ['Pacific/Palau'],
+			'Panama': ['America/Panama'],
+			'Papua New Guinea': ['Pacific/Port_Moresby'],
+			'Paraguay': ['America/Asuncion'],
+			"People's Republic of China": ['Asia/Shanghai',
+			                               'Asia/Harbin',
+			                               'Asia/Chongqing',
+			                               'Asia/Urumqi',
+			                               'Asia/Kashgar'],
+			'Peru': ['America/Lima'],
+			'Philippines': ['Asia/Manila'],
+			'Poland': ['Europe/Warsaw'],
+			'Portugal': ['Europe/Lisbon', 'Atlantic/Madeira', 'Atlantic/Azores'],
+			'Qatar': ['Asia/Qatar'],
+			'Republic of Ireland': ['Europe/Dublin'],
+			'Republic of the Congo': ['Africa/Brazzaville'],
+			'Romania': ['Europe/Bucharest'],
+			'Russia': ['Europe/Kaliningrad',
+			           'Europe/Moscow',
+			           'Europe/Volgograd',
+			           'Europe/Samara',
+			           'Asia/Yekaterinburg',
+			           'Asia/Omsk',
+			           'Asia/Novosibirsk',
+			           'Asia/Krasnoyarsk',
+			           'Asia/Irkutsk',
+			           'Asia/Yakutsk',
+			           'Asia/Vladivostok',
+			           'Asia/Sakhalin',
+			           'Asia/Magadan',
+			           'Asia/Kamchatka',
+			           'Asia/Anadyr'],
+			'Rwanda': ['Africa/Kigali'],
+			'Saint Kitts and Nevis': ['America/St_Kitts'],
+			'Saint Lucia': ['America/St_Lucia'],
+			'Saint Vincent and the Grenadines': ['America/St_Vincent'],
+			'Samoa': ['Pacific/Apia'],
+			'San Marino': ['Europe/San_Marino'],
+			'Saudi Arabia': ['Asia/Riyadh'],
+			'Senegal': ['Africa/Dakar'],
+			'Serbia': ['Europe/Belgrade'],
+			'Seychelles': ['Indian/Mahe'],
+			'Sierra Leone': ['Africa/Freetown'],
+			'Singapore': ['Asia/Singapore'],
+			'Slovakia': ['Europe/Bratislava'],
+			'Slovenia': ['Europe/Ljubljana'],
+			'Solomon Islands': ['Pacific/Guadalcanal'],
+			'Somalia': ['Africa/Mogadishu'],
+			'South Africa': ['Africa/Johannesburg'],
+			'South Korea': ['Asia/Seoul'],
+			'Spain': ['Europe/Madrid', 'Africa/Ceuta', 'Atlantic/Canary'],
+			'Sri Lanka': ['Asia/Colombo'],
+			'Sudan': ['Africa/Khartoum'],
+			'Suriname': ['America/Paramaribo'],
+			'Swaziland': ['Africa/Mbabane'],
+			'Sweden': ['Europe/Stockholm'],
+			'Switzerland': ['Europe/Zurich'],
+			'Syria': ['Asia/Damascus'],
+			'S\xc3\xa3o Tom\xc3\xa9 and Pr\xc3\xadncipe': ['Africa/Sao_Tome'],
+			'Tajikistan': ['Asia/Dushanbe'],
+			'Tanzania': ['Africa/Dar_es_Salaam'],
+			'Thailand': ['Asia/Bangkok'],
+			'The Gambia': ['Africa/Banjul'],
+			'Togo': ['Africa/Lome'],
+			'Tonga': ['Pacific/Tongatapu'],
+			'Trinidad and Tobago': ['America/Port_of_Spain'],
+			'Tunisia': ['Africa/Tunis'],
+			'Turkey': ['Europe/Istanbul'],
+			'Turkmenistan': ['Asia/Ashgabat'],
+			'Tuvalu': ['Pacific/Funafuti'],
+			'Uganda': ['Africa/Kampala'],
+			'Ukraine': ['Europe/Kiev',
+			            'Europe/Uzhgorod',
+			            'Europe/Zaporozhye',
+			            'Europe/Simferopol'],
+			'United Arab Emirates': ['Asia/Dubai'],
+			'United Kingdom': ['Europe/London'],
+			'United States': ['America/New_York',
+			                  'America/Detroit',
+			                  'America/Kentucky/Louisville',
+			                  'America/Kentucky/Monticello',
+			                  'America/Indiana/Indianapolis',
+			                  'America/Indiana/Marengo',
+			                  'America/Indiana/Knox',
+			                  'America/Indiana/Vevay',
+			                  'America/Chicago',
+			                  'America/Indiana/Vincennes',
+			                  'America/Indiana/Petersburg',
+			                  'America/Menominee',
+			                  'America/North_Dakota/Center',
+			                  'America/North_Dakota/New_Salem',
+			                  'America/Denver',
+			                  'America/Boise',
+			                  'America/Shiprock',
+			                  'America/Phoenix',
+			                  'America/Los_Angeles',
+			                  'America/Anchorage',
+			                  'America/Juneau',
+			                  'America/Yakutat',
+			                  'America/Nome',
+			                  'America/Adak',
+			                  'Pacific/Honolulu'],
+			'Uruguay': ['America/Montevideo'],
+			'Uzbekistan': ['Asia/Samarkand', 'Asia/Tashkent'],
+			'Vanuatu': ['Pacific/Efate'],
+			'Vatican City': ['Europe/Vatican'],
+			'Venezuela': ['America/Caracas'],
+			'Vietnam': ['Asia/Saigon'],
+			'Yemen': ['Asia/Aden'],
+			'Zambia': ['Africa/Lusaka'],
+			'Zimbabwe': ['Africa/Harare']
+	},		
+});
\ No newline at end of file
diff --git a/erpnext/startup/startup.css b/erpnext/startup/startup.css
index 5ba72f3..490b2f4 100644
--- a/erpnext/startup/startup.css
+++ b/erpnext/startup/startup.css
@@ -52,3 +52,12 @@
 	min-width: 160px !important;
 	max-width: 260px !important;
 }
+
+.expiry-info {
+	margin-top: 40px;
+	margin-bottom: -40px;
+	text-align: center;
+	background-color: rgb(255, 255, 204);
+	padding: 7px;
+	z-index: 1;
+}
diff --git a/erpnext/startup/startup.js b/erpnext/startup/startup.js
index 9c14d2e..23a02cf 100644
--- a/erpnext/startup/startup.js
+++ b/erpnext/startup/startup.js
@@ -48,6 +48,7 @@
 }
 
 erpnext.startup.start = function() {
+	console.log('Starting up...');
 	$('#startup_div').html('Starting up...').toggle(true);
 	
 	
@@ -87,9 +88,26 @@
 		// complete registration
 		if(in_list(user_roles,'System Manager') && (wn.boot.setup_complete=='No')) { 
 			wn.require("erpnext/startup/js/complete_setup.js");
-			erpnext.complete_setup(); 
+			erpnext.complete_setup.show(); 
 		}
-
+		
+		if(wn.boot.expires_on) {
+			var today = dateutil.str_to_obj(dateutil.get_today());
+			var expires_on = dateutil.str_to_obj(wn.boot.expires_on);
+			var diff = dateutil.get_diff(expires_on, today);
+			if (0 <= diff && diff <= 15) {
+				var expiry_string = diff==0 ? "today" : repl("in %(diff)s day(s)", { diff: diff });
+				$('header').append(repl('<div class="expiry-info"> \
+					Ahem! Your ERPNext subscription will <b>expire %(expiry_string)s</b>. \
+					Please renew your subscription to continue using ERPNext \
+					(and remove this annoying banner). \
+				</div>', { expiry_string: expiry_string }));
+			} else if (diff < 0) {
+				$('header').append(repl('<div class="expiry-info"> \
+					Ahem! This ERPNext subscription <b>has expired</b> and should be deleted. \
+				</div>', { expiry_string: expiry_string }));
+			}
+		}
 	}
 
 	erpnext.set_about();
diff --git a/erpnext/utilities/page/users/users.css b/erpnext/utilities/page/users/users.css
index 1a85d15..b739a57 100644
--- a/erpnext/utilities/page/users/users.css
+++ b/erpnext/utilities/page/users/users.css
@@ -32,4 +32,15 @@
 	text-align: center;
 	border-bottom: 1px solid #aaa;
 	min-width: 30px;
+}
+
+.subscription-info-box {
+	margin: 0px 11px;
+	background-color: #EEEEEE;
+    border: 1px solid #DDDBDB;
+    padding: 5px 3px;
+}
+
+.subscription-info {
+	padding: 0px 10px;
 }
\ No newline at end of file
diff --git a/erpnext/utilities/page/users/users.js b/erpnext/utilities/page/users/users.js
index ad238ae..704682e 100644
--- a/erpnext/utilities/page/users/users.js
+++ b/erpnext/utilities/page/users/users.js
@@ -63,6 +63,21 @@
 				}
 			}
 		});
+		if(!$('.subscription-info').length && (wn.boot.max_users || wn.boot.expires_on)) {
+			var $sub_info = $('<div class="subscription-info-box"><div>').insertAfter('.help');
+			if(wn.boot.max_users) {
+				$sub_info.append(repl('\
+				<span class="subscription-info"> \
+					Max Users: <b>%(max_users)s</b> \
+				</span>', { max_users: wn.boot.max_users }));
+			}
+			if(wn.boot.expires_on) {
+				$sub_info.append(repl('\
+				<span class="subscription-info"> \
+				Expires On: <b>%(expires_on)s</b> \
+				</span>', { expires_on: dateutil.str_to_user(wn.boot.expires_on) }));
+			}
+		}
 	},
 	render: function(data) {
 		if(data.file_list) {
@@ -207,6 +222,17 @@
 	},
 	add_user: function() {
 		var me = wn.pages.users;
+		var active_users = $('.user-card:not(.disabled)');
+		if(wn.boot.max_users && (active_users.length >= wn.boot.max_users)) {
+			msgprint(repl("Alas! <br />\
+			You already have <b>%(active_users)s</b> active users, \
+			which is the maximum number that you are currently allowed to add. <br /><br /> \
+			So, to add more users, you can:<br /> \
+			1. <b>Upgrade to the unlimited users plan</b>, or<br /> \
+			2. <b>Disable one or more of your existing users and try again</b>",
+				{active_users: active_users.length}));
+			return;
+		}
 		var d = new wn.widgets.Dialog({
 			title: 'Add User',
 			width: 400,
diff --git a/erpnext/utilities/page/users/users.py b/erpnext/utilities/page/users/users.py
index 6735dc0..819f7bb 100644
--- a/erpnext/utilities/page/users/users.py
+++ b/erpnext/utilities/page/users/users.py
@@ -103,9 +103,24 @@
 @webnotes.whitelist()
 def add_profile(args):
 	from webnotes.utils import validate_email_add, now
-	email = args['user']
-			
+	email = args['user']		
 	sql = webnotes.conn.sql
+		
+	# validate max number of users exceeded or not
+	import conf
+	if hasattr(conf, 'max_users'):
+		active_users = sql("""select count(*) from tabProfile
+			where ifnull(enabled, 0)=1 and docstatus<2
+			and name not in ('Administrator', 'Guest')""")[0][0]
+		if active_users >= conf.max_users:
+			# same message as in users.js
+			webnotes.msgprint("""Alas! <br />\
+				You already have <b>%(active_users)s</b> active users, \
+				which is the maximum number that you are currently allowed to add. <br /><br /> \
+				So, to add more users, you can:<br /> \
+				1. <b>Upgrade to the unlimited users plan</b>, or<br /> \
+				2. <b>Disable one or more of your existing users and try again</b>""" \
+				% {'active_users': active_users}, raise_exception=1)
 	
 	if not email:
 		email = webnotes.form_dict.get('user')
diff --git a/index.cgi b/index.cgi
index 31da310..bf84c5f 100755
--- a/index.cgi
+++ b/index.cgi
@@ -50,8 +50,8 @@
 		return True
 	except webnotes.AuthenticationError, e:
 		return True
-	except webnotes.UnknownDomainError, e:
-		print "Location: " + (conf.redirect_404)
+	#except webnotes.UnknownDomainError, e:
+	#	print "Location: " + (conf.redirect_404)
 	except webnotes.SessionStopped, e:
 		if 'cmd' in webnotes.form_dict:
 			webnotes.handler.print_json()
diff --git a/js/all-app.js b/js/all-app.js
index 7e5ce41..7090e15 100644
--- a/js/all-app.js
+++ b/js/all-app.js
@@ -2217,11 +2217,18 @@
  */
 var current_module;var is_system_manager=0;wn.provide('erpnext.startup');erpnext.modules={'Selling':'selling-home','Accounts':'accounts-home','Stock':'stock-home','Buying':'buying-home','Support':'support-home','Projects':'projects-home','Production':'production-home','Website':'website-home','HR':'hr-home','Setup':'Setup','Activity':'activity','To Do':'todo','Calendar':'calendar','Messages':'messages','Knowledge Base':'questions','Dashboard':'dashboard'}
 wn.provide('wn.modules');$.extend(wn.modules,erpnext.modules);wn.modules['Core']='Setup';erpnext.startup.set_globals=function(){if(inList(user_roles,'System Manager'))is_system_manager=1;}
-erpnext.startup.start=function(){$('#startup_div').html('Starting up...').toggle(true);erpnext.startup.set_globals();if(wn.boot.user_background){erpnext.set_user_background(wn.boot.user_background);}
+erpnext.startup.start=function(){console.log('Starting up...');$('#startup_div').html('Starting up...').toggle(true);erpnext.startup.set_globals();if(wn.boot.user_background){erpnext.set_user_background(wn.boot.user_background);}
 if(user=='Guest'){if(wn.boot.custom_css){set_style(wn.boot.custom_css);}
 if(wn.boot.website_settings.title_prefix){wn.title_prefix=wn.boot.website_settings.title_prefix;}}else{wn.boot.profile.allow_modules=wn.boot.profile.allow_modules.concat(['To Do','Knowledge Base','Calendar','Activity','Messages'])
 if(user_roles.indexOf('Accounts Manager')!=-1){wn.boot.profile.allow_modules.push('Dashboard');}
-erpnext.toolbar.setup();erpnext.startup.set_periodic_updates();if(in_list(user_roles,'System Manager')&&(wn.boot.setup_complete=='No')){wn.require("erpnext/startup/js/complete_setup.js");erpnext.complete_setup();}}
+erpnext.toolbar.setup();erpnext.startup.set_periodic_updates();if(in_list(user_roles,'System Manager')&&(wn.boot.setup_complete=='No')){wn.require("erpnext/startup/js/complete_setup.js");erpnext.complete_setup.show();}
+if(wn.boot.expires_on){var today=dateutil.str_to_obj(dateutil.get_today());var expires_on=dateutil.str_to_obj(wn.boot.expires_on);var diff=dateutil.get_diff(expires_on,today);if(0<=diff&&diff<=15){var expiry_string=diff==0?"today":repl("in %(diff)s day(s)",{diff:diff});$('header').append(repl('<div class="expiry-info"> \
+     Ahem! Your ERPNext subscription will <b>expire %(expiry_string)s</b>. \
+     Please renew your subscription to continue using ERPNext \
+     (and remove this annoying banner). \
+    </div>',{expiry_string:expiry_string}));}else if(diff<0){$('header').append(repl('<div class="expiry-info"> \
+     Ahem! This ERPNext subscription <b>has expired</b> and should be deleted. \
+    </div>',{expiry_string:expiry_string}));}}}
 erpnext.set_about();$('#startup_div').toggle(false);}
 show_chart_browser=function(nm,chart_type){var call_back=function(){if(nm=='Sales Browser'){var sb_obj=new SalesBrowser();sb_obj.set_val(chart_type);}
 else if(nm=='Accounts Browser')
diff --git a/js/all-web.js b/js/all-web.js
index 4cda922..b2b1fb8 100644
--- a/js/all-web.js
+++ b/js/all-web.js
@@ -824,11 +824,18 @@
  */
 var current_module;var is_system_manager=0;wn.provide('erpnext.startup');erpnext.modules={'Selling':'selling-home','Accounts':'accounts-home','Stock':'stock-home','Buying':'buying-home','Support':'support-home','Projects':'projects-home','Production':'production-home','Website':'website-home','HR':'hr-home','Setup':'Setup','Activity':'activity','To Do':'todo','Calendar':'calendar','Messages':'messages','Knowledge Base':'questions','Dashboard':'dashboard'}
 wn.provide('wn.modules');$.extend(wn.modules,erpnext.modules);wn.modules['Core']='Setup';erpnext.startup.set_globals=function(){if(inList(user_roles,'System Manager'))is_system_manager=1;}
-erpnext.startup.start=function(){$('#startup_div').html('Starting up...').toggle(true);erpnext.startup.set_globals();if(wn.boot.user_background){erpnext.set_user_background(wn.boot.user_background);}
+erpnext.startup.start=function(){console.log('Starting up...');$('#startup_div').html('Starting up...').toggle(true);erpnext.startup.set_globals();if(wn.boot.user_background){erpnext.set_user_background(wn.boot.user_background);}
 if(user=='Guest'){if(wn.boot.custom_css){set_style(wn.boot.custom_css);}
 if(wn.boot.website_settings.title_prefix){wn.title_prefix=wn.boot.website_settings.title_prefix;}}else{wn.boot.profile.allow_modules=wn.boot.profile.allow_modules.concat(['To Do','Knowledge Base','Calendar','Activity','Messages'])
 if(user_roles.indexOf('Accounts Manager')!=-1){wn.boot.profile.allow_modules.push('Dashboard');}
-erpnext.toolbar.setup();erpnext.startup.set_periodic_updates();if(in_list(user_roles,'System Manager')&&(wn.boot.setup_complete=='No')){wn.require("erpnext/startup/js/complete_setup.js");erpnext.complete_setup();}}
+erpnext.toolbar.setup();erpnext.startup.set_periodic_updates();if(in_list(user_roles,'System Manager')&&(wn.boot.setup_complete=='No')){wn.require("erpnext/startup/js/complete_setup.js");erpnext.complete_setup.show();}
+if(wn.boot.expires_on){var today=dateutil.str_to_obj(dateutil.get_today());var expires_on=dateutil.str_to_obj(wn.boot.expires_on);var diff=dateutil.get_diff(expires_on,today);if(0<=diff&&diff<=15){var expiry_string=diff==0?"today":repl("in %(diff)s day(s)",{diff:diff});$('header').append(repl('<div class="expiry-info"> \
+     Ahem! Your ERPNext subscription will <b>expire %(expiry_string)s</b>. \
+     Please renew your subscription to continue using ERPNext \
+     (and remove this annoying banner). \
+    </div>',{expiry_string:expiry_string}));}else if(diff<0){$('header').append(repl('<div class="expiry-info"> \
+     Ahem! This ERPNext subscription <b>has expired</b> and should be deleted. \
+    </div>',{expiry_string:expiry_string}));}}}
 erpnext.set_about();$('#startup_div').toggle(false);}
 show_chart_browser=function(nm,chart_type){var call_back=function(){if(nm=='Sales Browser'){var sb_obj=new SalesBrowser();sb_obj.set_val(chart_type);}
 else if(nm=='Accounts Browser')
