diff --git a/accounts/page/accounts_home/accounts_home.js b/accounts/page/accounts_home/accounts_home.js
index d7dceaf..8e71151 100644
--- a/accounts/page/accounts_home/accounts_home.js
+++ b/accounts/page/accounts_home/accounts_home.js
@@ -15,8 +15,8 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 pscript['onload_accounts-home'] = function(wrapper) {
-	erpnext.module_page.setup_page('Accounts', wrapper);
 	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'), 'Accounts');
+	erpnext.module_page.setup_page('Accounts', wrapper);
 	
 	if(wn.control_panel.country!='India') {
 		$('.india-specific').toggle(false);
diff --git a/home/page/desktop/desktop.js b/home/page/desktop/desktop.js
index 9ba5253..b353774 100644
--- a/home/page/desktop/desktop.js
+++ b/home/page/desktop/desktop.js
@@ -18,54 +18,37 @@
 }
 
 erpnext.desktop.add_classes = function() {
-	var classes = [
-		{ name: 'red', start: '#A90329', middle: '#8F0222',	end: '#6D0019' },
-		{ name: 'brown', start: '#723e02', middle: '#633501', end: '#4a2700' },
-		{ name: 'green', start: '#4b5602', middle: '#3f4901', end: '#313800' },
-		{ name: 'blue', start: '#026584', middle: '#025770', end: '#004256' },
-		{ name: 'yellow', start: '#be7902', middle: '#a66a02', end: '#865500' },
-		{ name: 'purple', start: '#4d017d', middle: '#410169', end: '#310050' },
-		{ name: 'ocean', start: '#02a47e', middle: '#018d6c', end: '#006a51' },
-		{ name: 'pink', start: '#a40281', middle: '#8d016e', end: '#6a0053' },
-		{ name: 'grey', start: '#545454', middle: '#484848', end: '#363636' },
-		{ name: 'dark-red', start: '#68021a', middle: '#590116', end: '#440010' },
-		{ name: 'leaf-green', start: '#b0a400', middle: '#968c00', end: '#726a00' },
-		//{ name: 'dark-blue', start: '#023bae', middle: '#013295', end: '#002672' },
-		{ name: 'bright-green', start: '#03ad1f', middle: '#02941a', end: '#007213' },
-		{ name: 'bright-yellow', start: '#ffd65e', middle: '#febf04', end: '#ed9017' },
-		{ name: 'peacock', start: '#026584', middle: '#026584', end: '#322476' },
-		{ name: 'violet', start: '#50448e', middle: '#473b7f', end: '#3a3169' },
-		{ name: 'ultra-dark-green', start: '#014333', middle: '#01372b', end: '#002a20' },
-	];
-	$.each(classes, function(i, v) {
+	$.each(wn.module_css_classes, function(i, v) {
+		v.name = i;
 		$(repl(erpnext.desktop.gradient, v)).appendTo('head');
 	});
 }
 
 erpnext.desktop.render = function() {
 	var icons = {
-		'Accounts': { gradient: 'blue', sprite: 'account', label: 'Accounts'},
-		'Selling': { gradient: 'green', sprite: 'selling', label: 'Selling'},
-		'Stock': { gradient: 'yellow', sprite: 'stock', label: 'Stock'},
-		'Buying': { gradient: 'red', sprite: 'buying', label: 'Buying'},
-		'Support': { gradient: 'purple', sprite: 'support', label: 'Support'},
-		'HR': { gradient: 'ocean', sprite: 'hr', label: 'Human<br />Resources'},
-		'Projects':	{ gradient: 'violet', sprite: 'project', label: 'Projects'},
-		'Production': { gradient: 'dark-red', sprite: 'production', label: 'Production'},
-		'Website': { gradient: 'leaf-green', sprite: 'website', label: 'Website'},
-		'Activity': { gradient: 'brown', sprite: 'feed', label: 'Activity'},
-		'Setup': { gradient: 'grey', sprite: 'setting', label: 'Setup'},
-		'Dashboard': { gradient: 'bright-green', sprite: 'dashboard', label: 'Dashboard'},
-		'To Do': { gradient: 'bright-yellow', sprite: 'todo', label: 'To Do'},
-		'Messages': { gradient: 'pink', sprite: 'messages', label: 'Messages'},
-		'Calendar': { gradient: 'peacock', sprite: 'calendar', label: 'Calendar'},
-		'Knowledge Base': { gradient: 'ultra-dark-green', sprite: 'kb', label: 'Knowledge<br />Base'}
+		'Accounts': { sprite: 'account', label: 'Accounts'},
+		'Selling': { sprite: 'selling', label: 'Selling'},
+		'Stock': { sprite: 'stock', label: 'Stock'},
+		'Buying': { sprite: 'buying', label: 'Buying'},
+		'Support': { sprite: 'support', label: 'Support'},
+		'HR': { sprite: 'hr', label: 'Human<br />Resources'},
+		'Projects':	{ sprite: 'project', label: 'Projects'},
+		'Production': { sprite: 'production', label: 'Production'},
+		'Website': { sprite: 'website', label: 'Website'},
+		'Activity': { sprite: 'feed', label: 'Activity'},
+		'Setup': { sprite: 'setting', label: 'Setup'},
+		'Dashboard': { sprite: 'dashboard', label: 'Dashboard'},
+		'To Do': { sprite: 'todo', label: 'To Do'},
+		'Messages': { sprite: 'messages', label: 'Messages'},
+		'Calendar': { sprite: 'calendar', label: 'Calendar'},
+		'Knowledge Base': { sprite: 'kb', label: 'Knowledge<br />Base'}
 	}
-	
 
 	var add_icon = function(m) {
 		var icon = icons[m];
 		icon.link = erpnext.modules[m];
+		icon.gradient = wn.module_css_map[m];
+		
 		$('#icon-grid').append(repl('\
 			<div id="%(sprite)s" class="case-wrapper"><a href="#!%(link)s">\
 				<div class="case-border case-%(gradient)s">\
@@ -76,7 +59,6 @@
 	}
 	
 	// setup
-
 	for(var i in wn.boot.modules_list) {
 		var m = wn.boot.modules_list[i];
 		if(!in_list(['Setup', 'Dashboard'], m) && wn.boot.profile.allow_modules.indexOf(m)!=-1)
diff --git a/public/build.json b/public/build.json
index 7ff8ac0..e497d39 100644
--- a/public/build.json
+++ b/public/build.json
@@ -13,6 +13,7 @@
 	"public/js/all-app.js": [
 		"app/public/js/startup.js",
 		"app/public/js/modules.js",
+		"app/public/js/themes.js",
 		"app/public/js/toolbar.js",
 		"app/public/js/feature_setup.js",
 		"app/public/js/conf.js"
diff --git a/public/js/modules.js b/public/js/modules.js
index 914df81..a9e82d6 100644
--- a/public/js/modules.js
+++ b/public/js/modules.js
@@ -14,9 +14,74 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+erpnext.modules = {
+	'Selling': 'selling-home',
+	'Accounts': 'accounts-home',
+	'Stock': 'stock-home',
+	'Buying': 'buying-home',
+	'Support': 'support-home',
+	'Projects': 'projects-home',
+	'Production': 'production-home',
+	'Website': 'website-home',
+	'HR': 'hr-home',
+	'Setup': 'Setup',
+	'Activity': 'activity',
+	'To Do': 'todo',
+	'Calendar': 'calendar',
+	'Messages': 'messages',
+	'Knowledge Base': 'questions',
+	'Dashboard': 'dashboard'
+}
+
+// wn.modules is used in breadcrumbs for getting module home page
+wn.provide('wn.modules');
+$.extend(wn.modules, erpnext.modules);
+wn.modules['Core'] = 'Setup';
+
+wn.module_css_classes  = {
+	'red': { start: '#A90329', middle: '#8F0222',	end: '#6D0019' },
+	'brown': { start: '#723e02', middle: '#633501', end: '#4a2700' },
+	'green': { start: '#4b5602', middle: '#3f4901', end: '#313800' },
+	'blue': { start: '#026584', middle: '#025770', end: '#004256' },
+	'yellow': { start: '#be7902', middle: '#a66a02', end: '#865500' },
+	'purple': { start: '#4d017d', middle: '#410169', end: '#310050' },
+	'ocean': { start: '#02a47e', middle: '#018d6c', end: '#006a51' },
+	'pink': { start: '#a40281', middle: '#8d016e', end: '#6a0053' },
+	'grey': { start: '#545454', middle: '#484848', end: '#363636' },
+	'dark-red': { start: '#68021a', middle: '#590116', end: '#440010' },
+	'leaf-green': { start: '#b0a400', middle: '#968c00', end: '#726a00' },
+	//'dark-blue': { start: '#023bae', middle: '#013295', end: '#002672' },
+	'bright-green': { start: '#03ad1f', middle: '#02941a', end: '#007213' },
+	'bright-yellow': { start: '#ffd65e', middle: '#febf04', end: '#ed9017' },
+	'peacock': { start: '#026584', middle: '#026584', end: '#322476' },
+	'violet': { start: '#50448e', middle: '#473b7f', end: '#3a3169' },
+	'ultra-dark-green': { start: '#014333', middle: '#01372b', end: '#002a20' },		
+}
+
+wn.module_css_map = {
+	'Accounts': 'blue',
+	'Selling': 'green',
+	'Stock': 'yellow',
+	'Buying': 'red',
+	'Support': 'purple',
+	'HR': 'ocean',
+	'Projects':	'violet',
+	'Production': 'dark-red',
+	'Website': 'leaf-green',
+	'Activity': 'brown',
+	'Setup': 'grey',
+	'Dashboard': 'bright-green',
+	'To Do': 'bright-yellow',
+	'Messages': 'pink',
+	'Calendar': 'peacock',
+	'Knowledge Base': 'ultra-dark-green'
+}
+
+
 wn.provide('erpnext.module_page');
 
 erpnext.module_page.setup_page = function(module, wrapper) {
+	wrapper.appframe.set_marker(module);
 	erpnext.module_page.hide_links(wrapper);
 	erpnext.module_page.make_list(module, wrapper);
 	$(wrapper).find("a[title]").tooltip({
diff --git a/public/js/startup.js b/public/js/startup.js
index a934063..8cc02cb 100644
--- a/public/js/startup.js
+++ b/public/js/startup.js
@@ -19,30 +19,6 @@
 
 wn.provide('erpnext.startup');
 
-erpnext.modules = {
-	'Selling': 'selling-home',
-	'Accounts': 'accounts-home',
-	'Stock': 'stock-home',
-	'Buying': 'buying-home',
-	'Support': 'support-home',
-	'Projects': 'projects-home',
-	'Production': 'production-home',
-	'Website': 'website-home',
-	'HR': 'hr-home',
-	'Setup': 'Setup',
-	'Activity': 'activity',
-	'To Do': 'todo',
-	'Calendar': 'calendar',
-	'Messages': 'messages',
-	'Knowledge Base': 'questions',
-	'Dashboard': 'dashboard'
-}
-
-// wn.modules is used in breadcrumbs for getting module home page
-wn.provide('wn.modules');
-$.extend(wn.modules, erpnext.modules);
-wn.modules['Core'] = 'Setup';
-
 erpnext.startup.set_globals = function() {
 	if(inList(user_roles,'System Manager')) is_system_manager = 1;
 }
@@ -168,11 +144,6 @@
 	set_style(repl('#body_div { background: url("files/%(src)s") repeat;}', {src:src}))
 }
 
-// start
-$(document).bind('startup', function() {
-	erpnext.startup.start();
-});
-
 // subject, sender, description
 erpnext.send_message = function(opts) {
 	if(opts.btn) {
@@ -210,56 +181,7 @@
 	return false;
 });
 
-// theme setter
-
-erpnext.themes = {
-	"Default": {
-		sidebar: "#f2f2f2",
-		titlebar: "#dfdfdf",
-		toolbar: "#e9e9e9"
-	},
-	Desert: {
-		sidebar: "#FFFDF7",
-		titlebar: "#DAD4C2",
-		toolbar: "#FAF6E9"
-	},
-	Tropic: {
-		sidebar: "#FAFFF7",
-		toolbar: "#EEFAE9",
-		titlebar: "#D7ECD1"
-	},
-	Sky: {
-		sidebar: "#F7FFFE",
-		toolbar: "#E9F9FA",
-		titlebar: "#D7F5F7"
-	},
-	Snow: {
-		sidebar: "#fff",
-		titlebar: "#fff",
-		toolbar: "#fff"
-	},
-	Sunny: {
-		sidebar: "#FFFFEF",
-		titlebar: "#FFFDCA",
-		toolbar: "lightYellow"		
-	},
-	Floral: {
-		sidebar: "#FFF7F7",
-		titlebar: "#F7CBCB",
-		toolbar: "#FAE9EA"		
-	},
-	Ocean: {
-		sidebar: "#F2FFFE",
-		titlebar: "#8ACFC7",
-		toolbar: "#C3F3EE"
-	}
-}
-
-erpnext.set_theme = function(theme) {
-	wn.dom.set_style(repl(".layout-wrapper-background { \
-		background-color: %(sidebar)s !important; }\
-	.appframe-toolbar { \
-		background-color: %(toolbar)s !important; }\
-	.appframe-titlebar { \
-		background-color: %(titlebar)s !important; }", erpnext.themes[theme]));
-}
\ No newline at end of file
+// start
+$(document).bind('startup', function() {
+	erpnext.startup.start();
+});
diff --git a/public/js/themes.js b/public/js/themes.js
index a60d3cf..1327729 100644
--- a/public/js/themes.js
+++ b/public/js/themes.js
@@ -1,33 +1,61 @@
+// 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/>.
+
+// theme setter
+
 erpnext.themes = {
-	metal: {
+	"Default": {
 		sidebar: "#f2f2f2",
 		titlebar: "#dfdfdf",
 		toolbar: "#e9e9e9"
 	},
-	desert: {
+	Desert: {
 		sidebar: "#FFFDF7",
 		titlebar: "#DAD4C2",
 		toolbar: "#FAF6E9"
 	},
-	tropic: {
+	Tropic: {
 		sidebar: "#FAFFF7",
 		toolbar: "#EEFAE9",
 		titlebar: "#D7ECD1"
 	},
-	sky: {
+	Sky: {
 		sidebar: "#F7FFFE",
 		toolbar: "#E9F9FA",
 		titlebar: "#D7F5F7"
 	},
-	snow: {
+	Snow: {
 		sidebar: "#fff",
 		titlebar: "#fff",
 		toolbar: "#fff"
 	},
-	sun: {
+	Sunny: {
 		sidebar: "#FFFFEF",
-		titlebar: "lightYellow",
-		toolbar: "#FFFDCA"		
+		titlebar: "#FFFDCA",
+		toolbar: "lightYellow"		
+	},
+	Floral: {
+		sidebar: "#FFF7F7",
+		titlebar: "#F7CBCB",
+		toolbar: "#FAE9EA"		
+	},
+	Ocean: {
+		sidebar: "#F2FFFE",
+		titlebar: "#8ACFC7",
+		toolbar: "#C3F3EE"
 	}
 }
 
diff --git a/website/templates/js/login.js b/website/templates/js/login.js
index 4ca18c9..1444d9e 100644
--- a/website/templates/js/login.js
+++ b/website/templates/js/login.js
@@ -17,10 +17,6 @@
 wn.provide('erpnext.login');
 
 wn.pages["{{ name }}"].onload = function(wrapper) {
-	wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'));
-	wrapper.appframe.title('Login');
-	wrapper.appframe.$w.find('.close').toggle(false);
-
 	var lw = $i('login_wrapper');
 	$bs(lw, '1px 1px 3px #888');
 
diff --git a/website/templates/pages/login.html b/website/templates/pages/login.html
index 9bc3171..e4040fb 100644
--- a/website/templates/pages/login.html
+++ b/website/templates/pages/login.html
@@ -14,7 +14,9 @@
 
 {% block content %}
 	<div class="layout-wrapper layout-wrapper-appframe" id='login_wrapper'>
-	<div class="appframe-area"></div>
+	<div class="appframe-area">
+		<div class="appframe-title">Login</div>
+	</div>
 	<div class="layout-main" style="padding: 15px;">
 	<form autocomplete="on">
 		<table border="0" cellspacing="8">
