diff --git a/erpnext/accounts/page/accounts_home/accounts_home.html b/erpnext/accounts/page/accounts_home/accounts_home.html
index 398f1e4..4f43f66 100644
--- a/erpnext/accounts/page/accounts_home/accounts_home.html
+++ b/erpnext/accounts/page/accounts_home/accounts_home.html
@@ -1,8 +1,6 @@
 <div class="layout-wrapper layout-wrapper-background">
 	<div class="appframe-area"></div>
 	<div class="layout-main-section">
-		<h1>Accounts</h1>
-		<hr>
 		<div style="width: 48%; float: left;">
 			<h4><a href="#!List/Journal Voucher">Journal Voucher</a></h4>
 			<p class="help">General Ledger Entries</p>
diff --git a/erpnext/accounts/page/accounts_home/accounts_home.js b/erpnext/accounts/page/accounts_home/accounts_home.js
index 9915226..d7dceaf 100644
--- a/erpnext/accounts/page/accounts_home/accounts_home.js
+++ b/erpnext/accounts/page/accounts_home/accounts_home.js
@@ -16,7 +16,7 @@
 
 pscript['onload_accounts-home'] = function(wrapper) {
 	erpnext.module_page.setup_page('Accounts', wrapper);
-	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'));
+	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'), 'Accounts');
 	
 	if(wn.control_panel.country!='India') {
 		$('.india-specific').toggle(false);
diff --git a/erpnext/buying/page/buying_home/buying_home.html b/erpnext/buying/page/buying_home/buying_home.html
index ee10d10..ff8b0ab 100644
--- a/erpnext/buying/page/buying_home/buying_home.html
+++ b/erpnext/buying/page/buying_home/buying_home.html
@@ -1,8 +1,6 @@
 <div class="layout-wrapper layout-wrapper-background">
 	<div class="appframe-area"></div>
 	<div class="layout-main-section">
-		<h1>Buying</h1>
-		<hr>
 		<div style="width: 48%; float: left;">
 			<h4><a href="#!List/Purchase Request">Purchase Request</a></h4>
 			<p class="help">Request for purchase</p>
diff --git a/erpnext/buying/page/buying_home/buying_home.js b/erpnext/buying/page/buying_home/buying_home.js
index 646ed0b..65803cc 100644
--- a/erpnext/buying/page/buying_home/buying_home.js
+++ b/erpnext/buying/page/buying_home/buying_home.js
@@ -15,6 +15,6 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 pscript['onload_buying-home'] = function(wrapper) {
-	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'));
+	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'), 'Buying');
 	erpnext.module_page.setup_page('Buying', wrapper);
 }
\ No newline at end of file
diff --git a/erpnext/hr/page/hr_home/hr_home.html b/erpnext/hr/page/hr_home/hr_home.html
index 7f0c65d..7f8fe73 100644
--- a/erpnext/hr/page/hr_home/hr_home.html
+++ b/erpnext/hr/page/hr_home/hr_home.html
@@ -1,8 +1,6 @@
 <div class="layout-wrapper layout-wrapper-background">
 	<div class="appframe-area"></div>
 	<div class="layout-main-section">
-		<h1>Human Resources</h1>
-		<hr>
 		<div style="width: 48%; float: left;">
 			<h4><a href="#!List/Attendance">Attendance</a></h4>
 			<p class="help">Attendance Mark</p>
diff --git a/erpnext/hr/page/hr_home/hr_home.js b/erpnext/hr/page/hr_home/hr_home.js
index 1971b46..1286609 100644
--- a/erpnext/hr/page/hr_home/hr_home.js
+++ b/erpnext/hr/page/hr_home/hr_home.js
@@ -15,6 +15,6 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 pscript['onload_hr-home'] = function(wrapper) {
-	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'));
+	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area') ,'Human Resources');
 	erpnext.module_page.setup_page('HR', wrapper);
 }
\ No newline at end of file
diff --git a/erpnext/production/page/production_home/production_home.html b/erpnext/production/page/production_home/production_home.html
index 6cb2182..50f99b3 100644
--- a/erpnext/production/page/production_home/production_home.html
+++ b/erpnext/production/page/production_home/production_home.html
@@ -1,8 +1,6 @@
 <div class="layout-wrapper layout-wrapper-background">
 	<div class="appframe-area"></div>
 	<div class="layout-main-section">
-		<h1>Production</h1>
-		<hr>
 		<div style="width: 48%; float: left;">
 			<h4><a href="#!List/Production Order">Production Order</a></h4>
 			<p class="help">Orders for manufacturing</p>
diff --git a/erpnext/production/page/production_home/production_home.js b/erpnext/production/page/production_home/production_home.js
index af4ba9d..a4bb398 100644
--- a/erpnext/production/page/production_home/production_home.js
+++ b/erpnext/production/page/production_home/production_home.js
@@ -15,6 +15,6 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 pscript['onload_production-home'] = function(wrapper) {
-	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'));
+	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'), 'Production');
 	erpnext.module_page.setup_page('Production', wrapper);
 }
\ No newline at end of file
diff --git a/erpnext/projects/page/projects_home/projects_home.html b/erpnext/projects/page/projects_home/projects_home.html
index 81235a2..fed846c 100644
--- a/erpnext/projects/page/projects_home/projects_home.html
+++ b/erpnext/projects/page/projects_home/projects_home.html
@@ -1,8 +1,6 @@
 <div class="layout-wrapper layout-wrapper-background">
 	<div class="appframe-area"></div>
 	<div class="layout-main-section">
-		<h1>Projects</h1>
-		<hr>
 		<div style="width: 48%; float: left;">
 			<h4><a href="#!List/Task">Task</a></h4>
 			<p class="help">Project activity / task</p>
diff --git a/erpnext/projects/page/projects_home/projects_home.js b/erpnext/projects/page/projects_home/projects_home.js
index 187fc57..5ff50c9 100644
--- a/erpnext/projects/page/projects_home/projects_home.js
+++ b/erpnext/projects/page/projects_home/projects_home.js
@@ -15,6 +15,6 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 pscript['onload_projects-home'] = function(wrapper) {
-	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'));
+	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'), 'Projects');
 	erpnext.module_page.setup_page('Projects', wrapper);
 }
\ No newline at end of file
diff --git a/erpnext/selling/page/selling_home/selling_home.html b/erpnext/selling/page/selling_home/selling_home.html
index 05f9858..acadfd6 100644
--- a/erpnext/selling/page/selling_home/selling_home.html
+++ b/erpnext/selling/page/selling_home/selling_home.html
@@ -1,8 +1,6 @@
 <div class="layout-wrapper layout-wrapper-background">
 	<div class="appframe-area"></div>
 	<div class="layout-main-section">
-		<h1>Selling</h1>
-		<hr>
 		<div style="width: 48%; float: left;">
 			<h4><a href="#!List/Lead">Lead</a></h4>
 			<p class="help">Prospective customers</p>
diff --git a/erpnext/selling/page/selling_home/selling_home.js b/erpnext/selling/page/selling_home/selling_home.js
index 2561ee4..1fe0e09 100644
--- a/erpnext/selling/page/selling_home/selling_home.js
+++ b/erpnext/selling/page/selling_home/selling_home.js
@@ -15,6 +15,6 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 pscript['onload_selling-home'] = function(wrapper) {
-	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'));
+	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'), 'Selling');
 	erpnext.module_page.setup_page('Selling', wrapper);
 }
\ No newline at end of file
diff --git a/erpnext/setup/page/setup/setup.html b/erpnext/setup/page/setup/setup.html
index 9cc84e8..70143a4 100644
--- a/erpnext/setup/page/setup/setup.html
+++ b/erpnext/setup/page/setup/setup.html
@@ -1,134 +1,134 @@
-<div class="layout-wrapper">
-	<a class="close" onclick="window.history.back();">&times;</a>
-	<h1>Setup</h1>
-	<hr>
-	<div class="setup-column">
-		<h3>Company</h3>
-		<p>
-			<b><a href="#!List/Company">Companies</a></b><br>
-			<span class="help">List of companies (not customers / suppliers)</span>
-		</p>
-		<p>
-			<b><a href="#!List/Fiscal Year">Fiscal Years</a></b><br>
-			<span class="help">Financial Years for books of accounts</span>
-		</p>
-		<p>
-			<b><a href="#!List/Currency">Currencies</a></b><br>
-			<span class="help">Currency Master</span>
-		</p>
+<div class="layout-wrapper layout-wrapper-appframe">
+	<div class="appframe-area"></div>
+	<div class="layout-main">
+		<div class="setup-column">
+			<h3>Company</h3>
+			<p>
+				<b><a href="#!List/Company">Companies</a></b><br>
+				<span class="help">List of companies (not customers / suppliers)</span>
+			</p>
+			<p>
+				<b><a href="#!List/Fiscal Year">Fiscal Years</a></b><br>
+				<span class="help">Financial Years for books of accounts</span>
+			</p>
+			<p>
+				<b><a href="#!List/Currency">Currencies</a></b><br>
+				<span class="help">Currency Master</span>
+			</p>
+		</div>
+		<div class="setup-column">
+			<h3>Users and Permissions</h3>
+			<p>
+				<b><a href="#!users">Users</a></b><br>
+				<span class="help">Add/remove users, set roles, passwords etc</span>
+			</p>
+			<p>
+				<b><a href="#!Permission Engine">Permission Manager</a></b><br>
+				<span class="help">Set permissions on transactions / masters</span>
+			</p>
+			<p>
+				<b><a href="#!List/Authorization Rule">Amount based Authorization Rules</a></b><br>
+				<span class="help">Restrict submission rights based on amount</span>
+			</p>
+		</div>
+		<div class="setup-column">
+			<h3>Data</h3>
+			<p>
+				<b><a href="#!data-import-tool">Data Import Tool</a></b><br>
+				<span class="help">Import data from spreadsheet (csv) files</span>
+			</p>
+			<p>
+				<b><a href="#!Form/Global Defaults/Global Defaults">Global Defaults</a></b><br>
+				<span class="help">Set default values for entry</span>
+			</p>
+			<p>
+				<b><a href="#!Trash">Recycle Bin</a></b><br>
+				<span class="help">Un-trash items</span>
+			</p>
+			<p>
+				<b><a href="#!Form/Rename Tool/Rename Tool">Rename Master</a></b><br>
+				<span class="help">Rename a single master record</span>
+			</p>
+			<p>
+				<b><a href="#!List/Bulk Rename Tool">Rename Many</a></b><br>
+				<span class="help">Rename by uploading a csv file</span>
+			</p>
+		</div>
+		<div class="setup-column">
+			<h3>Email and Notifications</h3>
+			<p>
+				<b><a href="#!Form/Email Settings/Email Settings">Email Settings</a></b><br>
+				<span class="help">Out going mail server and support ticket mailbox</span>
+			</p>
+			<p>
+				<b><a href="#!Form/Notification Control/Notification Control">Auto Notifications</a></b><br>
+				<span class="help">Automatic email sending to customers and suppliers</span>
+			</p>
+			<p>
+				<b><a href="#!List/Email Digest">Email Digests</a></b><br>
+				<span class="help">Daily, weekly, monthly email Digests</span>
+			</p>
+			<p>
+				<b><a href="#!Form/SMS Settings/SMS Settings">SMS Setup</a></b><br>
+				<span class="help">Setup outgoing SMS via your bulk SMS provider</span>
+			</p>
+			<p>
+				<b><a href="#!Form/SMS Center/SMS Center">Send Bulk SMS</a></b><br>
+				<span class="help">Send bulk SMS to leads, customers, contacts</span>
+			</p>
+		</div>
+		<div class="setup-column">
+			<h3>Customize ERPNext</h3>
+			<p>
+				<b><a href="#!Form/Customize Form/Customize Form">Customize Forms</a></b><br>
+				<span class="help">Change entry properties (hide fields, make mandatory etc)</span>
+			</p>
+			<p>
+				<b><a href="#!List/Custom Field">Custom Fields</a></b><br>
+				<span class="help">Add fields to forms</span>
+			</p>
+			<p>
+				<b><a href="#!List/Custom Script">Custom Scripts</a></b><br>
+				<span class="help">Add custom code to forms</span>
+			</p>
+			<p>
+				<b><a href="#!Form/Features Setup/Features Setup">Disable Features</a></b><br>
+				<span class="help">Simplify entry forms by disabling features</span>
+			</p>
+			<p>
+				<b><a href="#!modules_setup">Modules Setup</a></b><br>
+				<span class="help">Show, hide modules</span>
+			</p>
+			<p>
+				<b><a href="#!Form/Naming Series/Naming Series">Numbering Series</a></b><br>
+				<span class="help">Set multiple numbering series for transactions</span>
+			</p>
+		</div>
+		<div class="setup-column">
+			<h3>Branding and Printing</h3>
+			<p>
+				<b><a href="#!List/Letter Head">Letter Heads</a></b><br>
+				<span class="help">Letter heads for print</span>
+			</p>
+			<p>
+				<b><a href="#!List/Print Format">Print Formats</a></b><br>
+				<span class="help">HTML print formats for quotes, invoices etc</span>
+			</p>
+			<p>
+				<b><a href="#!List/Print Heading">Print Headings</a></b><br>
+				<span class="help">Add headers for standard print formats</span>
+			</p>
+			<!--
+			<p>
+				<b><a href="#!Form/Personalize/Personalize">Home Banner</a></b><br>
+				<span class="help">Add a home page banner</span>
+			</p>
+			-->
+			<p>
+				<b><a href="#!Form/Style Settings/Style Settings">Style Settings</a></b><br>
+				<span class="help">Change background fonts etc</span>
+			</p>
+		</div>
+		<div style="clear: both"></div>
 	</div>
-	<div class="setup-column">
-		<h3>Users and Permissions</h3>
-		<p>
-			<b><a href="#!users">Users</a></b><br>
-			<span class="help">Add/remove users, set roles, passwords etc</span>
-		</p>
-		<p>
-			<b><a href="#!Permission Engine">Permission Manager</a></b><br>
-			<span class="help">Set permissions on transactions / masters</span>
-		</p>
-		<p>
-			<b><a href="#!List/Authorization Rule">Amount based Authorization Rules</a></b><br>
-			<span class="help">Restrict submission rights based on amount</span>
-		</p>
-	</div>
-	<div class="setup-column">
-		<h3>Data</h3>
-		<p>
-			<b><a href="#!data-import-tool">Data Import Tool</a></b><br>
-			<span class="help">Import data from spreadsheet (csv) files</span>
-		</p>
-		<p>
-			<b><a href="#!Form/Global Defaults/Global Defaults">Global Defaults</a></b><br>
-			<span class="help">Set default values for entry</span>
-		</p>
-		<p>
-			<b><a href="#!Trash">Recycle Bin</a></b><br>
-			<span class="help">Un-trash items</span>
-		</p>
-		<p>
-			<b><a href="#!Form/Rename Tool/Rename Tool">Rename Master</a></b><br>
-			<span class="help">Rename a single master record</span>
-		</p>
-		<p>
-			<b><a href="#!List/Bulk Rename Tool">Rename Many</a></b><br>
-			<span class="help">Rename by uploading a csv file</span>
-		</p>
-	</div>
-	<div class="setup-column">
-		<h3>Email and Notifications</h3>
-		<p>
-			<b><a href="#!Form/Email Settings/Email Settings">Email Settings</a></b><br>
-			<span class="help">Out going mail server and support ticket mailbox</span>
-		</p>
-		<p>
-			<b><a href="#!Form/Notification Control/Notification Control">Auto Notifications</a></b><br>
-			<span class="help">Automatic email sending to customers and suppliers</span>
-		</p>
-		<p>
-			<b><a href="#!List/Email Digest">Email Digests</a></b><br>
-			<span class="help">Daily, weekly, monthly email Digests</span>
-		</p>
-		<p>
-			<b><a href="#!Form/SMS Settings/SMS Settings">SMS Setup</a></b><br>
-			<span class="help">Setup outgoing SMS via your bulk SMS provider</span>
-		</p>
-		<p>
-			<b><a href="#!Form/SMS Center/SMS Center">Send Bulk SMS</a></b><br>
-			<span class="help">Send bulk SMS to leads, customers, contacts</span>
-		</p>
-	</div>
-	<div class="setup-column">
-		<h3>Customize ERPNext</h3>
-		<p>
-			<b><a href="#!Form/Customize Form/Customize Form">Customize Forms</a></b><br>
-			<span class="help">Change entry properties (hide fields, make mandatory etc)</span>
-		</p>
-		<p>
-			<b><a href="#!List/Custom Field">Custom Fields</a></b><br>
-			<span class="help">Add fields to forms</span>
-		</p>
-		<p>
-			<b><a href="#!List/Custom Script">Custom Scripts</a></b><br>
-			<span class="help">Add custom code to forms</span>
-		</p>
-		<p>
-			<b><a href="#!Form/Features Setup/Features Setup">Disable Features</a></b><br>
-			<span class="help">Simplify entry forms by disabling features</span>
-		</p>
-		<p>
-			<b><a href="#!modules_setup">Modules Setup</a></b><br>
-			<span class="help">Show, hide modules</span>
-		</p>
-		<p>
-			<b><a href="#!Form/Naming Series/Naming Series">Numbering Series</a></b><br>
-			<span class="help">Set multiple numbering series for transactions</span>
-		</p>
-	</div>
-	<div class="setup-column">
-		<h3>Branding and Printing</h3>
-		<p>
-			<b><a href="#!List/Letter Head">Letter Heads</a></b><br>
-			<span class="help">Letter heads for print</span>
-		</p>
-		<p>
-			<b><a href="#!List/Print Format">Print Formats</a></b><br>
-			<span class="help">HTML print formats for quotes, invoices etc</span>
-		</p>
-		<p>
-			<b><a href="#!List/Print Heading">Print Headings</a></b><br>
-			<span class="help">Add headers for standard print formats</span>
-		</p>
-		<!--
-		<p>
-			<b><a href="#!Form/Personalize/Personalize">Home Banner</a></b><br>
-			<span class="help">Add a home page banner</span>
-		</p>
-		-->
-		<p>
-			<b><a href="#!Form/Style Settings/Style Settings">Style Settings</a></b><br>
-			<span class="help">Change background fonts etc</span>
-		</p>
-	</div>
-	<div style="clear: both"></div>
 </div>
diff --git a/erpnext/setup/page/setup/setup.js b/erpnext/setup/page/setup/setup.js
index 3ee0027..6c88a90 100644
--- a/erpnext/setup/page/setup/setup.js
+++ b/erpnext/setup/page/setup/setup.js
@@ -15,5 +15,6 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 pscript.onload_Setup = function(wrapper) {
+	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'), 'Setup');	
 	erpnext.module_page.hide_links(wrapper);
 }
\ No newline at end of file
diff --git a/erpnext/startup/js/modules.js b/erpnext/startup/js/modules.js
index 16a32d3..a3e7ee8 100644
--- a/erpnext/startup/js/modules.js
+++ b/erpnext/startup/js/modules.js
@@ -101,8 +101,8 @@
 	// show link to all reports
 	$parent1.find('.list-toolbar-wrapper')
 		.prepend("<div class=\"show-all-reports\">\
-			<a href=\"#List/Search Criteria\"> [ Show List Of All Reports ]</a></div>");
+			<a href=\"#List/Search Criteria\"> [ List Of All Reports ]</a></div>");
 	$parent2.find('.list-toolbar-wrapper')
 		.prepend("<div class=\"show-all-reports\">\
-			<a href=\"#List/Report\"> [ Show List Of All Reports (Beta) ]</a></div>");
+			<a href=\"#List/Report\"> [ List Of All Reports (New) ]</a></div>");
 }
