diff --git a/build.json b/build.json
index 4d7fc0d..76e75b4 100644
--- a/build.json
+++ b/build.json
@@ -39,7 +39,7 @@
 			"lib/css/legacy/menus.css",
 			"lib/css/legacy/messages.css",
 			"lib/css/legacy/dialog.css",
-			"lib/css/legacy/bootstrap-buttons.css",
+			"lib/css/bootstrap/bootstrap-buttons.css",
 			"lib/css/bootstrap/bootstrap-topbar.css",
 			"erpnext/startup/startup.css",
 			"erpnext/website/css/website.css"	
@@ -61,7 +61,7 @@
 			"lib/css/legacy/tabs.css",
 			"lib/css/legacy/bw-icons.css",
 			"lib/css/legacy/sidebar.css",
-			"lib/css/legacy/bootstrap-buttons.css",
+			"lib/css/bootstrap/bootstrap-buttons.css",
 			"lib/css/bootstrap/bootstrap-topbar.css",
 			"erpnext/startup/startup.css"							
 		]
diff --git a/css/all-app.css b/css/all-app.css
index 7faff74..18a99f5 100644
--- a/css/all-app.css
+++ b/css/all-app.css
@@ -12,6 +12,7 @@
 	font-family: Arial, Helvetica, Sans;
 	font-size: 12px;
 	color: #000;
+	background-color: #e2e2e2;
 }
 
 /* heading from bootstrap */
@@ -225,12 +226,30 @@
 	color: #FFF;
 }
 
-.layout_wrapper {
-	padding: 15px;
+.layout_wrapper, .layout-wrapper {
 	-moz-box-shadow: 1px 1px 6px #AAA;
 	-webkit-box-shadow: 1px 1px 6px #AAA;
 	box-shadow: 1px 1px 6px #AAA;
+	background-color: #fff;
+	padding: 15px;
+}
+
+.layout-main-section {
+	width: 68%;
+	float: left;
+	padding: 13px;
 	background-color: #FFF;
+	min-height: 450px;
+}
+
+.layout-side-section {
+	width: 24%;
+	float: right;
+	margin-right: 15px;
+	color: #606060;
+	overflow-x: hidden;
+	padding: 13px;
+	min-height: 450px;
 }
 
 /* from bootstrap */
@@ -1612,8 +1631,6 @@
 }
 
 div.psidebar-section {
-	background-color: #fff;
-	border: 1px solid #b2b2b7;
 	margin-bottom: 11px;
 	overflow: hidden;
 }
@@ -1621,14 +1638,7 @@
 div.psidebar-section-head {
 	font-size: 12px;
 	padding: 5px 11px;
-	background: #eeeeee; /* Old browsers */
-	background: -moz-linear-gradient(top,  #eeeeee 0%, #cccccc 100%); /* FF3.6+ */
-	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eeeeee), color-stop(100%,#cccccc)); /* Chrome,Safari4+ */
-	background: -webkit-linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* Chrome10+,Safari5.1+ */
-	background: -o-linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* Opera 11.10+ */
-	background: -ms-linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* IE10+ */
-	background: linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* W3C */
-	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#cccccc',GradientType=0 ); /* IE6-9 */
+	border-bottom: 2px solid #444;
 }
 
 div.psidebar-section-body {
@@ -1650,7 +1660,7 @@
 	font-size: 11px;
 }
 /*
- *	lib/css/legacy/bootstrap-buttons.css
+ *	lib/css/bootstrap/bootstrap-buttons.css
  */.btn.danger,
 .alert-message.danger,
 .btn.danger:hover,
@@ -2222,7 +2232,6 @@
 }
 
 body {
-	background-color: #e2e2e2;
 }
 
 .erpnext-footer {
diff --git a/css/all-web.css b/css/all-web.css
index 3350100..43e94e4 100644
--- a/css/all-web.css
+++ b/css/all-web.css
@@ -12,6 +12,7 @@
 	font-family: Arial, Helvetica, Sans;
 	font-size: 12px;
 	color: #000;
+	background-color: #e2e2e2;
 }
 
 /* heading from bootstrap */
@@ -225,12 +226,30 @@
 	color: #FFF;
 }
 
-.layout_wrapper {
-	padding: 15px;
+.layout_wrapper, .layout-wrapper {
 	-moz-box-shadow: 1px 1px 6px #AAA;
 	-webkit-box-shadow: 1px 1px 6px #AAA;
 	box-shadow: 1px 1px 6px #AAA;
+	background-color: #fff;
+	padding: 15px;
+}
+
+.layout-main-section {
+	width: 68%;
+	float: left;
+	padding: 13px;
 	background-color: #FFF;
+	min-height: 450px;
+}
+
+.layout-side-section {
+	width: 24%;
+	float: right;
+	margin-right: 15px;
+	color: #606060;
+	overflow-x: hidden;
+	padding: 13px;
+	min-height: 450px;
 }
 
 /* from bootstrap */
@@ -433,7 +452,7 @@
 }
 
 /*
- *	lib/css/legacy/bootstrap-buttons.css
+ *	lib/css/bootstrap/bootstrap-buttons.css
  */.btn.danger,
 .alert-message.danger,
 .btn.danger:hover,
