diff --git a/patches/october_2013/p06_update_control_panel_and_global_defaults.py b/patches/october_2013/p06_update_control_panel_and_global_defaults.py
new file mode 100644
index 0000000..dd5a1c1
--- /dev/null
+++ b/patches/october_2013/p06_update_control_panel_and_global_defaults.py
@@ -0,0 +1,22 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+
+def execute():
+	webnotes.reload_doc("setup", "doctype", "global_defaults")
+
+	country = webnotes.conn.sql("""select value from `tabSingles` where 
+		field ='country' and doctype='Control Panel'""")
+	time_zone = webnotes.conn.sql("""select value from `tabSingles` where 
+		field ='timezone' and doctype='Control Panel'""")
+
+	cp_bean = webnotes.bean("Control Panel")
+	cp_bean.time_zone = time_zone
+	cp_bean.save()
+
+	gb_bean = webnotes.bean("Global Defaults")
+	gb_bean.country = country
+	gb_bean.time_zone = time_zone
+	gb_bean.save()
\ No newline at end of file
diff --git a/public/js/complete_setup.js b/public/js/complete_setup.js
index e565621..7448c7b 100644
--- a/public/js/complete_setup.js
+++ b/public/js/complete_setup.js
@@ -28,7 +28,7 @@
 					options: "", fieldtype: 'Select'},
 				{fieldname:'currency', label: 'Default Currency', reqd:1,
 					options: "", fieldtype: 'Select'},
-				{fieldname:'timezone', label: 'Time Zone', reqd:1,
+				{fieldname:'time_zone', label: 'Time Zone', reqd:1,
 					options: "", fieldtype: 'Select'},
 				{fieldname:'industry', label: 'Industry', reqd:1,
 					options: erpnext.complete_setup.domains.join('\n'), fieldtype: 'Select'},
@@ -51,10 +51,10 @@
 				d.get_input("currency").empty()
 					.add_options(wn.utils.unique([""].concat($.map(erpnext.country_info, 
 						function(opts, country) { return opts.currency; }))).sort());
-				d.get_input("timezone").empty()
+				d.get_input("time_zone").empty()
 					.add_options([""].concat(erpnext.all_timezones));
 			}
-		})
+		});
 		
 		// on clicking update
 		d.fields_dict.update.input.onclick = function() {
@@ -84,7 +84,7 @@
 
 		d.fields_dict.country.input.onchange = function() {
 			var country = d.fields_dict.country.input.value;
-			var $timezone = $(d.fields_dict.timezone.input);
+			var $timezone = $(d.fields_dict.time_zone.input);
 			$timezone.empty();
 			// add country specific timezones first
 			if(country){
diff --git a/setup/doctype/global_defaults/global_defaults.js b/setup/doctype/global_defaults/global_defaults.js
index 3999979..a4bdb48 100644
--- a/setup/doctype/global_defaults/global_defaults.js
+++ b/setup/doctype/global_defaults/global_defaults.js
@@ -1,9 +1,44 @@
 // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
 // License: GNU General Public License v3. See license.txt
 
-// Validate
-cur_frm.cscript.validate = function(doc, cdt, cdn) {
-	return $c_obj(make_doclist(cdt, cdn), 'get_defaults', '', function(r, rt){
-		sys_defaults = r.message;
-	});
-}
\ No newline at end of file
+$.extend(cur_frm.cscript, {
+	validate: function(doc, cdt, cdn) {
+		return $c_obj(make_doclist(cdt, cdn), 'get_defaults', '', function(r, rt){
+			sys_defaults = r.message;
+		});
+	},
+
+	refresh: function() {
+		var me = this;
+		wn.call({
+			method:"webnotes.country_info.get_country_timezone_info",
+			callback: function(data) {
+				erpnext.country_info = data.message.country_info;
+				erpnext.all_timezones = data.message.all_timezones;
+				// me.set_timezone_options();
+			}
+		});
+	},
+
+	country: function() {
+		var me = this;
+		var timezones = [];
+
+		if (this.frm.doc.country) {
+			var timezones = (erpnext.country_info[this.frm.doc.country].timezones || []).sort();
+		}
+
+		this.frm.set_value("time_zone", timezones[0]);
+		this.set_timezone_options(timezones);
+	},
+
+	set_timezone_options: function(filtered_options) {
+		if(!filtered_options) filtered_options = [];
+		var remaining_timezones = $.map(erpnext.all_timezones, function(v) 
+			{ return filtered_options.indexOf(v)===-1 ? v : null; });
+
+		this.frm.fields_dict.time_zone.df.options = 
+			(filtered_options.concat([""]).concat(remaining_timezones)).join("\n");
+		refresh_field("time_zone");
+	}
+});
\ No newline at end of file
diff --git a/setup/doctype/global_defaults/global_defaults.py b/setup/doctype/global_defaults/global_defaults.py
index 1b1d50c..4a3791b 100644
--- a/setup/doctype/global_defaults/global_defaults.py
+++ b/setup/doctype/global_defaults/global_defaults.py
@@ -29,6 +29,7 @@
 	def on_update(self):
 		"""update defaults"""
 		self.validate_session_expiry()
+		self.update_control_panel()
 		
 		for key in keydict:
 			webnotes.conn.set_default(key, self.doc.fields.get(keydict[key], ''))
@@ -57,7 +58,12 @@
 			if len(parts)!=2 or not (cint(parts[0]) or cint(parts[1])):
 				webnotes.msgprint("""Session Expiry must be in format hh:mm""",
 					raise_exception=1)
-				
-	
+
+	def update_control_panel(self):
+		cp_bean = webnotes.bean("Control Panel")
+		cp_bean.country = self.doc.country
+		cp_bean.time_zone = self.doc.time_zone
+		cp_bean.save()
+		
 	def get_defaults(self):
 		return webnotes.defaults.get_defaults()
diff --git a/setup/doctype/global_defaults/global_defaults.txt b/setup/doctype/global_defaults/global_defaults.txt
index a8a80b1..da40a19 100644
--- a/setup/doctype/global_defaults/global_defaults.txt
+++ b/setup/doctype/global_defaults/global_defaults.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-05-02 17:53:24", 
   "docstatus": 0, 
-  "modified": "2013-10-23 10:22:44", 
+  "modified": "2013-10-23 18:06:04", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -155,6 +155,13 @@
  }, 
  {
   "doctype": "DocField", 
+  "fieldname": "country", 
+  "fieldtype": "Select", 
+  "label": "Country", 
+  "options": "link:Country"
+ }, 
+ {
+  "doctype": "DocField", 
   "fieldname": "sms_sender_name", 
   "fieldtype": "Data", 
   "label": "SMS Sender Name", 
@@ -176,6 +183,12 @@
   "read_only": 0
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "time_zone", 
+  "fieldtype": "Select", 
+  "label": "Time Zone"
+ }, 
+ {
   "doctype": "DocPerm"
  }
 ]
\ No newline at end of file
diff --git a/setup/doctype/setup_control/setup_control.py b/setup/doctype/setup_control/setup_control.py
index b78bfcc..818e310 100644
--- a/setup/doctype/setup_control/setup_control.py
+++ b/setup/doctype/setup_control/setup_control.py
@@ -141,7 +141,7 @@
 
 		# control panel
 		cp = webnotes.doc("Control Panel", "Control Panel")
-		for k in ['country', 'timezone', 'company_name']:
+		for k in ['country', 'time_zone', 'company_name']:
 			cp.fields[k] = args[k]
 			
 		cp.save()