\ No newline at end of file
diff --git a/erpnext/stock/page/stock_home/stock_home.html b/erpnext/stock/page/stock_home/stock_home.html
index d1b2507..ef941ab 100644
--- a/erpnext/stock/page/stock_home/stock_home.html
+++ b/erpnext/stock/page/stock_home/stock_home.html
@@ -1,8 +1,6 @@
 <div class="layout-wrapper layout-wrapper-background">
 	<div class="appframe-area"></div>
 	<div class="layout-main-section">
-		<h1>Stock</h1>
-		<hr>
 		<div style="width: 48%; float: left;">
 			<h4><a href="#!List/Stock Entry">Stock Entry</a></h4>
 			<p class="help">Transfer stock from one warehouse to another</p>
diff --git a/erpnext/stock/page/stock_home/stock_home.js b/erpnext/stock/page/stock_home/stock_home.js
index 7df9b27..97f5ec9 100644
--- a/erpnext/stock/page/stock_home/stock_home.js
+++ b/erpnext/stock/page/stock_home/stock_home.js
@@ -15,6 +15,6 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 pscript['onload_stock-home'] = function(wrapper) {
-	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'));
+	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'), 'Stock');
 	erpnext.module_page.setup_page('Stock', wrapper);
 }
\ No newline at end of file
diff --git a/erpnext/support/page/support_home/support_home.html b/erpnext/support/page/support_home/support_home.html
index 9404f12..ebc6f71 100644
--- a/erpnext/support/page/support_home/support_home.html
+++ b/erpnext/support/page/support_home/support_home.html
@@ -1,8 +1,6 @@
 <div class="layout-wrapper layout-wrapper-background">
 	<div class="appframe-area"></div>
 	<div class="layout-main-section">
