diff --git a/erpnext/config/setup.py b/erpnext/config/setup.py
index 5be7e8c..6689dd7 100644
--- a/erpnext/config/setup.py
+++ b/erpnext/config/setup.py
@@ -3,14 +3,14 @@
 
 data = [
 	{
-		"label": _("Tools"),
+		"label": _("Settings"),
 		"icon": "icon-wrench",
 		"items": [
 			{
 				"type": "doctype",
 				"name": "Global Defaults",
 				"label": _("Global Settings"),
-				"description": _("Set the Date & Number Formats, Default Currency, Current Fiscal Year, etc."),
+				"description": _("Set Default Values like Company, Currency, Current Fiscal Year, etc."),
 				"hide_count": True
 			}
 		]
@@ -124,7 +124,7 @@
 
 def get_data():
 	out = list(data)
-	
+
 	for module, label, icon in (
 		("accounts", _("Accounts"), "icon-money"),
 		("stock", _("Stock"), "icon-truck"),
@@ -132,7 +132,7 @@
 		("buying", _("Buying"), "icon-shopping-cart"),
 		("hr", _("Human Resources"), "icon-group"),
 		("support", _("Support"), "icon-phone")):
-		
+
 		add_setup_section(out, "erpnext", module, label, icon)
 
-	return out
\ No newline at end of file
+	return out
diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.js b/erpnext/setup/doctype/global_defaults/global_defaults.js
index 85d718a..546fbd4 100644
--- a/erpnext/setup/doctype/global_defaults/global_defaults.js
+++ b/erpnext/setup/doctype/global_defaults/global_defaults.js
@@ -5,12 +5,12 @@
 	onload: function(doc) {
 		var me = this;
 		this.timezone = doc.time_zone;
-		
+
 		frappe.call({
 			method: "frappe.country_info.get_country_timezone_info",
 			callback: function(data) {
-				erpnext.country_info = data.message.country_info;
-				erpnext.all_timezones = data.message.all_timezones;
+				frappe.country_info = data.message.country_info;
+				frappe.all_timezones = data.message.all_timezones;
 				me.set_timezone_options();
 				cur_frm.set_value("time_zone", me.timezone);
 			}
@@ -28,7 +28,7 @@
 		var timezones = [];
 
 		if (this.frm.doc.country) {
-			var timezones = (erpnext.country_info[this.frm.doc.country].timezones || []).sort();
+			var timezones = (frappe.country_info[this.frm.doc.country].timezones || []).sort();
 		}
 
 		this.frm.set_value("time_zone", timezones[0]);
@@ -38,10 +38,10 @@
 	set_timezone_options: function(filtered_options) {
 		var me = this;
 		if(!filtered_options) filtered_options = [];
-		var remaining_timezones = $.map(erpnext.all_timezones, function(v) 
+		var remaining_timezones = $.map(frappe.all_timezones, function(v)
 			{ return filtered_options.indexOf(v)===-1 ? v : null; });
 
-		this.frm.set_df_property("time_zone", "options", 
+		this.frm.set_df_property("time_zone", "options",
 			(filtered_options.concat([""]).concat(remaining_timezones)).join("\n"));
 	}
-});
\ No newline at end of file
+});
diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.json b/erpnext/setup/doctype/global_defaults/global_defaults.json
index 5a5f21e..6375bab 100644
--- a/erpnext/setup/doctype/global_defaults/global_defaults.json
+++ b/erpnext/setup/doctype/global_defaults/global_defaults.json
@@ -1,174 +1,395 @@
 {
+ "_last_update": null, 
+ "_user_tags": null, 
+ "allow_attach": null, 
  "allow_copy": 1, 
- "creation": "2013-05-02 17:53:24.000000", 
+ "allow_email": null, 
+ "allow_import": null, 
+ "allow_print": null, 
+ "allow_rename": null, 
+ "allow_trash": null, 
+ "autoname": null, 
+ "change_log": null, 
+ "client_script": null, 
+ "client_script_core": null, 
+ "client_string": null, 
+ "colour": null, 
+ "creation": "2013-05-02 17:53:24", 
+ "custom": null, 
+ "default_print_format": null, 
+ "description": null, 
  "docstatus": 0, 
  "doctype": "DocType", 
+ "document_type": null, 
+ "dt_template": null, 
  "fields": [
   {
-   "fieldname": "date_and_number_settings", 
+   "allow_on_submit": null, 
+   "default": null, 
+   "depends_on": null, 
+   "description": null, 
+   "fieldname": "currency_settings", 
    "fieldtype": "Section Break", 
-   "label": "Date and Number Settings", 
-   "permlevel": 0
-  }, 
-  {
-   "default": "dd-mm-yyyy", 
-   "fieldname": "date_format", 
-   "fieldtype": "Select", 
-   "label": "Date Format", 
-   "options": "yyyy-mm-dd\ndd-mm-yyyy\ndd/mm/yyyy\nmm/dd/yyyy\nmm-dd-yyyy", 
+   "hidden": null, 
+   "ignore_restrictions": null, 
+   "in_filter": null, 
+   "in_list_view": 1, 
+   "label": "Currency Settings", 
+   "no_column": null, 
+   "no_copy": null, 
+   "oldfieldname": null, 
+   "oldfieldtype": null, 
+   "options": null, 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": null, 
+   "print_width": null, 
+   "read_only": null, 
+   "report_hide": null, 
+   "reqd": null, 
+   "search_index": null, 
+   "set_only_once": null, 
+   "trigger": null, 
+   "width": null
   }, 
   {
-   "description": "This is the default number format. For currencies, please set the number format in the currency master.", 
-   "fieldname": "number_format", 
-   "fieldtype": "Select", 
-   "label": "Number Format", 
-   "options": "\n#,###.##\n#.###,##\n# ###.##\n#,###.###\n#,##,###.##\n#.###\n#,###", 
-   "permlevel": 0, 
-   "read_only": 0
-  }, 
-  {
-   "default": "3", 
-   "description": "Precision for Float fields (quantities, discounts, percentages etc). Floats will be rounded up to specified decimals. Default = 3", 
-   "fieldname": "float_precision", 
-   "fieldtype": "Select", 
-   "label": "Float Precision", 
-   "options": "\n2\n3\n4\n5\n6", 
-   "permlevel": 0, 
-   "read_only": 0
-  }, 
-  {
+   "allow_on_submit": null, 
+   "default": null, 
+   "depends_on": null, 
    "description": "If disable, 'Rounded Total' field will not be visible in any transaction", 
    "fieldname": "disable_rounded_total", 
    "fieldtype": "Check", 
+   "hidden": null, 
+   "ignore_restrictions": null, 
+   "in_filter": null, 
+   "in_list_view": 1, 
    "label": "Disable Rounded Total", 
+   "no_column": null, 
+   "no_copy": null, 
+   "oldfieldname": null, 
+   "oldfieldtype": null, 
+   "options": null, 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": null, 
+   "print_width": null, 
+   "read_only": 0, 
+   "report_hide": null, 
+   "reqd": null, 
+   "search_index": null, 
+   "set_only_once": null, 
+   "trigger": null, 
+   "width": null
   }, 
   {
-   "fieldname": "currency_settings", 
-   "fieldtype": "Section Break", 
-   "label": "Currency Settings", 
-   "permlevel": 0
-  }, 
-  {
+   "allow_on_submit": null, 
    "default": "INR", 
+   "depends_on": null, 
+   "description": null, 
    "fieldname": "default_currency", 
    "fieldtype": "Link", 
+   "hidden": null, 
+   "ignore_restrictions": null, 
+   "in_filter": null, 
+   "in_list_view": 1, 
    "label": "Default Currency", 
+   "no_column": null, 
+   "no_copy": null, 
+   "oldfieldname": null, 
+   "oldfieldtype": null, 
    "options": "Currency", 
    "permlevel": 0, 
+   "print_hide": null, 
+   "print_width": null, 
    "read_only": 0, 
-   "reqd": 1
+   "report_hide": null, 
+   "reqd": 1, 
+   "search_index": null, 
+   "set_only_once": null, 
+   "trigger": null, 
+   "width": null
   }, 
   {
+   "allow_on_submit": null, 
+   "default": null, 
+   "depends_on": null, 
    "description": "Do not show any symbol like $ etc next to currencies.", 
    "fieldname": "hide_currency_symbol", 
    "fieldtype": "Select", 
+   "hidden": null, 
+   "ignore_restrictions": null, 
+   "in_filter": null, 
+   "in_list_view": 1, 
    "label": "Hide Currency Symbol", 
+   "no_column": null, 
+   "no_copy": null, 
+   "oldfieldname": null, 
+   "oldfieldtype": null, 
    "options": "\nNo\nYes", 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": null, 
+   "print_width": null, 
+   "read_only": 0, 
+   "report_hide": null, 
+   "reqd": null, 
+   "search_index": null, 
+   "set_only_once": null, 
+   "trigger": null, 
+   "width": null
   }, 
   {
+   "allow_on_submit": null, 
+   "default": null, 
+   "depends_on": null, 
+   "description": null, 
    "fieldname": "company", 
    "fieldtype": "Section Break", 
+   "hidden": null, 
+   "ignore_restrictions": null, 
+   "in_filter": null, 
+   "in_list_view": 1, 
    "label": "Company Settings", 
+   "no_column": null, 
+   "no_copy": null, 
+   "oldfieldname": null, 
+   "oldfieldtype": null, 
+   "options": null, 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": null, 
+   "print_width": null, 
+   "read_only": 0, 
+   "report_hide": null, 
+   "reqd": null, 
+   "search_index": null, 
+   "set_only_once": null, 
+   "trigger": null, 
+   "width": null
   }, 
   {
+   "allow_on_submit": null, 
+   "default": null, 
+   "depends_on": null, 
+   "description": null, 
    "fieldname": "default_company", 
    "fieldtype": "Link", 
+   "hidden": null, 
+   "ignore_restrictions": null, 
+   "in_filter": null, 
+   "in_list_view": null, 
    "label": "Default Company", 
+   "no_column": null, 
+   "no_copy": null, 
+   "oldfieldname": null, 
+   "oldfieldtype": null, 
    "options": "Company", 
    "permlevel": 0, 
+   "print_hide": null, 
+   "print_width": null, 
    "read_only": 0, 
-   "reqd": 0
+   "report_hide": null, 
+   "reqd": 0, 
+   "search_index": null, 
+   "set_only_once": null, 
+   "trigger": null, 
+   "width": null
   }, 
   {
+   "allow_on_submit": null, 
+   "default": null, 
+   "depends_on": null, 
+   "description": null, 
    "fieldname": "current_fiscal_year", 
    "fieldtype": "Link", 
+   "hidden": null, 
+   "ignore_restrictions": null, 
+   "in_filter": null, 
+   "in_list_view": null, 
    "label": "Current Fiscal Year", 
+   "no_column": null, 
+   "no_copy": null, 
+   "oldfieldname": null, 
+   "oldfieldtype": null, 
    "options": "Fiscal Year", 
    "permlevel": 0, 
+   "print_hide": null, 
+   "print_width": null, 
    "read_only": 0, 
-   "reqd": 1
+   "report_hide": null, 
+   "reqd": 1, 
+   "search_index": null, 
+   "set_only_once": null, 
+   "trigger": null, 
+   "width": null
   }, 
   {
+   "allow_on_submit": null, 
+   "default": null, 
+   "depends_on": null, 
+   "description": null, 
    "fieldname": "system", 
    "fieldtype": "Section Break", 
+   "hidden": null, 
+   "ignore_restrictions": null, 
+   "in_filter": null, 
+   "in_list_view": null, 
    "label": "System Settings", 
+   "no_column": null, 
+   "no_copy": null, 
+   "oldfieldname": null, 
+   "oldfieldtype": null, 
+   "options": null, 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": null, 
+   "print_width": null, 
+   "read_only": 0, 
+   "report_hide": null, 
+   "reqd": null, 
+   "search_index": null, 
+   "set_only_once": null, 
+   "trigger": null, 
+   "width": null
   }, 
   {
-   "description": "Session Expiry in Hours e.g. 06:00", 
-   "fieldname": "session_expiry", 
-   "fieldtype": "Data", 
-   "label": "Session Expiry", 
-   "permlevel": 0, 
-   "read_only": 0
-  }, 
-  {
+   "allow_on_submit": null, 
+   "default": null, 
+   "depends_on": null, 
+   "description": null, 
    "fieldname": "country", 
    "fieldtype": "Select", 
+   "hidden": null, 
+   "ignore_restrictions": null, 
+   "in_filter": null, 
+   "in_list_view": null, 
    "label": "Country", 
+   "no_column": null, 
+   "no_copy": null, 
+   "oldfieldname": null, 
+   "oldfieldtype": null, 
    "options": "link:Country", 
-   "permlevel": 0
+   "permlevel": 0, 
+   "print_hide": null, 
+   "print_width": null, 
+   "read_only": null, 
+   "report_hide": null, 
+   "reqd": null, 
+   "search_index": null, 
+   "set_only_once": null, 
+   "trigger": null, 
+   "width": null
   }, 
   {
+   "allow_on_submit": null, 
+   "default": null, 
+   "depends_on": null, 
+   "description": null, 
    "fieldname": "sms_sender_name", 
    "fieldtype": "Data", 
+   "hidden": null, 
+   "ignore_restrictions": null, 
+   "in_filter": null, 
+   "in_list_view": null, 
    "label": "SMS Sender Name", 
+   "no_column": null, 
+   "no_copy": null, 
+   "oldfieldname": null, 
+   "oldfieldtype": null, 
+   "options": null, 
    "permlevel": 0, 
-   "read_only": 0
+   "print_hide": null, 
+   "print_width": null, 
+   "read_only": 0, 
+   "report_hide": null, 
+   "reqd": null, 
+   "search_index": null, 
+   "set_only_once": null, 
+   "trigger": null, 
+   "width": null
   }, 
   {
-   "fieldname": "column_break_3", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0, 
-   "read_only": 0
-  }, 
-  {
+   "allow_on_submit": null, 
+   "default": null, 
+   "depends_on": null, 
    "description": "For Server Side Print Formats", 
    "fieldname": "print_style", 
    "fieldtype": "Select", 
+   "hidden": null, 
+   "ignore_restrictions": null, 
+   "in_filter": null, 
+   "in_list_view": null, 
    "label": "Print Format Style", 
+   "no_column": null, 
+   "no_copy": null, 
+   "oldfieldname": null, 
+   "oldfieldtype": null, 
    "options": "Standard\nClassic\nModern\nSpartan", 
    "permlevel": 0, 
-   "read_only": 0
-  }, 
-  {
-   "fieldname": "time_zone", 
-   "fieldtype": "Select", 
-   "label": "Time Zone", 
-   "permlevel": 0
+   "print_hide": null, 
+   "print_width": null, 
+   "read_only": 0, 
+   "report_hide": null, 
+   "reqd": null, 
+   "search_index": null, 
+   "set_only_once": null, 
+   "trigger": null, 
+   "width": null
   }
  ], 
+ "hide_heading": null, 
  "hide_toolbar": 0, 
  "icon": "icon-cog", 
  "idx": 1, 
  "in_create": 1, 
+ "in_dialog": null, 
+ "is_submittable": null, 
+ "is_transaction_doc": null, 
  "issingle": 1, 
- "modified": "2014-02-19 19:11:58.000000", 
+ "istable": null, 
+ "max_attachments": null, 
+ "menu_index": null, 
+ "modified": "2014-04-17 16:58:54.093191", 
  "modified_by": "Administrator", 
  "module": "Setup", 
  "name": "Global Defaults", 
+ "name_case": null, 
  "owner": "Administrator", 
+ "parent": null, 
+ "parent_node": null, 
+ "parentfield": null, 
+ "parenttype": null, 
  "permissions": [
   {
    "amend": 0, 
    "cancel": 0, 
    "create": 1, 
+   "delete": null, 
+   "email": null, 
+   "export": null, 
+   "import": null, 
+   "match": null, 
    "permlevel": 0, 
+   "print": null, 
    "read": 1, 
    "report": 0, 
+   "restrict": null, 
+   "restricted": null, 
    "role": "System Manager", 
    "submit": 0, 
    "write": 1
   }
  ], 
- "read_only": 1
+ "plugin": null, 
+ "print_outline": null, 
+ "read_only": 1, 
+ "read_only_onload": null, 
+ "search_fields": null, 
+ "section_style": null, 
+ "server_code": null, 
+ "server_code_compiled": null, 
+ "server_code_core": null, 
+ "server_code_error": null, 
+ "show_in_menu": null, 
+ "smallicon": null, 
+ "subject": null, 
+ "tag_fields": null, 
+ "title_field": null, 
+ "use_template": null, 
+ "version": null
 }
\ No newline at end of file
diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.py b/erpnext/setup/doctype/global_defaults/global_defaults.py
index 90861de..a6db2ba 100644
--- a/erpnext/setup/doctype/global_defaults/global_defaults.py
+++ b/erpnext/setup/doctype/global_defaults/global_defaults.py
@@ -4,9 +4,7 @@
 from __future__ import unicode_literals
 """Global Defaults"""
 import frappe
-from frappe import _
 import frappe.defaults
-from frappe.utils import cint
 
 keydict = {
 	# "key in defaults": "key in Global Defaults"
@@ -15,11 +13,7 @@
 	'company': 'default_company',
 	'currency': 'default_currency',
 	'hide_currency_symbol':'hide_currency_symbol',
-	'date_format': 'date_format',
-	'number_format': 'number_format',
-	'float_precision': 'float_precision',
 	'account_url':'account_url',
-	'session_expiry': 'session_expiry',
 	'disable_rounded_total': 'disable_rounded_total',
 }
 
@@ -29,9 +23,6 @@
 
 	def on_update(self):
 		"""update defaults"""
-		self.validate_session_expiry()
-		self.set_country_and_timezone()
-
 		for key in keydict:
 			frappe.db.set_default(key, self.get(keydict[key], ''))
 
@@ -53,15 +44,5 @@
 		# clear cache
 		frappe.clear_cache()
 
-	def validate_session_expiry(self):
-		if self.session_expiry:
-			parts = self.session_expiry.split(":")
-			if len(parts)!=2 or not (cint(parts[0]) or cint(parts[1])):
-				frappe.throw(_("Session Expiry must be in format {0}").format("hh:mm"))
-
-	def set_country_and_timezone(self):
-		frappe.db.set_default("country", self.country)
-		frappe.db.set_default("time_zone", self.time_zone)
-
 	def get_defaults(self):
 		return frappe.defaults.get_defaults()
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.css b/erpnext/setup/page/setup_wizard/setup_wizard.css
index 386715f..519bc27 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.css
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.css
@@ -1,7 +1,16 @@
+#page-setup-wizard {
+	position: fixed;
+	top: 0px; bottom: 0px;
+	left: 0px; right: 0px;
+	overflow: auto;
+	padding-top: 60px;
+}
+.setup-wizard-wrapper {
+	margin: 0px auto;
+	width: 600px;
+}
 #page-setup-wizard .panel {
 	background-color: #fff;
-	position: fixed; top:0; left: 0; width:100%; height:100%;
-	overflow: auto;
 }
 
 #page-setup-wizard .panel-body {
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.js b/erpnext/setup/page/setup_wizard/setup_wizard.js
index fbc5d02..9bddf51 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.js
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.js
@@ -1,11 +1,11 @@
-frappe.pages['setup-wizard'].onload = function(wrapper) { 
+frappe.pages['setup-wizard'].onload = function(wrapper) {
 	if(sys_defaults.company) {
 		frappe.set_route("desktop");
 		return;
 	}
 	$(".navbar:first").toggle(false);
 	$("body").css({"padding-top":"30px"});
-	
+
 	var wizard_settings = {
 		page_name: "setup-wizard",
 		parent: wrapper,
@@ -16,59 +16,87 @@
 				method: "erpnext.setup.page.setup_wizard.setup_wizard.setup_account",
 				args: values,
 				callback: function(r) {
-					if(r.exc) {
-						var d = msgprint(__("There were errors."));
-						d.custom_onhide = function() {
-							frappe.set_route(erpnext.wiz.page_name, "0");
+					wiz.show_complete();
+					setTimeout(function() {
+						if(user==="Administrator") {
+							msgprint(__("Login with your new User ID") + ":" + values.email);
+							setTimeout(function() {
+								frappe.app.logout();
+							}, 2000);
+						} else {
+							window.location = "/desk";
 						}
-					} else {
-						wiz.show_complete();
-						setTimeout(function() {
-							if(user==="Administrator") {
-								msgprint(__("Login with your new User ID") + ":" + values.email);
-								setTimeout(function() {
-									frappe.app.logout();
-								}, 2000);
-							} else {
-								window.location = "/desk";
-							}
-						}, 2000);
+					}, 2000);
+				},
+				error: function(r) {
+					var d = msgprint(__("There were errors."));
+					d.custom_onhide = function() {
+						frappe.set_route(erpnext.wiz.page_name, "0");
 					}
 				}
 			})
 		},
-		title: __("ERPNext Setup Guide"),
+		title: __("Welcome"),
 		welcome_html: '<h1 class="text-muted text-center"><i class="icon-magic"></i></h1>\
 			<h2 class="text-center">'+__('ERPNext Setup')+'</h2>\
-			<p class="text-center" style="margin: 0px 100px">' + 
-			__('Welcome to ERPNext. Over the next few minutes we will help you setup your ERPNext account. Try and fill in as much information as you have even if it takes a bit longer. It will save you a lot of time later. Good Luck!') + 
+			<p class="text-center" style="margin: 0px 100px">' +
+			__('Welcome to ERPNext. Over the next few minutes we will help you setup your ERPNext account. Try and fill in as much information as you have even if it takes a bit longer. It will save you a lot of time later. Good Luck!') +
 			'</p>',
 		working_html: '<h3 class="text-muted text-center"><i class="icon-refresh icon-spin"></i></h3>\
 			<h2 class="text-center">'+__('Setting up...')+'</h2>\
-			<p class="text-center">' + 
-			__('Sit tight while your system is being setup. This may take a few moments.') + 
+			<p class="text-center">' +
+			__('Sit tight while your system is being setup. This may take a few moments.') +
 			'</p>',
 		complete_html: '<h1 class="text-muted text-center"><i class="icon-thumbs-up"></i></h1>\
 			<h2 class="text-center">'+__('Setup Complete!')+'</h2>\
-			<p class="text-center">' + 
-			__('Your setup is complete. Refreshing...') + 
+			<p class="text-center">' +
+			__('Your setup is complete. Refreshing...') +
 			'</p>',
 		slides: [
 			// User
 			{
+				title: __("Select Your Language"),
+				icon: "icon-globe",
+				fields: [
+					{"fieldname": "language", "label": __("Language"), "fieldtype": "Select",
+						options: ["english", "العربية", "deutsch", "ελληνικά", "español", "français", "हिंदी", "hrvatski",
+						"italiano", "nederlands", "português brasileiro", "português", "српски", "தமிழ்",
+						"ไทย", "中国（简体", "中國（繁體"], reqd:1},
+				],
+				help: __("Welcome to ERPNext. Please select your language to begin the Setup Wizard."),
+				onload: function(slide) {
+					slide.get_input("language").on("change", function() {
+						var lang = $(this).val();
+						frappe.call({
+							method: "erpnext.setup.page.setup_wizard.setup_wizard.load_messages",
+							args: {
+								language: lang
+							},
+							callback: function(r) {
+								// re-render all slides
+								$.each(slide.wiz.slide_dict, function(key, s) {
+									s.make();
+								});
+								slide.get_input("language").val(lang);
+							}
+						})
+					});
+				}
+			},
+			{
 				title: __("The First User: You"),
 				icon: "icon-user",
 				fields: [
-					{"fieldname": "first_name", "label": __("First Name"), "fieldtype": "Data", 
+					{"fieldname": "first_name", "label": __("First Name"), "fieldtype": "Data",
 						reqd:1},
-					{"fieldname": "last_name", "label": __("Last Name"), "fieldtype": "Data", 
+					{"fieldname": "last_name", "label": __("Last Name"), "fieldtype": "Data",
 						reqd:1},
-					{"fieldname": "email", "label": __("Email Id"), "fieldtype": "Data", 
+					{"fieldname": "email", "label": __("Email Id"), "fieldtype": "Data",
 						reqd:1, "description":"Your Login Id", "options":"Email"},
-					{"fieldname": "password", "label": __("Password"), "fieldtype": "Password", 
+					{"fieldname": "password", "label": __("Password"), "fieldtype": "Password",
 						reqd:1},
-					{fieldtype:"Attach Image", fieldname:"attach_user", 
-						label:"Attach Your User..."},
+					{fieldtype:"Attach Image", fieldname:"attach_user",
+						label: __("Attach Your Picture")},
 				],
 				help: __('The first user will become the System Manager (you can change that later).'),
 				onload: function(slide) {
@@ -77,28 +105,28 @@
 						slide.form.fields_dict.email.$wrapper.toggle(false);
 						slide.form.fields_dict.first_name.set_input(frappe.boot.user.first_name);
 						slide.form.fields_dict.last_name.set_input(frappe.boot.user.last_name);
-					
+
 						delete slide.form.fields_dict.email;
 						delete slide.form.fields_dict.password;
 					}
 				}
 			},
-		
+
 			// Organization
 			{
 				title: __("The Organization"),
 				icon: "icon-building",
 				fields: [
 					{fieldname:'company_name', label: __('Company Name'), fieldtype:'Data', reqd:1,
-						placeholder: 'e.g. "My Company LLC"'},
+						placeholder: __('e.g. "My Company LLC"')},
 					{fieldname:'company_abbr', label: __('Company Abbreviation'), fieldtype:'Data',
-						placeholder:'e.g. "MC"',reqd:1},
-					{fieldname:'fy_start_date', label:'Financial Year Start Date', fieldtype:'Date',
-						description:'Your financial year begins on', reqd:1},
-					{fieldname:'fy_end_date', label:'Financial Year End Date', fieldtype:'Date',
-						description:'Your financial year ends on', reqd:1},
+						placeholder: __('e.g. "MC"'),reqd:1},
+					{fieldname:'fy_start_date', label:__('Financial Year Start Date'), fieldtype:'Date',
+						description: __('Your financial year begins on'), reqd:1},
+					{fieldname:'fy_end_date', label:__('Financial Year End Date'), fieldtype:'Date',
+						description: __('Your financial year ends on'), reqd:1},
 					{fieldname:'company_tagline', label: __('What does it do?'), fieldtype:'Data',
-						placeholder:'e.g. "Build tools for builders"', reqd:1},
+						placeholder:__('e.g. "Build tools for builders"'), reqd:1},
 				],
 				help: __('The name of your company for which you are setting up this system.'),
 				onload: function(slide) {
@@ -109,7 +137,7 @@
 					}).val(frappe.boot.sysdefaults.company_name || "").trigger("change");
 
 					slide.get_input("fy_start_date").on("change", function() {
-						var year_end_date = 
+						var year_end_date =
 							frappe.datetime.add_days(frappe.datetime.add_months(
 								frappe.datetime.user_to_obj(slide.get_input("fy_start_date").val()), 12), -1);
 						slide.get_input("fy_end_date").val(frappe.datetime.obj_to_user(year_end_date));
@@ -117,7 +145,7 @@
 					});
 				}
 			},
-		
+
 			// Country
 			{
 				title: __("Country, Timezone and Currency"),
@@ -129,64 +157,64 @@
 						options: "", fieldtype: 'Select'},
 					{fieldname:'timezone', label: __('Time Zone'), reqd:1,
 						options: "", fieldtype: 'Select'},
-					{fieldname:'chart_of_accounts', label: __('Chart of Accounts'), 
-						options: "", fieldtype: 'Select'}
+					// {fieldname:'chart_of_accounts', label: __('Chart of Accounts'),
+					// 	options: "", fieldtype: 'Select'}
 				],
 				help: __('Select your home country and check the timezone and currency.'),
 				onload: function(slide, form) {
 					frappe.call({
 						method:"frappe.country_info.get_country_timezone_info",
 						callback: function(data) {
-							erpnext.country_info = data.message.country_info;
-							erpnext.all_timezones = data.message.all_timezones;
+							frappe.country_info = data.message.country_info;
+							frappe.all_timezones = data.message.all_timezones;
 							slide.get_input("country").empty()
-								.add_options([""].concat(keys(erpnext.country_info).sort()));
+								.add_options([""].concat(keys(frappe.country_info).sort()));
 							slide.get_input("currency").empty()
-								.add_options(frappe.utils.unique([""].concat($.map(erpnext.country_info, 
+								.add_options(frappe.utils.unique([""].concat($.map(frappe.country_info,
 									function(opts, country) { return opts.currency; }))).sort());
 							slide.get_input("timezone").empty()
-								.add_options([""].concat(erpnext.all_timezones));
+								.add_options([""].concat(frappe.all_timezones));
 						}
 					})
-			
+
 					slide.get_input("country").on("change", function() {
 						var country = slide.get_input("country").val();
 						var $timezone = slide.get_input("timezone");
 						$timezone.empty();
 						// add country specific timezones first
 						if(country){
-							var timezone_list = erpnext.country_info[country].timezones || [];
+							var timezone_list = frappe.country_info[country].timezones || [];
 							$timezone.add_options(timezone_list.sort());
-							slide.get_input("currency").val(erpnext.country_info[country].currency);
+							slide.get_input("currency").val(frappe.country_info[country].currency);
 						}
 						// add all timezones at the end, so that user has the option to change it to any timezone
-						$timezone.add_options([""].concat(erpnext.all_timezones));
-						
+						$timezone.add_options([""].concat(frappe.all_timezones));
+
 						// get country specific chart of accounts
-						frappe.call({
-							method: "erpnext.accounts.doctype.chart_of_accounts.chart_of_accounts.get_charts_for_country",
-							args: {"country": country},
-							callback: function(r) {
-								if(r.message) 
-									slide.get_input("chart_of_accounts").empty()
-										.add_options([""].concat(r.message));
-							}
-						})
+						// frappe.call({
+						// 	method: "erpnext.accounts.doctype.chart_of_accounts.chart_of_accounts.get_charts_for_country",
+						// 	args: {"country": country},
+						// 	callback: function(r) {
+						// 		if(r.message)
+						// 			slide.get_input("chart_of_accounts").empty()
+						// 				.add_options([""].concat(r.message));
+						// 	}
+						// })
 					});
 				}
 			},
-		
+
 			// Logo
 			{
 				icon: "icon-bookmark",
 				title: __("Logo and Letter Heads"),
 				help: __('Upload your letter head and logo - you can edit them later.'),
 				fields: [
-					{fieldtype:"Attach Image", fieldname:"attach_letterhead", label:"Attach Letterhead..."},
-					{fieldtype:"Attach Image", fieldname:"attach_logo", label:"Attach Logo..."},
+					{fieldtype:"Attach Image", fieldname:"attach_letterhead", label: __("Attach Letterhead")},
+					{fieldtype:"Attach Image", fieldname:"attach_logo", label:__("Attach Logo")},
 				],
 			},
-		
+
 			// Taxes
 			{
 				icon: "icon-money",
@@ -202,7 +230,7 @@
 				"help": __("List a few of your customers. They could be organizations or individuals."),
 				"fields": [],
 			},
-		
+
 			// Items to Sell
 			{
 				icon: "icon-barcode",
@@ -229,39 +257,39 @@
 
 		]
 	}
-	
+
 	// taxes
 	for(var i=1; i<4; i++) {
-		wizard_settings.slides[4].fields = wizard_settings.slides[4].fields.concat([
-			{fieldtype:"Data", fieldname:"tax_"+ i, label:"Tax " + 1, placeholder:"e.g. VAT"},
+		wizard_settings.slides[5].fields = wizard_settings.slides[5].fields.concat([
+			{fieldtype:"Data", fieldname:"tax_"+ i, label:__("Tax") + " " + i, placeholder:__("e.g. VAT")},
 			{fieldtype:"Column Break"},
-			{fieldtype:"Data", fieldname:"tax_rate_i", label:"Rate (%)", placeholder:"e.g. 5"},
+			{fieldtype:"Data", fieldname:"tax_rate_i", label:__("Rate (%)"), placeholder:__("e.g. 5")},
 			{fieldtype:"Section Break"},
 		])
 	}
-	
+
 	// customers
 	for(var i=1; i<6; i++) {
-		wizard_settings.slides[5].fields = wizard_settings.slides[5].fields.concat([
-			{fieldtype:"Data", fieldname:"customer_" + i, label:"Customer " + i, 
-				placeholder:"Customer Name"},
+		wizard_settings.slides[6].fields = wizard_settings.slides[6].fields.concat([
+			{fieldtype:"Data", fieldname:"customer_" + i, label:__("Customer") + " " + i,
+				placeholder:__("Customer Name")},
 			{fieldtype:"Column Break"},
-			{fieldtype:"Data", fieldname:"customer_contact_" + i, 
-				label:"Contact", placeholder:"Contact Name"},
+			{fieldtype:"Data", fieldname:"customer_contact_" + i,
+				label:__("Contact"), placeholder:__("Contact Name")},
 			{fieldtype:"Section Break"}
 		])
 	}
-	
+
 	// products
 	for(var i=1; i<6; i++) {
-		wizard_settings.slides[6].fields = wizard_settings.slides[6].fields.concat([
-			{fieldtype:"Data", fieldname:"item_" + i, label:"Item " + i, 
-				placeholder:"A Product or Service"},
+		wizard_settings.slides[7].fields = wizard_settings.slides[7].fields.concat([
+			{fieldtype:"Data", fieldname:"item_" + i, label:__("Item") + " " + i,
+				placeholder:__("A Product or Service")},
 			{fieldtype:"Column Break"},
-			{fieldtype:"Attach", fieldname:"item_img_" + i, label:"Attach Image..."},
+			{fieldtype:"Attach", fieldname:"item_img_" + i, label:__("Attach Image")},
 			{fieldtype:"Section Break"},
 			{fieldtype:"Column Break"},
-			{fieldtype:"Select", label:"Group", fieldname:"item_group_" + i, 
+			{fieldtype:"Select", label:"Group", fieldname:"item_group_" + i,
 				options:["Products", "Services", "Raw Material", "Sub Assemblies"]},
 			{fieldtype:"Column Break"},
 			{fieldtype:"Select", fieldname:"item_uom_" + i, label:"UOM",
@@ -271,32 +299,32 @@
 	}
 
 	for(var i=1; i<6; i++) {
-		wizard_settings.slides[7].fields = wizard_settings.slides[7].fields.concat([
-			{fieldtype:"Data", fieldname:"supplier_" + i, label:"Supplier " + i, 
+		wizard_settings.slides[8].fields = wizard_settings.slides[8].fields.concat([
+			{fieldtype:"Data", fieldname:"supplier_" + i, label:__("Supplier")+" " + i,
 				placeholder:"Supplier Name"},
 			{fieldtype:"Column Break"},
-			{fieldtype:"Data", fieldname:"supplier_contact_" + i, 
-				label:"Contact", placeholder:"Contact Name"},
+			{fieldtype:"Data", fieldname:"supplier_contact_" + i,
+				label:"Contact", placeholder:__("Contact Name")},
 			{fieldtype:"Section Break"}
 		])
 	}
 
 	for(var i=1; i<6; i++) {
-		wizard_settings.slides[8].fields = wizard_settings.slides[8].fields.concat([
-			{fieldtype:"Data", fieldname:"item_buy_" + i, label:"Item " + i, 
-				placeholder:"A Product or Service"},
+		wizard_settings.slides[9].fields = wizard_settings.slides[9].fields.concat([
+			{fieldtype:"Data", fieldname:"item_buy_" + i, label: __("Item") + " " + i,
+				placeholder:__("A Product or Service")},
 			{fieldtype:"Column Break"},
 			{fieldtype:"Section Break"},
 			{fieldtype:"Column Break"},
-			{fieldtype:"Select", fieldname:"item_buy_group_" + i, label: "Group",
+			{fieldtype:"Select", fieldname:"item_buy_group_" + i, label: __("Group"),
 				options:["Raw Material", "Consumable", "Sub Assemblies", "Services", "Products"]},
 			{fieldtype:"Column Break"},
-			{fieldtype:"Select", fieldname:"item_buy_uom_" + i, label: "UOM", 
+			{fieldtype:"Select", fieldname:"item_buy_uom_" + i, label: __("UOM"),
 				options:["Unit", "Nos", "Box", "Pair", "Kg", "Set", "Hour", "Minute"]},
 			{fieldtype:"Section Break"},
 		])
 	}
-	
+
 	erpnext.wiz = new frappe.wiz.Wizard(wizard_settings)
 }
 
@@ -310,9 +338,16 @@
 frappe.wiz.Wizard = Class.extend({
 	init: function(opts) {
 		$.extend(this, opts);
+		this.make();
 		this.slides = this.slides;
 		this.slide_dict = {};
-		this.show_welcome();
+		//this.show_welcome();
+		this.welcomed = true;
+		frappe.set_route(this.page_name, "0");
+	},
+	make: function() {
+		frappe.ui.set_user_background(null, "#page-setup-wizard");
+		this.parent = $('<div class="setup-wizard-wrapper">').appendTo(this.parent);
 	},
 	get_message: function(html) {
 		return $(repl('<div class="panel panel-default">\
@@ -320,19 +355,19 @@
 		</div>', {html:html}))
 	},
 	show_welcome: function() {
-		if(this.$welcome) 
+		if(this.$welcome)
 			return;
 		var me = this;
-		this.$welcome = this.get_message(this.welcome_html + 
+		this.$welcome = this.get_message(this.welcome_html +
 			'<br><p class="text-center"><button class="btn btn-primary">'+__("Start")+'</button></p>')
 			.appendTo(this.parent);
-		
+
 		this.$welcome.find(".btn").click(function() {
 			me.$welcome.toggle(false);
 			me.welcomed = true;
 			frappe.set_route(me.page_name, "0");
 		})
-		
+
 		this.current_slide = {"$wrapper": this.$welcome};
 	},
 	show_working: function() {
@@ -350,15 +385,15 @@
 			return;
 		}
 		id = cint(id);
-		if(this.current_slide && this.current_slide.id===id) 
+		if(this.current_slide && this.current_slide.id===id)
 			return;
 		if(!this.slide_dict[id]) {
 			this.slide_dict[id] = new frappe.wiz.WizardSlide($.extend(this.slides[id], {wiz:this, id:id}));
 			this.slide_dict[id].make();
 		}
-		
+
 		this.hide_current_slide();
-		
+
 		this.current_slide = this.slide_dict[id];
 		this.current_slide.$wrapper.toggle(true);
 	},
@@ -380,40 +415,42 @@
 frappe.wiz.WizardSlide = Class.extend({
 	init: function(opts) {
 		$.extend(this, opts);
+		this.$wrapper = $("<div>").appendTo(this.wiz.parent);
 	},
 	make: function() {
 		var me = this;
-		this.$wrapper = $(repl('<div class="panel panel-default">\
+		if(this.$body) this.$body.remove();
+		this.$body = $(repl('<div class="panel panel-default">\
 			<div class="panel-heading">\
 				<div class="panel-title row">\
-					<div class="col-sm-8"><h3 style="margin: 0px;">\
+					<div class="col-sm-12"><h3 style="margin: 0px;">\
 						<i class="%(icon)s text-muted"></i> %(title)s</h3></div>\
-					<div class="col-sm-4 text-right"><a class="prev-btn hide btn btn-default">Previous</a> \
-						<a class="next-btn hide btn btn-primary">Next</a> \
-						<a class="complete-btn hide btn btn-primary"><b>Complete Setup</b></a>\
-					</div>\
 				</div>\
 			</div>\
 			<div class="panel-body">\
 				<div class="progress">\
 					<div class="progress-bar" style="width: %(width)s%"></div>\
 				</div>\
-				<br>\
 				<div class="row">\
-					<div class="col-sm-8 form"></div>\
-					<div class="col-sm-4 help">\
-						<p class="text-muted">%(help)s</p>\
+					<div class="col-sm-12">\
+						<p class="text-muted">%(help)s</p><br>\
+						<div class="form"></div>\
 					</div>\
 				</div>\
 				<hr>\
-				<div class="footer"></div>\
+				<div class="footer">\
+					<div class="text-right"><a class="prev-btn hide btn btn-default">Previous</a> \
+						<a class="next-btn hide btn btn-primary">'+__("Next")+'</a> \
+						<a class="complete-btn hide btn btn-primary"><b>'+__("Complete Setup")+'</b></a>\
+					</div>\
+				</div>\
 			</div>\
-		</div>', {help:this.help, title:this.title, main_title:this.wiz.title, step: this.id + 1,
+		</div>', {help: __(this.help), title:__(this.title), main_title:__(this.wiz.title), step: this.id + 1,
 				width: (flt(this.id + 1) / (this.wiz.slides.length+1)) * 100, icon:this.icon}))
-			.appendTo(this.wiz.parent);
-		
-		this.body = this.$wrapper.find(".form")[0];
-		
+			.appendTo(this.$wrapper);
+
+		this.body = this.$body.find(".form")[0];
+
 		if(this.fields) {
 			this.form = new frappe.ui.FieldGroup({
 				fields: this.fields,
@@ -424,32 +461,32 @@
 		} else {
 			$(this.body).html(this.html)
 		}
-		
+
 		if(this.id > 0) {
-			this.$prev = this.$wrapper.find('.prev-btn').removeClass("hide")
-				.click(function() { 
-					frappe.set_route(me.wiz.page_name, me.id-1 + ""); 
+			this.$prev = this.$body.find('.prev-btn').removeClass("hide")
+				.click(function() {
+					frappe.set_route(me.wiz.page_name, me.id-1 + "");
 				})
 				.css({"margin-right": "10px"});
 			}
 		if(this.id+1 < this.wiz.slides.length) {
-			this.$next = this.$wrapper.find('.next-btn').removeClass("hide")
-				.click(function() { 
+			this.$next = this.$body.find('.next-btn').removeClass("hide")
+				.click(function() {
 					me.values = me.form.get_values();
-					if(me.values===null) 
+					if(me.values===null)
 						return;
-					frappe.set_route(me.wiz.page_name, me.id+1 + ""); 
+					frappe.set_route(me.wiz.page_name, me.id+1 + "");
 				})
 		} else {
-			this.$complete = this.$wrapper.find('.complete-btn').removeClass("hide")
-				.click(function() { 
+			this.$complete = this.$body.find('.complete-btn').removeClass("hide")
+				.click(function() {
 					me.values = me.form.get_values();
-					if(me.values===null) 
+					if(me.values===null)
 						return;
-					me.wiz.on_complete(me.wiz); 
+					me.wiz.on_complete(me.wiz);
 				})
 		}
-		
+
 		if(this.onload) {
 			this.onload(this);
 		}
@@ -458,4 +495,4 @@
 	get_input: function(fn) {
 		return this.form.get_input(fn);
 	}
-})
\ No newline at end of file
+})
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py
index a2fb7d7..863f6f8 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.py
@@ -2,11 +2,12 @@
 # License: GNU General Public License v3. See license.txt
 
 from __future__ import unicode_literals
-import frappe, json, base64
+import frappe, json
 
-from frappe.utils import cint, cstr, getdate, now, nowdate, get_defaults
-from frappe import _
+from frappe.utils import cstr, getdate
 from frappe.utils.file_manager import save_file
+from frappe.translate import set_default_language, get_dict, get_lang_dict
+from frappe.country_info import get_country_info
 
 @frappe.whitelist()
 def setup_account(args=None):
@@ -19,27 +20,50 @@
 		args = json.loads(args)
 	args = frappe._dict(args)
 
+	if args.language != "english":
+		set_default_language(args.language)
+
 	update_user_name(args)
+	frappe.local.message_log = []
+
 	create_fiscal_year_and_company(args)
+	frappe.local.message_log = []
+
 	set_defaults(args)
+	frappe.local.message_log = []
+
 	create_territories()
+	frappe.local.message_log = []
+
 	create_price_lists(args)
+	frappe.local.message_log = []
+
 	create_feed_and_todo()
+	frappe.local.message_log = []
+
 	create_email_digest()
+	frappe.local.message_log = []
+
 	create_letter_head(args)
+	frappe.local.message_log = []
+
 	create_taxes(args)
+	frappe.local.message_log = []
+
 	create_items(args)
+	frappe.local.message_log = []
+
 	create_customers(args)
+	frappe.local.message_log = []
+
 	create_suppliers(args)
+	frappe.local.message_log = []
+
 	frappe.db.set_default('desktop:home_page', 'desktop')
 
 	frappe.clear_cache()
 	frappe.db.commit()
 
-	# suppress msgprints
-	frappe.local.message_log = []
-
-	return "okay"
 
 def update_user_name(args):
 	if args.get("email"):
@@ -116,13 +140,23 @@
 		'current_fiscal_year': args.curr_fiscal_year,
 		'default_currency': args.get('currency'),
 		'default_company':args.get('company_name'),
-		'date_format': frappe.db.get_value("Country", args.get("country"), "date_format"),
-		"float_precision": 3,
 		"country": args.get("country"),
-		"time_zone": args.get("time_zone")
 	})
+
 	global_defaults.save()
 
+	system_settings = frappe.get_doc("System Settings", "System Settings")
+	system_settings.update({
+		"language": args.get("language"),
+		"time_zone": args.get("timezone"),
+		"float_precision": 3,
+		'date_format': frappe.db.get_value("Country", args.get("country"), "date_format"),
+		'number_format': get_country_info(args.get("country")).get("number_format", "#,###.##"),
+	})
+
+	system_settings.save()
+
+
 	accounts_settings = frappe.get_doc("Accounts Settings")
 	accounts_settings.auto_accounting_for_stock = 1
 	accounts_settings.save()
@@ -317,7 +351,7 @@
 
 def create_letter_head(args):
 	if args.get("attach_letterhead"):
-		lh = frappe.get_doc({
+		frappe.get_doc({
 			"doctype":"Letter Head",
 			"letter_head_name": "Standard",
 			"is_default": 1
@@ -348,3 +382,13 @@
 				"parent_territory": root_territory,
 				"is_group": "No"
 			}).insert()
+
+@frappe.whitelist()
+def load_messages(language):
+	lang = get_lang_dict()[language]
+	frappe.local.lang = lang
+	m = get_dict("page", "setup-wizard")
+	m.update(get_dict("boot"))
+	frappe.local.response["__messages"] = m
+	return lang
+