@@ -1005,7 +1024,6 @@
 }
 
 body {
-	background-color: #e2e2e2;
 }
 
 .erpnext-footer {
diff --git a/erpnext/home/page/event_updates/event_updates.js b/erpnext/home/page/event_updates/event_updates.js
index 4df78e3..25c74ae 100644
--- a/erpnext/home/page/event_updates/event_updates.js
+++ b/erpnext/home/page/event_updates/event_updates.js
@@ -16,12 +16,14 @@
 	var wrapper = page_body.pages['Event Updates'];
 	
 	// body
-	wrapper.main_tab = make_table(wrapper,1,2,'100%',['70%','30%']);
-	$y(wrapper.main_tab, {tableLayout:'fixed'});
-
-	wrapper.body = $a($td(wrapper.main_tab, 0, 0), 'div', 'layout_wrapper');
-
+	$(wrapper).addClass('layout-wrapper')
+		.css('background-color', wn.sidebar_background).css('padding', '0px');
+	wrapper.style.backgroud
+	
+	wrapper.body = $a(wrapper, 'div', 'layout-main-section');
 	wrapper.head = $a(wrapper.body, 'div');
+	wrapper.side_section =$a(wrapper, 'div', 'layout-side-section');
+	$a(wrapper, 'div', '', {clear:'both'});
 	
 	wrapper.banner_area = $a(wrapper.head, 'div');
 
@@ -46,7 +48,7 @@
 
 pscript.home_make_widgets = function() {
 	var wrapper = page_body.pages['Event Updates'];
-	var cell = $td(wrapper.main_tab, 0, 1);
+	var cell = wrapper.side_section;
 
 	// sidebar
 	sidebar = new wn.widgets.PageSidebar(cell, {
@@ -580,7 +582,7 @@
 HomeStatusBar = function() {
 	var me = this;
 	var parent = page_body.pages['Event Updates'];
-	this.wrapper = $a($td(parent.main_tab, 0, 1), 'div', 'home-status', {}, 'Loading...');
+	this.wrapper = $a(parent.sidebar_section, 'div', 'home-status', {}, 'Loading...');
 	$br(this.wrapper, '3px');
 	
 	this.render = function(r) {
diff --git a/erpnext/startup/startup.css b/erpnext/startup/startup.css
index 6e368ac..244af3f 100644
--- a/erpnext/startup/startup.css
+++ b/erpnext/startup/startup.css
@@ -13,7 +13,6 @@
 }
 
 body {
-	background-color: #e2e2e2;
 }
 
 .erpnext-footer {
diff --git a/js/all-app.js b/js/all-app.js
index 839b8ef..e90debf 100644
--- a/js/all-app.js
+++ b/js/all-app.js
Binary files differ
diff --git a/js/all-web.js b/js/all-web.js
index 663dd45..22e5400 100644
--- a/js/all-web.js
+++ b/js/all-web.js
@@ -74,7 +74,7 @@
 /*
  *	lib/js/wn/versions.js
  */
-wn.versions={check:function(){if(localStorage){if(window._version_number==-1||parseInt(localStorage._version_number)!=parseInt(window._version_number)){var localversion=localStorage._version_number;localStorage.clear();console.log("Cache cleared - version: "+localversion
+wn.versions={check:function(){if(window.localStorage){if(window._version_number==-1||parseInt(localStorage._version_number)!=parseInt(window._version_number)){var localversion=localStorage._version_number;localStorage.clear();console.log("Cache cleared - version: "+localversion
 +' to '+_version_number)}
 localStorage.setItem('_version_number',window._version_number);}}}
 /*
@@ -884,8 +884,8 @@
 /*
  *	lib/js/legacy/wn/page_layout.js
  */
-wn.PageLayout=function(args){$.extend(this,args)
-this.wrapper=$a(this.parent,'div');this.wtab=make_table(this.wrapper,1,2,'100%',[this.main_width,this.sidebar_width]);this.main=$a($td(this.wtab,0,0),'div','layout_wrapper');this.sidebar_area=$a($td(this.wtab,0,1),'div');this.head=$a(this.main,'div');this.toolbar_area=$a(this.main,'div');this.body=$a(this.main,'div');this.footer=$a(this.main,'div');if(this.heading){this.page_head=new PageHeader(this.head,this.heading);}}
+wn.sidebar_background='#f2f2f2';wn.PageLayout=function(args){$.extend(this,args)
+this.wrapper=$a(this.parent,'div','layout-wrapper',{backgroundColor:wn.sidebar_background,padding:'0px'});this.main=$a(this.wrapper,'div','layout-main-section');this.sidebar_area=$a(this.wrapper,'div','layout-side-section');$a(this.wrapper,'div','',{clear:'both'});this.head=$a(this.main,'div');this.toolbar_area=$a(this.main,'div');this.body=$a(this.main,'div');this.footer=$a(this.main,'div');if(this.heading){this.page_head=new PageHeader(this.head,this.heading);}}
 /*
  *	lib/js/legacy/wn/widgets/footer.js
  */
diff --git a/version.num b/version.num
index 1e27e32..88bc40f 100644
--- a/version.num
+++ b/version.num
@@ -1 +1 @@
-478
\ No newline at end of file
+513
\ No newline at end of file