-		<h1>Support</h1>
-		<hr>
 		<div style="width: 48%; float: left;">
 			<h4><a href="#!List/Support Ticket">Support Ticket</a></h4>
 			<p class="help">Support queries from customers via email or website</p>
diff --git a/erpnext/support/page/support_home/support_home.js b/erpnext/support/page/support_home/support_home.js
index 3b95eb6..99b109f 100644
--- a/erpnext/support/page/support_home/support_home.js
+++ b/erpnext/support/page/support_home/support_home.js
@@ -15,6 +15,6 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 pscript['onload_support-home'] = function(wrapper) {
-	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'));
+	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'), 'Support');
 	erpnext.module_page.setup_page('Support', wrapper);
 }
\ No newline at end of file
diff --git a/erpnext/website/page/website_home/website_home.html b/erpnext/website/page/website_home/website_home.html
index 76dab6a..20b543b 100644
--- a/erpnext/website/page/website_home/website_home.html
+++ b/erpnext/website/page/website_home/website_home.html
@@ -1,9 +1,6 @@
 <div class="layout-wrapper layout-wrapper-background">
 	<div class="appframe-area"></div>
 	<div class="layout-main-section">
-		<h1>Website</h1>
-		<hr>
-
 		<div style="width: 48%; float: left;">
 			<h4><a href="#!List/Web Page">Web Page</a></h4>
 			<p class="help">Static (content) web page</p>
