diff --git a/website/css/website.css b/website/css/website.css
index eb9e6cc..86f0414 100644
--- a/website/css/website.css
+++ b/website/css/website.css
@@ -1,69 +1,38 @@
-header .container, .content {
-	width: 900px;
-}
+.content, div#body_div {
+	width: 780px;
+}	
 
 div#body_div {
-	padding-top: 80px;
+	padding: 0px;
 	min-height: 400px;
+	margin: 40px auto;
+	box-shadow: 1px 1px 3px 3px #ccc;
+}
+
+.navbar-inner {
+	border: 0px;
+	border-bottom: 1px solid #ddd;
+	border-radius: 0px;
 }
 
 p, li {
 	line-height: 1.6em;
 }
 
-pre {
-    background-color: #F8F8F8;
-    border: 1px solid #CCCCCC;
-    border-radius: 3px 3px 3px 3px;
-    font-size: 13px;
-    line-height: 19px;
-    overflow: auto;
-    padding: 6px 10px;
-	margin-bottom: 9px;
+.layout-wrapper {
+	box-shadow: none;
+	-webkit-box-shadow: none;
+	-moz-box-shadow: none;
 }
 
-.web-head-section {
-	margin-bottom: 20px
+.layout-main {
+	min-height: 400px;
 }
 
-.web-main-section {
-	width: 65%;
-	float: left;
-	margin-bottom: 20px;
+.layout-side-section {
+	padding: 8px;
 }
 
-.web-side-section {
-	width: 30%;
-	float: right;
-	margin-bottom: 20px;
-	margin-right: 15px;
-	color: #606060;
-	overflow-x: hidden;
-	font-size: 90%;
-}
-
-.web-page-status {
-	padding: 7px;
-	margin-top: -20px;
-	color: #777;
-	clear: both;
-	text-align: right;
-}
-
-.web-page-status a,
-.web-page-status a:hover,
-.web-page-status a:visited {
-	padding: 2px;
-	background-color: #777;
-	color: #FFF;
-	text-decoration: none;
-}
-
-.web-page-status a:hover {
-	background-color: #444;
-}
-
-
 footer {
 
 }
@@ -92,37 +61,9 @@
 	border-right: 0px solid #777 !important;
 }
 
-.web-footer-powered {
+.web-footer-powered, .web-footer-powered a {
 	color: #888;
-	float: right;
-	margin-top: -12px;
-}
-
-/* slide view */
-
-.next-slide {
-	margin: 0px -27px 100px -27px;
-	background: #ffffff; /* Old browsers */
-	background: -moz-linear-gradient(top,  #eeeeee 0%, #fff 100%); /* FF3.6+ */
-	background: -webkit-linear-gradient(top,  #eeeeee 0%, #fff 100%); /* Chrome10+,Safari5.1+ */
-	background: -o-linear-gradient(top,  #eeeeee 0%, #fff 100%); /* Opera 11.10+ */
-	background: -ms-linear-gradient(top,  #eeeeee 0%, #fff 100%); /* IE10+ */
-	background: linear-gradient(top,  #eeeeee 0%, #fff 100%); /* W3C */
-	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#fff',GradientType=0 ); /* IE6-9 */
-	height: 36px;
-}
-
-.slide-shadow {
-	background: #eeeeee; /* Old browsers */
-	background: -moz-linear-gradient(top,  #bababa 0%,#eeeeee 100%); /* FF3.6+ */
-	background: -webkit-linear-gradient(top,  #bababa 0%,#eeeeee 100%); /* Chrome10+,Safari5.1+ */
-	background: -o-linear-gradient(top,  #bababa 0%,#eeeeee 100%); /* Opera 11.10+ */
-	background: -ms-linear-gradient(top,  #bababa 0%,#eeeeee 100%); /* IE10+ */
-	background: linear-gradient(top,  #bababa 0%,#eeeeee 100%); /* W3C */
-	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#bababa', endColorstr='#eeeeee',GradientType=0 ); /* IE6-9 */	
-	height: 3px;
-	margin: 100px -27px 0px -27px;
-	border-top: 1px solid #bababa;
+	margin-top: 20px;
 }
 
 .two-column {
diff --git a/website/doctype/style_settings/custom_template.css b/website/doctype/style_settings/custom_template.css
index 0398325..7e89ca0 100644
--- a/website/doctype/style_settings/custom_template.css
+++ b/website/doctype/style_settings/custom_template.css
@@ -1,4 +1,4 @@
-#body_div {
+body {
 {% if doc.background_image %}
 	background: url("../files/{{ doc.background_image }}") repeat;
 {% elif doc.background_color %}
diff --git a/website/templates/css/login.css b/website/templates/css/login.css
index 4c044d8..1f36e53 100644
--- a/website/templates/css/login.css
+++ b/website/templates/css/login.css
@@ -1,7 +1,18 @@
 	<style>
 		#login_wrapper {
-			width: 300px !important;
-			margin: 20px auto;
+			width: 300px;
+			margin: 70px auto;
+		}
+
+		.layout-wrapper {
+			padding: 10px;
+			box-shadow: 1px 1px 3px 3px #ccc;
+			font-size: 12px;
+			min-height: 100px;
+		}
+
+		#login_wrapper h3 {
+			text-align: center;
 		}
 
 		.login-banner {
@@ -11,4 +22,11 @@
 		.login-box td {
 			padding: 8px;
 		}
+		.login-footer {
+			text-align: center;
+			padding: 15px;
+		}
+		.login-footer, .login-footer a {
+			color: #999;
+		}
 	</style>
\ No newline at end of file
diff --git a/website/templates/html/blog_page.html b/website/templates/html/blog_page.html
index 12a1c7a..5421f00 100644
--- a/website/templates/html/blog_page.html
+++ b/website/templates/html/blog_page.html
@@ -13,7 +13,7 @@
 	<div class="layout-wrapper layout-wrapper-background">
 		<div class="web-content" id="blog-{{ name }}">
 
-			<div class="layout-main-section">
+			<div class="layout-main">
 				
 				<h2>{{ title }}</h2>
 
@@ -38,19 +38,6 @@
 				</div>
 				<button class="btn add-comment">Add Comment</button>
 			</div>
-
-			<div class="layout-side-section">
-				<p><a href="blog.html">All Blogs</a></p>
-				<br />
-				{% block blog_subscribe %}
-					{% include "html/blog_subscribe.html" %}
-				{% endblock %}
-				<br />
-				<h4>Recent Posts</h4>
-				<div class="recent-posts" style="min-height: 100px;"></div>
-			</div>
-
-			<div style="clear: both"></div>
 		</div>
 	</div>
 {% endblock %}
\ No newline at end of file
diff --git a/website/templates/html/outer.html b/website/templates/html/outer.html
index 4d89162..9741451 100644
--- a/website/templates/html/outer.html
+++ b/website/templates/html/outer.html
@@ -5,9 +5,12 @@
 {% extends "html/base.html" %}
 
 {% block body %}
-
 	<header>
-		<div class="navbar navbar-fixed-top navbar-inverse">
+	</header>
+	<div id="body_div">
+		<div class="navbar-wrapper">
+		<div class="navbar navbar-inverse" 
+			style="margin-bottom: 0px;">
 			<div class="navbar-inner">
 			<div class="container">
 				<a class="brand" href="index.html">{{ brand }}</a>
@@ -51,10 +54,10 @@
 				</ul>
 			</div>
 			</div>
-			</div>
-			<script>$('.dropdown-toggle').dropdown()</script>
-	</header>
-	<div id="body_div">
+		</div>
+		</div>
+		<script>$('.dropdown-toggle').dropdown()</script>
+			
 		<div class="content" id="page-{{ name }}" style="display: block;">
 		{% block content %}
 		{% endblock %}
@@ -68,8 +71,9 @@
 		{% endfor %}
 		</ul></div>
 		{% if copyright %}
-		<div class="web-footer-copyright">&copy; {{ copyright }}
+		<div class="web-footer-copyright">&copy; {{ copyright }}</div>
 		{% endif %}
+		<div class="web-footer-powered">Powered by <a href="https://erpnext.com">ERPNext.com</a></div>
 		</div>
 	</footer>
 
diff --git a/website/templates/js/blog_page.js b/website/templates/js/blog_page.js
index 524de8e..12dcac1 100644
--- a/website/templates/js/blog_page.js
+++ b/website/templates/js/blog_page.js
@@ -21,7 +21,7 @@
 	erpnext.blog.wrapper = wrapper;
 	
 	// sidebar
-	erpnext.blog.render_recent_list(wrapper);
+	//erpnext.blog.render_recent_list(wrapper);
 	
 	// unhide no-result if no comments found
 	erpnext.blog.toggle_no_result(wrapper);
diff --git a/website/templates/js/login.js b/website/templates/js/login.js
index 6e6fcc7..eb3a65c 100644
--- a/website/templates/js/login.js
+++ b/website/templates/js/login.js
@@ -1,25 +1,7 @@
-// ERPNext - web based ERP (http://erpnext.com)
-// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-// 
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
-// You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 wn.provide('erpnext.login');
 
-wn.pages["{{ name }}"].onload = function(wrapper) {
-	var lw = $i('login_wrapper');
-	$bs(lw, '1px 1px 3px #888');
-
+$(document).ready(function(wrapper) {
 	$('#login_btn').click(erpnext.login.doLogin)
 		
 	$('#password').keypress(function(ev){
@@ -31,33 +13,32 @@
 		}
 	});
 	$(document).trigger('login_rendered');
-}
-
-// Login Callback
-erpnext.login.onLoginReply = function(r, rtext) {
-	$('#login_btn').done_working();
-    if(r.message=="Logged In"){
-        window.location.href='app.html' + (get_url_arg('page') ? ('?page='+get_url_arg('page')) : '');
-    } else {
-        $i('login_message').innerHTML = '<span style="color: RED;">'+(r.message)+'</span>';
-        //if(r.exc)alert(r.exc);
-    }
-}
-
+})
 
 // Login
 erpnext.login.doLogin = function(){
 
     var args = {};
-    args['usr']=$i("login_id").value;
-    args['pwd']=$i("password").value;
-    //if($i('remember_me').checked) 
-      //args['remember_me'] = 1;
+    args['usr']=$("#login_id").val();
+    args['pwd']=$("#password").val();
+
+	if(!args.usr || !args.pwd) {
+		msgprint("Sorry, you can't login if you don't enter both the email id and password.")
+	}
 
 	$('#login_btn').set_working();
 	$('#login_message').empty();
 	
-    $c("login", args, erpnext.login.onLoginReply);
+    $c("login", args, function(r, rtext) {
+		$('#login_btn').done_working();
+	    if(r.message=="Logged In"){
+	        window.location.href='app.html' + (get_url_arg('page') 
+				? ('?page='+get_url_arg('page')) : '');
+	    } else {
+	        $i('login_message').innerHTML = '<span style="color: RED;">'
+				+(r.message)+'</span>';
+	    }
+	});
 
 	return false;
 }
diff --git a/website/templates/pages/blog.html b/website/templates/pages/blog.html
index 17fd6e7..c4a5dad 100644
--- a/website/templates/pages/blog.html
+++ b/website/templates/pages/blog.html
@@ -15,20 +15,13 @@
 	<div class="layout-wrapper layout-wrapper-background">
 		<div class="web-content" id="content-blog">
 			
-			<div class="layout-main-section">
+			<div class="layout-main">
 				<h1>Blog</h1>
 				<br>
 				<div id="blog-list">
 					<!-- blog list will be generated dynamically -->
 				</div>
 			</div>
-			
-			<div class="layout-side-section">
-				{% block blog_subscribe %}
-					{% include "html/blog_subscribe.html" %}
-				{% endblock %}
-			</div>
-			<div style="clear: both"></div>
 		</div>
 	</div>
 {% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/login.html b/website/templates/pages/login.html
index b2da474..a81b2f5 100644
--- a/website/templates/pages/login.html
+++ b/website/templates/pages/login.html
@@ -1,10 +1,9 @@
-{% extends "html/page.html" %}
+{% extends "html/base.html" %}
 
-{% block javascript %}
-	{% include "js/login.js" %}
-{% endblock %}
-
-{% block css %}
+{% block header %}
+	<script>
+		{% include "js/login.js" %}
+	</script>
 	{% include "css/login.css" %}
 {% endblock %}
 
@@ -12,45 +11,45 @@
 	Login Page
 {% endblock %}
 
-{% block content %}
-	<div class="layout-wrapper layout-wrapper-appframe" id='login_wrapper'>
-	<div class="appframe-area">
-		<div class="appframe-titlebar">
-			<div class="appframe-title">Login</div>
+{% block body %}
+	<div id='login_wrapper'>
+		<div class='layout-wrapper layout-main'>
+			<h3><i class="icon-lock" style="margin-top: 7px"></i> Login</h3>
+			<form autocomplete="on">
+				<table border="0" class="login-box">
+					<tbody>
+						<tr>
+							<td style="text-align: right;">Login Id</td>
+							<td><input id="login_id" type="text" style="width: 180px"/></td>
+						</tr>
+						<tr>
+							<td style="text-align: right;">Password</td>
+							<td><input id="password" type="password" style="width: 180px" /></td>
+						</tr>
+						<tr>
+							<td>&nbsp;</td>
+							<td>
+								<button type="submit" id="login_btn" 
+									class="btn btn-small btn-primary">Login</button>
+							</td>
+						</tr>
+						<tr>
+							<td>&nbsp;</td>
+							<td id="login_message">&nbsp;</td>
+						</tr>
+						</tbody>
+				</table>
+			</form>
+			<p style="text-align: center"><span class="link_type" 
+				onclick="erpnext.login.show_forgot_password()">Forgot Password</span></p>
 		</div>
-	</div>
-	<div class="layout-main" style="padding: 15px;">
-	<form autocomplete="on">
-		<table border="0" class="login-box">
-			<tbody>
-				<tr>
-					<td>Login Id</td>
-					<td><input id="login_id" type="text" style="width: 180px"/></td>
-				</tr>
-				<tr>
-					<td>Password</td>
-					<td><input id="password" type="password" style="width: 180px" /></td>
-				</tr>
-				<!--<tr>
-					<td style="text-align:right"><input id="remember_me" type="checkbox" /></td>
-					<td>Remember Me</td>
-				</tr>-->
-				<tr>
-					<td>&nbsp;</td>
-					<td>
-						<button type="submit" id="login_btn" class="btn btn-small btn-primary">Login</button>
-					</td>
-				</tr>
-				<tr>
-					<td>&nbsp;</td>
-					<td id="login_message">&nbsp;</td>
-				</tr>
-				</tbody>
-		</table>
-	</form>
-	<p style="margin-left: 72px;"><span class="link_type" 
-		onclick="erpnext.login.show_forgot_password()">Forgot Password</span></p>
-	</div>
+		<div class="login-footer">
+			<a href="index.html">Home</a> | 
+				<a href="https://erpnext.com">ERPNext</a><br><br>
+				{% if copyright %}
+				<div class="web-footer-copyright">&copy; {{ copyright }}
+				{% endif %}
+		</div>
 	</div>
 
 {% endblock %}
\ No newline at end of file