diff --git a/erpnext/website/page/website_home/website_home.js b/erpnext/website/page/website_home/website_home.js
index 51f12ba..15391ec 100644
--- a/erpnext/website/page/website_home/website_home.js
+++ b/erpnext/website/page/website_home/website_home.js
@@ -15,6 +15,6 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 pscript['onload_website-home'] = function(wrapper) {
-	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'));
+	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'), 'Website');
 	erpnext.module_page.setup_page('Website', wrapper);
 }
\ No newline at end of file
diff --git a/public/css/all-app.css b/public/css/all-app.css
index 84ac275..93dfe47 100644
--- a/public/css/all-app.css
+++ b/public/css/all-app.css
@@ -2314,6 +2314,11 @@
 	border-bottom: 1px solid #eee;
 }
 
+.appframe-titlebar .label {
+	vertical-align: middle;
+	margin-right: 7px;
+}
+
 div.form-section-head {
 	margin: 11px -15px 3px -15px;
 	border-top: 1px solid #ccc;
@@ -3237,12 +3242,8 @@
  *	lib/css/ui/views.css
  */
 
-.breadcrumbs {
-	color: #000000;
-}
-
-.breadcrumbs a {
-	color: #000000;
+.breadcrumb-area, .breadcrumb-area span {
+	vertical-align: middle;
 }
 
 div.appframe-titlebar {
@@ -3260,6 +3261,14 @@
 	border-radius: 5px 5px 0px 0px;
 	-webkit-border-radius: 5px 5px 0px 0px;
 	-moz-border-radius: 5px 5px 0px 0px;
+
+	text-shadow: 0px 1px 1px #fff;
+	color: #555;
+}
+
+span.appframe-title {
+	font-size: 160%;
+	font-weight: bold;
 }
 
 div.appframe-toolbar {
diff --git a/public/css/all-web.css b/public/css/all-web.css
index ec2fbcd..a2de6b6 100644
--- a/public/css/all-web.css
+++ b/public/css/all-web.css
@@ -2493,12 +2493,8 @@
  *	lib/css/ui/views.css
  */
 
-.breadcrumbs {
-	color: #000000;
-}
-
-.breadcrumbs a {
-	color: #000000;
+.breadcrumb-area, .breadcrumb-area span {
+	vertical-align: middle;
 }
 
 div.appframe-titlebar {
@@ -2516,6 +2512,14 @@
 	border-radius: 5px 5px 0px 0px;
 	-webkit-border-radius: 5px 5px 0px 0px;
 	-moz-border-radius: 5px 5px 0px 0px;
+
+	text-shadow: 0px 1px 1px #fff;
+	color: #555;
+}
+
+span.appframe-title {
+	font-size: 160%;
+	font-weight: bold;
 }
 
 div.appframe-toolbar {
diff --git a/public/js/all-app.js b/public/js/all-app.js
index 10cc23f..32a2e29 100644
--- a/public/js/all-app.js
+++ b/public/js/all-app.js
@@ -950,11 +950,9 @@
  */
 wn.provide('wn.views.doclistview');wn.provide('wn.doclistviews');wn.views.doclistview.show=function(doctype){var page_name=wn.get_route_str();if(wn.pages[page_name]){wn.container.change_to(wn.pages[page_name]);}else{var route=wn.get_route();if(route[1]){wn.model.with_doctype(route[1],function(r){if(r&&r['403']){return;}
 new wn.views.DocListView(route[1]);});}}}
-wn.views.DocListView=wn.ui.Listing.extend({init:function(doctype){this.doctype=doctype;this.label=get_doctype_label(doctype);this.label=(this.label.toLowerCase().substr(-4)=='list')?this.label:(this.label+' List');this.make_page();this.setup();},make_page:function(){var me=this;var page_name=wn.get_route_str();var page=wn.container.add_page(page_name);wn.container.change_to(page_name);this.$page=$(page);this.$page.html(repl('<div class="layout-wrapper layout-wrapper-background">\
+wn.views.DocListView=wn.ui.Listing.extend({init:function(doctype){this.doctype=doctype;this.label=get_doctype_label(doctype);this.label=(this.label.toLowerCase().substr(-4)=='list')?this.label:(this.label+' List');this.make_page();this.setup();},make_page:function(){var me=this;var page_name=wn.get_route_str();var page=wn.container.add_page(page_name);wn.container.change_to(page_name);this.$page=$(page);this.$page.html('<div class="layout-wrapper layout-wrapper-background">\
    <div class="appframe-area"></div>\
    <div class="layout-main-section">\
-    <h1>%(label)s</h1>\
-    <hr>\
     <div class="wnlist-area"><div class="help">Loading...</div></div>\
    </div>\
    <div class="layout-side-section">\
@@ -966,7 +964,7 @@
     </div>\
    </div>\
    <div style="clear: both"></div>\
-  </div>',{label:this.label}));this.appframe=new wn.ui.AppFrame(this.$page.find('.appframe-area'));wn.views.breadcrumbs($('<span>').appendTo(this.appframe.$titlebar),locals.DocType[this.doctype].module);},setup:function(){var me=this;me.can_delete=wn.model.can_delete(me.doctype);me.meta=locals.DocType[me.doctype];me.$page.find('.wnlist-area').empty(),me.setup_docstatus_filter();me.setup_listview();me.init_list();me.init_stats();me.make_report_button();me.add_delete_option();},make_report_button:function(){var me=this;if(wn.boot.profile.can_get_report.indexOf(this.doctype)!=-1){this.appframe.add_button('Build Report',function(){wn.set_route('Report2',me.doctype);},'icon-th')}},setup_docstatus_filter:function(){var me=this;this.can_submit=$.map(locals.DocPerm,function(d){if(d.parent==me.meta.name&&d.submit)return 1
+  </div>');this.appframe=new wn.ui.AppFrame(this.$page.find('.appframe-area'));wn.views.breadcrumbs($('<span class="breadcrumb-area">').appendTo(this.appframe.$titlebar),locals.DocType[this.doctype].module,this.doctype);},setup:function(){var me=this;me.can_delete=wn.model.can_delete(me.doctype);me.meta=locals.DocType[me.doctype];me.$page.find('.wnlist-area').empty(),me.setup_docstatus_filter();me.setup_listview();me.init_list();me.init_stats();me.make_report_button();me.add_delete_option();},make_report_button:function(){var me=this;if(wn.boot.profile.can_get_report.indexOf(this.doctype)!=-1){this.appframe.add_button('Build Report',function(){wn.set_route('Report2',me.doctype);},'icon-th')}},setup_docstatus_filter:function(){var me=this;this.can_submit=$.map(locals.DocPerm,function(d){if(d.parent==me.meta.name&&d.submit)return 1
 else return null;}).length;if(this.can_submit){this.$page.find('.show-docstatus').removeClass('hide');this.$page.find('.show-docstatus input').click(function(){me.run();})}},setup_listview:function(){if(this.meta.__listjs){eval(this.meta.__listjs);this.listview=new wn.doclistviews[this.doctype](this);}else{this.listview=new wn.views.ListView(this);}
 this.listview.parent=this;this.wrapper=this.$page.find('.wnlist-area');this.page_length=20;this.allow_delete=true;},init_list:function(auto_run){this.make({method:'webnotes.widgets.doclistview.get',get_args:this.get_args,parent:this.wrapper,start:0,page_length:this.page_length,show_filters:true,show_grid:true,new_doctype:this.doctype,allow_delete:this.allow_delete,no_result_message:this.make_no_result(),columns:this.listview.fields});if((auto_run!==false)&&(auto_run!==0))this.run();},make_no_result:function(){return repl('<div class="well"><p>No %(doctype_label)s found</p>\
   %(description)s\
@@ -1270,7 +1268,7 @@
  *	lib/js/legacy/wn/page_layout.js
  */
 wn.PageLayout=function(args){$.extend(this,args)
-this.wrapper=$a(this.parent,'div','layout-wrapper layout-wrapper-background');this.head=$a(this.wrapper,'div');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.main_head=$a(this.main,'div','form-title');this.body=$a(this.main,'div');this.footer=$a(this.main,'div');if(this.heading){this.page_head=new PageHeader(this.head,this.heading);}}
+this.wrapper=$a(this.parent,'div','layout-wrapper layout-wrapper-background');this.head=$a(this.wrapper,'div');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.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/page_sidebar.js
  */
@@ -1458,11 +1456,8 @@
 /*
  *	lib/js/wn/views/breadcrumbs.js
  */
-wn.provide('wn.views');wn.views.breadcrumbs=function(parent,module,doctype,name){$(parent).empty();var $bspan=$(repl('<span class="breadcrumbs">\
-  <a href="#%(home_page)s">Home</a></span>',{home_page:wn.boot.home_page}));if(module&&wn.modules[module]){$bspan.append(repl(' / <a href="#!%(module_page)s">%(module)s Home</a>',{module:module,module_page:wn.modules[module]}))}
-if(doctype&&(locals.DocType[doctype]&&!locals.DocType[doctype].issingle)){$bspan.append(repl(' / <a href="#!List/%(doctype)s">%(doctype)s</a>',{doctype:doctype}))}
-if(name){$bspan.append(' / '+name.bold())}
-$bspan.appendTo(parent);}
+wn.provide('wn.views');wn.views.breadcrumbs=function(parent,module,doctype,name){$(parent).empty();var $bspan=$(parent);if(name){$bspan.append('<span class="appframe-title">'+name+'</span>');}else if(doctype){$bspan.append('<span class="appframe-title">'+doctype+' List </span>');}else if(module){$bspan.append('<span class="appframe-title">'+module+'</span>');}
+if(name&&doctype&&(!locals['DocType'][doctype].issingle)){$bspan.append(repl('<span> in <a href="#!List/%(doctype)s">%(doctype)s List</a></span>',{doctype:doctype}))};if(doctype&&module&&wn.modules&&wn.modules[module]){$bspan.append(repl('<span> in <a href="#!%(module_page)s">%(module)s</a></span>',{module:module,module_page:wn.modules[module]}))}}
 /*
  *	lib/js/legacy/widgets/form/fields.js
  */
@@ -1694,11 +1689,11 @@
  *	lib/js/legacy/widgets/form/form_header.js
  */
 _f.FrmHeader=Class.extend({init:function(parent,frm){this.appframe=new wn.ui.AppFrame(parent)
-this.appframe.$titlebar.append('<span class="label-area"></span>\
+this.appframe.$titlebar.append('</span>\
     <span class="breadcrumb-area"></span>');this.$w=this.appframe.$w;},refresh:function(){wn.views.breadcrumbs($(this.$w.find('.breadcrumb-area')),cur_frm.meta.module,cur_frm.meta.name,cur_frm.docname);this.refresh_labels();this.refresh_toolbar();},refresh_labels:function(){var labinfo={0:['Saved','label-success'],1:['Submitted','label-info'],2:['Cancelled','label-important']}[cint(cur_frm.doc.docstatus)];if(labinfo[0]=='Saved'&&cur_frm.meta.is_submittable){labinfo[0]='Saved, to Submit';}
 if(cur_frm.doc.__unsaved||cur_frm.doc.__islocal){labinfo[0]='Not Saved';labinfo[1]='label-warning'}
-this.set_label(labinfo);if(cur_frm.doc.__unsaved&&cint(cur_frm.doc.docstatus)==1&&this.appframe.buttons['Update']){this.appframe.buttons['Update'].toggle(true);}},set_label:function(labinfo){this.$w.find('.label-area').html(repl('<span class="label %(lab_class)s">\
-   %(lab_status)s</span>',{lab_status:labinfo[0],lab_class:labinfo[1]}));},refresh_toolbar:function(){this.appframe.clear_buttons();var p=cur_frm.get_doc_perms();if(cur_frm.meta.read_only_onload&&!cur_frm.doc.__islocal){if(!cur_frm.editable)
+this.set_label(labinfo);if(cur_frm.doc.__unsaved&&cint(cur_frm.doc.docstatus)==1&&this.appframe.buttons['Update']){this.appframe.buttons['Update'].toggle(true);}},set_label:function(labinfo){this.$w.find('.label').remove();$(repl('<span class="label %(lab_class)s">\
+   %(lab_status)s</span>',{lab_status:labinfo[0],lab_class:labinfo[1]})).insertBefore(this.$w.find('.breadcrumb-area'))},refresh_toolbar:function(){this.appframe.clear_buttons();var p=cur_frm.get_doc_perms();if(cur_frm.meta.read_only_onload&&!cur_frm.doc.__islocal){if(!cur_frm.editable)
 this.appframe.add_button('Edit',function(){cur_frm.edit_doc();},'icon-pencil');else
 this.appframe.add_button('Print View',function(){cur_frm.is_editable[cur_frm.docname]=0;cur_frm.refresh();},'icon-print');}
 var docstatus=cint(cur_frm.doc.docstatus);if(docstatus==0&&p[WRITE]){this.appframe.add_button('Save',function(){cur_frm.save('Save');},'');this.appframe.buttons['Save'].addClass('btn-info');}
@@ -1765,7 +1760,7 @@
 _f.Frm.prototype.get_doc_perms=function(){var p=[0,0,0,0,0,0];for(var i=0;i<this.perm.length;i++){if(this.perm[i]){if(this.perm[i][READ])p[READ]=1;if(this.perm[i][WRITE])p[WRITE]=1;if(this.perm[i][SUBMIT])p[SUBMIT]=1;if(this.perm[i][CANCEL])p[CANCEL]=1;if(this.perm[i][AMEND])p[AMEND]=1;}}
 return p;}
 _f.Frm.prototype.refresh_header=function(){if(!this.meta.in_dialog){set_title(this.meta.issingle?this.doctype:this.docname);}
-this.page_layout.main_head.innerHTML='<h2>'+this.docname+'</h2>';if(this.frm_head)this.frm_head.refresh();if(wn.ui.toolbar.recent)
+if(this.frm_head)this.frm_head.refresh();if(wn.ui.toolbar.recent)
 wn.ui.toolbar.recent.add(this.doctype,this.docname,1);}
 _f.Frm.prototype.check_doc_perm=function(){var dt=this.parent_doctype?this.parent_doctype:this.doctype;var dn=this.parent_docname?this.parent_docname:this.docname;this.perm=get_perm(dt,dn);this.orig_perm=get_perm(dt,dn,1);if(!this.perm[0][READ]){if(user=='Guest'){if(_f.temp_access[dt]&&_f.temp_access[dt][dn]){this.perm=[[1,0,0]]
 return 1;}}
@@ -2278,8 +2273,8 @@
     %(criteria_name)s</a>',data))},args:{module:module},no_refresh:true,callback:function(r){erpnext.module_page.hide_links($parent1)}});wrapper.list1.run();wrapper.list2=new wn.ui.Listing({parent:$parent2,method:'utilities.get_report_list',render_row:function(row,data){$(row).html(repl('<a href="#!Report2/%(ref_doctype)s/%(name)s" \
     data-doctype="%(ref_doctype)s">\
     %(name)s</a>',data))},args:{module:module},no_refresh:true,callback:function(r){erpnext.module_page.hide_links($parent2)}});wrapper.list2.run();$parent1.find('.list-toolbar-wrapper').prepend("<div class=\"show-all-reports\">\
-   <a href=\"#List/Search Criteria\"> [ Show List Of All Reports ]</a></div>");$parent2.find('.list-toolbar-wrapper').prepend("<div class=\"show-all-reports\">\
-   <a href=\"#List/Report\"> [ Show List Of All Reports (Beta) ]</a></div>");}
+   <a href=\"#List/Search Criteria\"> [ List Of All Reports ]</a></div>");$parent2.find('.list-toolbar-wrapper').prepend("<div class=\"show-all-reports\">\
+   <a href=\"#List/Report\"> [ List Of All Reports (New) ]</a></div>");}
 /*
  *	erpnext/startup/js/toolbar.js
  */
