diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py
index 17ae216..879ccaf 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/accounts/doctype/sales_invoice/sales_invoice.py
@@ -148,6 +148,9 @@
 		self.validate_recurring_invoice()
 		self.convert_to_recurring()
 		
+	def get_portal_page(self):
+		return "invoice" if self.doc.docstatus==1 else None
+		
 	def set_missing_values(self, for_validate=False):
 		self.set_pos_fields(for_validate)
 		
diff --git a/website/doctype/about_us_settings/__init__.py b/accounts/doctype/sales_invoice/templates/__init__.py
similarity index 100%
rename from website/doctype/about_us_settings/__init__.py
rename to accounts/doctype/sales_invoice/templates/__init__.py
diff --git a/website/doctype/about_us_settings/__init__.py b/accounts/doctype/sales_invoice/templates/pages/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to accounts/doctype/sales_invoice/templates/pages/__init__.py
diff --git a/accounts/doctype/sales_invoice/templates/pages/invoice.html b/accounts/doctype/sales_invoice/templates/pages/invoice.html
new file mode 100644
index 0000000..376e5df
--- /dev/null
+++ b/accounts/doctype/sales_invoice/templates/pages/invoice.html
@@ -0,0 +1 @@
+{% extends "app/portal/templates/sale.html" %}
\ No newline at end of file
diff --git a/accounts/doctype/sales_invoice/templates/pages/invoice.py b/accounts/doctype/sales_invoice/templates/pages/invoice.py
new file mode 100644
index 0000000..200727c
--- /dev/null
+++ b/accounts/doctype/sales_invoice/templates/pages/invoice.py
@@ -0,0 +1,16 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+
+no_cache = True
+
+def get_context():
+	from portal.utils import get_transaction_context
+	context = get_transaction_context("Sales Invoice", webnotes.form_dict.name)
+	context.update({
+		"parent_link": "invoices",
+		"parent_title": "Invoices"
+	})
+	return context
\ No newline at end of file
diff --git a/accounts/doctype/sales_invoice/templates/pages/invoices.html b/accounts/doctype/sales_invoice/templates/pages/invoices.html
new file mode 100644
index 0000000..f108683
--- /dev/null
+++ b/accounts/doctype/sales_invoice/templates/pages/invoices.html
@@ -0,0 +1 @@
+{% extends "app/portal/templates/sales_transactions.html" %}
\ No newline at end of file
diff --git a/accounts/doctype/sales_invoice/templates/pages/invoices.py b/accounts/doctype/sales_invoice/templates/pages/invoices.py
new file mode 100644
index 0000000..ec957f3
--- /dev/null
+++ b/accounts/doctype/sales_invoice/templates/pages/invoices.py
@@ -0,0 +1,24 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+
+no_cache = True
+
+def get_context():
+	from portal.utils import get_currency_context
+	context = get_currency_context()
+	context.update({
+		"title": "Invoices",
+		"method": "portal.templates.pages.invoices.get_invoices",
+		"icon": "icon-file-text",
+		"empty_list_message": "No Invoices Found",
+		"page": "invoice"
+	})
+	return context
+	
+@webnotes.whitelist()
+def get_invoices(start=0):
+	from portal.utils import get_transaction_list
+	return get_transaction_list("Sales Invoice", start)
\ No newline at end of file
diff --git a/config.json b/config.json
index e0f98d8..17b01ed 100644
--- a/config.json
+++ b/config.json
@@ -1,5 +1,6 @@
 {
 	"app_name": "ERPNext",
+	"base_template": "app/portal/templates/base.html",
 	"modules": {
 		"Selling": {
 			"link": "selling-home",
@@ -43,12 +44,6 @@
 			"color": "#7f8c8d",
 			"icon": "icon-cogs"
 		},
-		"Website": {
-			"type": "module",
-			"link": "website-home",
-			"color": "#16a085",
-			"icon": "icon-globe"
-		},
 		"HR": {
 			"type": "module",
 			"link": "hr-home",
@@ -77,138 +72,5 @@
 			"label": "Notes",
 			"icon": "icon-file-alt"
 		}
-	},
-	"web": {
-		"pages": {
-			"about": {
-				"template": "app/website/templates/pages/about",
-				"args_method": "website.doctype.about_us_settings.about_us_settings.get_args"
-			},
-			"account": {
-				"no_cache": true,
-				"template": "app/website/templates/pages/account"
-			},
-			"blog": {
-				"template": "app/website/templates/pages/blog",
-				"args_method": "website.helpers.blog.get_blog_template_args"
-			},
-			"contact": {
-				"template": "app/website/templates/pages/contact",
-				"args_doctype": "Contact Us Settings"
-			},
-			"index": {
-				"template": "app/website/templates/pages/index"
-			},
-			"order": {
-				"no_cache": true,
-				"template": "app/website/templates/pages/sale",
-				"args_method": "website.helpers.transaction.get_order_args",
-				"portal": {
-					"doctype": "Sales Order",
-					"conditions": {
-						"docstatus": 1
-					}
-				}
-			},
-			"orders": {
-				"no_cache": true,
-				"template": "app/website/templates/pages/sales_transactions",
-				"args_method": "website.helpers.transaction.order_list_args"
-			},
-			"invoice": {
-				"no_cache": true,
-				"template": "app/website/templates/pages/sale",
-				"args_method": "website.helpers.transaction.get_invoice_args",
-				"portal": {
-					"doctype": "Sales Invoice",
-					"conditions": {
-						"docstatus": 1
-					}
-				}
-			},
-			"invoices": {
-				"no_cache": true,
-				"template": "app/website/templates/pages/sales_transactions",
-				"args_method": "website.helpers.transaction.invoice_list_args"
-			},
-			"shipment": {
-				"no_cache": true,
-				"template": "app/website/templates/pages/sale",
-				"args_method": "website.helpers.transaction.get_shipment_args",
-				"portal": {
-					"doctype": "Delivery Note",
-					"conditions": {
-						"docstatus": 1
-					}
-				}
-			},
-			"shipments": {
-				"no_cache": true,
-				"template": "app/website/templates/pages/sales_transactions",
-				"args_method": "website.helpers.transaction.shipment_list_args"
-			},
-			"product_search": {
-				"template": "app/website/templates/pages/product_search"
-			},
-			"ticket": {
-				"no_cache": true,
-				"template": "app/website/templates/pages/ticket",
-				"args_method": "support.doctype.support_ticket.support_ticket.get_website_args",
-				"portal": {
-					"doctype": "Support Ticket"
-				}
-			},
-			"tickets": {
-				"template": "app/website/templates/pages/tickets",
-				"args_method": "website.helpers.transaction.ticket_list_args"
-			},
-			"address": {
-				"no_cache": true,
-				"template": "app/website/templates/pages/address",
-				"args_method": "utilities.doctype.address.address.get_website_args"
-			},
-			"addresses": {
-				"template": "app/website/templates/pages/addresses"
-			},
-			"writers": {
-				"template": "app/website/templates/pages/writers",
-				"args_method": "website.doctype.blogger.blogger.get_writers_args"
-			},
-			"profile": {
-				"no_cache": true,
-				"template": "app/website/templates/pages/profile",
-				"args_method": "startup.webutils.get_profile_args"
-			},
-			"cart": {
-				"no_cache": true,
-				"template": "app/website/templates/pages/cart.html"
-			},
-			"partners": {
-				"template": "app/website/templates/pages/partners",
-				"args_method": "website.helpers.partner.get_partner_args"
-			}
-		},
-		"generators": {
-			"Web Page": {
-				"template": "app/website/templates/html/web_page.html",
-				"condition_field": "published"
-			},
-			"Blog Post": {
-				"template": "app/website/templates/html/blog_page.html",
-				"condition_field": "published"
-			},
-			"Item": {
-				"template": "app/website/templates/html/product_page.html",
-				"condition_field": "show_in_website"
-			},
-			"Item Group":{
-				"template": "app/website/templates/html/product_group.html",
-				"condition_field": "show_in_website"
-			},
-			"Sales Partner": {
-				"template": "app/website/templates/html/partner_page.html",
-				"condition_field": "show_in_website"
-			}
-		}
 	}
 }
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 3c13e0e..68bb005 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -263,4 +263,5 @@
 	"patches.september_2013.p01_update_communication",
 	"execute:webnotes.reload_doc('setup', 'doctype', 'features_setup') # 2013-09-05",
 	"patches.september_2013.p02_fix_serial_no_status",
+	"patches.september_2013.p03_move_website_to_framework"
 ]
\ No newline at end of file
diff --git a/patches/september_2013/p03_move_website_to_framework.py b/patches/september_2013/p03_move_website_to_framework.py
new file mode 100644
index 0000000..9629b7a
--- /dev/null
+++ b/patches/september_2013/p03_move_website_to_framework.py
@@ -0,0 +1,18 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+from webnotes.utils import get_base_path
+import os, shutil
+
+def execute():
+	# remove pyc files
+	utils_pyc = os.path.join(get_base_path(), "app", "selling", "utils.pyc")
+	if os.path.exists(utils_pyc):
+		os.remove(utils_pyc)
+	
+	old_path = os.path.join(get_base_path(), "app", "website")
+	if os.path.exists(old_path):
+		shutil.rmtree(old_path)
+	
\ No newline at end of file
diff --git a/website/doctype/blogger/__init__.py b/portal/__init__.py
similarity index 100%
rename from website/doctype/blogger/__init__.py
rename to portal/__init__.py
diff --git a/website/helpers/__init__.py b/portal/templates/__init__.py
similarity index 100%
rename from website/helpers/__init__.py
rename to portal/templates/__init__.py
diff --git a/portal/templates/base.html b/portal/templates/base.html
new file mode 100644
index 0000000..bc6fb97
--- /dev/null
+++ b/portal/templates/base.html
@@ -0,0 +1,3 @@
+{% extends "lib/website/templates/base.html" %}
+
+{% block footer %}{% include "app/portal/templates/includes/footer.html" %}{% endblock %}
\ No newline at end of file
diff --git a/website/templates/js/cart.js b/portal/templates/includes/cart.js
similarity index 82%
rename from website/templates/js/cart.js
rename to portal/templates/includes/cart.js
index 20090ca..5ff6e3f 100644
--- a/website/templates/js/cart.js
+++ b/portal/templates/includes/cart.js
@@ -4,33 +4,33 @@
 // js inside blog page
 
 $(document).ready(function() {
-	wn.cart.bind_events();
+	erpnext.cart.bind_events();
 	return wn.call({
 		type: "POST",
-		method: "website.helpers.cart.get_cart_quotation",
+		method: "selling.utils.cart.get_cart_quotation",
 		callback: function(r) {
 			console.log(r);
 			$("#cart-container").removeClass("hide");
 			$(".progress").remove();
 			if(r.exc) {
 				if(r.exc.indexOf("WebsitePriceListMissingError")!==-1) {
-					wn.cart.show_error("Oops!", "Price List not configured.");
+					erpnext.cart.show_error("Oops!", "Price List not configured.");
 				} else if(r["403"]) {
-					wn.cart.show_error("Hey!", "You need to be logged in to view your cart.");
+					erpnext.cart.show_error("Hey!", "You need to be logged in to view your cart.");
 				} else {
-					wn.cart.show_error("Oops!", "Something went wrong.");
+					erpnext.cart.show_error("Oops!", "Something went wrong.");
 				}
 			} else {
-				wn.cart.set_cart_count();
-				wn.cart.render(r.message);
+				erpnext.cart.set_cart_count();
+				erpnext.cart.render(r.message);
 			}
 		}
 	});
 });
 
 // shopping cart
-if(!wn.cart) wn.cart = {};
-$.extend(wn.cart, {
+if(!erpnext.cart) erpnext.cart = {};
+$.extend(erpnext.cart, {
 	show_error: function(title, text) {
 		$("#cart-container").html('<div class="well"><h4>' + title + '</h4> ' + text + '</div>');
 	},
@@ -39,14 +39,14 @@
 		// bind update button
 		$(document).on("click", ".item-update-cart button", function() {
 			var item_code = $(this).attr("data-item-code");
-			wn.cart.update_cart({
+			erpnext.cart.update_cart({
 				item_code: item_code,
 				qty: $('input[data-item-code="'+item_code+'"]').val(),
 				with_doclist: 1,
 				btn: this,
 				callback: function(r) {
 					if(!r.exc) {
-						wn.cart.render(r.message);
+						erpnext.cart.render(r.message);
 						var $button = $('button[data-item-code="'+item_code+'"]').addClass("btn-success");
 						setTimeout(function() { $button.removeClass("btn-success"); }, 1000);
 					}
@@ -63,7 +63,7 @@
 		});
 		
 		$(".btn-place-order").on("click", function() {
-			wn.cart.place_order();
+			erpnext.cart.place_order(this);
 		});
 	},
 	
@@ -79,7 +79,7 @@
 		
 		var no_items = $.map(doclist, function(d) { return d.item_code || null;}).length===0;
 		if(no_items) {
-			wn.cart.show_error("Empty :-(", "Go ahead and add something to your cart.");
+			erpnext.cart.show_error("Empty :-(", "Go ahead and add something to your cart.");
 			$("#cart-addresses").toggle(false);
 			return;
 		}
@@ -89,14 +89,14 @@
 		var shipping_rule_labels = $.map(out.shipping_rules || [], function(rule) { return rule[1]; });
 		$.each(doclist, function(i, doc) {
 			if(doc.doctype === "Quotation Item") {
-				wn.cart.render_item_row($cart_items, doc);
+				erpnext.cart.render_item_row($cart_items, doc);
 			} else if (doc.doctype === "Sales Taxes and Charges") {
 				if(out.shipping_rules && out.shipping_rules.length && 
 					shipping_rule_labels.indexOf(doc.description)!==-1) {
 						shipping_rule_added = true;
-						wn.cart.render_tax_row($cart_taxes, doc, out.shipping_rules);
+						erpnext.cart.render_tax_row($cart_taxes, doc, out.shipping_rules);
 				} else {
-					wn.cart.render_tax_row($cart_taxes, doc);
+					erpnext.cart.render_tax_row($cart_taxes, doc);
 				}
 				
 				taxes_exist = true;
@@ -104,7 +104,7 @@
 		});
 		
 		if(out.shipping_rules && out.shipping_rules.length && !shipping_rule_added) {
-			wn.cart.render_tax_row($cart_taxes, {description: "", formatted_tax_amount: ""},
+			erpnext.cart.render_tax_row($cart_taxes, {description: "", formatted_tax_amount: ""},
 				out.shipping_rules);
 			taxes_exist = true;
 		}
@@ -112,7 +112,7 @@
 		if(taxes_exist)
 			$('<hr>').appendTo($cart_taxes);
 			
-		wn.cart.render_tax_row($cart_totals, {
+		erpnext.cart.render_tax_row($cart_totals, {
 			description: "<strong>Total</strong>", 
 			formatted_tax_amount: "<strong>" + doclist[0].formatted_grand_total_export + "</strong>"
 		});
@@ -120,15 +120,15 @@
 		if(!(addresses && addresses.length)) {
 			$cart_shipping_address.html('<div class="well">Hey! Go ahead and add an address</div>');
 		} else {
-			wn.cart.render_address($cart_shipping_address, addresses, doclist[0].shipping_address_name);
-			wn.cart.render_address($cart_billing_address, addresses, doclist[0].customer_address);
+			erpnext.cart.render_address($cart_shipping_address, addresses, doclist[0].shipping_address_name);
+			erpnext.cart.render_address($cart_billing_address, addresses, doclist[0].customer_address);
 		}
 	},
 	
 	render_item_row: function($cart_items, doc) {
 		doc.image_html = doc.image ?
 			'<div style="height: 120px; overflow: hidden;"><img src="' + doc.image + '" /></div>' :
-			'{% include "app/website/templates/html/product_missing_image.html" %}';
+			'{% include "app/stock/doctype/item/templates/includes/product_missing_image.html" %}';
 			
 		if(doc.description === doc.item_name) doc.description = "";
 		
@@ -185,7 +185,7 @@
 				}
 			});
 			$tax_row.find('select').on("change", function() {
-				wn.cart.apply_shipping_rule($(this).val(), this);
+				erpnext.cart.apply_shipping_rule($(this).val(), this);
 			});
 		}
 	},
@@ -194,11 +194,11 @@
 		return wn.call({
 			btn: btn,
 			type: "POST",
-			method: "website.helpers.cart.apply_shipping_rule",
+			method: "selling.utils.cart.apply_shipping_rule",
 			args: { shipping_rule: rule },
 			callback: function(r) {
 				if(!r.exc) {
-					wn.cart.render(r.message);
+					erpnext.cart.render(r.message);
 				}
 			}
 		});
@@ -242,14 +242,14 @@
 				
 				return wn.call({
 					type: "POST",
-					method: "website.helpers.cart.update_cart_address",
+					method: "selling.utils.cart.update_cart_address",
 					args: {
 						address_fieldname: $address_wrapper.attr("data-fieldname"),
 						address_name: $(this).attr("data-address-name")
 					},
 					callback: function(r) {
 						if(!r.exc) {
-							wn.cart.render(r.message);
+							erpnext.cart.render(r.message);
 						}
 					}
 				});
@@ -270,10 +270,11 @@
 			.collapse("show");
 	},
 	
-	place_order: function() {
+	place_order: function(btn) {
 		return wn.call({
 			type: "POST",
-			method: "website.helpers.cart.place_order",
+			method: "selling.utils.cart.place_order",
+			btn: btn,
 			callback: function(r) {
 				if(r.exc) {
 					var msg = "";
diff --git a/portal/templates/includes/footer.html b/portal/templates/includes/footer.html
new file mode 100644
index 0000000..6963175
--- /dev/null
+++ b/portal/templates/includes/footer.html
@@ -0,0 +1,40 @@
+{% extends "lib/website/templates/includes/footer.html" %}
+
+{% block powered %}<a style="font-size: 90%; color: #aaa;" href="http://erpnext.org">ERPNext Powered</a>{% endblock %}
+
+{% block extension %}
+<br>
+<div class="input-group col-md-6 col-md-offset-3">
+	<input class="form-control" type="text" id="footer-subscribe-email" placeholder="Your email address...">
+	<span class="input-group-btn">
+		<button class="btn btn-default" type="button" id="footer-subscribe-button">Stay Updated</button>
+	</span>
+</div>
+<br>
+<script>
+	$("#footer-subscribe-button").click(function() {
+
+		$("#footer-subscribe-email").attr('disabled', true);
+		$("#footer-subscribe-button").html("Sending...")
+			.attr("disabled", true);
+
+		if($("#footer-subscribe-email").val()) {
+			erpnext.send_message({
+				subject:"Subscribe me",
+				sender: $("#footer-subscribe-email").val(),
+				message: "Subscribe to newsletter (via website footer).",
+				callback: function(r) {
+					if(!r.exc) {
+						$("#footer-subscribe-button").html("Thank You :)")
+							.addClass("btn-success").attr("disabled", true);
+					} else {
+						$("#footer-subscribe-button").html("Error :( Not a valid id?")
+							.addClass("btn-danger").attr("disabled", false);
+						$("#footer-subscribe-email").val("").attr('disabled', false);
+					}
+				}
+			});
+		}
+	});
+</script>
+{% endblock %}
diff --git a/website/templates/html/transactions.html b/portal/templates/includes/transactions.html
similarity index 87%
rename from website/templates/html/transactions.html
rename to portal/templates/includes/transactions.html
index 1e61124..036a77c 100644
--- a/website/templates/html/transactions.html
+++ b/portal/templates/includes/transactions.html
@@ -1,12 +1,13 @@
-{% extends "app/website/templates/html/page.html" %}
+{% extends base_template %}
 
 {% block content -%}
 <div class="col-md-12">
     <ul class="breadcrumb">
     	<li><a href="index">Home</a></li>
-    	<li><a href="account">My Account</a></li>
     	<li class="active"><i class="{{ icon }} icon-fixed-width"></i> {{ title }}</li>
     </ul>
+	<p id="msgprint-alert" class="alert alert-danger" 
+		style="display: none;">&nbsp;</p>
 	<div class="list-group transaction-list">
 		<div class="progress progress-striped active">
 			<div class="progress-bar progress-bar-info" style="width: 100%;"></div>
@@ -19,6 +20,7 @@
 {%- endblock %}
 
 {% block javascript -%}
+<script>
 $(document).ready(function() {
 	window.start = 0;
 	window.$list = $(".transaction-list");
@@ -35,7 +37,6 @@
 		callback: function(r) {
 			$list.find(".progress").remove();
 			$show_more.toggleClass("hide", !(r.message && r.message.length===20));
-		
 			if(!(r.message && r.message.length)) {
 				console.log("empty");
 				if(!$list.html().trim()) {
@@ -53,7 +54,7 @@
 		}
 	})
 };
+</script>
 
-// var render = function(doc) { };
-
+<!-- // var render = function(doc) { }; -->
 {% endblock %}
\ No newline at end of file
diff --git a/website/helpers/__init__.py b/portal/templates/pages/__init__.py
similarity index 100%
copy from website/helpers/__init__.py
copy to portal/templates/pages/__init__.py
diff --git a/website/templates/pages/cart.html b/portal/templates/pages/cart.html
similarity index 83%
rename from website/templates/pages/cart.html
rename to portal/templates/pages/cart.html
index 6708ad3..8b648e5 100644
--- a/website/templates/pages/cart.html
+++ b/portal/templates/pages/cart.html
@@ -1,7 +1,7 @@
-{% extends "app/website/templates/html/page.html" %}
+{% extends base_template %}
 
 {% block javascript %}
-	{% include "app/website/templates/js/cart.js" %}
+<script>{% include "app/portal/templates/includes/cart.js" %}</script>
 {% endblock %}
 
 {% set title="Shopping Cart" %}
@@ -13,7 +13,7 @@
 		<div class="progress-bar progress-bar-info" style="width: 100%;"></div>
 	</div>
 	<div id="cart-container" class="hide">
-		<button class="btn btn-success pull-right btn-place-order" type="button">Place Order</button>
+		<p class="pull-right"><button class="btn btn-success btn-place-order" type="button">Place Order</button></p>
 		<div class="clearfix"></div>
 		<div id="cart-error" class="alert alert-danger" style="display: none;"></div>
 		<hr>
@@ -51,7 +51,7 @@
 			</div>
 			<hr>
 		</div>
-		<button class="btn btn-success pull-right btn-place-order" type="button">Place Order</button>
+		<p class="pull-right"><button class="btn btn-success btn-place-order" type="button">Place Order</button></p>
 	</div>
 </div>
 {% endblock %}
\ No newline at end of file
diff --git a/website/doctype/top_bar_item/top_bar_item.py b/portal/templates/pages/cart.py
similarity index 62%
rename from website/doctype/top_bar_item/top_bar_item.py
rename to portal/templates/pages/cart.py
index 26d0f76..24b474a 100644
--- a/website/doctype/top_bar_item/top_bar_item.py
+++ b/portal/templates/pages/cart.py
@@ -2,8 +2,5 @@
 # License: GNU General Public License v3. See license.txt
 
 from __future__ import unicode_literals
-import webnotes
 
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
\ No newline at end of file
+no_cache = True
\ No newline at end of file
diff --git a/website/templates/pages/profile.html b/portal/templates/pages/profile.html
similarity index 88%
rename from website/templates/pages/profile.html
rename to portal/templates/pages/profile.html
index 4c03b40..6971909 100644
--- a/website/templates/pages/profile.html
+++ b/portal/templates/pages/profile.html
@@ -1,4 +1,4 @@
-{% extends "app/website/templates/html/page.html" %}
+{% extends base_template %}
 
 {% set title="My Profile" %}
 
@@ -6,10 +6,9 @@
 <div class="col-md-12">
     <ul class="breadcrumb">
     	<li><a href="index">Home</a></li>
-    	<li><a href="account">My Account</a></li>
     	<li class="active"><i class="icon-user icon-fixed-width"></i> My Profile</li>
     </ul>
-	<div class="alert" id="message" style="display: none;"></div>
+	<div class="alert alert-warning" id="message" style="display: none;"></div>
 	<form>
 		<fieldset>
 			<label>Full Name</label>
@@ -39,7 +38,7 @@
 	$("#fullname").val(getCookie("full_name") || "");
 	$("#update_profile").click(function() {
 		wn.call({
-			method: "startup.webutils.update_profile",
+			method: "portal.templates.pages.profile.update_profile",
 			type: "POST",
 			args: {
 				fullname: $("#fullname").val(),
diff --git a/portal/templates/pages/profile.py b/portal/templates/pages/profile.py
new file mode 100644
index 0000000..b7be74c
--- /dev/null
+++ b/portal/templates/pages/profile.py
@@ -0,0 +1,32 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+from webnotes.utils import cstr
+
+no_cache = True
+
+def get_context():
+	from selling.utils.cart import get_lead_or_customer
+	party = get_lead_or_customer()
+	if party.doctype == "Lead":
+		mobile_no = party.mobile_no
+		phone = party.phone
+	else:
+		mobile_no, phone = webnotes.conn.get_value("Contact", {"email_id": webnotes.session.user, 
+			"customer": party.name}, ["mobile_no", "phone"])
+		
+	return {
+		"company_name": cstr(party.customer_name if party.doctype == "Customer" else party.company_name),
+		"mobile_no": cstr(mobile_no),
+		"phone": cstr(phone)
+	}
+	
+@webnotes.whitelist()
+def update_profile(fullname, password=None, company_name=None, mobile_no=None, phone=None):
+	from selling.utils.cart import update_party
+	update_party(fullname, company_name, mobile_no, phone)
+	
+	from core.doctype.profile import profile
+	return profile.update_profile(fullname, password)
\ No newline at end of file
diff --git a/website/templates/pages/sale.html b/portal/templates/sale.html
similarity index 96%
rename from website/templates/pages/sale.html
rename to portal/templates/sale.html
index 1c03da2..41ba297 100644
--- a/website/templates/pages/sale.html
+++ b/portal/templates/sale.html
@@ -1,4 +1,4 @@
-{% extends "app/website/templates/html/page.html" %}
+{% extends base_template %}
 
 {% set title=doc.name %}
 
@@ -6,7 +6,6 @@
 <div class="col-md-12">
     <ul class="breadcrumb">
     	<li><a href="index">Home</a></li>
-    	<li><a href="account">My Account</a></li>
     	<li><a href="{{ parent_link }}">{{ parent_title }}</a></li>
     	<li class="active"><i class="icon-file icon-fixed-width"></i> {{ doc.name }}</li>
     </ul>
diff --git a/portal/templates/sales_transactions.html b/portal/templates/sales_transactions.html
new file mode 100644
index 0000000..10139c3
--- /dev/null
+++ b/portal/templates/sales_transactions.html
@@ -0,0 +1,28 @@
+{% extends "app/portal/templates/includes/transactions.html" %}
+
+{% block javascript -%}
+<script>
+	global_number_format = "{{ global_number_format }}";
+	currency = "{{ currency }}";
+	wn.currency_symbols = {{ currency_symbols }};
+</script>
+
+{{ super() }}
+
+<script>
+	var render = function(doc) {
+		doc.grand_total_export = format_currency(doc.grand_total_export, doc.currency);
+	
+		$(repl('<a href="{{ page }}?name=%(name)s" class="list-group-item">\
+				<div class="row">\
+					<div class="col-md-6">\
+						<div class="row col-md-12">%(name)s</div>\
+						<div class="row col-md-12 text-muted">%(items)s...</div>\
+					</div>\
+					<div class="col-md-3 text-right">%(grand_total_export)s</div>\
+					<div class="col-md-3 text-right text-muted">%(creation)s</div>\
+				</div>\
+			</a>', doc)).appendTo($list);
+	};
+</script>
+{%- endblock %}
\ No newline at end of file
diff --git a/portal/utils.py b/portal/utils.py
new file mode 100644
index 0000000..25da39c
--- /dev/null
+++ b/portal/utils.py
@@ -0,0 +1,63 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+from webnotes.utils import cint, formatdate
+import json
+
+def get_transaction_list(doctype, start):
+	# find customer id
+	customer = webnotes.conn.get_value("Contact", {"email_id": webnotes.session.user}, 
+		"customer")
+		
+	if customer:
+		transactions = webnotes.conn.sql("""select name, creation, currency, grand_total_export 
+			from `tab%s` where customer=%s and docstatus=1
+			order by creation desc
+			limit %s, 20""" % (doctype, "%s", "%s"), (customer, cint(start)), as_dict=True)
+		for doc in transactions:
+			doc.items = ", ".join(webnotes.conn.sql_list("""select item_name
+				from `tab%s Item` where parent=%s limit 5""" % (doctype, "%s"), doc.name))
+			doc.creation = formatdate(doc.creation)
+		return transactions
+	else:
+		return []
+		
+def get_currency_context():
+	return {
+		"global_number_format": webnotes.conn.get_default("number_format") or "#,###.##",
+		"currency": webnotes.conn.get_default("currency"),
+		"currency_symbols": json.dumps(dict(webnotes.conn.sql("""select name, symbol
+			from tabCurrency where ifnull(enabled,0)=1""")))
+	}
+
+def get_transaction_context(doctype, name):
+	customer = webnotes.conn.get_value("Contact", {"email_id": webnotes.session.user}, 
+		"customer")
+		
+	bean = webnotes.bean(doctype, name)
+	if bean.doc.customer != customer:
+		return {
+			"doc": {"name": "Not Allowed"}
+		}
+	else:
+		return {
+			"doc": bean.doc,
+			"doclist": bean.doclist,
+			"webnotes": webnotes,
+			"utils": webnotes.utils
+		}
+
+@webnotes.whitelist(allow_guest=True)
+def send_message(subject="Website Query", message="", sender="", status="Open"):
+	from website.doctype.contact_us_settings.templates.pages.contact \
+		import send_message as website_send_message
+	
+	if not website_send_message(subject, message, sender):
+		return
+	
+	# make lead / communication
+	from selling.doctype.lead.get_leads import add_sales_communication
+	add_sales_communication(subject or "Website Query", message, sender, sender, 
+		mail=None, status=status)
\ No newline at end of file
diff --git a/public/build.json b/public/build.json
index b8d7dd4..77ad4dd 100644
--- a/public/build.json
+++ b/public/build.json
@@ -1,7 +1,6 @@
 {
 	"public/css/all-web.css": [
 		"app/public/js/startup.css",
-		"app/website/css/website.css"	
 	],
 	"public/css/all-app.css": [
 		"app/public/js/startup.css"
diff --git a/public/js/website_utils.js b/public/js/website_utils.js
index 9b78326..fceb8f6 100644
--- a/public/js/website_utils.js
+++ b/public/js/website_utils.js
@@ -2,200 +2,36 @@
 // License: GNU General Public License v3. See license.txt
 
 if(!window.erpnext) erpnext = {};
-if(!window.wn) wn = {};
 
 // Add / update a new Lead / Communication
 // subject, sender, description
-erpnext.send_message = function(opts) {
+wn.send_message = function(opts, btn) {
 	return wn.call({
 		type: "POST",
-		method: "website.helpers.contact.send_message",
+		method: "portal.utils.send_message",
+		btn: btn,
 		args: opts,
 		callback: opts.callback
 	});
-}
+};
 
-wn.call = function(opts) {
-	if(opts.btn) {
-		$(opts.btn).prop("disabled", true);
-	}
-	
-	if(opts.msg) {
-		$(opts.msg).toggle(false);
-	}
-	
-	if(!opts.args) opts.args = {};
-	
-	// get or post?
-	if(!opts.args._type) {
-		opts.args._type = opts.type || "GET";
-	}
-
-	// method
-	if(opts.method) {
-		opts.args.cmd = opts.method;
-	}
-
-	// stringify
-	$.each(opts.args, function(key, val) {
-		if(typeof val != "string") {
-			opts.args[key] = JSON.stringify(val);
-		}
-	});
-	
-	$.ajax({
-		type: "POST",
-		url: "server.py",
-		data: opts.args,
-		dataType: "json",
-		success: function(data) {
-			if(opts.btn) {
-				$(opts.btn).prop("disabled", false);
-			}
-			if(data.exc) {
-				if(opts.btn) {
-					$(opts.btn).addClass("btn-danger");
-					setTimeout(function() { $(opts.btn).removeClass("btn-danger"); }, 1000);
-				}
-				try {
-					var err = JSON.parse(data.exc);
-					if($.isArray(err)) {
-						err = err.join("\n");
-					}
-					console.error ? console.error(err) : console.log(err);
-				} catch(e) {
-					console.log(data.exc);
-				}
-			} else{
-				if(opts.btn) {
-					$(opts.btn).addClass("btn-success");
-					setTimeout(function() { $(opts.btn).removeClass("btn-success"); }, 1000);
-				}
-			}
-			if(opts.msg && data.message) {
-				$(opts.msg).html(data.message).toggle(true);
-			}
-			if(opts.callback)
-				opts.callback(data);
-		},
-		error: function(response) {
-			console.error ? console.error(response) : console.log(response);
-		}
-	});
-	
-	return false;
-}
+// for backward compatibility
+erpnext.send_message = wn.send_message;
 
 // Setup the user tools
 //
 $(document).ready(function() {
 	// update login
-	var full_name = getCookie("full_name");
-	if(full_name) {
-		$("#user-tools").addClass("hide");
-		$("#user-tools-post-login").removeClass("hide");
-		$("#user-full-name").text(full_name);
-	}
-	
-	wn.cart.set_cart_count();
+	erpnext.cart.set_cart_count();
 	
 	$("#user-tools a").tooltip({"placement":"bottom"});
 	$("#user-tools-post-login a").tooltip({"placement":"bottom"});
 });
 
-// Utility functions
-
-function valid_email(id) { 
-	if(id.toLowerCase().search("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?")==-1) 
-		return 0; else return 1; }
-
-var validate_email = valid_email;
-
-function get_url_arg(name) {
-	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
-	var regexS = "[\\?&]"+name+"=([^&#]*)";
-	var regex = new RegExp( regexS );
-	var results = regex.exec( window.location.href );
-	if(results == null)
-		return "";
-	else
-		return decodeURIComponent(results[1]);		
-}
-
-function make_query_string(obj) {
-	var query_params = [];
-	$.each(obj, function(k, v) { query_params.push(encodeURIComponent(k) + "=" + encodeURIComponent(v)); });
-	return "?" + query_params.join("&");
-}
-
-function repl(s, dict) {
-	if(s==null)return '';
-	for(key in dict) {
-		s = s.split("%("+key+")s").join(dict[key]);
-	}
-	return s;
-}
-
-function replace_all(s, t1, t2) {
-	return s.split(t1).join(t2);
-}
-
-function getCookie(name) {
-	return getCookies()[name];
-}
-
-function getCookies() {
-	var c = document.cookie, v = 0, cookies = {};
-	if (document.cookie.match(/^\s*\$Version=(?:"1"|1);\s*(.*)/)) {
-		c = RegExp.$1;
-		v = 1;
-	}
-	if (v === 0) {
-		c.split(/[,;]/).map(function(cookie) {
-			var parts = cookie.split(/=/, 2),
-				name = decodeURIComponent(parts[0].trimLeft()),
-				value = parts.length > 1 ? decodeURIComponent(parts[1].trimRight()) : null;
-			if(value && value.charAt(0)==='"') {
-				value = value.substr(1, value.length-2);
-			}
-			cookies[name] = value;
-		});
-	} else {
-		c.match(/(?:^|\s+)([!#$%&'*+\-.0-9A-Z^`a-z|~]+)=([!#$%&'*+\-.0-9A-Z^`a-z|~]*|"(?:[\x20-\x7E\x80\xFF]|\\[\x00-\x7F])*")(?=\s*[,;]|$)/g).map(function($0, $1) {
-			var name = $0,
-				value = $1.charAt(0) === '"'
-						  ? $1.substr(1, -1).replace(/\\(.)/g, "$1")
-						  : $1;
-			cookies[name] = value;
-		});
-	}
-	return cookies;
-}
-
-if (typeof String.prototype.trimLeft !== "function") {
-	String.prototype.trimLeft = function() {
-		return this.replace(/^\s+/, "");
-	};
-}
-if (typeof String.prototype.trimRight !== "function") {
-	String.prototype.trimRight = function() {
-		return this.replace(/\s+$/, "");
-	};
-}
-if (typeof Array.prototype.map !== "function") {
-	Array.prototype.map = function(callback, thisArg) {
-		for (var i=0, n=this.length, a=[]; i<n; i++) {
-			if (i in this) a[i] = callback.call(thisArg, this[i]);
-		}
-		return a;
-	};
-}
-
 // shopping cart
-if(!wn.cart) wn.cart = {};
-var full_name = getCookie("full_name");
+if(!erpnext.cart) erpnext.cart = {};
 
-$.extend(wn.cart, {
+$.extend(erpnext.cart, {
 	update_cart: function(opts) {
 		if(!full_name) {
 			if(localStorage) {
@@ -206,7 +42,7 @@
 		} else {
 			return wn.call({
 				type: "POST",
-				method: "website.helpers.cart.update_cart",
+				method: "selling.utils.cart.update_cart",
 				args: {
 					item_code: opts.item_code,
 					qty: opts.qty,
@@ -217,7 +53,7 @@
 					if(opts.callback)
 						opts.callback(r);
 					
-					wn.cart.set_cart_count();
+					erpnext.cart.set_cart_count();
 				}
 			});
 		}
@@ -225,29 +61,22 @@
 	
 	set_cart_count: function() {
 		var cart_count = getCookie("cart_count");
-		if(cart_count)
-			$(".cart-count").html("( "+ cart_count +" )")
-	}
-});
-
-function remove_script_and_style(txt) {
-	return (!txt || (txt.indexOf("<script>")===-1 && txt.indexOf("<style>")===-1)) ? txt :
-		$("<div></div>").html(txt).find("script,noscript,style,title,meta").remove().end().html();
-}
-
-function is_html(txt) {
-	if(txt.indexOf("<br>")==-1 && txt.indexOf("<p")==-1 
-		&& txt.indexOf("<img")==-1 && txt.indexOf("<div")==-1) {
-		return false;
-	}
-	return true;
-}
-
-function ask_to_login() {
-	if(!full_name) {
-		if(localStorage) {
-			localStorage.setItem("last_visited", window.location.href.split("/").slice(-1)[0]);
+		var $cart = $("#website-post-login").find('[data-label="Cart"]');
+		var $badge = $cart.find(".badge");
+		var $cog = $("#website-post-login").find(".dropdown-toggle");
+		var $cog_count = $cog.find(".cart-count");
+		if(cart_count) {
+			if($badge.length === 0) {
+				var $badge = $('<span class="badge pull-right"></span>').appendTo($cart.find("a"));
+			}
+			$badge.html(cart_count);
+			if($cog_count.length === 0) {
+				var $cog_count = $('<sup class="cart-count"></span>').insertAfter($cog.find(".icon-cog"));
+			}
+			$cog_count.html(cart_count);
+		} else {
+			$badge.remove();
+			$cog_count.remove();
 		}
-		window.location.href = "login";
 	}
-}
\ No newline at end of file
+});
\ No newline at end of file
diff --git a/selling/doctype/sales_order/sales_order.py b/selling/doctype/sales_order/sales_order.py
index 602674e..3731484 100644
--- a/selling/doctype/sales_order/sales_order.py
+++ b/selling/doctype/sales_order/sales_order.py
@@ -286,6 +286,9 @@
 	def on_update(self):
 		pass
 		
+	def get_portal_page(self):
+		return "order" if self.doc.docstatus==1 else None
+		
 def set_missing_values(source, target):
 	bean = webnotes.bean(target)
 	bean.run_method("onload_post_render")
diff --git a/website/doctype/about_us_settings/__init__.py b/selling/doctype/sales_order/templates/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to selling/doctype/sales_order/templates/__init__.py
diff --git a/website/doctype/about_us_settings/__init__.py b/selling/doctype/sales_order/templates/pages/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to selling/doctype/sales_order/templates/pages/__init__.py
diff --git a/selling/doctype/sales_order/templates/pages/order.html b/selling/doctype/sales_order/templates/pages/order.html
new file mode 100644
index 0000000..376e5df
--- /dev/null
+++ b/selling/doctype/sales_order/templates/pages/order.html
@@ -0,0 +1 @@
+{% extends "app/portal/templates/sale.html" %}
\ No newline at end of file
diff --git a/selling/doctype/sales_order/templates/pages/order.py b/selling/doctype/sales_order/templates/pages/order.py
new file mode 100644
index 0000000..6152e17
--- /dev/null
+++ b/selling/doctype/sales_order/templates/pages/order.py
@@ -0,0 +1,16 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+
+no_cache = True
+
+def get_context():
+	from portal.utils import get_transaction_context
+	context = get_transaction_context("Sales Order", webnotes.form_dict.name)
+	context.update({
+		"parent_link": "orders",
+		"parent_title": "My Orders"
+	})
+	return context
\ No newline at end of file
diff --git a/selling/doctype/sales_order/templates/pages/orders.html b/selling/doctype/sales_order/templates/pages/orders.html
new file mode 100644
index 0000000..f108683
--- /dev/null
+++ b/selling/doctype/sales_order/templates/pages/orders.html
@@ -0,0 +1 @@
+{% extends "app/portal/templates/sales_transactions.html" %}
\ No newline at end of file
diff --git a/selling/doctype/sales_order/templates/pages/orders.py b/selling/doctype/sales_order/templates/pages/orders.py
new file mode 100644
index 0000000..aea81a9
--- /dev/null
+++ b/selling/doctype/sales_order/templates/pages/orders.py
@@ -0,0 +1,25 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+
+no_cache = True
+
+def get_context():
+	from portal.utils import get_currency_context
+	context = get_currency_context()
+	context.update({
+		"title": "My Orders",
+		"method": "portal.templates.pages.orders.get_orders",
+		"icon": "icon-list",
+		"empty_list_message": "No Orders Yet",
+		"page": "order",
+	})
+	return context
+	
+@webnotes.whitelist()
+def get_orders(start=0):
+	from portal.utils import get_transaction_list
+	return get_transaction_list("Sales Order", start)
+	
\ No newline at end of file
diff --git a/website/doctype/shopping_cart_price_list/__init__.py b/selling/doctype/shopping_cart_price_list/__init__.py
similarity index 100%
rename from website/doctype/shopping_cart_price_list/__init__.py
rename to selling/doctype/shopping_cart_price_list/__init__.py
diff --git a/website/doctype/shopping_cart_price_list/shopping_cart_price_list.py b/selling/doctype/shopping_cart_price_list/shopping_cart_price_list.py
similarity index 100%
rename from website/doctype/shopping_cart_price_list/shopping_cart_price_list.py
rename to selling/doctype/shopping_cart_price_list/shopping_cart_price_list.py
diff --git a/website/doctype/shopping_cart_price_list/shopping_cart_price_list.txt b/selling/doctype/shopping_cart_price_list/shopping_cart_price_list.txt
similarity index 90%
rename from website/doctype/shopping_cart_price_list/shopping_cart_price_list.txt
rename to selling/doctype/shopping_cart_price_list/shopping_cart_price_list.txt
index 361edf6..1737c65 100644
--- a/website/doctype/shopping_cart_price_list/shopping_cart_price_list.txt
+++ b/selling/doctype/shopping_cart_price_list/shopping_cart_price_list.txt
@@ -2,14 +2,14 @@
  {
   "creation": "2013-06-20 16:00:18", 
   "docstatus": 0, 
-  "modified": "2013-08-09 14:47:12", 
+  "modified": "2013-08-09 14:47:15", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
  {
   "doctype": "DocType", 
   "istable": 1, 
-  "module": "Website", 
+  "module": "Selling", 
   "name": "__common__"
  }, 
  {
diff --git a/website/doctype/shopping_cart_settings/__init__.py b/selling/doctype/shopping_cart_settings/__init__.py
similarity index 100%
rename from website/doctype/shopping_cart_settings/__init__.py
rename to selling/doctype/shopping_cart_settings/__init__.py
diff --git a/website/doctype/shopping_cart_settings/shopping_cart_settings.js b/selling/doctype/shopping_cart_settings/shopping_cart_settings.js
similarity index 100%
rename from website/doctype/shopping_cart_settings/shopping_cart_settings.js
rename to selling/doctype/shopping_cart_settings/shopping_cart_settings.js
diff --git a/website/doctype/shopping_cart_settings/shopping_cart_settings.py b/selling/doctype/shopping_cart_settings/shopping_cart_settings.py
similarity index 100%
rename from website/doctype/shopping_cart_settings/shopping_cart_settings.py
rename to selling/doctype/shopping_cart_settings/shopping_cart_settings.py
diff --git a/website/doctype/shopping_cart_settings/shopping_cart_settings.txt b/selling/doctype/shopping_cart_settings/shopping_cart_settings.txt
similarity index 97%
rename from website/doctype/shopping_cart_settings/shopping_cart_settings.txt
rename to selling/doctype/shopping_cart_settings/shopping_cart_settings.txt
index 21e6ee3..531f8da 100644
--- a/website/doctype/shopping_cart_settings/shopping_cart_settings.txt
+++ b/selling/doctype/shopping_cart_settings/shopping_cart_settings.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-06-19 15:57:32", 
   "docstatus": 0, 
-  "modified": "2013-07-15 17:33:05", 
+  "modified": "2013-07-15 17:33:15", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -11,7 +11,7 @@
   "doctype": "DocType", 
   "icon": "icon-shopping-cart", 
   "issingle": 1, 
-  "module": "Website", 
+  "module": "Selling", 
   "name": "__common__"
  }, 
  {
diff --git a/website/doctype/shopping_cart_settings/test_shopping_cart_settings.py b/selling/doctype/shopping_cart_settings/test_shopping_cart_settings.py
similarity index 97%
rename from website/doctype/shopping_cart_settings/test_shopping_cart_settings.py
rename to selling/doctype/shopping_cart_settings/test_shopping_cart_settings.py
index 3417cec..77c7e23 100644
--- a/website/doctype/shopping_cart_settings/test_shopping_cart_settings.py
+++ b/selling/doctype/shopping_cart_settings/test_shopping_cart_settings.py
@@ -6,7 +6,7 @@
 from __future__ import unicode_literals
 import webnotes
 import unittest
-from website.doctype.shopping_cart_settings.shopping_cart_settings import ShoppingCartSetupError
+from selling.doctype.shopping_cart_settings.shopping_cart_settings import ShoppingCartSetupError
 
 class TestShoppingCartSettings(unittest.TestCase):
 	def setUp(self):
diff --git a/website/doctype/shopping_cart_shipping_rule/__init__.py b/selling/doctype/shopping_cart_shipping_rule/__init__.py
similarity index 100%
rename from website/doctype/shopping_cart_shipping_rule/__init__.py
rename to selling/doctype/shopping_cart_shipping_rule/__init__.py
diff --git a/website/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.py b/selling/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.py
similarity index 100%
rename from website/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.py
rename to selling/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.py
diff --git a/website/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.txt b/selling/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.txt
similarity index 90%
rename from website/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.txt
rename to selling/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.txt
index 302b0ae..8c9c34a 100644
--- a/website/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.txt
+++ b/selling/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.txt
@@ -2,14 +2,14 @@
  {
   "creation": "2013-07-03 13:15:34", 
   "docstatus": 0, 
-  "modified": "2013-07-10 14:54:23", 
+  "modified": "2013-07-10 14:54:25", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
  {
   "doctype": "DocType", 
   "istable": 1, 
-  "module": "Website", 
+  "module": "Selling", 
   "name": "__common__"
  }, 
  {
diff --git a/website/doctype/shopping_cart_taxes_and_charges_master/__init__.py b/selling/doctype/shopping_cart_taxes_and_charges_master/__init__.py
similarity index 100%
rename from website/doctype/shopping_cart_taxes_and_charges_master/__init__.py
rename to selling/doctype/shopping_cart_taxes_and_charges_master/__init__.py
diff --git a/website/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.py b/selling/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.py
similarity index 100%
rename from website/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.py
rename to selling/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.py
diff --git a/website/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.txt b/selling/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.txt
similarity index 91%
rename from website/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.txt
rename to selling/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.txt
index f00a23d..a61f8db 100644
--- a/website/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.txt
+++ b/selling/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.txt
@@ -2,14 +2,14 @@
  {
   "creation": "2013-06-20 16:57:03", 
   "docstatus": 0, 
-  "modified": "2013-07-10 14:54:23", 
+  "modified": "2013-07-10 14:54:25", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
  {
   "doctype": "DocType", 
   "istable": 1, 
-  "module": "Website", 
+  "module": "Selling", 
   "name": "__common__"
  }, 
  {
diff --git a/selling/page/selling_home/selling_home.js b/selling/page/selling_home/selling_home.js
index 4860d42..9697ccf 100644
--- a/selling/page/selling_home/selling_home.js
+++ b/selling/page/selling_home/selling_home.js
@@ -66,6 +66,12 @@
 				"description": "Settings for Selling Module"
 			},
 			{
+				"route":"Form/Shopping Cart Settings",
+				"label":wn._("Shopping Cart Settings"),
+				"description":wn._("Setup of Shopping Cart."),
+				doctype:"Shopping Cart Settings"
+			},
+			{
 				label: wn._("Sales Taxes and Charges Master"),
 				description: wn._("Sales taxes template."),
 				doctype:"Sales Taxes and Charges Master"
diff --git a/selling/utils.py b/selling/utils/__init__.py
similarity index 100%
rename from selling/utils.py
rename to selling/utils/__init__.py
diff --git a/website/helpers/cart.py b/selling/utils/cart.py
similarity index 100%
rename from website/helpers/cart.py
rename to selling/utils/cart.py
diff --git a/website/helpers/product.py b/selling/utils/product.py
similarity index 89%
rename from website/helpers/product.py
rename to selling/utils/product.py
index 031339a..13a9b15 100644
--- a/website/helpers/product.py
+++ b/selling/utils/product.py
@@ -4,9 +4,9 @@
 from __future__ import unicode_literals
 
 import webnotes
-from webnotes.utils import cstr, cint, fmt_money
-from webnotes.webutils import build_html, delete_page_cache
-from website.helpers.cart import _get_cart_quotation
+from webnotes.utils import cstr, cint, fmt_money, get_base_path
+from webnotes.webutils import delete_page_cache
+from selling.utils.cart import _get_cart_quotation
 
 @webnotes.whitelist(allow_guest=True)
 def get_product_info(item_code):
@@ -106,10 +106,12 @@
 			or name in (select parent from `tabWebsite Item Group` 
 				where item_group in (%s))) """ % (child_groups, child_groups))[0][0]
 
-def get_item_for_list_in_html(r):
-	scrub_item_for_list(r)
-	r.template = "app/website/templates/html/product_in_grid.html"
-	return build_html(r)
+def get_item_for_list_in_html(context):
+	from jinja2 import Environment, FileSystemLoader
+	scrub_item_for_list(context)
+	jenv = Environment(loader = FileSystemLoader(get_base_path()))
+	template = jenv.get_template("app/stock/doctype/item/templates/includes/product_in_grid.html")
+	return template.render(context)
 
 def scrub_item_for_list(r):
 	if not r.website_description:
diff --git a/setup/doctype/item_group/item_group.py b/setup/doctype/item_group/item_group.py
index 81f6903..5eae4d1 100644
--- a/setup/doctype/item_group/item_group.py
+++ b/setup/doctype/item_group/item_group.py
@@ -18,7 +18,7 @@
 		
 		self.validate_name_with_item()
 		
-		from website.helpers.product import invalidate_cache_for
+		from selling.utils.product import invalidate_cache_for
 		
 		if self.doc.show_in_website:
 			from webnotes.webutils import update_page_name
@@ -44,8 +44,8 @@
 			webnotes.msgprint("An item exists with same name (%s), please change the \
 				item group name or rename the item" % self.doc.name, raise_exception=1)
 	
-	def prepare_template_args(self):
-		from website.helpers.product import get_product_list_for_group, \
+	def get_context(self):
+		from selling.utils.product import get_product_list_for_group, \
 			get_parent_item_groups, get_group_item_count
 
 		self.doc.sub_groups = webnotes.conn.sql("""select name, page_name
@@ -60,6 +60,6 @@
 		self.doc.title = self.doc.name
 
 		if self.doc.slideshow:
-			from website.helpers.slideshow import get_slideshow
+			from website.doctype.website_slideshow.website_slideshow import get_slideshow
 			get_slideshow(self)
 		
\ No newline at end of file
diff --git a/website/doctype/about_us_settings/__init__.py b/setup/doctype/item_group/templates/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to setup/doctype/item_group/templates/__init__.py
diff --git a/website/doctype/about_us_settings/__init__.py b/setup/doctype/item_group/templates/generators/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to setup/doctype/item_group/templates/generators/__init__.py
diff --git a/website/templates/html/product_group.html b/setup/doctype/item_group/templates/generators/item_group.html
similarity index 71%
rename from website/templates/html/product_group.html
rename to setup/doctype/item_group/templates/generators/item_group.html
index 4bf52c5..22570d1 100644
--- a/website/templates/html/product_group.html
+++ b/setup/doctype/item_group/templates/generators/item_group.html
@@ -1,11 +1,11 @@
-{% extends "app/website/templates/html/page.html" %}
+{% extends base_template %}
 
 {% block content %}
-{% include 'app/website/templates/html/product_search_box.html' %}
-{% include 'app/website/templates/html/product_breadcrumbs.html' %}
+{% include 'app/stock/doctype/item/templates/includes/product_search_box.html' %}
+{% include 'app/stock/doctype/item/templates/includes/product_breadcrumbs.html' %}
 <div class="col-md-12">
 	{% if slideshow %}<!-- slideshow -->
-	{% include "app/website/templates/html/slideshow.html" %}
+	{% include "lib/website/templates/includes/slideshow.html" %}
 	{% endif %}
 	{% if description %}<!-- description -->
 	<div>{{ description or ""}}</div>
@@ -31,7 +31,7 @@
 			{{ item }}
 		{% endfor %}
 	</div>
-		{% if len(items)==100 %}
+		{% if (items|length)==100 %}
 			<div class="alert info">Showing top 100 items.</div>
 		{% endif %}
 	{% else %}
diff --git a/setup/doctype/item_group/templates/generators/item_group.py b/setup/doctype/item_group/templates/generators/item_group.py
new file mode 100644
index 0000000..12ef513
--- /dev/null
+++ b/setup/doctype/item_group/templates/generators/item_group.py
@@ -0,0 +1,2 @@
+doctype = "Item Group"
+condition_field = "show_in_website"
\ No newline at end of file
diff --git a/setup/doctype/sales_partner/sales_partner.py b/setup/doctype/sales_partner/sales_partner.py
index 2c39e67..0d7e12d 100644
--- a/setup/doctype/sales_partner/sales_partner.py
+++ b/setup/doctype/sales_partner/sales_partner.py
@@ -29,7 +29,7 @@
 		else:
 			return ''
 			
-	def prepare_template_args(self):
+	def get_context(self):
 		address = webnotes.conn.get_value("Address", 
 			{"sales_partner": self.doc.name, "is_primary_address": 1}, 
 			"*", as_dict=True)
@@ -42,4 +42,4 @@
 				"email": address.email_id,
 				"partner_address": filter_strip_join(address_rows, "\n<br>"),
 				"phone": filter_strip_join(cstr(address.phone).split(","), "\n<br>")
-			})
+			})
\ No newline at end of file
diff --git a/website/doctype/about_us_settings/__init__.py b/setup/doctype/sales_partner/templates/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to setup/doctype/sales_partner/templates/__init__.py
diff --git a/website/doctype/about_us_settings/__init__.py b/setup/doctype/sales_partner/templates/generators/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to setup/doctype/sales_partner/templates/generators/__init__.py
diff --git a/website/templates/html/partner_page.html b/setup/doctype/sales_partner/templates/generators/partner.html
similarity index 93%
rename from website/templates/html/partner_page.html
rename to setup/doctype/sales_partner/templates/generators/partner.html
index e5aac35..eb1481b 100644
--- a/website/templates/html/partner_page.html
+++ b/setup/doctype/sales_partner/templates/generators/partner.html
@@ -1,4 +1,4 @@
-{% extends "app/website/templates/html/page.html" %}
+{% extends base_template %}
 
 {% block content %}
 	<div class="col-md-12" itemscope itemtype="http://schema.org/Organization">
diff --git a/setup/doctype/sales_partner/templates/generators/partner.py b/setup/doctype/sales_partner/templates/generators/partner.py
new file mode 100644
index 0000000..2229f03
--- /dev/null
+++ b/setup/doctype/sales_partner/templates/generators/partner.py
@@ -0,0 +1,2 @@
+doctype = "Sales Partner"
+condition_field = "show_in_website"
\ No newline at end of file
diff --git a/website/doctype/about_us_settings/__init__.py b/setup/doctype/sales_partner/templates/pages/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to setup/doctype/sales_partner/templates/pages/__init__.py
diff --git a/website/templates/pages/partners.html b/setup/doctype/sales_partner/templates/pages/partners.html
similarity index 93%
rename from website/templates/pages/partners.html
rename to setup/doctype/sales_partner/templates/pages/partners.html
index 50a095d..14c72ae 100644
--- a/website/templates/pages/partners.html
+++ b/setup/doctype/sales_partner/templates/pages/partners.html
@@ -1,4 +1,4 @@
-{% extends "app/website/templates/html/page.html" %}
+{% extends base_template %}
 
 {% set title="Partners" %}
 
diff --git a/setup/doctype/sales_partner/templates/pages/partners.py b/setup/doctype/sales_partner/templates/pages/partners.py
new file mode 100644
index 0000000..5245ec0
--- /dev/null
+++ b/setup/doctype/sales_partner/templates/pages/partners.py
@@ -0,0 +1,7 @@
+import webnotes
+
+def get_context():
+	return {
+		"partners": webnotes.conn.sql("""select * from `tabSales Partner`
+			where show_in_website=1 order by name asc""", as_dict=True),
+	}
\ No newline at end of file
diff --git a/startup/event_handlers.py b/startup/event_handlers.py
index fa08962..57345f3 100644
--- a/startup/event_handlers.py
+++ b/startup/event_handlers.py
@@ -31,7 +31,7 @@
 		webnotes.conn.commit()
 		
 	if webnotes.conn.get_value("Profile", webnotes.session.user, "user_type") == "Website User":
-		from website.helpers.cart import set_cart_count
+		from selling.utils.cart import set_cart_count
 		set_cart_count()
 		
 def on_logout(login_manager):
@@ -65,7 +65,7 @@
 	raise webnotes.AuthenticationError
 
 def on_build():
-	from website.helpers.make_web_include_files import make
+	from website.doctype.website_settings.make_web_include_files import make
 	make()
 	
 	from home.page.latest_updates import latest_updates
diff --git a/startup/webutils.py b/startup/webutils.py
index eab4948..218741b 100644
--- a/startup/webutils.py
+++ b/startup/webutils.py
@@ -1,94 +1,26 @@
 # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
 # License: GNU General Public License v3. See license.txt
 
-import webnotes, conf, os
-from webnotes.utils import cint, cstr, encode
+import webnotes
+from webnotes.utils import cint
 
-def get_templates_path():
-	return os.path.join(os.path.dirname(conf.__file__), "app", "website", "templates")
-
-def get_home_page():
-	doc_name = webnotes.conn.get_value('Website Settings', None, 'home_page')
-	if doc_name:
-		page_name = webnotes.conn.get_value('Web Page', doc_name, 'page_name')
-	else:
-		page_name = 'login'
-
-	return page_name
-
-def update_template_args(page_name, args):
-	
-	from webnotes.utils import get_request_site_address
-	from urllib import quote
-	
-	all_top_items = webnotes.conn.sql("""\
-		select * from `tabTop Bar Item`
-		where parent='Website Settings' and parentfield='top_bar_items'
-		order by idx asc""", as_dict=1)
-	
-	top_items = [d for d in all_top_items if not d['parent_label']]
-	
-	# attach child items to top bar
-	for d in all_top_items:
-		if d['parent_label']:
-			for t in top_items:
-				if t['label']==d['parent_label']:
-					if not 'child_items' in t:
-						t['child_items'] = []
-					t['child_items'].append(d)
-					break
-			
-	ret = webnotes._dict({
-		'top_bar_items': top_items,
-		'footer_items': webnotes.conn.sql("""\
-			select * from `tabTop Bar Item`
-			where parent='Website Settings' and parentfield='footer_items'
-			order by idx asc""", as_dict=1),
-			
-		'int':int,
-		"webnotes": webnotes,
-		"utils": webnotes.utils
-	})
-	
-	args.update(ret)
-	
-	settings = webnotes.doc("Website Settings", "Website Settings")
-	for k in ["banner_html", "brand_html", "copyright", "address", "twitter_share_via",
-		"favicon", "facebook_share", "google_plus_one", "twitter_share", "linked_in_share",
-		"disable_signup"]:
-		if k in settings.fields:
-			args[k] = settings.fields.get(k)
-
-	for k in ["facebook_share", "google_plus_one", "twitter_share", "linked_in_share",
-		"disable_signup"]:
-		args[k] = cint(args.get(k) or 0)
-	
-	args.url = quote(str(get_request_site_address(full_address=True)), str(""))
-	args.encoded_title = quote(encode(args.title or ""), str(""))
-	args.shopping_cart_enabled = cint(webnotes.conn.get_default("shopping_cart_enabled"))
-	
-	return args
-	
-@webnotes.whitelist()
-def update_profile(fullname, password=None, company_name=None, mobile_no=None, phone=None):
-	from website.helpers.cart import update_party
-	update_party(fullname, company_name, mobile_no, phone)
-	
-	from core.doctype.profile import profile
-	return profile.update_profile(fullname, password)
-	
-def get_profile_args():
-	from website.helpers.cart import get_lead_or_customer
-	party = get_lead_or_customer()
-	if party.doctype == "Lead":
-		mobile_no = party.mobile_no
-		phone = party.phone
-	else:
-		mobile_no, phone = webnotes.conn.get_value("Contact", {"email_id": webnotes.session.user, 
-			"customer": party.name}, ["mobile_no", "phone"])
+def get_website_settings(context):
+	post_login = []
+	cart_enabled = cint(webnotes.conn.get_default("shopping_cart_enabled"))
+	if cart_enabled:
+		post_login += [{"label": "Cart", "url": "cart", "icon": "icon-shopping-cart", "class": "cart-count"},
+			{"class": "divider"}]
 		
-	return {
-		"company_name": cstr(party.customer_name if party.doctype == "Customer" else party.company_name),
-		"mobile_no": cstr(mobile_no),
-		"phone": cstr(phone)
-	}
\ No newline at end of file
+	post_login += [
+				{"label": "Profile", "url": "profile", "icon": "icon-user"},
+				{"label": "Addresses", "url": "addresses", "icon": "icon-map-marker"},
+				{"label": "My Orders", "url": "orders", "icon": "icon-list"},
+				{"label": "My Tickets", "url": "tickets", "icon": "icon-tags"},
+				{"label": "Invoices", "url": "invoices", "icon": "icon-file-text"},
+				{"label": "Shipments", "url": "shipments", "icon": "icon-truck"},
+				{"class": "divider"}
+			]
+	context.update({
+		"shopping_cart_enabled": cart_enabled,
+		"post_login": post_login + context.get("post_login", [])
+	})
\ No newline at end of file
diff --git a/stock/doctype/delivery_note/delivery_note.py b/stock/doctype/delivery_note/delivery_note.py
index eb39944..042b197 100644
--- a/stock/doctype/delivery_note/delivery_note.py
+++ b/stock/doctype/delivery_note/delivery_note.py
@@ -43,6 +43,9 @@
 		if billed_qty:
 			total_qty = sum((item.qty for item in self.doclist.get({"parentfield": "delivery_note_details"})))
 			self.doc.fields["__billing_complete"] = billed_qty[0][0] == total_qty
+			
+	def get_portal_page(self):
+		return "shipment" if self.doc.docstatus==1 else None
 		
 	def get_contact_details(self):
 		return get_obj('Sales Common').get_contact_details(self,0)
diff --git a/website/doctype/about_us_settings/__init__.py b/stock/doctype/delivery_note/templates/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to stock/doctype/delivery_note/templates/__init__.py
diff --git a/website/doctype/about_us_settings/__init__.py b/stock/doctype/delivery_note/templates/pages/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to stock/doctype/delivery_note/templates/pages/__init__.py
diff --git a/stock/doctype/delivery_note/templates/pages/shipment.html b/stock/doctype/delivery_note/templates/pages/shipment.html
new file mode 100644
index 0000000..376e5df
--- /dev/null
+++ b/stock/doctype/delivery_note/templates/pages/shipment.html
@@ -0,0 +1 @@
+{% extends "app/portal/templates/sale.html" %}
\ No newline at end of file
diff --git a/stock/doctype/delivery_note/templates/pages/shipment.py b/stock/doctype/delivery_note/templates/pages/shipment.py
new file mode 100644
index 0000000..a33203b
--- /dev/null
+++ b/stock/doctype/delivery_note/templates/pages/shipment.py
@@ -0,0 +1,16 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+
+no_cache = True
+
+def get_context():
+	from portal.utils import get_transaction_context
+	context = get_transaction_context("Delivery Note", webnotes.form_dict.name)
+	context.update({
+		"parent_link": "shipments",
+		"parent_title": "Shipments"
+	})
+	return context
\ No newline at end of file
diff --git a/stock/doctype/delivery_note/templates/pages/shipments.html b/stock/doctype/delivery_note/templates/pages/shipments.html
new file mode 100644
index 0000000..f108683
--- /dev/null
+++ b/stock/doctype/delivery_note/templates/pages/shipments.html
@@ -0,0 +1 @@
+{% extends "app/portal/templates/sales_transactions.html" %}
\ No newline at end of file
diff --git a/stock/doctype/delivery_note/templates/pages/shipments.py b/stock/doctype/delivery_note/templates/pages/shipments.py
new file mode 100644
index 0000000..8b29149
--- /dev/null
+++ b/stock/doctype/delivery_note/templates/pages/shipments.py
@@ -0,0 +1,24 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+
+no_cache = True
+
+def get_context():
+	from portal.utils import get_currency_context
+	context = get_currency_context()
+	context.update({
+		"title": "Shipments",
+		"method": "portal.templates.pages.shipments.get_shipments",
+		"icon": "icon-truck",
+		"empty_list_message": "No Shipments Found",
+		"page": "shipment"
+	})
+	return context
+	
+@webnotes.whitelist()
+def get_shipments(start=0):
+	from portal.utils import get_transaction_list
+	return get_transaction_list("Delivery Note", start)
diff --git a/stock/doctype/item/item.py b/stock/doctype/item/item.py
index 75e2b03..25f3feb 100644
--- a/stock/doctype/item/item.py
+++ b/stock/doctype/item/item.py
@@ -228,7 +228,7 @@
 
 	def update_website(self):
 		def _invalidate_cache():
-			from website.helpers.product import invalidate_cache_for
+			from selling.utils.product import invalidate_cache_for
 			
 			invalidate_cache_for(self.doc.item_group)
 
@@ -258,13 +258,13 @@
 	def get_tax_rate(self, tax_type):
 		return { "tax_rate": webnotes.conn.get_value("Account", tax_type, "tax_rate") }
 
-	def prepare_template_args(self):
-		from website.helpers.product import get_parent_item_groups
+	def get_context(self):
+		from selling.utils.product import get_parent_item_groups
 		self.parent_groups = get_parent_item_groups(self.doc.item_group) + [{"name":self.doc.name}]
 		self.doc.title = self.doc.item_name
 
 		if self.doc.slideshow:
-			from website.helpers.slideshow import get_slideshow
+			from website.doctype.website_slideshow.website_slideshow import get_slideshow
 			get_slideshow(self)								
 
 	def get_file_details(self, arg = ''):
diff --git a/website/doctype/about_us_settings/__init__.py b/stock/doctype/item/templates/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to stock/doctype/item/templates/__init__.py
diff --git a/website/doctype/about_us_settings/__init__.py b/stock/doctype/item/templates/generators/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to stock/doctype/item/templates/generators/__init__.py
diff --git a/website/templates/html/product_page.html b/stock/doctype/item/templates/generators/item.html
similarity index 78%
rename from website/templates/html/product_page.html
rename to stock/doctype/item/templates/generators/item.html
index 5ac0b48..d855479 100644
--- a/website/templates/html/product_page.html
+++ b/stock/doctype/item/templates/generators/item.html
@@ -1,28 +1,32 @@
-{% extends "app/website/templates/html/page.html" %}
+{% extends base_template %}
 
 {% block javascript %}
-	{% include "app/website/templates/js/product_page.js" %}
+<script>
+	{% include "app/stock/doctype/item/templates/includes/product_page.js" %}
+</script>
 {% endblock %}
 
 {% block css %}
-	{% include "app/website/templates/css/product_page.css" %}
+<style>
+	{% include "app/stock/doctype/item/templates/includes/product_page.css" %}
+</style>
 {% endblock %}
 
 {% block content %}
-	{% include 'app/website/templates/html/product_search_box.html' %}
-	{% include 'app/website/templates/html/product_breadcrumbs.html' %}
+	{% include 'app/stock/doctype/item/templates/includes/product_search_box.html' %}
+	{% include 'app/stock/doctype/item/templates/includes/product_breadcrumbs.html' %}
 	<div class="col-md-12 product-page-content" itemscope itemtype="http://schema.org/Product">
 		<div class="row">
 			<div class="col-md-6">
 				{% if slideshow %}
-					{% include "app/website/templates/html/slideshow.html" %}
+					{% include "lib/website/templates/includes/html/slideshow.html" %}
 				{% else %}
 					{% if website_image %}
 					<image itemprop="image" class="item-main-image"
 						src="{{ website_image }}" />
 					{% else %}
 					<div class="img-area">
-						{% include 'app/website/templates/html/product_missing_image.html' %}
+		{% include 'app/stock/doctype/item/templates/includes/product_missing_image.html' %}
 					</div>
 					{% endif %}
 				{% endif %}
diff --git a/stock/doctype/item/templates/generators/item.py b/stock/doctype/item/templates/generators/item.py
new file mode 100644
index 0000000..c9146d1
--- /dev/null
+++ b/stock/doctype/item/templates/generators/item.py
@@ -0,0 +1,2 @@
+doctype = "Item"
+condition_field = "show_in_website"
\ No newline at end of file
diff --git a/website/templates/html/product_breadcrumbs.html b/stock/doctype/item/templates/includes/product_breadcrumbs.html
similarity index 82%
rename from website/templates/html/product_breadcrumbs.html
rename to stock/doctype/item/templates/includes/product_breadcrumbs.html
index 6d26748..f073e6f 100644
--- a/website/templates/html/product_breadcrumbs.html
+++ b/stock/doctype/item/templates/includes/product_breadcrumbs.html
@@ -1,4 +1,4 @@
-{% if obj.parent_groups and len(obj.parent_groups) > 1 %}
+{% if obj.parent_groups and (obj.parent_groups|length) > 1 %}
 <div class="col-md-12">
 	<div class="clearfix">
 		<ul class="breadcrumb">
diff --git a/website/templates/html/product_in_grid.html b/stock/doctype/item/templates/includes/product_in_grid.html
similarity index 82%
rename from website/templates/html/product_in_grid.html
rename to stock/doctype/item/templates/includes/product_in_grid.html
index adb2f74..4271aaa 100644
--- a/website/templates/html/product_in_grid.html
+++ b/stock/doctype/item/templates/includes/product_in_grid.html
@@ -4,7 +4,7 @@
 		{%- if website_image -%}
 		<img class="product-image" style="width: 80%; margin: auto;" src="{{ website_image }}">
 		{%- else -%}
-		{% include 'app/website/templates/html/product_missing_image.html' %}
+		{% include 'app/stock/doctype/item/templates/includes/product_missing_image.html' %}
 		{%- endif -%}
 		</a>
 	</div>
diff --git a/website/templates/html/product_in_list.html b/stock/doctype/item/templates/includes/product_in_list.html
similarity index 100%
rename from website/templates/html/product_in_list.html
rename to stock/doctype/item/templates/includes/product_in_list.html
diff --git a/website/templates/js/product_list.js b/stock/doctype/item/templates/includes/product_list.js
similarity index 95%
rename from website/templates/js/product_list.js
rename to stock/doctype/item/templates/includes/product_list.js
index 729499c..2856bde 100644
--- a/website/templates/js/product_list.js
+++ b/stock/doctype/item/templates/includes/product_list.js
@@ -15,7 +15,7 @@
 		url: "server.py",
 		dataType: "json",
 		data: {
-			cmd: "website.helpers.product.get_product_list",
+			cmd: "selling.utils.product.get_product_list",
 			start: window.start,
 			search: window.search,
 			product_group: window.product_group
diff --git a/website/templates/html/product_missing_image.html b/stock/doctype/item/templates/includes/product_missing_image.html
similarity index 100%
rename from website/templates/html/product_missing_image.html
rename to stock/doctype/item/templates/includes/product_missing_image.html
diff --git a/website/templates/css/product_page.css b/stock/doctype/item/templates/includes/product_page.css
similarity index 100%
rename from website/templates/css/product_page.css
rename to stock/doctype/item/templates/includes/product_page.css
diff --git a/website/templates/js/product_page.js b/stock/doctype/item/templates/includes/product_page.js
similarity index 93%
rename from website/templates/js/product_page.js
rename to stock/doctype/item/templates/includes/product_page.js
index b8c65ec..44b7379 100644
--- a/website/templates/js/product_page.js
+++ b/stock/doctype/item/templates/includes/product_page.js
@@ -7,7 +7,7 @@
 	
 	wn.call({
 		type: "POST",
-		method: "website.helpers.product.get_product_info",
+		method: "selling.utils.product.get_product_info",
 		args: {
 			item_code: "{{ name }}"
 		},
@@ -36,7 +36,7 @@
 	})
 	
 	$("#item-add-to-cart button").on("click", function() {
-		wn.cart.update_cart({
+		erpnext.cart.update_cart({
 			item_code: item_code,
 			qty: 1,
 			callback: function(r) {
@@ -50,7 +50,7 @@
 	});
 	
 	$("#item-update-cart button").on("click", function() {
-		wn.cart.update_cart({
+		erpnext.cart.update_cart({
 			item_code: item_code,
 			qty: $("#item-update-cart input").val(),
 			btn: this,
diff --git a/website/templates/html/product_search_box.html b/stock/doctype/item/templates/includes/product_search_box.html
similarity index 95%
rename from website/templates/html/product_search_box.html
rename to stock/doctype/item/templates/includes/product_search_box.html
index d808bf6..b4fa3e8 100644
--- a/website/templates/html/product_search_box.html
+++ b/stock/doctype/item/templates/includes/product_search_box.html
@@ -1,4 +1,4 @@
-<div class="col-md-12 clearfix">
+<div class="row clearfix">
 	<div class="pull-right" style="margin-top: 15px; margin-bottom: 15px;">
 		<form class="form-search">
 			<div class="input-group col-md-4 col-md-offset-8">
diff --git a/website/templates/pages/product_search.html b/stock/doctype/item/templates/pages/product_search.html
similarity index 75%
rename from website/templates/pages/product_search.html
rename to stock/doctype/item/templates/pages/product_search.html
index e969f75..9c6eeab 100644
--- a/website/templates/pages/product_search.html
+++ b/stock/doctype/item/templates/pages/product_search.html
@@ -1,9 +1,9 @@
-{% extends "app/website/templates/html/page.html" %}
+{% extends base_template %}
 
 {% set title="Product Search" %}
 
 {% block javascript %}
-{% include "app/website/templates/js/product_list.js" %}
+<script>{% include "app/stock/doctype/item/templates/includes/product_list.js" %}</script>
 {% endblock %}
 
 {% block content %}
@@ -17,7 +17,7 @@
 });
 </script>
 
-{% include 'app/website/templates/html/product_search_box.html' %}
+{% include "app/stock/doctype/item/templates/includes/product_search_box.html" %}
 <div class="col-md-12">
 	<h3 class="search-results">Search Results</h3>
 	<div id="search-list" class="row">
diff --git a/website/doctype/top_bar_item/top_bar_item.py b/stock/doctype/item/templates/pages/product_search.py
similarity index 62%
copy from website/doctype/top_bar_item/top_bar_item.py
copy to stock/doctype/item/templates/pages/product_search.py
index 26d0f76..24b474a 100644
--- a/website/doctype/top_bar_item/top_bar_item.py
+++ b/stock/doctype/item/templates/pages/product_search.py
@@ -2,8 +2,5 @@
 # License: GNU General Public License v3. See license.txt
 
 from __future__ import unicode_literals
-import webnotes
 
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
\ No newline at end of file
+no_cache = True
\ No newline at end of file
diff --git a/support/doctype/support_ticket/get_support_mails.py b/support/doctype/support_ticket/get_support_mails.py
index fa4f304..02f7ea8 100644
--- a/support/doctype/support_ticket/get_support_mails.py
+++ b/support/doctype/support_ticket/get_support_mails.py
@@ -3,7 +3,7 @@
 
 from __future__ import unicode_literals
 import webnotes
-from webnotes.utils import cstr, cint, decode_dict
+from webnotes.utils import cstr, cint, decode_dict, today
 from webnotes.utils.email_lib import sendmail		
 from webnotes.utils.email_lib.receive import POP3Mailbox
 from core.doctype.communication.communication import make
@@ -22,32 +22,13 @@
 		if mail.from_email == self.email_settings.fields.get('support_email'):
 			return
 		thread_id = mail.get_thread_id()
-		ticket = None
 		new_ticket = False
 
-		if thread_id and webnotes.conn.exists("Support Ticket", thread_id):
-			ticket = webnotes.bean("Support Ticket", thread_id)
-			ticket.doc.status = 'Open'
-			ticket.doc.save()
-				
-		else:
-			ticket = webnotes.bean([decode_dict({
-				"doctype":"Support Ticket",
-				"description": mail.content,
-				"subject": mail.subject,
-				"raised_by": mail.from_email,
-				"content_type": mail.content_type,
-				"status": "Open",
-			})])
-						
-			ticket.insert()
+		if not (thread_id and webnotes.conn.exists("Support Ticket", thread_id)):
 			new_ticket = True
-
-		mail.save_attachments_in_doc(ticket.doc)
-				
-		make(content=mail.content, sender=mail.from_email, subject = ticket.doc.subject,
-			doctype="Support Ticket", name=ticket.doc.name,
-			date=mail.date)
+		
+		ticket = add_support_communication(mail.subject, mail.content, mail.from_email,
+			docname=thread_id if new_ticket else None, mail=mail)
 			
 		if new_ticket and cint(self.email_settings.send_autoreply) and \
 			"mailer-daemon" not in mail.from_email.lower():
@@ -78,4 +59,31 @@
 
 def get_support_mails():
 	if cint(webnotes.conn.get_value('Email Settings', None, 'sync_support_mails')):
-		SupportMailbox()
\ No newline at end of file
+		SupportMailbox()
+		
+def add_support_communication(subject, content, sender, docname=None, mail=None):
+	if docname:
+		ticket = webnotes.bean("Support Ticket", docname)
+		ticket.doc.status = 'Open'
+		ticket.ignore_permissions = True
+		ticket.doc.save()
+	else:
+		ticket = webnotes.bean([decode_dict({
+			"doctype":"Support Ticket",
+			"description": content,
+			"subject": subject,
+			"raised_by": sender,
+			"content_type": mail.content_type if mail else None,
+			"status": "Open",
+		})])
+		ticket.ignore_permissions = True
+		ticket.insert()
+	
+	make(content=content, sender=sender, subject = subject,
+		doctype="Support Ticket", name=ticket.doc.name,
+		date=mail.date if mail else today())
+
+	if mail:
+		mail.save_attachments_in_doc(ticket.doc)
+		
+	return ticket
\ No newline at end of file
diff --git a/support/doctype/support_ticket/support_ticket.py b/support/doctype/support_ticket/support_ticket.py
index 5c38cc1..bf2a9fb 100644
--- a/support/doctype/support_ticket/support_ticket.py
+++ b/support/doctype/support_ticket/support_ticket.py
@@ -24,6 +24,9 @@
 		if signature:
 			content += '<p>' + signature + '</p>'
 		return content
+		
+	def get_portal_page(self):
+		return "ticket"
 	
 	def validate(self):
 		self.update_status()
@@ -72,18 +75,4 @@
 def set_status(name, status):
 	st = webnotes.bean("Support Ticket", name)
 	st.doc.status = status
-	st.save()
-
-def get_website_args():
-	bean = webnotes.bean("Support Ticket", webnotes.form_dict.name)
-	if bean.doc.raised_by != webnotes.session.user:
-		return {
-			"doc": {"name": "Not Allowed"}
-		}
-	else:
-		return {
-			"doc": bean.doc,
-			"doclist": bean.doclist,
-			"webnotes": webnotes,
-			"utils": webnotes.utils
-		}
+	st.save()
\ No newline at end of file
diff --git a/website/doctype/about_us_settings/__init__.py b/support/doctype/support_ticket/templates/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to support/doctype/support_ticket/templates/__init__.py
diff --git a/website/doctype/about_us_settings/__init__.py b/support/doctype/support_ticket/templates/pages/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to support/doctype/support_ticket/templates/pages/__init__.py
diff --git a/support/doctype/support_ticket/templates/pages/ticket.html b/support/doctype/support_ticket/templates/pages/ticket.html
new file mode 100644
index 0000000..3584d7b
--- /dev/null
+++ b/support/doctype/support_ticket/templates/pages/ticket.html
@@ -0,0 +1,122 @@
+{% extends base_template %}
+
+{% set title=doc.name %}
+
+{% set status_label = {
+	"Open": "label-success",
+	"To Reply": "label-danger",
+	"Closed": "label-default"
+} %}
+
+{% block content %}
+<div class="col-md-12">
+    <ul class="breadcrumb">
+    	<li><a href="index">Home</a></li>
+    	<li><a href="account">My Account</a></li>
+    	<li><a href="tickets">My Tickets</a></li>
+    	<li class="active"><i class="icon-ticket icon-fixed-width"></i> {{ doc.name }}</li>
+    </ul>
+	<h3><i class="icon-ticket icon-fixed-width"></i> {{ doc.name }}</h3>
+	{% if doc.name == "Not Allowed" -%}
+		<script>ask_to_login();</script>
+	{% else %}
+	<hr>
+	{%- if doc.status -%}
+	{% if doc.status == "Waiting for Customer" -%}
+		{% set status = "To Reply" %}
+	{% else %}
+		{% set status = doc.status %}
+	{%- endif -%}
+	<div class="row">
+		<div class="col-md-2" style="margin-bottom: 7px;">
+			<span class="label {{ status_label.get(status) or 'label-default' }}">{{ status }}</span>
+		</div>
+		<div class="col-md-8">
+			<div class="row col-md-12">{{ doc.subject }}</div>
+		</div>
+		<div class="col-md-2 pull-right">
+			<span class="text-muted">{{ utils.formatdate(doc.creation) }}</span>
+		</div>
+	</div>
+	<div class="row">
+		<h4 class="col-xs-6">Messages</h4>
+		<div class="col-xs-6">
+			 <button class="btn btn-sm btn-primary pull-right" id="ticket-reply">
+				  <i class="icon-envelope icon-fixed-width"></i> Reply</button>
+			 <button class="btn btn-sm btn-success pull-right hide" id="ticket-reply-send">
+				  <i class="icon-arrow-right icon-fixed-width"></i> Send</button>
+		</div>
+	</div>
+	<p id="ticket-alert" class="alert alert-danger" 
+		style="display: none;">&nbsp;</p>
+	{%- if doclist.get({"doctype":"Communication"}) -%}
+	<div>
+		<table class="table table-bordered table-striped" id="ticket-thread">
+			<tbody>
+				{%- for comm in 
+					(doclist.get({"doctype":"Communication"})|sort(reverse=True, attribute="creation")) %}
+				<tr>
+					<td>
+					<h5 style="text-transform: none">
+						{{ comm.sender }} on {{ utils.formatdate(comm.creation) }}</h5>
+					<hr>
+					<p>{{ webnotes.utils.is_html(comm.content) and comm.content or
+						comm.content.replace("\n", "<br>")}}</p>
+					</td>
+				</tr>
+				{% endfor -%}
+			</tbody>
+		</table>
+	</div>
+	{%- else -%}
+	<div class="alert">No messages</div>
+	{%- endif -%}
+	{%- endif -%}
+	{% endif -%}
+</div>
+{% endblock %}
+
+{% block javascript %}
+<script>
+$(document).ready(function() {
+	$("#ticket-reply").on("click", function() {
+		if(!$("#ticket-reply-editor").length) {
+			$('<tr id="ticket-reply-editor"><td>\
+				<h5 style="text-transform: none">Reply</h5>\
+				<hr>\
+				<textarea rows=10 class="form-control" style="resize: vertical;"></textarea>\
+			</td></tr>').prependTo($("#ticket-thread").find("tbody"));
+			$("#ticket-reply").addClass("hide");
+			$("#ticket-reply-send").removeClass("hide");
+		}
+	});
+	
+	$("#ticket-reply-send").on("click", function() {
+		var reply = $("#ticket-reply-editor").find("textarea").val().trim();
+		if(!reply) {
+			msgprint("Please write something in reply!");
+		} else {
+			wn.call({
+				type: "POST",
+				method: "support.doctype.support_ticket.templates.pages.ticket.add_reply",
+				btn: this,
+				args: { ticket: "{{ doc.name }}", message: reply },
+				callback: function(r) {
+					if(r.exc) {
+						msgprint(r._server_messages 
+							? JSON.parse(r._server_messages).join("<br>")
+							: "Something went wrong!");
+					} else {
+						window.location.reload();
+					}
+				}
+			})
+		}
+	});
+});
+
+var msgprint = function(txt) {
+	if(txt) $("#ticket-alert").html(txt).toggle(true);
+}
+</script>
+{% endblock %}
\ No newline at end of file
diff --git a/support/doctype/support_ticket/templates/pages/ticket.py b/support/doctype/support_ticket/templates/pages/ticket.py
new file mode 100644
index 0000000..ce3100f
--- /dev/null
+++ b/support/doctype/support_ticket/templates/pages/ticket.py
@@ -0,0 +1,37 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+from webnotes import _
+from webnotes.utils import today
+
+no_cache = True
+
+def get_context():
+	bean = webnotes.bean("Support Ticket", webnotes.form_dict.name)
+	if bean.doc.raised_by != webnotes.session.user:
+		return {
+			"doc": {"name": "Not Allowed"}
+		}
+	else:
+		return {
+			"doc": bean.doc,
+			"doclist": bean.doclist,
+			"webnotes": webnotes,
+			"utils": webnotes.utils
+		}
+
+@webnotes.whitelist()
+def add_reply(ticket, message):
+	if not message:
+		raise webnotes.throw(_("Please write something"))
+	
+	bean = webnotes.bean("Support Ticket", ticket)
+	if bean.doc.raised_by != webnotes.session.user:
+		raise webnotes.throw(_("You are not allowed to reply to this ticket."), webnotes.PermissionError)
+	
+	from core.doctype.communication.communication import make
+	make(content=message, sender=bean.doc.raised_by, subject = bean.doc.subject,
+		doctype="Support Ticket", name=bean.doc.name,
+		date=today())
\ No newline at end of file
diff --git a/support/doctype/support_ticket/templates/pages/tickets.html b/support/doctype/support_ticket/templates/pages/tickets.html
new file mode 100644
index 0000000..d99e614
--- /dev/null
+++ b/support/doctype/support_ticket/templates/pages/tickets.html
@@ -0,0 +1,87 @@
+{% extends "app/portal/templates/includes/transactions.html" %}
+
+{% block javascript -%}
+{{ super() }}
+
+<script>
+	var status_label = {
+		"Open": "label-success",
+		"Waiting for Customer": "label-danger",
+		"Closed": "label-default"
+	}
+
+	var render = function(doc) {
+		doc.status = doc.status.trim();
+		doc.label_class = status_label[doc.status] || "label-default";
+		if(doc.status==="Waiting for Customer") doc.status = "To Reply";
+	
+		$(repl('<a href="{{ page }}?name=%(name)s" class="list-group-item">\
+				<div class="row">\
+					<div class="col-md-2" style="margin-bottom: 7px;"><span class="label %(label_class)s">\
+						%(status)s</span></div>\
+					<div class="col-md-8">\
+						<div class="row col-md-12">%(name)s</div>\
+						<div class="row col-md-12 text-muted">%(subject)s</div>\
+					</div>\
+					<div class="col-md-2 pull-right">\
+						<span class="text-muted">%(creation)s</span>\
+					</div>\
+				</div>\
+			</a>', doc)).appendTo($list);
+	};
+	
+	$(document).ready(function() {
+		if(!window.$new_ticket) {
+			window.$new_ticket = $('<div>\
+					<button class="btn btn-primary" style="margin-bottom: 15px;" id="new-ticket">\
+						<i class="icon-tag icon-fixed-width"></i> New Ticket\
+					</button>\
+					<button class="btn btn-success hide" style="margin-bottom: 15px;" id="new-ticket-send">\
+						<i class="icon-arrow-right icon-fixed-width"></i> Send\
+					</button>\
+				</div>').insertBefore(".transaction-list");
+		}
+		
+		window.$new_ticket.find("#new-ticket").on("click", function() {
+			$(this).addClass("hide");
+			$(window.$new_ticket).find("#new-ticket-send").removeClass("hide");
+			$('<div class="well" id="ticket-editor">\
+					<div class="form-group"><input class="form-control" type="data"\
+						 placeholder="Subject" data-fieldname="subject"></div>\
+					<div class="form-group"><textarea rows=10 class="form-control" \
+						 style="resize: vertical;" placeholder="Message" \
+						 data-fieldname="message"></textarea></div>\
+				</div>')
+				.insertAfter(window.$new_ticket);
+		});
+		
+		window.$new_ticket.find("#new-ticket-send").on("click", function() {
+			var subject = $("#ticket-editor").find('[data-fieldname="subject"]').val().trim();
+			var message = $("#ticket-editor").find('[data-fieldname="message"]').val().trim();
+			if(!(subject && message)) {
+				msgprint("Please write something in subject and message!");
+			} else {
+				wn.call({
+					type: "POST",
+					method: "support.doctype.support_ticket.templates.pages.tickets.make_new_ticket",
+					btn: this,
+					args: { subject: subject, message: message },
+					callback: function(r) {
+						if(r.exc) {
+							msgprint(r._server_messages 
+								? JSON.parse(r._server_messages).join("<br>")
+								: "Something went wrong!");
+						} else {
+							window.location.href = "ticket?name=" + encodeURIComponent(r.message);
+						}
+					}
+				})
+			}
+		});
+	});
+	
+	var msgprint = function(txt) {
+		if(txt) $("#msgprint-alert").html(txt).toggle(true);
+	}
+</script>
+{%- endblock %}
\ No newline at end of file
diff --git a/support/doctype/support_ticket/templates/pages/tickets.py b/support/doctype/support_ticket/templates/pages/tickets.py
new file mode 100644
index 0000000..dd2e52e
--- /dev/null
+++ b/support/doctype/support_ticket/templates/pages/tickets.py
@@ -0,0 +1,38 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+from webnotes.utils import cint, formatdate
+
+no_cache = True
+
+def get_context():
+	return {
+		"title": "My Tickets",
+		"method": "support.doctype.support_ticket.templates.pages.tickets.get_tickets",
+		"icon": "icon-ticket",
+		"empty_list_message": "No Tickets Raised",
+		"page": "ticket"
+	}
+
+@webnotes.whitelist()
+def get_tickets(start=0):
+	tickets = webnotes.conn.sql("""select name, subject, status, creation 
+		from `tabSupport Ticket` where raised_by=%s 
+		order by modified desc
+		limit %s, 20""", (webnotes.session.user, cint(start)), as_dict=True)
+	for t in tickets:
+		t.creation = formatdate(t.creation)
+	
+	return tickets
+	
+@webnotes.whitelist()
+def make_new_ticket(subject, message):
+	if not (subject and message):
+		raise webnotes.throw(_("Please write something in subject and message!"))
+		
+	from support.doctype.support_ticket.get_support_mails import add_support_communication
+	ticket = add_support_communication(subject, message, webnotes.session.user)
+	
+	return ticket.doc.name
\ No newline at end of file
diff --git a/utilities/demo/demo_control_panel.py b/utilities/demo/demo_control_panel.py
index c70913e..a1113ae 100644
--- a/utilities/demo/demo_control_panel.py
+++ b/utilities/demo/demo_control_panel.py
@@ -6,7 +6,7 @@
       if webnotes.form_dict.lead_email and validate_email_add(webnotes.form_dict.lead_email):
         import requests
         response = requests.post(conf.demo_notify_url, data={
-          "cmd":"website.helpers.contact.send_message",
+          "cmd":"selling.utils.contact.send_message",
           "subject":"Logged into Demo",
           "sender": webnotes.form_dict.lead_email,
           "message": "via demo.erpnext.com"
diff --git a/utilities/doctype/address/address.py b/utilities/doctype/address/address.py
index 7ffb911..69e81b8 100644
--- a/utilities/doctype/address/address.py
+++ b/utilities/doctype/address/address.py
@@ -51,25 +51,3 @@
 				webnotes.conn.sql("""update `tabAddress` set `%s`=0 where `%s`=%s and name!=%s""" %
 					(is_address_type, fieldname, "%s", "%s"), (self.doc.fields[fieldname], self.doc.name))
 				break
-				
-def get_website_args():
-	def _get_fields(fieldnames):
-		return [webnotes._dict(zip(["label", "fieldname", "fieldtype", "options"], 
-				[df.label, df.fieldname, df.fieldtype, df.options]))
-			for df in webnotes.get_doctype("Address", processed=True).get({"fieldname": ["in", fieldnames]})]
-	
-	bean = None
-	if webnotes.form_dict.name:
-		bean = webnotes.bean("Address", webnotes.form_dict.name)
-	
-	return {
-		"doc": bean.doc if bean else None,
-		"meta": webnotes._dict({
-			"left_fields": _get_fields(["address_title", "address_type", "address_line1", "address_line2",
-				"city", "state", "pincode", "country"]),
-			"right_fields": _get_fields(["email_id", "phone", "fax", "is_primary_address",
-				"is_shipping_address"])
-		}),
-		"cint": cint
-	}
-	
diff --git a/website/doctype/about_us_settings/__init__.py b/utilities/doctype/address/templates/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to utilities/doctype/address/templates/__init__.py
diff --git a/website/doctype/about_us_settings/__init__.py b/utilities/doctype/address/templates/pages/__init__.py
similarity index 100%
copy from website/doctype/about_us_settings/__init__.py
copy to utilities/doctype/address/templates/pages/__init__.py
diff --git a/website/templates/pages/address.html b/utilities/doctype/address/templates/pages/address.html
similarity index 95%
rename from website/templates/pages/address.html
rename to utilities/doctype/address/templates/pages/address.html
index 6544b12..f02d687 100644
--- a/website/templates/pages/address.html
+++ b/utilities/doctype/address/templates/pages/address.html
@@ -1,4 +1,4 @@
-{% extends "app/website/templates/html/page.html" %}
+{% extends base_template %}
 
 {% set title=doc and doc.name or "New Address" %}
 {% set docname=(doc and doc.name or "") %}
@@ -40,7 +40,6 @@
 <div class="col-md-12">
     <ul class="breadcrumb">
     	<li><a href="index">Home</a></li>
-    	<li><a href="account">My Account</a></li>
     	<li><a href="addresses">My Addresses</a></li>
     	<li class="active"><i class="icon-map-marker icon-fixed-width"></i> {{ title }}</li>
     </ul>
@@ -89,7 +88,7 @@
 			wn.call({
 				btn: $(this),
 				type: "POST",
-				method: "website.helpers.cart.save_address",
+				method: "selling.utils.cart.save_address",
 				args: { fields: fields, address_fieldname: get_url_arg("address_fieldname") },
 				callback: function(r) {
 					if(r.exc) {
diff --git a/utilities/doctype/address/templates/pages/address.py b/utilities/doctype/address/templates/pages/address.py
new file mode 100644
index 0000000..d968c92
--- /dev/null
+++ b/utilities/doctype/address/templates/pages/address.py
@@ -0,0 +1,30 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+from webnotes.utils import cint
+
+no_cache = True
+
+def get_context():
+	def _get_fields(fieldnames):
+		return [webnotes._dict(zip(["label", "fieldname", "fieldtype", "options"], 
+				[df.label, df.fieldname, df.fieldtype, df.options]))
+			for df in webnotes.get_doctype("Address", processed=True).get({"fieldname": ["in", fieldnames]})]
+	
+	bean = None
+	if webnotes.form_dict.name:
+		bean = webnotes.bean("Address", webnotes.form_dict.name)
+	
+	return {
+		"doc": bean.doc if bean else None,
+		"meta": webnotes._dict({
+			"left_fields": _get_fields(["address_title", "address_type", "address_line1", "address_line2",
+				"city", "state", "pincode", "country"]),
+			"right_fields": _get_fields(["email_id", "phone", "fax", "is_primary_address",
+				"is_shipping_address"])
+		}),
+		"cint": cint
+	}
+	
diff --git a/website/templates/pages/addresses.html b/utilities/doctype/address/templates/pages/addresses.html
similarity index 88%
rename from website/templates/pages/addresses.html
rename to utilities/doctype/address/templates/pages/addresses.html
index 04fc47b..d56c734 100644
--- a/website/templates/pages/addresses.html
+++ b/utilities/doctype/address/templates/pages/addresses.html
@@ -1,4 +1,4 @@
-{% extends "app/website/templates/html/page.html" %}
+{% extends base_template %}
 
 {% set title="My Addresses" %}
 
@@ -6,7 +6,6 @@
 <div class="col-md-12">
     <ul class="breadcrumb">
     	<li><a href="index">Home</a></li>
-    	<li><a href="account">My Account</a></li>
     	<li class="active"><i class="icon-map-marker icon-fixed-width"></i> My Addresses</li>
     </ul>
 	<p><a class="btn btn-default" href="address"><i class="icon-plus"> New Address</i></a></p>
@@ -26,7 +25,7 @@
 	
 	var fetch_addresses = function() {
 		wn.call({
-			method: "website.helpers.cart.get_addresses",
+			method: "selling.utils.cart.get_addresses",
 			callback: function(r) {
 				$("#address-list .progress").remove();
 				var $list = $("#address-list");
diff --git a/website/doctype/top_bar_item/top_bar_item.py b/utilities/doctype/address/templates/pages/addresses.py
similarity index 62%
copy from website/doctype/top_bar_item/top_bar_item.py
copy to utilities/doctype/address/templates/pages/addresses.py
index 26d0f76..24b474a 100644
--- a/website/doctype/top_bar_item/top_bar_item.py
+++ b/utilities/doctype/address/templates/pages/addresses.py
@@ -2,8 +2,5 @@
 # License: GNU General Public License v3. See license.txt
 
 from __future__ import unicode_literals
-import webnotes
 
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
\ No newline at end of file
+no_cache = True
\ No newline at end of file
diff --git a/website/README.md b/website/README.md
deleted file mode 100644
index 8ad3903..0000000
--- a/website/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-Module for website management.
-
-Contains:
-
-- DocTypes for Web Page, Blogs
-- Templates
-- Settings
-- Generators for Item, Blog Post, Item Group
\ No newline at end of file
diff --git a/website/__init__.py b/website/__init__.py
deleted file mode 100644
index aace68b..0000000
--- a/website/__init__.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from __future__ import unicode_literals
-install_docs = [
-	{"doctype":"Role", "role_name":"Blogger", "name":"Blogger"},
-	{"doctype":"Role", "role_name":"Website Manager", "name":"Website Manager"},
-]
-
-import webnotes
-
-	
-def get_site_address():
-	from webnotes.utils import get_request_site_address
-	url = get_request_site_address()
-
-	if not url or url=='http://localhost':
-		new_url = webnotes.conn.get_value('Website Settings', 'Website Settings',
-			'subdomain')
-		if new_url:
-			url = "http://" + new_url
-			
-	return url
\ No newline at end of file
diff --git a/website/css/website.css b/website/css/website.css
deleted file mode 100644
index 4cd7ac7..0000000
--- a/website/css/website.css
+++ /dev/null
@@ -1,204 +0,0 @@
-.container {
-	max-width: 728px !important;
-}
-
-h1, h2, h3, h4, h5 {
-	font-weight: bold;
-}
-
-a {
-	cursor: pointer;
-}
-
-img {
-	max-width: 100%;
-}
-
-.content {
-	padding-bottom: 30px;
-}
-
-.banner {
-	margin-top: 20px;
-	padding: 0px 20px;
-}
-
-.missing-image {
-	background-color: #eee;
-	padding: 40px;
-	width: 112px;
-	font-size: 32px;
-	color: #888;
-}
-
-.social-icons {
-	font-size: 120%;
-	float: right;
-	text-align: right;
-}
-.social-icons a:hover {
-	text-decoration: none;
-}
-.social-icons a i:hover {
-	text-decoration: none;
-}
-.social-icons i {
-	margin-left: 5px;
-}
-
-div.web-footer {
-	padding-top: 10px;
-	padding-bottom: 20px;
-}
-
-.web-footer-menu ul {
-	list-style: none;
-	margin: 0px;
-	padding: 0px;
-}
-
-.web-footer-menu ul li {
-	display: inline;
-	padding: 2px 14px 2px 0px;
-	margin: 0px;
-}
-
-.avatar {
-	display: inline-block; 
-	vertical-align: middle;
-	overflow: hidden;
-	background-color: #ddd;
-	border: 1px solid #eee;
-}
-
-.avatar-small {
-	margin-right: 5px;
-	width: 30px;
-	height: 30px;
-	border-radius: 30px;
-	-moz-border-radius: 30px;
-	-webkit-border-radius: 30px;
-}
-.avatar-small img {
-	width: 30px; 
-}
-
-.avatar-medium {
-	margin-right: 5px;
-	width: 48px;
-	height: 48px;
-	border-radius: 48px;
-	-moz-border-radius: 48px;
-	-webkit-border-radius: 48px;
-}
-.avatar-medium img {
-	width: 48px; 
-}
-
-.avatar-large {
-	margin-right: 10px;
-	width: 72px;
-	height: 72px;
-	border-radius: 72px;
-	-moz-border-radius: 72px;
-	-webkit-border-radius: 72px;
-}
-.avatar-large img {
-	width: 72px; 
-}
-
-.avatar-x-large {
-	margin-right: 10px;
-	width: 100px;
-	height: 100px;
-	border-radius: 100px;
-	-moz-border-radius: 100px;
-	-webkit-border-radius: 100px;
-}
-.avatar-x-large img {
-	width: 100px; 
-}
-
-.carousel-control .icon {
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  z-index: 5;
-  display: inline-block;
-  width: 20px;
-  height: 20px;
-  margin-top: -10px;
-  margin-left: -10px;
-}
-
-.hidden-sm-inline {
-	display: none;
-}
-
-@media (min-width: 768px) {
-	.hidden-sm-inline {
-		display: inline;
-	}
-}
-
-.panel-heading, 
-.panel-body {
-	padding-left: 15px;
-}
-
-
-.breadcrumb {
-	margin: 0px -20px;
-	margin-bottom: 20px;
-}
-
-fieldset {
-	margin-bottom: 20px;
-}
-
-/* buttons */
-
-.btn-default {
-  color: #ffffff;
-  background-color: #a7a9aa;
-  border-color: #a7a9aa;
-}
-
-.dropup .btn-default .caret,
-.btn-default .caret {
-	border-bottom-color: #ffffff;
-	border-top-color: #ffffff;
-}
-
-.btn-default:hover,
-.btn-default:focus,
-.btn-default:active,
-.btn-default.active,
-.open .dropdown-toggle.btn-default {
-  background-color: #9a9c9d;
-  border-color: #8d9091;
-  color: #ffffff;
-}
-
-.btn-default.disabled,
-.btn-default[disabled],
-fieldset[disabled] .btn-default,
-.btn-default.disabled:hover,
-.btn-default[disabled]:hover,
-fieldset[disabled] .btn-default:hover,
-.btn-default.disabled:focus,
-.btn-default[disabled]:focus,
-fieldset[disabled] .btn-default:focus,
-.btn-default.disabled:active,
-.btn-default[disabled]:active,
-fieldset[disabled] .btn-default:active,
-.btn-default.disabled.active,
-.btn-default[disabled].active,
-fieldset[disabled] .btn-default.active {
-  background-color: #a7a9aa;
-  border-color: #a7a9aa;
-}
-
-.label {
-	padding-top: 0.3em;
-}
\ No newline at end of file
diff --git a/website/doctype/__init__.py b/website/doctype/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/website/doctype/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/website/doctype/about_us_settings/README.md b/website/doctype/about_us_settings/README.md
deleted file mode 100644
index 977a7a3..0000000
--- a/website/doctype/about_us_settings/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Configuration for "About" page in the website that shows company, history and team.
\ No newline at end of file
diff --git a/website/doctype/about_us_settings/about_us_settings.py b/website/doctype/about_us_settings/about_us_settings.py
deleted file mode 100644
index 139abc2..0000000
--- a/website/doctype/about_us_settings/about_us_settings.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import webnotes
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
-			
-	def on_update(self):
-		from webnotes.webutils import clear_cache
-		clear_cache("about")
-		
-def get_args():
-	obj = webnotes.get_obj("About Us Settings")
-	return {
-		"obj": obj
-	}
\ No newline at end of file
diff --git a/website/doctype/about_us_settings/about_us_settings.txt b/website/doctype/about_us_settings/about_us_settings.txt
deleted file mode 100644
index 0e34d67..0000000
--- a/website/doctype/about_us_settings/about_us_settings.txt
+++ /dev/null
@@ -1,110 +0,0 @@
-[
- {
-  "creation": "2013-03-19 12:02:15", 
-  "docstatus": 0, 
-  "modified": "2013-07-05 14:23:27", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "allow_attach": 1, 
-  "description": "Settings for the About Us Page", 
-  "doctype": "DocType", 
-  "document_type": "Other", 
-  "icon": "icon-group", 
-  "issingle": 1, 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "name": "__common__", 
-  "parent": "About Us Settings", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0, 
-  "read_only": 0
- }, 
- {
-  "create": 1, 
-  "doctype": "DocPerm", 
-  "name": "__common__", 
-  "parent": "About Us Settings", 
-  "parentfield": "permissions", 
-  "parenttype": "DocType", 
-  "permlevel": 0, 
-  "read": 1, 
-  "report": 0, 
-  "role": "Website Manager", 
-  "submit": 0, 
-  "write": 1
- }, 
- {
-  "doctype": "DocType", 
-  "name": "About Us Settings"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "help", 
-  "fieldtype": "HTML", 
-  "label": "Help", 
-  "options": "<div class=\"alert\">Link for About Us Page is \"/about\"</div>"
- }, 
- {
-  "description": "Introduce your company to the website visitor.", 
-  "doctype": "DocField", 
-  "fieldname": "company_introduction", 
-  "fieldtype": "Text Editor", 
-  "label": "Company Introduction"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "sb0", 
-  "fieldtype": "Section Break", 
-  "label": "Company History"
- }, 
- {
-  "description": "\"Company History\"", 
-  "doctype": "DocField", 
-  "fieldname": "company_history_heading", 
-  "fieldtype": "Data", 
-  "label": "Company History Heading"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "company_history", 
-  "fieldtype": "Table", 
-  "label": "Company History", 
-  "options": "Company History"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "sb1", 
-  "fieldtype": "Section Break", 
-  "label": "Team Members"
- }, 
- {
-  "description": "\"Team Members\" or \"Management\"", 
-  "doctype": "DocField", 
-  "fieldname": "team_members_heading", 
-  "fieldtype": "Data", 
-  "label": "Team Members Heading"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "team_members", 
-  "fieldtype": "Table", 
-  "label": "Team Members", 
-  "options": "About Us Team Member"
- }, 
- {
-  "description": "More content for the bottom of the page.", 
-  "doctype": "DocField", 
-  "fieldname": "footer", 
-  "fieldtype": "Text Editor", 
-  "label": "Footer"
- }, 
- {
-  "doctype": "DocPerm"
- }
-]
\ No newline at end of file
diff --git a/website/doctype/about_us_team_member/README.md b/website/doctype/about_us_team_member/README.md
deleted file mode 100644
index 98b794f..0000000
--- a/website/doctype/about_us_team_member/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Details of team member for About Us page.
\ No newline at end of file
diff --git a/website/doctype/about_us_team_member/__init__.py b/website/doctype/about_us_team_member/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/website/doctype/about_us_team_member/__init__.py
+++ /dev/null
diff --git a/website/doctype/about_us_team_member/about_us_team_member.py b/website/doctype/about_us_team_member/about_us_team_member.py
deleted file mode 100644
index 784339d..0000000
--- a/website/doctype/about_us_team_member/about_us_team_member.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import webnotes
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
\ No newline at end of file
diff --git a/website/doctype/about_us_team_member/about_us_team_member.txt b/website/doctype/about_us_team_member/about_us_team_member.txt
deleted file mode 100644
index c5e6d16..0000000
--- a/website/doctype/about_us_team_member/about_us_team_member.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-[
- {
-  "creation": "2013-03-07 11:55:11", 
-  "docstatus": 0, 
-  "modified": "2013-07-10 14:54:03", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "doctype": "DocType", 
-  "istable": 1, 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "in_list_view": 1, 
-  "name": "__common__", 
-  "parent": "About Us Team Member", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "doctype": "DocType", 
-  "name": "About Us Team Member"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "full_name", 
-  "fieldtype": "Data", 
-  "label": "Full Name", 
-  "reqd": 1, 
-  "width": "150px"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "image_link", 
-  "fieldtype": "Select", 
-  "label": "Image Link", 
-  "options": "attach_files:", 
-  "width": "150px"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "bio", 
-  "fieldtype": "Small Text", 
-  "label": "Bio", 
-  "reqd": 1, 
-  "width": "200px"
- }
-]
\ No newline at end of file
diff --git a/website/doctype/blog_category/README.md b/website/doctype/blog_category/README.md
deleted file mode 100644
index af14b5d..0000000
--- a/website/doctype/blog_category/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Blog category.
\ No newline at end of file
diff --git a/website/doctype/blog_category/__init__.py b/website/doctype/blog_category/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/website/doctype/blog_category/__init__.py
+++ /dev/null
diff --git a/website/doctype/blog_category/blog_category.py b/website/doctype/blog_category/blog_category.py
deleted file mode 100644
index 7d99e2a..0000000
--- a/website/doctype/blog_category/blog_category.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import webnotes
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
-		
-	def on_update(self):
-		# for blog footer
-		from webnotes.webutils import clear_cache
-		clear_cache()
-		
\ No newline at end of file
diff --git a/website/doctype/blog_category/blog_category.txt b/website/doctype/blog_category/blog_category.txt
deleted file mode 100644
index b986c44..0000000
--- a/website/doctype/blog_category/blog_category.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-[
- {
-  "creation": "2013-03-08 09:41:11", 
-  "docstatus": 0, 
-  "modified": "2013-07-05 14:27:02", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "autoname": "field:category_name", 
-  "doctype": "DocType", 
-  "document_type": "Master", 
-  "icon": "icon-tag", 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "category_name", 
-  "fieldtype": "Data", 
-  "label": "Category Name", 
-  "name": "__common__", 
-  "parent": "Blog Category", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0, 
-  "reqd": 1
- }, 
- {
-  "doctype": "DocPerm", 
-  "name": "__common__", 
-  "parent": "Blog Category", 
-  "parentfield": "permissions", 
-  "parenttype": "DocType", 
-  "permlevel": 0, 
-  "read": 1
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Blog Category"
- }, 
- {
-  "doctype": "DocField"
- }, 
- {
-  "cancel": 1, 
-  "create": 1, 
-  "doctype": "DocPerm", 
-  "role": "Website Manager", 
-  "write": 1
- }, 
- {
-  "doctype": "DocPerm", 
-  "role": "Blogger"
- }
-]
\ No newline at end of file
diff --git a/website/doctype/blog_post/README.md b/website/doctype/blog_post/README.md
deleted file mode 100644
index 63d3c0f..0000000
--- a/website/doctype/blog_post/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Blog post for "Blogs" section of website.
\ No newline at end of file
diff --git a/website/doctype/blog_post/__init__.py b/website/doctype/blog_post/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/website/doctype/blog_post/__init__.py
+++ /dev/null
diff --git a/website/doctype/blog_post/blog_post.js b/website/doctype/blog_post/blog_post.js
deleted file mode 100644
index af4dcc9..0000000
--- a/website/doctype/blog_post/blog_post.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-// License: GNU General Public License v3. See license.txt
-
-cur_frm.cscript.refresh = function(doc) {
-	if(!doc.__islocal && doc.published && !doc.email_sent) {
-		cur_frm.add_custom_button('Email Subscribers', function() {
-			$c_obj(make_doclist(doc.doctype, doc.name), 'send_emails', '', function(r) {
-				cur_frm.refresh();
-			});
-		})
-	}
-}
\ No newline at end of file
diff --git a/website/doctype/blog_post/blog_post.py b/website/doctype/blog_post/blog_post.py
deleted file mode 100644
index 48b3206..0000000
--- a/website/doctype/blog_post/blog_post.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-
-import webnotes
-import webnotes.webutils
-from webnotes import _
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
-
-	def autoname(self):
-		from webnotes.webutils import page_name
-		self.doc.name = page_name(self.doc.title)
-
-	def validate(self):
-		if self.doc.blog_intro:
-			self.doc.blog_intro = self.doc.blog_intro[:140]
-
-		# update posts
-		webnotes.conn.sql("""update tabBlogger set posts=(select count(*) from `tabBlog Post` 
-			where ifnull(blogger,'')=tabBlogger.name)
-			where name=%s""", self.doc.blogger)
-
-	def on_update(self):
-		webnotes.webutils.update_page_name(self.doc, self.doc.title)
-		webnotes.webutils.delete_page_cache("writers")
-
-	def prepare_template_args(self):
-		import webnotes.utils
-		import markdown2
-		
-		# this is for double precaution. usually it wont reach this code if not published
-		if not webnotes.utils.cint(self.doc.published):
-			raise Exception, "This blog has not been published yet!"
-		
-		# temp fields
-		from webnotes.utils import global_date_format, get_fullname
-		self.doc.full_name = get_fullname(self.doc.owner)
-		self.doc.updated = global_date_format(self.doc.published_on)
-		self.doc.content_html = self.doc.content
-		
-		if self.doc.blogger:
-			self.doc.blogger_info = webnotes.doc("Blogger", self.doc.blogger).fields
-		
-		self.doc.description = self.doc.blog_intro or self.doc.content[:140]
-		self.doc.meta_description = self.doc.description
-		
-		self.doc.categories = webnotes.conn.sql_list("select name from `tabBlog Category` order by name")
-		
-		self.doc.texts = {
-			"comments": _("Comments"),
-			"first_comment": _("Be the first one to comment"),
-			"add_comment": _("Add Comment"),
-			"submit": _("Submit"),
-			"all_posts_by": _("All posts by"),
-		}
-
-		comment_list = webnotes.conn.sql("""\
-			select comment, comment_by_fullname, creation
-			from `tabComment` where comment_doctype="Blog Post"
-			and comment_docname=%s order by creation""", self.doc.name, as_dict=1)
-		
-		self.doc.comment_list = comment_list or []
-		for comment in self.doc.comment_list:
-			comment['comment_date'] = webnotes.utils.global_date_format(comment['creation'])
-			comment['comment'] = markdown2.markdown(comment['comment'])
diff --git a/website/doctype/blog_post/blog_post.txt b/website/doctype/blog_post/blog_post.txt
deleted file mode 100644
index 79c1aee..0000000
--- a/website/doctype/blog_post/blog_post.txt
+++ /dev/null
@@ -1,135 +0,0 @@
-[
- {
-  "creation": "2013-03-28 10:35:30", 
-  "docstatus": 0, 
-  "modified": "2013-07-05 15:08:30", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "allow_attach": 1, 
-  "allow_import": 1, 
-  "doctype": "DocType", 
-  "icon": "icon-quote-left", 
-  "max_attachments": 5, 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "name": "__common__", 
-  "parent": "Blog Post", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "doctype": "DocPerm", 
-  "name": "__common__", 
-  "parent": "Blog Post", 
-  "parentfield": "permissions", 
-  "parenttype": "DocType", 
-  "permlevel": 0, 
-  "read": 1, 
-  "report": 1, 
-  "submit": 0
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Blog Post"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "title", 
-  "fieldtype": "Data", 
-  "label": "Title", 
-  "reqd": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "published", 
-  "fieldtype": "Check", 
-  "label": "Published"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "published_on", 
-  "fieldtype": "Date", 
-  "label": "Published On"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "column_break_3", 
-  "fieldtype": "Column Break"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "blogger", 
-  "fieldtype": "Link", 
-  "in_list_view": 1, 
-  "label": "Blogger", 
-  "options": "Blogger", 
-  "reqd": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "blog_category", 
-  "fieldtype": "Link", 
-  "in_list_view": 1, 
-  "label": "Blog Category", 
-  "options": "Blog Category"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "section_break_5", 
-  "fieldtype": "Section Break"
- }, 
- {
-  "description": "Description for listing page, in plain text, only a couple of lines. (max 140 characters)", 
-  "doctype": "DocField", 
-  "fieldname": "blog_intro", 
-  "fieldtype": "Small Text", 
-  "in_list_view": 1, 
-  "label": "Blog Intro", 
-  "reqd": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "content", 
-  "fieldtype": "Text Editor", 
-  "label": "Content", 
-  "reqd": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "page_name", 
-  "fieldtype": "Data", 
-  "hidden": 1, 
-  "label": "Page Name", 
-  "read_only": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "email_sent", 
-  "fieldtype": "Check", 
-  "hidden": 1, 
-  "label": "Email Sent"
- }, 
- {
-  "create": 1, 
-  "doctype": "DocPerm", 
-  "role": "Website Manager", 
-  "write": 1
- }, 
- {
-  "create": 1, 
-  "doctype": "DocPerm", 
-  "role": "Blogger", 
-  "write": 1
- }, 
- {
-  "doctype": "DocPerm", 
-  "role": "Guest", 
-  "write": 0
- }
-]
\ No newline at end of file
diff --git a/website/doctype/blog_settings/README.md b/website/doctype/blog_settings/README.md
deleted file mode 100644
index 0a76d4e..0000000
--- a/website/doctype/blog_settings/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Blog titles and introduction texts.
\ No newline at end of file
diff --git a/website/doctype/blog_settings/__init__.py b/website/doctype/blog_settings/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/website/doctype/blog_settings/__init__.py
+++ /dev/null
diff --git a/website/doctype/blog_settings/blog_settings.py b/website/doctype/blog_settings/blog_settings.py
deleted file mode 100644
index 784339d..0000000
--- a/website/doctype/blog_settings/blog_settings.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import webnotes
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
\ No newline at end of file
diff --git a/website/doctype/blog_settings/blog_settings.txt b/website/doctype/blog_settings/blog_settings.txt
deleted file mode 100644
index 27fa563..0000000
--- a/website/doctype/blog_settings/blog_settings.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-[
- {
-  "creation": "2013-03-11 17:48:16", 
-  "docstatus": 0, 
-  "modified": "2013-07-05 14:27:31", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "description": "Blog Settings", 
-  "doctype": "DocType", 
-  "icon": "icon-cog", 
-  "issingle": 1, 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "name": "__common__", 
-  "parent": "Blog Settings", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "create": 1, 
-  "doctype": "DocPerm", 
-  "name": "__common__", 
-  "parent": "Blog Settings", 
-  "parentfield": "permissions", 
-  "parenttype": "DocType", 
-  "permlevel": 0, 
-  "read": 1, 
-  "role": "Website Manager", 
-  "write": 1
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Blog Settings"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "blog_title", 
-  "fieldtype": "Data", 
-  "label": "Blog Title"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "blog_introduction", 
-  "fieldtype": "Small Text", 
-  "label": "Blog Introduction"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "writers_introduction", 
-  "fieldtype": "Small Text", 
-  "label": "Writers Introduction"
- }, 
- {
-  "doctype": "DocPerm"
- }
-]
\ No newline at end of file
diff --git a/website/doctype/blogger/README.md b/website/doctype/blogger/README.md
deleted file mode 100644
index 13ddecd..0000000
--- a/website/doctype/blogger/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Profile of blog writer in "Blog" section.
\ No newline at end of file
diff --git a/website/doctype/blogger/blogger.py b/website/doctype/blogger/blogger.py
deleted file mode 100644
index 9cb4a44..0000000
--- a/website/doctype/blogger/blogger.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import webnotes
-from webnotes import _
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
-		
-	def on_update(self):
-		"if profile is set, then update all older blogs"
-		
-		from website.helpers.blog import clear_blog_cache
-		clear_blog_cache()
-		
-		if self.doc.profile:
-			for blog in webnotes.conn.sql_list("""select name from `tabBlog Post` where owner=%s 
-				and ifnull(blogger,'')=''""", self.doc.profile):
-				b = webnotes.bean("Blog Post", blog)
-				b.doc.blogger = self.doc.name
-				b.save()
-				
-def get_writers_args():
-	bloggers = webnotes.conn.sql("""select * from `tabBlogger` 
-	 	where ifnull(posts,0) > 0 and ifnull(disabled,0)=0 
-		order by posts desc""", as_dict=1)
-		
-	args = {
-		"bloggers": bloggers,
-		"texts": {
-			"all_posts_by": _("All posts by")
-		},
-		"categories": webnotes.conn.sql_list("select name from `tabBlog Category` order by name")
-	}
-	
-	args.update(webnotes.doc("Blog Settings", "Blog Settings").fields)
-	return args
\ No newline at end of file
diff --git a/website/doctype/blogger/blogger.txt b/website/doctype/blogger/blogger.txt
deleted file mode 100644
index 1486c01..0000000
--- a/website/doctype/blogger/blogger.txt
+++ /dev/null
@@ -1,102 +0,0 @@
-[
- {
-  "creation": "2013-03-25 16:00:51", 
-  "docstatus": 0, 
-  "modified": "2013-08-30 16:35:24", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "allow_attach": 1, 
-  "autoname": "field:short_name", 
-  "description": "Profile of a Blogger", 
-  "doctype": "DocType", 
-  "document_type": "Master", 
-  "icon": "icon-user", 
-  "max_attachments": 1, 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "name": "__common__", 
-  "parent": "Blogger", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "doctype": "DocPerm", 
-  "name": "__common__", 
-  "parent": "Blogger", 
-  "parentfield": "permissions", 
-  "parenttype": "DocType", 
-  "permlevel": 0, 
-  "read": 1, 
-  "write": 1
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Blogger"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "disabled", 
-  "fieldtype": "Check", 
-  "label": "Disabled"
- }, 
- {
-  "description": "Will be used in url (usually first name).", 
-  "doctype": "DocField", 
-  "fieldname": "short_name", 
-  "fieldtype": "Data", 
-  "label": "Short Name", 
-  "reqd": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "full_name", 
-  "fieldtype": "Data", 
-  "in_list_view": 1, 
-  "label": "Full Name", 
-  "reqd": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "profile", 
-  "fieldtype": "Link", 
-  "label": "Profile", 
-  "options": "Profile"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "bio", 
-  "fieldtype": "Small Text", 
-  "label": "Bio"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "avatar", 
-  "fieldtype": "Select", 
-  "label": "Avatar", 
-  "options": "attach_files:"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "posts", 
-  "fieldtype": "Int", 
-  "in_list_view": 1, 
-  "label": "Posts", 
-  "read_only": 1
- }, 
- {
-  "create": 1, 
-  "doctype": "DocPerm", 
-  "role": "Website Manager"
- }, 
- {
-  "doctype": "DocPerm", 
-  "match": "owner:profile", 
-  "role": "Blogger"
- }
-]
\ No newline at end of file
diff --git a/website/doctype/company_history/README.md b/website/doctype/company_history/README.md
deleted file mode 100644
index 482c8d3..0000000
--- a/website/doctype/company_history/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Company history detail for "About Us" section.
\ No newline at end of file
diff --git a/website/doctype/company_history/__init__.py b/website/doctype/company_history/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/website/doctype/company_history/__init__.py
+++ /dev/null
diff --git a/website/doctype/company_history/company_history.py b/website/doctype/company_history/company_history.py
deleted file mode 100644
index 784339d..0000000
--- a/website/doctype/company_history/company_history.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import webnotes
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
\ No newline at end of file
diff --git a/website/doctype/company_history/company_history.txt b/website/doctype/company_history/company_history.txt
deleted file mode 100644
index c0f230c..0000000
--- a/website/doctype/company_history/company_history.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-[
- {
-  "creation": "2013-02-22 01:28:08", 
-  "docstatus": 0, 
-  "modified": "2013-07-10 14:54:06", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "doctype": "DocType", 
-  "istable": 1, 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "in_list_view": 1, 
-  "name": "__common__", 
-  "parent": "Company History", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Company History"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "year", 
-  "fieldtype": "Data", 
-  "label": "Year"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "highlight", 
-  "fieldtype": "Text", 
-  "label": "Highlight", 
-  "print_width": "300px", 
-  "width": "300px"
- }
-]
\ No newline at end of file
diff --git a/website/doctype/contact_us_settings/README.md b/website/doctype/contact_us_settings/README.md
deleted file mode 100644
index 61f589f..0000000
--- a/website/doctype/contact_us_settings/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Settings, introduction for "Contact Us" section.
\ No newline at end of file
diff --git a/website/doctype/contact_us_settings/__init__.py b/website/doctype/contact_us_settings/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/website/doctype/contact_us_settings/__init__.py
+++ /dev/null
diff --git a/website/doctype/contact_us_settings/contact_us_settings.py b/website/doctype/contact_us_settings/contact_us_settings.py
deleted file mode 100644
index 37df106..0000000
--- a/website/doctype/contact_us_settings/contact_us_settings.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import webnotes
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
-
-	def onload(self):
-		"""load address"""
-		if self.doc.query_options:
-			self.query_options = filter(None, self.doc.query_options.replace(",", "\n").split())
-		else:
-			self.query_options = ["Sales", "Support", "General"]
-		if self.doc.address:
-			self.address = webnotes.bean("Address", self.doc.address).doc
-			
-	def on_update(self):
-		from webnotes.webutils import clear_cache
-		clear_cache("contact")
\ No newline at end of file
diff --git a/website/doctype/contact_us_settings/contact_us_settings.txt b/website/doctype/contact_us_settings/contact_us_settings.txt
deleted file mode 100644
index 21db27e..0000000
--- a/website/doctype/contact_us_settings/contact_us_settings.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-[
- {
-  "creation": "2013-02-21 20:12:42", 
-  "docstatus": 0, 
-  "modified": "2013-07-05 14:32:24", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "description": "Settings for Contact Us Page", 
-  "doctype": "DocType", 
-  "icon": "icon-cog", 
-  "issingle": 1, 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "name": "__common__", 
-  "parent": "Contact Us Settings", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "create": 1, 
-  "doctype": "DocPerm", 
-  "name": "__common__", 
-  "parent": "Contact Us Settings", 
-  "parentfield": "permissions", 
-  "parenttype": "DocType", 
-  "permlevel": 0, 
-  "read": 1, 
-  "report": 0, 
-  "role": "Website Manager", 
-  "submit": 0, 
-  "write": 1
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Contact Us Settings"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "help", 
-  "fieldtype": "HTML", 
-  "label": "Help", 
-  "options": "<div class=\"alert\">Link for Contact Page is \"/contact\"</div>"
- }, 
- {
-  "description": "Address to be displayed on the Contact Page", 
-  "doctype": "DocField", 
-  "fieldname": "address", 
-  "fieldtype": "Link", 
-  "label": "Address", 
-  "options": "Address"
- }, 
- {
-  "description": "Default: \"Contact Us\"", 
-  "doctype": "DocField", 
-  "fieldname": "heading", 
-  "fieldtype": "Data", 
-  "label": "Heading"
- }, 
- {
-  "description": "Introductory information for the Contact Us Page", 
-  "doctype": "DocField", 
-  "fieldname": "introduction", 
-  "fieldtype": "Text Editor", 
-  "label": "Introduction"
- }, 
- {
-  "description": "Contact options, like \"Sales Query, Support Query\" etc each on a new line or separated by commas.", 
-  "doctype": "DocField", 
-  "fieldname": "query_options", 
-  "fieldtype": "Small Text", 
-  "label": "Query Options"
- }, 
- {
-  "doctype": "DocPerm"
- }
-]
\ No newline at end of file
diff --git a/website/doctype/style_settings/README.md b/website/doctype/style_settings/README.md
deleted file mode 100644
index de9d0cd..0000000
--- a/website/doctype/style_settings/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-Style settings for website. Includes settings for:
-
-- Site colours (background, toolbars)
-- Fonts (family and size)
-- Background (image if any)
-- Custom CSS
\ No newline at end of file
diff --git a/website/doctype/style_settings/__init__.py b/website/doctype/style_settings/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/website/doctype/style_settings/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/website/doctype/style_settings/custom_template.css b/website/doctype/style_settings/custom_template.css
deleted file mode 100644
index 7abdb4b..0000000
--- a/website/doctype/style_settings/custom_template.css
+++ /dev/null
@@ -1,235 +0,0 @@
-{% if doc.at_import %}
-{{ doc.at_import }}
-{% endif %}
-
-body {
-{% if doc.background_image %}
-	background: url("../{{ doc.background_image }}") repeat;
-{% elif doc.background_color %}
-	background-color: #{{ doc.background_color }};
-	background-image: none;
-{% else %}
-	background-color: #ffffff;
-{% endif %}	
-{% if doc.font or doc.google_web_font_for_text %}
-	font-family: '{{ doc.google_web_font_for_text or doc.font }}', 'Helvetica Neue', Arial, Sans !important;
-{% endif %}
-	{% if doc.font_size %}font-size: {{ doc.font_size }} !important;{% endif %}
-	{% if doc.page_text %}color: #{{ doc.page_text }};{% endif %}
-}
-
-{% if doc.page_links %}a, a:hover {
-	color: #{{ doc.page_links }};
-}{% endif %}
-
-{% if doc.font_size %}
-.small {
-	font-size: {{ doc.small_font_size }} !important;
-}
-{% endif %}
-
-div.outer {
-	background-color: #{{ doc.page_background }};
-}
-
-{% if doc.google_web_font_for_heading or doc.heading_font %}h1, h2, h3, h4, h5 {
-	font-family: '{{ doc.google_web_font_for_heading or doc.heading_font }}', 'Helvetica Neue', Arial !important;
-}{% endif %}
-
-{% if doc.heading_text_style %}h1, h2, h3, h4, h5 {
-	text-transform: {{ doc.heading_text_style }};
-}{% endif %}
-
-{% if doc.page_headings %}h1, h2, h3, h4, h5 {
-	color: #{{ doc.page_headings }};
-}{% endif %}
-
-{% if doc.page_border %}
-/* Page Border*/
-div.outer {
-	box-shadow: 0 0 8px rgba(0, 0, 0, 0.2);
-	-moz-box-shadow: 0 0 8px rgba(0, 0, 0, 0.2);
-	-webkibox-shadow: 0 0 8px rgba(0, 0, 0, 0.2);
-}
-{% else %}
-{% if doc.background_color.lower() == doc.page_background.lower() %}
-div.web-footer {
-	border-top: 1px solid #{{ get_hex_shade(doc.page_background, 15) }};
-	padding-top: 10px;
-}
-{% endif %}
-{% endif %}
-
-div.web-footer, div.web-footer a {
-	font-size: 90%;
-	color: #{{ get_hex_shade(doc.background_color, 70) }};
-}
-
-/* Bootstrap Navbar */
-.navbar-default {
-	border: 0px;
-}
-
-.navbar {
-	box-shadow: none;
-	border-radius: 0px;
-    background-color: #{{ doc.top_bar_background}};
-    background-repeat: repeat-x;
-	background-image: none;
-	border-bottom: 1px solid {% if doc.top_bar_background.lower() == doc.page_background.lower() -%}
-		#{{ get_hex_shade(doc.page_background, 15) }};
-	{%- else -%}
-		transparent;
-	{%- endif %}
-}
-
-.navbar .navbar-brand,
-.navbar .navbar-brand:hover,
-.navbar .navbar-brand:focus,
-.navbar .nav > li > a {
-  color: #{{ doc.top_bar_foreground }};
-  text-shadow: none;
-}
-
-.navbar .nav > li > a:hover,
-.navbar .nav > li > a:focus {
-  color: #{{ doc.top_bar_foreground }};
-  background-color: transparent;
-}
-
-.navbar .navbar-text {
-  color: #999999;
-}
-
-.navbar .nav .active > a,
-.navbar .nav .active > a:hover,
-.navbar .nav .active > a:focus {
-  color: #{{ doc.top_bar_foreground }};
-  background-color: transparent;
-}
-
-.navbar .navbar-link {
-  color: #444444;
-}
-
-.navbar .navbar-link:hover,
-.navbar .navbar-link:focus {
-  color: #{{ doc.top_bar_foreground}};
-}
-
-.navbar-fixed-top,
-.navbar-static-top {
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-        
-}
-.navbar .nav > .active > a,
-.navbar .nav > .active > a:hover,
-.navbar .nav > .active > a:focus {
-  color: #424242;
-  text-decoration: none;
-  background-color: transparent;
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.navbar .nav li.dropdown > .dropdown-toggle .caret, 
-.navbar .nav li.dropdown > .dropdown-toggle:hover .caret {
-	border-top-color: #{{ doc.top_bar_foreground}};
-	border-bottom-color: #{{ doc.top_bar_foreground}};
-}
-
-.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.open > .dropdown-toggle:hover .caret {
-	border-top-color: #{{ doc.top_bar_background}};
-	border-bottom-color: #{{ doc.top_bar_background}};
-}
-
-.navbar .nav li.dropdown.open > .dropdown-toggle {
-  color: #{{ doc.top_bar_background}};
-  background-color: #{{ doc.top_bar_foreground}};
-}
-
-@media (max-width: 800px) {
-  .navbar .nav-collapse .nav > li > a,
-  .navbar .nav-collapse .dropdown-menu a {
-    background-color: #{{ doc.top_bar_background}};
-    color: #{{ doc.top_bar_foreground}};
-  }
-  .navbar .nav-collapse .nav > li > a:hover, 
-  .navbar .nav-collapse .dropdown-menu a:hover {
-    background-color: #{{ doc.top_bar_foreground}};
-    color: #{{ doc.top_bar_background}};
-  }
-
-  .navbar .nav li.dropdown > .dropdown-toggle .caret {
-    border-top-color: #{{ doc.top_bar_foreground }};
-    border-bottom-color: #{{ doc.top_bar_foreground }};	
-  }
-
-  .navbar .nav li.dropdown > .dropdown-toggle:hover .caret {
-    border-top-color: #{{ doc.top_bar_foreground }};
-    border-bottom-color: #{{ doc.top_bar_foreground }};
-  }
-
-  .navbar .nav li.dropdown.open > .dropdown-toggle .caret,
-  .navbar .nav li.dropdown.open > .dropdown-toggle:hover .caret {
-    border-top-color: #{{ doc.top_bar_background }};
-    border-bottom-color: #{{ doc.top_bar_background }};	
-  }
-
-}
-
-.navbar-default .navbar-toggle .icon-bar {
-	background-color: #{{ doc.top_bar_foreground }};
-}
-
-.breadcrumb {
-	background-color: #{{ get_hex_shade(doc.page_background, 5) }};
-}
-
-.breadcrumb > li {
-  text-shadow: none;
-}
-
-
-.table-striped tbody > tr:nth-child(odd) > td,
-.table-striped tbody > tr:nth-child(odd) > th {
-	background-color: #{{ get_hex_shade(doc.page_background, 5) }};
-}
-
-.table-hover tbody tr:hover td,
-.table-hover tbody tr:hover th {
-	background-color: #{{ get_hex_shade(doc.page_background, 10) }};
-}
-
-.table-bordered {
-	border: 1px solid #{{ get_hex_shade(doc.page_background, 15) }};
-}
-
-.table th,
-.table td {
-  border-top: 1px solid #{{ get_hex_shade(doc.page_background, 15) }};
-}
-
-.table-bordered th,
-.table-bordered td {
-	border-left: 1px solid #{{ get_hex_shade(doc.page_background, 15) }};
-}
-
-
-
-.hero-unit {
-	background-color: #{{ get_hex_shade(doc.page_background, 15) }};
-}
-
-pre, code {
-	background-color: #{{ get_hex_shade(doc.page_background, 5) }};
-}
-
-hr {
-	border-top: 1px solid #{{ get_hex_shade(doc.page_background, 15) }};
-	border-bottom: 1px solid #{{ get_hex_shade(doc.page_background, 5) }};	
-}
diff --git a/website/doctype/style_settings/style_settings.js b/website/doctype/style_settings/style_settings.js
deleted file mode 100644
index f94246d..0000000
--- a/website/doctype/style_settings/style_settings.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-// License: GNU General Public License v3. See license.txt
-
-
-cur_frm.cscript.onload_post_render = function() {
-	wn.require('lib/public/js/lib/jscolor/jscolor.js');
-	$.each(["background_color", "page_background", "page_text", "page_links", 
-		"top_bar_background", "top_bar_foreground", "page_headings"], function(i, v) {
-		$(cur_frm.fields_dict[v].input).addClass('color');
-	})
-	jscolor.bind();
-}
\ No newline at end of file
diff --git a/website/doctype/style_settings/style_settings.py b/website/doctype/style_settings/style_settings.py
deleted file mode 100644
index 7efe861..0000000
--- a/website/doctype/style_settings/style_settings.py
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import webnotes
-
-from webnotes.utils import cint, cstr
-from webnotes import _
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
-		
-	def validate(self):
-		"""make custom css"""
-		from jinja2 import Template
-		from webnotes.webutils import get_hex_shade
-		import os
-		
-		default_colours = {
-			"background_color": "FFFFFF",
-			"page_background": "FFFFFF",
-			"top_bar_background": "FFFFFF",
-			"top_bar_foreground": "444444",
-			"page_headings": "222222",
-			"page_text": "000000"
-		}
-		
-		for d in default_colours:
-			if not self.doc.fields.get(d):
-				self.doc.fields[d] = default_colours[d]
-		
-		self.validate_colors()
-		
-		with open(os.path.join(
-				os.path.dirname(os.path.abspath(__file__)), 
-				'custom_template.css'), 'r') as f:
-			temp = Template(f.read())
-		
-		self.prepare()
-		
-		self.doc.custom_css = temp.render(doc = self.doc, get_hex_shade=get_hex_shade)
-		if self.doc.add_css:
-			self.doc.custom_css += '\n\n/* User CSS */\n\n' + self.doc.add_css
-		
-		from webnotes.sessions import clear_cache
-		clear_cache('Guest')
-
-		from webnotes.webutils import clear_cache
-		clear_cache()
-		
-		for f in ["small_font_size", "at_import", "heading_text_style"]:
-			if f in self.doc.fields:
-				del self.doc.fields[f]
-	
-	def validate_colors(self):
-		if (self.doc.page_background or self.doc.page_text) and \
-			self.doc.page_background==self.doc.page_text:
-				webnotes.msgprint(_("Page text and background is same color. Please change."),
-					raise_exception=1)
-
-		if (self.doc.top_bar_background or self.doc.top_bar_foreground) and \
-			self.doc.top_bar_background==self.doc.top_bar_foreground:
-				webnotes.msgprint(_("Top Bar text and background is same color. Please change."),
-					raise_exception=1)
-
-	
-	def prepare(self):
-		if not self.doc.font_size:
-			self.doc.font_size = '13px'
-			
-		self.doc.small_font_size = cstr(cint(self.doc.font_size[:-2])-2) + 'px'
-		self.doc.page_border = cint(self.doc.page_border)
-		
-		fonts = []
-		if self.doc.google_web_font_for_heading:
-			fonts.append(self.doc.google_web_font_for_heading)
-		if self.doc.google_web_font_for_text:
-			fonts.append(self.doc.google_web_font_for_text)
-			
-		fonts = list(set(fonts))
-		
-		if self.doc.heading_text_as:
-			self.doc.heading_text_style = {
-				"UPPERCASE": "uppercase",
-				"Title Case":"capitalize",
-				"lowercase": "lowercase"
-			}.get(self.doc.heading_text_as) or ""
-		
-		self.doc.at_import = ""
-		for f in fonts:
-			self.doc.at_import += "\n@import url(https://fonts.googleapis.com/css?family=%s:400,700);" % f.replace(" ", "+")
-
-	
-	def on_update(self):
-		"""rebuild pages"""
-		from website.helpers.make_web_include_files import make
-		make()
\ No newline at end of file
diff --git a/website/doctype/style_settings/style_settings.txt b/website/doctype/style_settings/style_settings.txt
deleted file mode 100644
index 7119d2c..0000000
--- a/website/doctype/style_settings/style_settings.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-[
- {
-  "creation": "2013-03-25 16:01:33", 
-  "docstatus": 0, 
-  "modified": "2013-07-05 14:57:01", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "allow_attach": 1, 
-  "description": "Set your background color, font and image (tiled)", 
-  "doctype": "DocType", 
-  "icon": "icon-cog", 
-  "issingle": 1, 
-  "max_attachments": 1, 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "name": "__common__", 
-  "parent": "Style Settings", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "doctype": "DocPerm", 
-  "name": "__common__", 
-  "parent": "Style Settings", 
-  "parentfield": "permissions", 
-  "parenttype": "DocType", 
-  "read": 1, 
-  "report": 0, 
-  "role": "Website Manager", 
-  "submit": 0
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Style Settings"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "color", 
-  "fieldtype": "Section Break", 
-  "label": "Color"
- }, 
- {
-  "description": "If image is selected, color will be ignored (attach first)", 
-  "doctype": "DocField", 
-  "fieldname": "background_image", 
-  "fieldtype": "Select", 
-  "label": "Background Image", 
-  "options": "attach_files:"
- }, 
- {
-  "description": "Solid background color (default light gray)", 
-  "doctype": "DocField", 
-  "fieldname": "background_color", 
-  "fieldtype": "Data", 
-  "label": "Background Color"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "page_background", 
-  "fieldtype": "Data", 
-  "label": "Page Background"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "page_border", 
-  "fieldtype": "Check", 
-  "label": "Page Border"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "page_headings", 
-  "fieldtype": "Data", 
-  "label": "Page Headings"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "page_text", 
-  "fieldtype": "Data", 
-  "label": "Page Text"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "page_links", 
-  "fieldtype": "Data", 
-  "label": "Page Links"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "cb0", 
-  "fieldtype": "Column Break", 
-  "label": "Top Bar", 
-  "print_width": "50%", 
-  "width": "50%"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "top_bar_background", 
-  "fieldtype": "Data", 
-  "label": "Top Bar Background"
- }, 
- {
-  "description": "000 is black, fff is white", 
-  "doctype": "DocField", 
-  "fieldname": "top_bar_foreground", 
-  "fieldtype": "Data", 
-  "label": "Top Bar Text"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "fonts", 
-  "fieldtype": "Section Break", 
-  "label": "Fonts"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "heading_font", 
-  "fieldtype": "Select", 
-  "label": "Font (Heading)", 
-  "options": "\nHelvetica Neue\nLucida Grande\nVerdana\nArial\nGeorgia\nTahoma\nLato\nOpen Sans"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "font", 
-  "fieldtype": "Select", 
-  "label": "Font (Text)", 
-  "options": "\nHelvetica Neue\nLucida Grande\nVerdana\nArial\nGeorgia\nTahoma"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "font_size", 
-  "fieldtype": "Select", 
-  "label": "Font Size (Text)", 
-  "options": "\n12px\n13px\n14px\n15px\n16px"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "heading_text_as", 
-  "fieldtype": "Select", 
-  "label": "Heading Text As", 
-  "options": "\nUPPERCASE\nTitle Case\nlowercase"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "column_break_13", 
-  "fieldtype": "Column Break"
- }, 
- {
-  "description": "Add the name of <a href=\"http://google.com/webfonts\" target=\"_blank\">Google Web Font</a> e.g. \"Open Sans\"", 
-  "doctype": "DocField", 
-  "fieldname": "google_web_font_for_heading", 
-  "fieldtype": "Data", 
-  "label": "Google Web Font (Heading)"
- }, 
- {
-  "description": "Add the name of <a href=\"http://google.com/webfonts\" target=\"_blank\">Google Web Font</a> e.g. \"Open Sans\"", 
-  "doctype": "DocField", 
-  "fieldname": "google_web_font_for_text", 
-  "fieldtype": "Data", 
-  "label": "Google Web Font (Text)"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "css", 
-  "fieldtype": "Section Break", 
-  "label": "CSS"
- }, 
- {
-  "description": "add your own CSS (careful!)", 
-  "doctype": "DocField", 
-  "fieldname": "add_css", 
-  "fieldtype": "Code", 
-  "label": "Add CSS"
- }, 
- {
-  "description": "Auto generated", 
-  "doctype": "DocField", 
-  "fieldname": "custom_css", 
-  "fieldtype": "Code", 
-  "label": "Custom CSS", 
-  "read_only": 1
- }, 
- {
-  "create": 1, 
-  "doctype": "DocPerm", 
-  "permlevel": 0, 
-  "write": 1
- }, 
- {
-  "amend": 0, 
-  "cancel": 0, 
-  "create": 0, 
-  "doctype": "DocPerm", 
-  "permlevel": 1
- }
-]
\ No newline at end of file
diff --git a/website/doctype/top_bar_item/README.md b/website/doctype/top_bar_item/README.md
deleted file mode 100644
index 3300367..0000000
--- a/website/doctype/top_bar_item/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Link in the header or footer of the website.
\ No newline at end of file
diff --git a/website/doctype/top_bar_item/__init__.py b/website/doctype/top_bar_item/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/website/doctype/top_bar_item/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/website/doctype/top_bar_item/top_bar_item.txt b/website/doctype/top_bar_item/top_bar_item.txt
deleted file mode 100644
index 58d101e..0000000
--- a/website/doctype/top_bar_item/top_bar_item.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-[
- {
-  "creation": "2013-02-22 01:28:08", 
-  "docstatus": 0, 
-  "modified": "2013-07-10 14:54:25", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "doctype": "DocType", 
-  "istable": 1, 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "in_list_view": 1, 
-  "name": "__common__", 
-  "parent": "Top Bar Item", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Top Bar Item"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "label", 
-  "fieldtype": "Data", 
-  "label": "Label", 
-  "print_width": "120px", 
-  "width": "120px"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "url", 
-  "fieldtype": "Data", 
-  "label": "URL", 
-  "print_width": "200px", 
-  "width": "200px"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "target", 
-  "fieldtype": "Select", 
-  "label": "Target", 
-  "options": "\ntarget = \"_blank\""
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "parent_label", 
-  "fieldtype": "Select", 
-  "label": "Parent Label"
- }
-]
\ No newline at end of file
diff --git a/website/doctype/web_page/README.md b/website/doctype/web_page/README.md
deleted file mode 100644
index 1ef179b..0000000
--- a/website/doctype/web_page/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Static (HTML / JS / CSS) page created by the user for the website.
\ No newline at end of file
diff --git a/website/doctype/web_page/__init__.py b/website/doctype/web_page/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/website/doctype/web_page/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/website/doctype/web_page/web_page.js b/website/doctype/web_page/web_page.js
deleted file mode 100644
index 9e52360..0000000
--- a/website/doctype/web_page/web_page.js
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-// License: GNU General Public License v3. See license.txt
-
-$.extend(cur_frm.cscript, {
-	layout: function(doc) {
-		if(!doc.__islocal) {
-			if(doc.insert_code) {
-				if(!doc.javascript) {
-					cur_frm.set_value("javascript", 
-						'wn.pages["'+doc.name+'"].onload = function(wrapper) { }');
-				}
-			}
-			if(doc.insert_style) {
-				if(!doc.css) {
-					cur_frm.set_value("css", '#page-'+doc.name+' { }');	
-				}
-			}
-		}
-	},
-	refresh: function(doc) {
-		cur_frm.cscript.layout(doc);
-	},
-	insert_style: function(doc) {
-		cur_frm.cscript.layout(doc);		
-	},
-	insert_code: function(doc) {
-		cur_frm.cscript.layout(doc);		
-	}
-})
\ No newline at end of file
diff --git a/website/doctype/web_page/web_page.py b/website/doctype/web_page/web_page.py
deleted file mode 100644
index dbcd68e..0000000
--- a/website/doctype/web_page/web_page.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import webnotes
-
-class DocType():
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
-
-	def autoname(self):
-		from webnotes.webutils import page_name
-		self.doc.name = page_name(self.doc.title)
-
-	def on_update(self):
-		from webnotes.webutils import update_page_name
-		update_page_name(self.doc, self.doc.title)
-		self.if_home_clear_cache()
-
-	def if_home_clear_cache(self):
-		"""if home page, clear cache"""
-		if webnotes.conn.get_value("Website Settings", None, "home_page")==self.doc.name:
-			from webnotes.sessions import clear_cache
-			clear_cache('Guest')
-			
-			from webnotes.webutils import clear_cache
-			clear_cache(self.doc.page_name)
-			clear_cache('index')
-			
-	def prepare_template_args(self):
-		if self.doc.slideshow:
-			from website.helpers.slideshow import get_slideshow
-			get_slideshow(self)
-			
-		self.doc.meta_description = self.doc.description
diff --git a/website/doctype/web_page/web_page.txt b/website/doctype/web_page/web_page.txt
deleted file mode 100644
index 34fa266..0000000
--- a/website/doctype/web_page/web_page.txt
+++ /dev/null
@@ -1,154 +0,0 @@
-[
- {
-  "creation": "2013-03-28 10:35:30", 
-  "docstatus": 0, 
-  "modified": "2013-07-05 15:02:45", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "allow_attach": 1, 
-  "description": "Page to show on the website\n", 
-  "doctype": "DocType", 
-  "document_type": "Transaction", 
-  "icon": "icon-file-alt", 
-  "max_attachments": 20, 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "name": "__common__", 
-  "parent": "Web Page", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "doctype": "DocPerm", 
-  "name": "__common__", 
-  "parent": "Web Page", 
-  "parentfield": "permissions", 
-  "parenttype": "DocType", 
-  "read": 1, 
-  "role": "Website Manager", 
-  "submit": 0
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Web Page"
- }, 
- {
-  "description": "Title / headline of your page", 
-  "doctype": "DocField", 
-  "fieldname": "title", 
-  "fieldtype": "Data", 
-  "label": "Title", 
-  "reqd": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "cb1", 
-  "fieldtype": "Column Break", 
-  "width": "50%"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "published", 
-  "fieldtype": "Check", 
-  "label": "Published"
- }, 
- {
-  "description": "Page url name (auto-generated) (add \".html\")", 
-  "doctype": "DocField", 
-  "fieldname": "page_name", 
-  "fieldtype": "Data", 
-  "in_list_view": 1, 
-  "label": "Page Name", 
-  "read_only": 1
- }, 
- {
-  "description": "Page content", 
-  "doctype": "DocField", 
-  "fieldname": "sb1", 
-  "fieldtype": "Section Break", 
-  "label": "Content"
- }, 
- {
-  "description": "Begin this page with a slideshow of images", 
-  "doctype": "DocField", 
-  "fieldname": "slideshow", 
-  "fieldtype": "Link", 
-  "label": "Slideshow", 
-  "options": "Website Slideshow"
- }, 
- {
-  "description": "Description for page header.", 
-  "doctype": "DocField", 
-  "fieldname": "description", 
-  "fieldtype": "Small Text", 
-  "label": "Description"
- }, 
- {
-  "description": "Content in markdown format that appears on the main side of your page", 
-  "doctype": "DocField", 
-  "fieldname": "main_section", 
-  "fieldtype": "Text Editor", 
-  "label": "Main Section"
- }, 
- {
-  "description": "Link to other pages in the side bar and next section", 
-  "doctype": "DocField", 
-  "fieldname": "sb2", 
-  "fieldtype": "Section Break", 
-  "label": "More"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "text_align", 
-  "fieldtype": "Select", 
-  "label": "Text Align", 
-  "options": "Left\nCenter\nRight"
- }, 
- {
-  "description": "Add code as &lt;script&gt;", 
-  "doctype": "DocField", 
-  "fieldname": "insert_code", 
-  "fieldtype": "Check", 
-  "label": "Insert Code"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "javascript", 
-  "fieldtype": "Code", 
-  "label": "Javascript", 
-  "options": "Javascript"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "insert_style", 
-  "fieldtype": "Check", 
-  "label": "Insert Style"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "css", 
-  "fieldtype": "Code", 
-  "label": "CSS", 
-  "options": "CSS"
- }, 
- {
-  "create": 1, 
-  "doctype": "DocPerm", 
-  "permlevel": 0, 
-  "report": 1, 
-  "write": 1
- }, 
- {
-  "amend": 0, 
-  "cancel": 0, 
-  "create": 0, 
-  "doctype": "DocPerm", 
-  "permlevel": 1
- }
-]
\ No newline at end of file
diff --git a/website/doctype/website_item_group/README.md b/website/doctype/website_item_group/README.md
deleted file mode 100644
index 54abfaf..0000000
--- a/website/doctype/website_item_group/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Alternate grouping of parent Item (for website, so an Item can be listed under multiple groups).
\ No newline at end of file
diff --git a/website/doctype/website_item_group/__init__.py b/website/doctype/website_item_group/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/website/doctype/website_item_group/__init__.py
+++ /dev/null
diff --git a/website/doctype/website_item_group/website_item_group.py b/website/doctype/website_item_group/website_item_group.py
deleted file mode 100644
index 784339d..0000000
--- a/website/doctype/website_item_group/website_item_group.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import webnotes
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
\ No newline at end of file
diff --git a/website/doctype/website_item_group/website_item_group.txt b/website/doctype/website_item_group/website_item_group.txt
deleted file mode 100644
index 3d26e85..0000000
--- a/website/doctype/website_item_group/website_item_group.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-[
- {
-  "creation": "2013-02-22 01:28:09", 
-  "docstatus": 0, 
-  "modified": "2013-07-10 14:54:25", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "description": "Cross Listing of Item in multiple groups", 
-  "doctype": "DocType", 
-  "document_type": "Other", 
-  "istable": 1, 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "item_group", 
-  "fieldtype": "Link", 
-  "in_list_view": 1, 
-  "label": "Item Group", 
-  "name": "__common__", 
-  "options": "Item Group", 
-  "parent": "Website Item Group", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Website Item Group"
- }, 
- {
-  "doctype": "DocField"
- }
-]
\ No newline at end of file
diff --git a/website/doctype/website_script/README.md b/website/doctype/website_script/README.md
deleted file mode 100644
index 65af2a1..0000000
--- a/website/doctype/website_script/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Custom javascript to be appended at the end of the page. Used to include 3rd party tracking / analytics tools.
\ No newline at end of file
diff --git a/website/doctype/website_script/__init__.py b/website/doctype/website_script/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/website/doctype/website_script/__init__.py
+++ /dev/null
diff --git a/website/doctype/website_script/website_script.py b/website/doctype/website_script/website_script.py
deleted file mode 100644
index 2a5b9e2..0000000
--- a/website/doctype/website_script/website_script.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import webnotes
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
-		
-	def on_update(self):
-		# make js and css
-		from website.helpers.make_web_include_files import make
-		make()
\ No newline at end of file
diff --git a/website/doctype/website_script/website_script.txt b/website/doctype/website_script/website_script.txt
deleted file mode 100644
index ae22a34..0000000
--- a/website/doctype/website_script/website_script.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-[
- {
-  "creation": "2012-12-27 11:51:24", 
-  "docstatus": 0, 
-  "modified": "2013-07-05 15:02:48", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "description": "Script to attach to all web pages.", 
-  "doctype": "DocType", 
-  "document_type": "Other", 
-  "icon": "icon-code", 
-  "issingle": 1, 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "javascript", 
-  "fieldtype": "Code", 
-  "label": "Javascript", 
-  "name": "__common__", 
-  "options": "Javascript", 
-  "parent": "Website Script", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "create": 1, 
-  "doctype": "DocPerm", 
-  "name": "__common__", 
-  "parent": "Website Script", 
-  "parentfield": "permissions", 
-  "parenttype": "DocType", 
-  "permlevel": 0, 
-  "read": 1, 
-  "role": "Website Manager", 
-  "write": 1
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Website Script"
- }, 
- {
-  "doctype": "DocField"
- }, 
- {
-  "doctype": "DocPerm"
- }
-]
\ No newline at end of file
diff --git a/website/doctype/website_settings/README.md b/website/doctype/website_settings/README.md
deleted file mode 100644
index 8e654fc..0000000
--- a/website/doctype/website_settings/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Overall website settings. Including banners, items appearing in the top and bottom menus, tracking code for Google Analytics etc.
\ No newline at end of file
diff --git a/website/doctype/website_settings/__init__.py b/website/doctype/website_settings/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/website/doctype/website_settings/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/website/doctype/website_settings/website_settings.js b/website/doctype/website_settings/website_settings.js
deleted file mode 100644
index 21b55be..0000000
--- a/website/doctype/website_settings/website_settings.js
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-// License: GNU General Public License v3. See license.txt
-
-// update parent select
-
-$.extend(cur_frm.cscript, {
-	refresh: function(doc) {
-		cur_frm.add_custom_button("Auto Build Website", function() {
-			cur_frm.call({
-				doc: cur_frm.doc,
-				method: "make_website"
-			})
-		}, 'icon-magic')
-	},
-	onload_post_render: function(doc) {
-		this.set_parent_label_options();
-	},
-	
-	label: function(doc, cdt, cdn) {
-		var item = wn.model.get_doc(cdt, cdn);
-		if(item.parentfield === "top_bar_items") {
-			this.set_parent_label_options();
-		}
-	},
-	
-	parent_label: function(doc, cdt, cdn) {
-		this.label(doc, cdt, cdn);
-	},
-	
-	url: function(doc, cdt, cdn) {
-		this.label(doc, cdt, cdn);
-	},
-	
-	set_parent_label_options: function() {
-		wn.meta.get_docfield("Top Bar Item", "parent_label", cur_frm.docname).options = 
-			this.get_parent_options("top_bar_items");
-		
-		if($(cur_frm.fields_dict.top_bar_items.grid.wrapper).find(".grid-row-open")) {
-			cur_frm.fields_dict.top_bar_items.grid.refresh();
-		}
-	},
-	
-	// get labels of parent items
-	get_parent_options: function(table_field) {
-		var items = getchildren('Top Bar Item', cur_frm.doc.name, table_field);
-		var main_items = [''];
-		for(var i in items) {
-			var d = items[i];
-			if(!d.parent_label && !d.url && d.label) {
-				main_items.push(d.label);
-			}
-		}
-		return main_items.join('\n');
-	}
-});
-
-cur_frm.cscript.set_banner_from_image = function(doc) {
-	if(!doc.banner_image) {
-		msgprint(wn._("Select a Banner Image first."));
-	}
-	var src = doc.banner_image;
-	cur_frm.set_value("banner_html", "<a href='/'><img src='"+ src
-		+"' style='max-width: 200px;'></a>");
-}
\ No newline at end of file
diff --git a/website/doctype/website_settings/website_settings.py b/website/doctype/website_settings/website_settings.py
deleted file mode 100644
index 5d6c874..0000000
--- a/website/doctype/website_settings/website_settings.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import webnotes
-from webnotes import _, msgprint
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
-		
-	def validate(self):
-		self.set_home_page()
-		self.validate_top_bar_items()
-		self.validate_footer_items()
-		
-	def make_website(self):
-		# set item pages
-		for name in webnotes.conn.sql_list("""select name from tabItem where 
-			ifnull(show_in_website, 0)=0 and is_sales_item ='Yes' """):
-			webnotes.msgprint("Setting 'Show in Website' for:" + name)
-			item = webnotes.bean("Item", name)
-			item.doc.show_in_website = 1
-			item.doc.website_warehouse = item.doc.default_warehouse
-			item.doc.website_image = item.doc.image
-			item.save()
-		
-		# set item group pages
-		for name in webnotes.conn.sql_list("""select name from `tabItem Group` where 
-			ifnull(show_in_website, 0)=0 and exists (select name from tabItem where 
-				ifnull(show_in_website, 0)=1)"""):
-			webnotes.msgprint("Setting 'Show in Website' for:" + name)
-			item_group = webnotes.bean("Item Group", name)
-			item_group.doc.show_in_website = 1
-			item_group.save()
-			
-	def validate_top_bar_items(self):
-		"""validate url in top bar items"""
-		for top_bar_item in self.doclist.get({"parentfield": "top_bar_items"}):
-			if top_bar_item.parent_label:
-				parent_label_item = self.doclist.get({"parentfield": "top_bar_items", 
-					"label": top_bar_item.parent_label})
-				
-				if not parent_label_item:
-					# invalid item
-					msgprint(_(self.meta.get_label("parent_label", parentfield="top_bar_items")) +
-						(" \"%s\": " % top_bar_item.parent_label) + _("does not exist"), raise_exception=True)
-				
-				elif not parent_label_item[0] or parent_label_item[0].url:
-					# parent cannot have url
-					msgprint(_("Top Bar Item") + (" \"%s\": " % top_bar_item.parent_label) +
-						_("cannot have a URL, because it has child item(s)"), raise_exception=True)
-	
-	def validate_footer_items(self):
-		"""clear parent label in footer"""
-		for footer_item in self.doclist.get({"parentfield": "footer_items"}):
-			footer_item.parent_label = None
-
-	def on_update(self):
-		# make js and css
-		from website.helpers.make_web_include_files import make
-		make()
-		
-		# clear web cache (for menus!)
-		from webnotes.webutils import clear_cache
-		clear_cache()
-
-	def set_home_page(self):
-		from webnotes.model.doc import Document
-		webnotes.conn.sql("""delete from `tabDefault Home Page` where role='Guest'""")
-		
-		d = Document('Default Home Page')
-		d.parent = 'Control Panel'
-		d.parenttype = 'Control Panel'
-		d.parentfield = 'default_home_pages'
-		d.role = 'Guest'
-		d.home_page = self.doc.home_page
-		d.save()
\ No newline at end of file
diff --git a/website/doctype/website_settings/website_settings.txt b/website/doctype/website_settings/website_settings.txt
deleted file mode 100644
index f8ceafe..0000000
--- a/website/doctype/website_settings/website_settings.txt
+++ /dev/null
@@ -1,249 +0,0 @@
-[
- {
-  "creation": "2013-04-30 12:58:46", 
-  "docstatus": 0, 
-  "modified": "2013-07-10 20:37:38", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "allow_attach": 1, 
-  "doctype": "DocType", 
-  "document_type": "Other", 
-  "icon": "icon-cog", 
-  "issingle": 1, 
-  "max_attachments": 10, 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "name": "__common__", 
-  "parent": "Website Settings", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "doctype": "DocPerm", 
-  "name": "__common__", 
-  "parent": "Website Settings", 
-  "parentfield": "permissions", 
-  "parenttype": "DocType", 
-  "read": 1, 
-  "report": 0, 
-  "submit": 0
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Website Settings"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "sb0", 
-  "fieldtype": "Section Break", 
-  "label": "Landing Page"
- }, 
- {
-  "description": "The \"Web Page\" that is the website home page", 
-  "doctype": "DocField", 
-  "fieldname": "home_page", 
-  "fieldtype": "Link", 
-  "label": "Home Page", 
-  "options": "Web Page", 
-  "reqd": 0
- }, 
- {
-  "description": "The name of your company / website as you want to appear on browser title bar. All pages will have this as the prefix to the title.", 
-  "doctype": "DocField", 
-  "fieldname": "title_prefix", 
-  "fieldtype": "Data", 
-  "label": "Title Prefix"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "cb4", 
-  "fieldtype": "Column Break"
- }, 
- {
-  "description": "If checked, the Home page will be the default Item Group for the website.", 
-  "doctype": "DocField", 
-  "fieldname": "home_page_is_products", 
-  "fieldtype": "Check", 
-  "label": "Home Page is Products"
- }, 
- {
-  "description": "Add a banner to the site. (small banners are usually good)", 
-  "doctype": "DocField", 
-  "fieldname": "banner", 
-  "fieldtype": "Section Break", 
-  "label": "Banner"
- }, 
- {
-  "description": "Select an image of approx width 150px with a transparent background for best results.", 
-  "doctype": "DocField", 
-  "fieldname": "banner_image", 
-  "fieldtype": "Select", 
-  "label": "Banner Image", 
-  "options": "attach_files:"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "set_banner_from_image", 
-  "fieldtype": "Button", 
-  "label": "Set Banner from Image"
- }, 
- {
-  "description": "Banner is above the Top Menu Bar.", 
-  "doctype": "DocField", 
-  "fieldname": "banner_html", 
-  "fieldtype": "Small Text", 
-  "label": "Banner HTML"
- }, 
- {
-  "description": "Menu items in the Top Bar. For setting the color of the Top Bar, go to <a href=\"#Form/Style Settings\">Style Settings</a>", 
-  "doctype": "DocField", 
-  "fieldname": "top_bar", 
-  "fieldtype": "Section Break", 
-  "label": "Top Bar"
- }, 
- {
-  "description": "Brand is what appears on the top-right of the toolbar. If it is an image, make sure it\nhas a transparent background and use the &lt;img /&gt; tag. Keep size as 200px x 30px", 
-  "doctype": "DocField", 
-  "fieldname": "brand_html", 
-  "fieldtype": "Small Text", 
-  "label": "Brand HTML"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "top_bar_items", 
-  "fieldtype": "Table", 
-  "label": "Top Bar Items", 
-  "options": "Top Bar Item"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "footer", 
-  "fieldtype": "Section Break", 
-  "label": "Footer"
- }, 
- {
-  "description": "Address and other legal information you may want to put in the footer.", 
-  "doctype": "DocField", 
-  "fieldname": "address", 
-  "fieldtype": "Text Editor", 
-  "label": "Address"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "copyright", 
-  "fieldtype": "Data", 
-  "label": "Copyright"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "footer_items", 
-  "fieldtype": "Table", 
-  "label": "Footer Items", 
-  "options": "Top Bar Item"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "integrations", 
-  "fieldtype": "Section Break", 
-  "label": "Integrations"
- }, 
- {
-  "description": "Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.", 
-  "doctype": "DocField", 
-  "fieldname": "google_analytics_id", 
-  "fieldtype": "Data", 
-  "label": "Google Analytics ID"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "column_break_17", 
-  "fieldtype": "Column Break"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "google_plus_one", 
-  "fieldtype": "Check", 
-  "label": "Google Plus One"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "facebook_share", 
-  "fieldtype": "Check", 
-  "label": "Facebook Share"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "linked_in_share", 
-  "fieldtype": "Check", 
-  "label": "Linked In Share"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "twitter_share", 
-  "fieldtype": "Check", 
-  "label": "Twitter Share"
- }, 
- {
-  "description": "Tweet will be shared via your user account (if specified)", 
-  "doctype": "DocField", 
-  "fieldname": "twitter_share_via", 
-  "fieldtype": "Data", 
-  "label": "Twitter Share via"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "misc_section", 
-  "fieldtype": "Section Break", 
-  "label": "Misc"
- }, 
- {
-  "description": "An icon file with .ico extension. Should be 16 x 16 px. Generated using a favicon generator. [<a href=\"http://favicon-generator.org/\" target=\"_blank\">favicon-generator.org</a>]", 
-  "doctype": "DocField", 
-  "fieldname": "favicon", 
-  "fieldtype": "Select", 
-  "label": "FavIcon", 
-  "options": "attach_files:"
- }, 
- {
-  "description": "Sub-domain provided by erpnext.com", 
-  "doctype": "DocField", 
-  "fieldname": "subdomain", 
-  "fieldtype": "Text", 
-  "label": "Subdomain", 
-  "read_only": 1, 
-  "reqd": 0
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "column_break_28", 
-  "fieldtype": "Column Break"
- }, 
- {
-  "description": "Disable Customer Signup link in Login page", 
-  "doctype": "DocField", 
-  "fieldname": "disable_signup", 
-  "fieldtype": "Check", 
-  "label": "Disable Signup"
- }, 
- {
-  "create": 1, 
-  "doctype": "DocPerm", 
-  "permlevel": 0, 
-  "role": "Website Manager", 
-  "write": 1
- }, 
- {
-  "amend": 0, 
-  "cancel": 0, 
-  "create": 0, 
-  "doctype": "DocPerm", 
-  "permlevel": 1, 
-  "role": "All"
- }
-]
\ No newline at end of file
diff --git a/website/doctype/website_slideshow/README.md b/website/doctype/website_slideshow/README.md
deleted file mode 100644
index e6afaed..0000000
--- a/website/doctype/website_slideshow/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Image slide show for Web Page, Product (Item) page, Item Group page.
\ No newline at end of file
diff --git a/website/doctype/website_slideshow/__init__.py b/website/doctype/website_slideshow/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/website/doctype/website_slideshow/__init__.py
+++ /dev/null
diff --git a/website/doctype/website_slideshow/website_slideshow.js b/website/doctype/website_slideshow/website_slideshow.js
deleted file mode 100644
index a28e1c7..0000000
--- a/website/doctype/website_slideshow/website_slideshow.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-// License: GNU General Public License v3. See license.txt
-
-cur_frm.cscript.refresh = function(doc) {
-	cur_frm.set_intro("");
-	if(doc.__islocal) {
-		cur_frm.set_intro("First set the name and save the record.");
-	}
-	else {
-		cur_frm.set_intro("Attach files / urls and add in table.");
-	}
-}
\ No newline at end of file
diff --git a/website/doctype/website_slideshow/website_slideshow.py b/website/doctype/website_slideshow/website_slideshow.py
deleted file mode 100644
index 8bc0447..0000000
--- a/website/doctype/website_slideshow/website_slideshow.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import webnotes
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
-		
-	def on_update(self):
-		# a slide show can be in use and any change in it should get reflected
-		from webnotes.webutils import clear_cache
-		clear_cache()
\ No newline at end of file
diff --git a/website/doctype/website_slideshow/website_slideshow.txt b/website/doctype/website_slideshow/website_slideshow.txt
deleted file mode 100644
index e8ca08e..0000000
--- a/website/doctype/website_slideshow/website_slideshow.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-[
- {
-  "creation": "2013-03-07 15:53:15", 
-  "docstatus": 0, 
-  "modified": "2013-07-05 15:03:30", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "allow_attach": 1, 
-  "autoname": "field:slideshow_name", 
-  "description": "Slideshow like display for the website", 
-  "doctype": "DocType", 
-  "document_type": "Transaction", 
-  "icon": "icon-play", 
-  "max_attachments": 10, 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "name": "__common__", 
-  "parent": "Website Slideshow", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "cancel": 1, 
-  "create": 1, 
-  "doctype": "DocPerm", 
-  "name": "__common__", 
-  "parent": "Website Slideshow", 
-  "parentfield": "permissions", 
-  "parenttype": "DocType", 
-  "permlevel": 0, 
-  "read": 1, 
-  "report": 1, 
-  "role": "Website Manager", 
-  "submit": 0, 
-  "write": 1
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Website Slideshow"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "slideshow_name", 
-  "fieldtype": "Data", 
-  "label": "Slideshow Name", 
-  "read_only": 0, 
-  "reqd": 1
- }, 
- {
-  "depends_on": "eval:!doc.__islocal", 
-  "description": "Note: For best results, images must be of the same size and width must be greater than height.", 
-  "doctype": "DocField", 
-  "fieldname": "sb0", 
-  "fieldtype": "Section Break", 
-  "label": "Slideshow Items"
- }, 
- {
-  "depends_on": "eval:!doc.__islocal", 
-  "doctype": "DocField", 
-  "fieldname": "slideshow_items", 
-  "fieldtype": "Table", 
-  "label": "Slideshow Items", 
-  "options": "Website Slideshow Item"
- }, 
- {
-  "depends_on": "eval:!doc.__islocal", 
-  "description": "This goes above the slideshow.", 
-  "doctype": "DocField", 
-  "fieldname": "header", 
-  "fieldtype": "Text Editor", 
-  "label": "Header"
- }, 
- {
-  "doctype": "DocPerm"
- }
-]
\ No newline at end of file
diff --git a/website/doctype/website_slideshow_item/README.md b/website/doctype/website_slideshow_item/README.md
deleted file mode 100644
index 2f52d24..0000000
--- a/website/doctype/website_slideshow_item/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Slide (image) details for Website Slideshow.
\ No newline at end of file
diff --git a/website/doctype/website_slideshow_item/__init__.py b/website/doctype/website_slideshow_item/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/website/doctype/website_slideshow_item/__init__.py
+++ /dev/null
diff --git a/website/doctype/website_slideshow_item/website_slideshow_item.py b/website/doctype/website_slideshow_item/website_slideshow_item.py
deleted file mode 100644
index 784339d..0000000
--- a/website/doctype/website_slideshow_item/website_slideshow_item.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import webnotes
-
-class DocType:
-	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
\ No newline at end of file
diff --git a/website/doctype/website_slideshow_item/website_slideshow_item.txt b/website/doctype/website_slideshow_item/website_slideshow_item.txt
deleted file mode 100644
index c6fd78c..0000000
--- a/website/doctype/website_slideshow_item/website_slideshow_item.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-[
- {
-  "creation": "2013-03-07 12:26:33", 
-  "docstatus": 0, 
-  "modified": "2013-07-10 14:54:25", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "allow_attach": 0, 
-  "doctype": "DocType", 
-  "istable": 1, 
-  "max_attachments": 10, 
-  "module": "Website", 
-  "name": "__common__"
- }, 
- {
-  "doctype": "DocField", 
-  "in_list_view": 1, 
-  "name": "__common__", 
-  "parent": "Website Slideshow Item", 
-  "parentfield": "fields", 
-  "parenttype": "DocType", 
-  "permlevel": 0
- }, 
- {
-  "doctype": "DocType", 
-  "name": "Website Slideshow Item"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "image", 
-  "fieldtype": "Select", 
-  "label": "Image", 
-  "options": "attach_files:"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "heading", 
-  "fieldtype": "Data", 
-  "label": "Heading", 
-  "print_width": "200px", 
-  "width": "200px"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "description", 
-  "fieldtype": "Text", 
-  "label": "Description", 
-  "print_width": "200px", 
-  "width": "200px"
- }
-]
\ No newline at end of file
diff --git a/website/helpers/blog.py b/website/helpers/blog.py
deleted file mode 100644
index 3f6d94f..0000000
--- a/website/helpers/blog.py
+++ /dev/null
@@ -1,121 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import webnotes
-import webnotes.webutils
-from webnotes import _
-
-def clear_blog_cache():
-	for blog in webnotes.conn.sql_list("""select page_name from 
-		`tabBlog Post` where ifnull(published,0)=1"""):
-		webnotes.webutils.delete_page_cache(blog)
-	
-	webnotes.webutils.delete_page_cache("writers")
-
-@webnotes.whitelist(allow_guest=True)
-def get_blog_list(start=0, by=None, category=None):
-	import webnotes
-	condition = ""
-	if by:
-		condition = " and t1.blogger='%s'" % by.replace("'", "\'")
-	if category:
-		condition += " and t1.blog_category='%s'" % category.replace("'", "\'")
-	query = """\
-		select
-			t1.title, t1.name, t1.page_name, t1.published_on as creation, 
-				ifnull(t1.blog_intro, t1.content) as content, 
-				t2.full_name, t2.avatar, t1.blogger,
-				(select count(name) from `tabComment` where
-					comment_doctype='Blog Post' and comment_docname=t1.name) as comments
-		from `tabBlog Post` t1, `tabBlogger` t2
-		where ifnull(t1.published,0)=1
-		and t1.blogger = t2.name
-		%(condition)s
-		order by published_on desc, name asc
-		limit %(start)s, 20""" % {"start": start, "condition": condition}
-		
-	result = webnotes.conn.sql(query, as_dict=1)
-
-	# strip html tags from content
-	import webnotes.utils
-	
-	for res in result:
-		from webnotes.utils import global_date_format
-		res['published'] = global_date_format(res['creation'])
-		if not res['content']:
-			res['content'] = webnotes.webutils.get_html(res['page_name'])
-		res['content'] = res['content'][:140]
-		
-	return result
-
-@webnotes.whitelist(allow_guest=True)
-def add_comment(args=None):
-	"""
-		args = {
-			'comment': '',
-			'comment_by': '',
-			'comment_by_fullname': '',
-			'comment_doctype': '',
-			'comment_docname': '',
-			'page_name': '',
-		}
-	"""
-	import webnotes
-	import webnotes.utils, markdown2
-	
-	if not args: args = webnotes.form_dict
-	args['comment'] = unicode(markdown2.markdown(args.get('comment') or ''))
-	args['doctype'] = "Comment"
-	
-	page_name = args.get("page_name")
-	if "page_name" in args:
-		del args["page_name"]
-	if "cmd" in args:
-		del args["cmd"]
-		
-	comment = webnotes.bean(args)
-	comment.ignore_permissions = True
-	comment.insert()
-	
-	# since comments are embedded in the page, clear the web cache
-	webnotes.webutils.clear_cache(page_name)
-	
-	args['comment_date'] = webnotes.utils.global_date_format(comment.doc.creation)
-	template_args = { 'comment_list': [args], 'template': 'app/website/templates/html/comment.html' }
-	
-	# get html of comment row
-	comment_html = webnotes.webutils.build_html(template_args)
-	
-	# notify commentors 
-	commentors = [d[0] for d in webnotes.conn.sql("""select comment_by from tabComment where
-		comment_doctype='Blog Post' and comment_docname=%s and
-		ifnull(unsubscribed, 0)=0""", args.get('comment_docname'))]
-	
-	blog = webnotes.doc("Blog Post", args.get("comment_docname"))
-	blogger_profile = webnotes.conn.get_value("Blogger", blog.blogger, "profile")
-	blogger_email = webnotes.conn.get_value("Profile", blogger_profile, "email")
-	
-	from webnotes.utils.email_lib.bulk import send
-	send(recipients=list(set(commentors + [blogger_email])), 
-		doctype='Comment', 
-		email_field='comment_by', 
-		subject='New Comment on Blog: ' + blog.title, 
-		message='%(comment)s<p>By %(comment_by_fullname)s</p>' % args,
-		ref_doctype='Blog Post', ref_docname=blog.name)
-	
-	return comment_html.replace("\n", "")
-
-def get_blog_content(blog_page_name):
-	import webnotes.webutils
-	content = webnotes.webutils.get_html(blog_page_name)
-	import webnotes.utils
-	content = webnotes.utils.escape_html(content)
-	return content
-
-def get_blog_template_args():
-	args = {
-		"categories": webnotes.conn.sql_list("select name from `tabBlog Category` order by name")
-	}
-	args.update(webnotes.doc("Blog Settings", "Blog Settings").fields)
-	return args
diff --git a/website/helpers/blog_feed.py b/website/helpers/blog_feed.py
deleted file mode 100644
index 577cde6..0000000
--- a/website/helpers/blog_feed.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt 
-
-from __future__ import unicode_literals
-"""
-Generate RSS feed for blog
-"""
-
-rss = u"""<?xml version="1.0" encoding="UTF-8" ?>
-<rss version="2.0">
-<channel>
-        <title>%(title)s</title>
-        <description>%(description)s</description>
-        <link>%(link)s</link>
-        <lastBuildDate>%(modified)s</lastBuildDate>
-        <pubDate>%(modified)s</pubDate>
-        <ttl>1800</ttl>
-		%(items)s
-</channel>
-</rss>"""
-
-rss_item = u"""
-<item>
-        <title>%(title)s</title>
-        <description>%(content)s</description>
-        <link>%(link)s</link>
-        <guid>%(name)s</guid>
-        <pubDate>%(published_on)s</pubDate>
-</item>"""
-
-def generate():
-	"""generate rss feed"""
-	import os, urllib
-	import webnotes
-	from webnotes.model.doc import Document
-	from webnotes.utils import escape_html
-	
-	host = (os.environ.get('HTTPS') and 'https://' or 'http://') + os.environ.get('HTTP_HOST')
-	
-	items = ''
-	blog_list = webnotes.conn.sql("""\
-		select page_name as name, published_on, modified, title, content from `tabBlog Post` 
-		where ifnull(published,0)=1
-		order by published_on desc limit 20""", as_dict=1)
-
-	for blog in blog_list:
-		blog.link = urllib.quote(host + '/' + blog.name + '.html')
-		blog.content = escape_html(blog.content or "")
-		
-		items += rss_item % blog
-
-	modified = max((blog['modified'] for blog in blog_list))
-		
-	ws = Document('Website Settings', 'Website Settings')
-	return (rss % {
-				'title': ws.title_prefix,
-				'description': ws.description or (ws.title_prefix + ' Blog'),
-				'modified': modified,
-				'items': items,
-				'link': host + '/blog.html'
-			}).encode('utf-8', 'ignore')
diff --git a/website/helpers/contact.py b/website/helpers/contact.py
deleted file mode 100644
index 35446a3..0000000
--- a/website/helpers/contact.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-
-import webnotes
-from webnotes.utils import now
-
-max_communications_per_hour = 300
-
-@webnotes.whitelist(allow_guest=True)
-def send_message(subject="Website Query", message="", sender="", status="Open"):
-	if not message:
-		webnotes.response["message"] = 'Please write something'
-		return
-		
-	if not sender:
-		webnotes.response["message"] = 'Email Id Required'
-		return
-
-	# make lead / communication
-	from selling.doctype.lead.get_leads import add_sales_communication
-	message = add_sales_communication(subject or "Website Query", message, sender, sender, 
-		mail=None, status=status)
-	
-	# guest method, cap max writes per hour
-	if webnotes.conn.sql("""select count(*) from `tabCommunication`
-		where TIMEDIFF(%s, modified) < '01:00:00'""", now())[0][0] > max_communications_per_hour:
-		webnotes.response["message"] = "Sorry: we believe we have received an unreasonably high number of requests of this kind. Please try later"
-		return
-	
-	webnotes.response.status = "okay"
diff --git a/website/helpers/make_web_include_files.py b/website/helpers/make_web_include_files.py
deleted file mode 100644
index a9df23b..0000000
--- a/website/helpers/make_web_include_files.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-import os
-import webnotes
-
-def make():
-	from startup.webutils import get_home_page
-
-	if not webnotes.conn:
-		webnotes.connect()
-	
-	home_page = get_home_page()
-
-	fname = 'js/wn-web.js'
-	if os.path.basename(os.path.abspath('.'))!='public':
-		fname = os.path.join('public', fname)
-			
-	with open(fname, 'w') as f:
-		f.write(get_web_script())
-
-	fname = 'css/wn-web.css'
-	if os.path.basename(os.path.abspath('.'))!='public':
-		fname = os.path.join('public', fname)
-
-	# style - wn.css
-	with open(fname, 'w') as f:
-		f.write(get_web_style())
-
-def get_web_script():
-	"""returns web startup script"""
-	user_script = ""
-	
-	ws = webnotes.doc("Website Settings", "Website Settings")
-
-	if ws.google_analytics_id:
-		user_script += google_analytics_template % ws.google_analytics_id
-	
-	user_script += (webnotes.conn.get_value('Website Script', None, 'javascript') or '')
-
-	return user_script
-	
-def get_web_style():
-	"""returns web css"""
-	return webnotes.conn.get_value('Style Settings', None, 'custom_css') or ''
-
-google_analytics_template = """
-
-// Google Analytics template
-
-window._gaq = window._gaq || [];
-window._gaq.push(['_setAccount', '%s']);
-window._gaq.push(['_trackPageview']);
-
-(function() {
-    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
-})();
-"""
\ No newline at end of file
diff --git a/website/helpers/partner.py b/website/helpers/partner.py
deleted file mode 100644
index 404894e..0000000
--- a/website/helpers/partner.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# 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 get_partner_args():
-	return {
-		"partners": webnotes.conn.sql("""select * from `tabSales Partner`
-			where show_in_website=1 order by name asc""", as_dict=True),
-	}
\ No newline at end of file
diff --git a/website/helpers/sitemap.py b/website/helpers/sitemap.py
deleted file mode 100644
index fb0d070..0000000
--- a/website/helpers/sitemap.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-
-frame_xml = """<?xml version="1.0" encoding="UTF-8"?>
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">%s
-</urlset>"""
-
-link_xml = """\n<url><loc>%s</loc><lastmod>%s</lastmod></url>"""
-
-# generate the sitemap XML
-def generate(domain):
-	global frame_xml, link_xml
-	import urllib, os
-	import webnotes
-	import webnotes.webutils
-	from webnotes.utils import nowdate
-
-	# settings
-	max_items = 1000
-	count = 0
-	
-	site_map = ''
-	if domain:
-		today = nowdate()
-		
-		# generated pages
-		for doctype, opts in webnotes.webutils.get_generators().items():
-			pages = webnotes.conn.sql("""select page_name, `modified`
-				from `tab%s` where ifnull(%s,0)=1
-				order by modified desc""" % (doctype, opts.get("condition_field")))
-		
-			for p in pages:
-				if count >= max_items: break
-				if p[0]:
-					page_url = os.path.join(domain, urllib.quote(p[0]))
-					modified = p[1].strftime('%Y-%m-%d')
-					site_map += link_xml % (page_url, modified)
-					count += 1
-				
-			if count >= max_items: break
-		
-		# standard pages
-		for page, opts in webnotes.get_config()["web"]["pages"].items():
-			if "no_cache" in opts:
-				continue
-			
-			if count >= max_items: break
-			page_url = os.path.join(domain, urllib.quote(page))
-			modified = today
-			site_map += link_xml % (page_url, modified)
-			count += 1
-
-	return frame_xml % site_map
diff --git a/website/helpers/slideshow.py b/website/helpers/slideshow.py
deleted file mode 100644
index 7e3c398..0000000
--- a/website/helpers/slideshow.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-import webnotes
-
-def get_slideshow(obj):
-	slideshow = webnotes.bean("Website Slideshow", obj.doc.slideshow)
-	obj.slides = slideshow.doclist.get({"doctype":"Website Slideshow Item"})
-	obj.doc.slideshow_header = slideshow.doc.header or ""
-	
\ No newline at end of file
diff --git a/website/helpers/transaction.py b/website/helpers/transaction.py
deleted file mode 100644
index 8943575..0000000
--- a/website/helpers/transaction.py
+++ /dev/null
@@ -1,139 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import webnotes
-from webnotes.utils import cint, formatdate
-import json
-
-def get_transaction_list(doctype, start):
-	# find customer id
-	customer = webnotes.conn.get_value("Contact", {"email_id": webnotes.session.user}, 
-		"customer")
-		
-	if customer:
-		transactions = webnotes.conn.sql("""select name, creation, currency, grand_total_export 
-			from `tab%s` where customer=%s and docstatus=1
-			order by creation desc
-			limit %s, 20""" % (doctype, "%s", "%s"), (customer, cint(start)), as_dict=True)
-		for doc in transactions:
-			doc.items = ", ".join(webnotes.conn.sql_list("""select item_name
-				from `tab%s Item` where parent=%s limit 5""" % (doctype, "%s"), doc.name))
-			doc.creation = formatdate(doc.creation)
-		return transactions
-	else:
-		return []
-		
-def get_common_args():
-	return {
-		"global_number_format": webnotes.conn.get_default("number_format") or "#,###.##",
-		"currency": webnotes.conn.get_default("currency"),
-		"currency_symbols": json.dumps(dict(webnotes.conn.sql("""select name, symbol
-			from tabCurrency where ifnull(enabled,0)=1""")))
-	}
-
-@webnotes.whitelist()
-def get_orders(start=0):
-	return get_transaction_list("Sales Order", start)
-		
-def order_list_args():
-	args = get_common_args()
-	args.update({
-		"title": "My Orders",
-		"method": "website.helpers.transaction.get_orders",
-		"icon": "icon-list",
-		"empty_list_message": "No Orders Yet",
-		"page": "order",
-	})
-	return args
-
-@webnotes.whitelist()
-def get_invoices(start=0):
-	return get_transaction_list("Sales Invoice", start)
-
-def invoice_list_args():
-	args = get_common_args()
-	args.update({
-		"title": "Invoices",
-		"method": "website.helpers.transaction.get_invoices",
-		"icon": "icon-file-text",
-		"empty_list_message": "No Invoices Found",
-		"page": "invoice"
-	})
-	return args
-
-@webnotes.whitelist()
-def get_shipments(start=0):
-	return get_transaction_list("Delivery Note", start)
-
-def shipment_list_args():
-	args = get_common_args()
-	args.update({
-		"title": "Shipments",
-		"method": "website.helpers.transaction.get_shipments",
-		"icon": "icon-truck",
-		"empty_list_message": "No Shipments Found",
-		"page": "shipment"
-	})
-	return args
-	
-@webnotes.whitelist()
-def get_tickets(start=0):
-	tickets = webnotes.conn.sql("""select name, subject, status, creation 
-		from `tabSupport Ticket` where raised_by=%s 
-		order by modified desc
-		limit %s, 20""", (webnotes.session.user, cint(start)), as_dict=True)
-	for t in tickets:
-		t.creation = formatdate(t.creation)
-	
-	return tickets
-	
-def ticket_list_args():
-	return {
-		"title": "My Tickets",
-		"method": "website.helpers.transaction.get_tickets",
-		"icon": "icon-ticket",
-		"empty_list_message": "No Tickets Raised",
-		"page": "ticket"
-	}
-	
-def get_transaction_args(doctype, name):
-	customer = webnotes.conn.get_value("Contact", {"email_id": webnotes.session.user}, 
-		"customer")
-		
-	bean = webnotes.bean(doctype, name)
-	if bean.doc.customer != customer:
-		return {
-			"doc": {"name": "Not Allowed"}
-		}
-	else:
-		return {
-			"doc": bean.doc,
-			"doclist": bean.doclist,
-			"webnotes": webnotes,
-			"utils": webnotes.utils
-		}
-
-def get_order_args():	
-	args = get_transaction_args("Sales Order", webnotes.form_dict.name)
-	args.update({
-		"parent_link": "orders",
-		"parent_title": "My Orders"
-	})
-	return args
-	
-def get_invoice_args():
-	args = get_transaction_args("Sales Invoice", webnotes.form_dict.name)
-	args.update({
-		"parent_link": "invoices",
-		"parent_title": "Invoices"
-	})
-	return args
-
-def get_shipment_args():
-	args = get_transaction_args("Delivery Note", webnotes.form_dict.name)
-	args.update({
-		"parent_link": "shipments",
-		"parent_title": "Shipments"
-	})
-	return args
diff --git a/website/page/__init__.py b/website/page/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/website/page/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/website/page/website_home/__init__.py b/website/page/website_home/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/website/page/website_home/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/website/page/website_home/website_home.js b/website/page/website_home/website_home.js
deleted file mode 100644
index a197f69..0000000
--- a/website/page/website_home/website_home.js
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-// License: GNU General Public License v3. See license.txt"
-
-wn.module_page["Website"] = [
-	{
-		title: wn._("Web Content"),
-		icon: "icon-copy",
-		top: true,
-		items: [
-			{
-				label: wn._("Web Page"),
-				description: wn._("Content web page."),
-				doctype:"Web Page"
-			},
-			{
-				label: wn._("Blog Post"),
-				description: wn._("Single Post (article)."),
-				doctype:"Blog Post"
-			},
-		]
-	},
-	{
-		title: wn._("Documents"),
-		icon: "icon-edit",
-		items: [
-			{
-				label: wn._("Website Slideshow"),
-				description: wn._("Embed image slideshows in website pages."),
-				doctype:"Website Slideshow"
-			},
-			{
-				label: wn._("Blogger"),
-				description: wn._("Profile of a blog writer."),
-				doctype:"Blogger"
-			},
-			{
-				label: wn._("Blog Category"),
-				description: wn._("Categorize blog posts."),
-				doctype:"Blog Category"
-			},
-			{
-				label: wn._("Blog Settings"),
-				description: wn._("Write titles and introductions to your blog."),
-				doctype:"Blog Settings",
-				route: "Form/Blog Settings"
-			},
-		]
-	},
-
-	{
-		title: wn._("Website Overall Settings"),
-		icon: "icon-wrench",
-		right: true,
-		items: [
-			{
-				"route":"Form/Website Settings",
-				"label":wn._("Website Settings"),
-				"description":wn._("Setup of top navigation bar, footer and logo."),
-				doctype:"Website Settings"
-			},
-			{
-				"route":"Form/Style Settings",
-				"label":wn._("Style Settings"),
-				"description":wn._("Setup of fonts and background."),
-				doctype:"Style Settings"
-			},
-			{
-				"route":"Form/Shopping Cart Settings",
-				"label":wn._("Shopping Cart Settings"),
-				"description":wn._("Setup of Shopping Cart."),
-				doctype:"Shopping Cart Settings"
-			},
-		]
-	},
-	{
-		title: wn._("Special Page Settings"),
-		icon: "icon-wrench",
-		right: true,
-		items: [
-			{
-				"route":"Form/About Us Settings",
-				"label":wn._("About Us Settings"),
-				"description":wn._("Settings for About Us Page."),
-				doctype:"About Us Settings"
-			},
-			{
-				"route":"Form/Contact Us Settings",
-				"label":wn._("Contact Us Settings"),
-				"description":wn._("Settings for Contact Us Page."),
-				doctype:"Contact Us Settings"
-			},
-		]
-	},
-	{
-		title: wn._("Advanced Scripting"),
-		icon: "icon-wrench",
-		right: true,
-		items: [
-			{
-				"route":"Form/Website Script",
-				"label":wn._("Website Script"),
-				"description":wn._("Javascript to append to the head section of the page."),
-				doctype:"Website Script"
-			},
-		]
-	}
-]
-
-pscript['onload_website-home'] = function(wrapper) {
-	wn.views.moduleview.make(wrapper, "Website");
-}
\ No newline at end of file
diff --git a/website/page/website_home/website_home.txt b/website/page/website_home/website_home.txt
deleted file mode 100644
index eeede04..0000000
--- a/website/page/website_home/website_home.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-[
- {
-  "creation": "2012-02-21 13:23:51", 
-  "docstatus": 0, 
-  "modified": "2013-07-11 14:45:29", 
-  "modified_by": "Administrator", 
-  "owner": "Administrator"
- }, 
- {
-  "doctype": "Page", 
-  "icon": "icon-th", 
-  "module": "Website", 
-  "name": "__common__", 
-  "page_name": "website-home", 
-  "standard": "Yes", 
-  "title": "Website Home"
- }, 
- {
-  "doctype": "Page", 
-  "name": "website-home"
- }
-]
\ No newline at end of file
diff --git a/website/templates/__init__.py b/website/templates/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/website/templates/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/website/templates/css/blog.css b/website/templates/css/blog.css
deleted file mode 100644
index 199df1a..0000000
--- a/website/templates/css/blog.css
+++ /dev/null
@@ -1,7 +0,0 @@
-	<style>
-		h2 > a, h2 > a:link, h2 > a:visited, h2 > a:active,
-		h2 > a:hover, h2 > a:focus {
-			text-decoration: none;
-			color: inherit;
-		}
-	</style>
\ No newline at end of file
diff --git a/website/templates/css/blog_page.css b/website/templates/css/blog_page.css
deleted file mode 100644
index 8f56cd2..0000000
--- a/website/templates/css/blog_page.css
+++ /dev/null
@@ -1,13 +0,0 @@
-	<style>
-		.comment-title {
-			color:#777;
-		}
-		
-		.comment-content {
-			margin-left: 20px;
-		}
-		
-		input {
-			width: 240px;
-		}
-	</style>
\ No newline at end of file
diff --git a/website/templates/html/blog_footer.html b/website/templates/html/blog_footer.html
deleted file mode 100644
index e71b3ec..0000000
--- a/website/templates/html/blog_footer.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class="col-md-12">
-	<hr />
-	{% if categories %}
-	<h5>Explore posts by categories</h5>
-	<ul class="breadcrumb" style="background-color: transparent; padding-left: 20px;">
-	{% for category in categories %}
-		<li><a href="blog?category={{ category }}">{{ category }}</a> 
-	{% endfor %}
-	</ul>
-	<br><br>
-	{% endif %}
-	<p>Show posts by <a href="blog">everyone</a>. Meet the <a href="writers">writers</a> of this blog</p>
-</div>
diff --git a/website/templates/html/blog_page.html b/website/templates/html/blog_page.html
deleted file mode 100644
index 90f6a79..0000000
--- a/website/templates/html/blog_page.html
+++ /dev/null
@@ -1,58 +0,0 @@
-{% extends "app/website/templates/html/page.html" %}
-
-{% block javascript %}
-	{% include "app/website/templates/js/blog_page.js" %}
-{% endblock %}
-
-{% block css %}
-	{% include "app/website/templates/css/blog_page.css" %}
-{% endblock %}
-
-{% block content %}
-<div class="col-md-12" itemscope itemtype="http://schema.org/BlogPost">
-	<h2 itemprop="name headline">{{ title }}</h2>
-
-	<!-- begin blog content -->
-	<div class="help" style="color: #aaa">
-		<span itemprop="author">{{ blogger_info and blogger_info.full_name or full_name }}</span> / 
-		<span itemprop="dateCreated">{{ updated }}</span></div>
-	<br>
-	<div itemprop="articleBody">
-	{{ content_html }}
-	</div>
-	<!-- end blog content -->
-	{% if blogger_info %}
-	<hr />
-	{% include "app/website/templates/html/blogger.html" %}
-	{% endif %}
-	<hr>
-	<h3>{{ texts.comments }}</h3><br>
-	<div class="blog-comments">
-		
-		{% if not comment_list %}
-		<div class="no-comment">
-			<p>{{ texts.first_comment }}</p>
-		</div>
-		{% endif %}
-		
-		{% include 'app/website/templates/html/comment.html' %}
-	</div>
-	<div><button class="btn btn-default add-comment">{{ texts.add_comment }}</button></div>
-	<div style="display: none; margin-top: 10px; max-width: 400px;" 
-		id="comment-form">
-		<div class="alert" style="display:none;"></div>
-		<form>
-			<fieldset>
-				<input class="form-control" name="comment_by_fullname" placeholder="Your Name" type="text"/><br>
-				<input class="form-control" name="comment_by" 
-					placeholder="Your Email Id" type="text"/><br>
-				<textarea class="form-control" name="comment" rows=10
-					placeholder="Comment"/>
-				</textarea><br>
-				<button class="btn btn-info" id="submit-comment">{{ texts.submit }}</button>
-			</fieldset>
-		</form>
-	</div>
-</div>
-{% include 'app/website/templates/html/blog_footer.html' %}
-{% endblock %}
\ No newline at end of file
diff --git a/website/templates/html/blog_subscribe.html b/website/templates/html/blog_subscribe.html
deleted file mode 100644
index 1238d83..0000000
--- a/website/templates/html/blog_subscribe.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<h4>Subscribe</h4>
-<br>
-<p>
-<button class="btn btn-warning btn-blog-subscribe">Get Updates via Email</button>
-</p>
-<p>
-<img src="app/images/feed.png" style="margin-right: 4px; margin-bottom: -4px">
-<a href="rss.xml" target="_blank">RSS Feed</a>
-</p>
\ No newline at end of file
diff --git a/website/templates/html/blogger.html b/website/templates/html/blogger.html
deleted file mode 100644
index 90c3571..0000000
--- a/website/templates/html/blogger.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class="row">
-	<div class="col-md-2">
-		<div class="avatar avatar-large">
-			<img itemprop="thumbnailUrl" src="{{ blogger_info.avatar }}" />
-		</div>
-	</div>
-	<div class="col-md-10">
-		<h4>{{ blogger_info.full_name }}</h4>
-		<p style="color: #999">{{ blogger_info.bio }}</p>
-		<p><a href="blog?by={{ blogger_info.name }}&by_name={{ blogger_info.full_name }}">
-			{{ texts.all_posts_by }} {{ blogger_info.full_name }}</a></p>
-	</div>
-</div>
\ No newline at end of file
diff --git a/website/templates/html/comment.html b/website/templates/html/comment.html
deleted file mode 100644
index 27baaad..0000000
--- a/website/templates/html/comment.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{#
-	this template generates comment rows for a blog
-	it is to be included in the blog/blog.html template
-#}
-
-<div itemscope itemtype="http://schema.org/UserComments">
-	{% for comment in comment_list %}
-	<div class="comment-row">
-		<div class="comment-title">
-			<span itemprop="name" class="author">{{ comment.comment_by_fullname }}</span> / 
-				<span itemprop="commentTime">{{ comment.comment_date }}</span>:
-		</div>
-		<p class="comment-content" itemprop="commentText">{{ comment.comment }}</p>
-		<hr>
-	</div>
-	{% endfor %}
-</div>
\ No newline at end of file
diff --git a/website/templates/html/footer.html b/website/templates/html/footer.html
deleted file mode 100644
index e391794..0000000
--- a/website/templates/html/footer.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<footer class="container">
-	<div class="web-footer row">
-	<div class="col-md-12">
-		{% if facebook_share or google_plus_one or twitter_share or linked_in_share %}
-		<div class="social-icons" style="">
-			<span style="font-size: 11px;">{{ share_text or "Share this page on: "}}</span>
-			{% if google_plus_one %}
-				<a href="https://plus.google.com/share?url={{ url }}"
-				 	target="_blank"><i class="icon-google-plus"></i></a>
-			{% endif %}
-			{% if twitter_share %}
-				<a href="https://twitter.com/intent/tweet?url={{ url }}&text={{ encoded_title }}"
-					target="_blank" ><i class="icon-twitter"></i></a>
-			{% endif %}
-			{% if facebook_share %}
-				<a href="https://www.facebook.com/sharer.php?u={{ url }}&t={{ encoded_title }}&via={{ twitter_share_via }}"
-					target="_blank"><i class="icon-facebook"></i></a>
-			{% endif %}
-			{% if linked_in_share %}
-				<a href="http://www.linkedin.com/shareArticle?mini=true&url={{ url }}&title={{ encoded_title }}"
-					target="_blank"><i class="icon-linkedin"></i></a>
-			{% endif %}
-		</div>
-		{% endif %}
-		<p style="float: right; clear: right;">
-			<a style="font-size: 90%; color: #888;" href="http://erpnext.org">ERPNext Powered</a>
-		</p>
-		<div class="web-footer-menu">
-			<ul>
-				{% for item in footer_items %}
-				<li><a href="{{ item.url }}" {{ item.target }}
-					data-label="{{ item.label }}">{{ item.label }}</a></li>
-				{% endfor %}
-			</ul>
-		</div>
-		{% if copyright %}
-		<div class="web-footer-copyright">&copy; {{ copyright }}</div>
-		{% endif %}
-		{% if address %}
-		{{ address }}
-		{% endif %}
-		<br>
-		<div class="input-group col-md-6 col-md-offset-3">
-			<input class="form-control" type="text" id="footer-subscribe-email" placeholder="Your email address...">
-			<span class="input-group-btn">
-				<button class="btn btn-default" type="button" id="footer-subscribe-button">Stay Updated</button>
-			</span>
-		</div>
-		<br>
-		<script>
-			$("#footer-subscribe-button").click(function() {
-
-				$("#footer-subscribe-email").attr('disabled', true);
-				$("#footer-subscribe-button").html("Sending...")
-					.attr("disabled", true);
-
-				if($("#footer-subscribe-email").val()) {
-					erpnext.send_message({
-						subject:"Subscribe me",
-						sender: $("#footer-subscribe-email").val(),
-						message: "Subscribe to newsletter (via website footer).",
-						callback: function(r) {
-							if(!r.exc) {
-								$("#footer-subscribe-button").html("Thank You :)")
-									.addClass("btn-success").attr("disabled", true);
-							} else {
-								$("#footer-subscribe-button").html("Error :( Not a valid id?")
-									.addClass("btn-danger").attr("disabled", false);
-								$("#footer-subscribe-email").val("").attr('disabled', false);
-							}
-						}
-					});
-				}
-			});
-		</script>
-		</div>
-	</div>
-	</div>
-</footer>
diff --git a/website/templates/html/navbar.html b/website/templates/html/navbar.html
deleted file mode 100644
index 9e827c4..0000000
--- a/website/templates/html/navbar.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<div class="navbar navbar-default">
-	<div class="container">
-		<div class="navbar-header">
-			<button type="button" class="navbar-toggle" data-toggle="collapse" 
-				data-target=".navbar-responsive-collapse">
-				<span class="icon-bar"></span>
-				<span class="icon-bar"></span>
-				<span class="icon-bar"></span>
-			</button>
-			<a class="navbar-brand" href="index">{{ brand_html or "<i class='icon-home'></i>"}}</a>
-		</div>
-		<div class="collapse navbar-collapse navbar-responsive-collapse">
-			<ul class="nav navbar-nav">
-				{%- for page in top_bar_items -%}
-				{% if not page.parent_label -%}
-				<li data-label="{{ page.label }}" {% if page.child_items %} class="dropdown"{% endif %}>
-					<a href="{{ page.url or '#' }}" {% if page.child_items %} class="dropdown-toggle" onclick="return false;" data-toggle="dropdown"{% endif %} {{ page.target or ''}}>
-					{{ page.label }}
-					{%- if page.child_items -%}
-						<b class="caret"></b>
-					</a>
-						<ul class="dropdown-menu">
-						{%- for child in page.child_items -%}
-							<li data-label="{{ child.label }}">
-								<a {% if child.indent %} style="padding-left: {{(int(child.indent)+1)*15 }}px"{% endif %} href="{{ child.url }}" {{ child.target or '' }}>{{ child.label }}</a>
-							</li>
-						{%- endfor -%}
-						</ul>
-					{%- else -%}
-					</a>
-					{%- endif -%}
-					</li>
-				{%- endif -%}
-				{%- endfor %}
-			</ul>
-		</div>
-	</div>
-</div>
-<script>$('.dropdown-toggle').dropdown()</script>
diff --git a/website/templates/html/outer.html b/website/templates/html/outer.html
deleted file mode 100644
index 3ecb057..0000000
--- a/website/templates/html/outer.html
+++ /dev/null
@@ -1,34 +0,0 @@
-{% extends "lib/templates/base.html" %}
-
-{% block body %}
-	{% include "app/website/templates/html/navbar.html" %}
-	<div class="container">
-		<div class="pull-right" style="margin:4px;" id="user-tools">
-			{% if shopping_cart_enabled -%}
-			<a href="cart" title="Shopping Cart"><i class="icon-shopping-cart"></i> 
-				<span class="cart-count"></span></a> |
-			{%- endif %}
-			<a id="login-link" href="login">Login</a>
-		</div>
-		<div class="pull-right hide" style="margin:4px;" id="user-tools-post-login">
-			<a href="account" title="My Account" id="user-full-name"></a> |
-			{% if shopping_cart_enabled -%}
-			<a href="cart" title="Shopping Cart"><i class="icon-shopping-cart"></i> 
-				<span class="cart-count"></span></a> |
-			{%- endif %}
-			<a href="server.py?cmd=web_logout" title="Sign Out"><i class="icon-signout"></i></a>
-		</div>
-		<div class="clearfix"></div>
-		{% if banner_html %}<div class="row banner">
-			<div class="col-md-12">{{ banner_html }}</div>
-		</div>{% endif %}
-		<div class="outer">
-			<div class="content row" id="page-{{ name }}" style="display: block;">
-			{%- block content -%}
-			{%- endblock -%}
-			</div>
-		</div>
-	</div>
-	{% include "app/website/templates/html/footer.html" %}
-
-{% endblock %}
\ No newline at end of file
diff --git a/website/templates/html/page.html b/website/templates/html/page.html
deleted file mode 100644
index c9fbec4..0000000
--- a/website/templates/html/page.html
+++ /dev/null
@@ -1,20 +0,0 @@
-{% extends "app/website/templates/html/outer.html" %}
-
-{% block title -%}{{ title }}{%- endblock %}
-
-{% block header -%}
-	{{ super() }}
-	<script>
-	{% block javascript -%}
-	{%- endblock %}
-	</script>
-	{% block css -%}
-	{% if insert_style -%}	
-	<style>{{ css }}</style>
-	{%- endif %}
-	{%- endblock %}
-{%- endblock -%}
-
-{%- block content -%}
-	{{ content }}
-{%- endblock %}
\ No newline at end of file
diff --git a/website/templates/html/slideshow.html b/website/templates/html/slideshow.html
deleted file mode 100644
index b148cb1..0000000
--- a/website/templates/html/slideshow.html
+++ /dev/null
@@ -1,39 +0,0 @@
-{% if slideshow %}
-{{ slideshow_header }}
-
-
-<div id="the-carousel" class="carousel slide">
-	<!-- Indicators -->
-	<ol class="carousel-indicators">
-		{% for slide in obj.slides %}
-			<li data-target="#the-carousel" data-slide-to="0" 
-				{%- if loop.index==0 %}class="active"{% endif %}></li>
-		{% endfor %}
-	</ol>
-	
-	<!-- Wrapper for slides -->
-	<div class="carousel-inner">
-		{% for slide in obj.slides %}
-		<div class="{% if slide.idx==1 %}active {% endif %}item">
-			<img src="{{ slide.image }}" />
-			{% if slide.heading or slide.description %}
-			<div class="carousel-caption">
-				{% if slide.heading %}<h4>{{ slide.heading }}</h4>{% endif %}
-				{% if slide.description %}<p>{{ slide.description }}</p>{% endif %}
-			</div>
-			{% endif %}
-		</div>
-		{% endfor %}
-	</div>
-
-	<!-- Controls -->
-	<a class="left carousel-control" href="#the-carousel" data-slide="prev">
-		<span class="icon icon-chevron-left"></span>
-	</a>
-	<a class="right carousel-control" href="#the-carousel" data-slide="next">
-		<span class="icon icon-chevron-right"></span>
-	</a>
-</div>
-
-<script>$(".carousel").carousel();</script>
-{% endif %}
diff --git a/website/templates/html/web_page.html b/website/templates/html/web_page.html
deleted file mode 100644
index c857263..0000000
--- a/website/templates/html/web_page.html
+++ /dev/null
@@ -1,14 +0,0 @@
-{% extends "app/website/templates/html/page.html" %}
-
-{% block javascript %}
-	{% if insert_code %}
-		{{ javascript }}
-	{% endif %}
-{% endblock %}
-
-{% block content %}
-<div class="col-md-12" style="margin-top: 15px;">
-	{% include "app/website/templates/html/slideshow.html" %}
-	{{ main_section }}
-</div>
-{% endblock %}
\ No newline at end of file
diff --git a/website/templates/js/blog.js b/website/templates/js/blog.js
deleted file mode 100644
index 8134b63..0000000
--- a/website/templates/js/blog.js
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-// License: GNU General Public License v3. See license.txt
-
-// js inside blog page
-
-$(document).ready(function() {
-	// make list of blogs
-	blog.get_list();
-	
-	$("#next-page").click(function() {
-		blog.get_list();
-	})
-	
-	if(get_url_arg("by_name")) {
-		$("#blot-subtitle").html("Posts by " + get_url_arg("by_name")).toggle(true);
-	}
-
-	if(get_url_arg("category")) {
-		$("#blot-subtitle").html("Posts filed under " + get_url_arg("category")).toggle(true);
-	}
-
-});
-
-var blog = {
-	start: 0,
-	get_list: function() {
-		$.ajax({
-			method: "GET",
-			url: "server.py",
-			data: {
-				cmd: "website.helpers.blog.get_blog_list",
-				start: blog.start,
-				by: get_url_arg("by"),
-				category: get_url_arg("category")
-			},
-			dataType: "json",
-			success: function(data) {
-				$(".progress").toggle(false);
-				if(data.exc) console.log(data.exc);
-				blog.render(data.message);
-			}
-		});
-	},
-	render: function(data) {
-		var $wrap = $("#blog-list");
-		$.each(data, function(i, b) {
-			// comments
-			if(!b.comments) {
-				b.comment_text = 'No comments yet.'
-			} else if (b.comments===1) {
-				b.comment_text = '1 comment.'
-			} else {
-				b.comment_text = b.comments + ' comments.'
-			}
-			
-			b.page_name = encodeURIComponent(b.page_name);
-			
-			$(repl('<div class="row">\
-					<div class="col-md-1">\
-						<div class="avatar avatar-medium" style="margin-top: 6px;">\
-							<img src="%(avatar)s" />\
-						</div>\
-					</div>\
-					<div class="col-md-11">\
-						<h4><a href="%(page_name)s">%(title)s</a></h4>\
-						<p>%(content)s</p>\
-						<p style="color: #aaa; font-size: 90%">\
-							<a href="blog?by=%(blogger)s&by_name=%(full_name)s">\
-								%(full_name)s</a> wrote this on %(published)s / %(comment_text)s</p>\
-					</div>\
-				</div><hr>', b)).appendTo($wrap);
-		});
-		blog.start += (data.length || 0);
-		if(!data.length || data.length < 20) {
-			if(blog.start) {
-				$("#next-page").toggle(false)
-					.parent().append("<div class='text-muted'>Nothing more to show.</div>");	
-			} else {
-				$("#next-page").toggle(false)
-					.parent().append("<div class='alert alert-warning'>No blogs written yet.</div>");	
-			}
-		} else {
-			$("#next-page").toggle(true);
-		}
-	}
-}
\ No newline at end of file
diff --git a/website/templates/js/blog_page.js b/website/templates/js/blog_page.js
deleted file mode 100644
index ee56d90..0000000
--- a/website/templates/js/blog_page.js
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-// License: GNU General Public License v3. See license.txt
-
-// js inside blog page
-
-$(document).ready(function() {
-	var n_comments = $(".comment-row").length;
-	
-	if(n_comments) {
-		$(".no_comment").toggle(false);
-	}
-	if(n_comments > 50) {
-		$(".add-comment").toggle(false)
-			.parent().append("<div class='alert alert-warning'>Comments are closed.</div>")
-	}
-	$(".add-comment").click(function() {
-		$("#comment-form").toggle();
-		$("#comment-form input, #comment-form, textarea").val("");
-	})
-	$("#submit-comment").click(function() {
-		var args = {
-			comment_by_fullname: $("[name='comment_by_fullname']").val(),
-			comment_by: $("[name='comment_by']").val(),
-			comment: $("[name='comment']").val(),
-			cmd: "website.helpers.blog.add_comment",
-			comment_doctype: "Blog Post",
-			comment_docname: "{{ name }}",
-			page_name: "{{ page_name }}",
-			_type: "POST"
-		}
-		
-		$("#comment-form .alert").toggle(false);
-		
-		if(!args.comment_by_fullname || !args.comment_by || !args.comment) {
-			$("#comment-form .alert")
-				.html("All fields are necessary to submit the comment.")
-				.toggle(true);
-			return false;
-		}
-		
-		
-		$.ajax({
-			type: "POST",
-			url: "server.py",
-			data: args,
-			dataType: "json",
-			success: function(data) {
-				if(data.exc) {
-					$("#comment-form .alert")
-						.html(data.exc)
-						.toggle(true)
-				} else {
-					$(data.message).appendTo(".blog-comments");
-					$(".no_comment").toggle(false);
-					$(".add-comment").toggle(false);
-					$("#comment-form")
-						.replaceWith("<div class='alert alert-success'>Thank you for your comment!</div>")
-				}
-			}
-		})
-		
-		return false;
-	})
-})
\ No newline at end of file
diff --git a/website/templates/js/contact.js b/website/templates/js/contact.js
deleted file mode 100644
index dece898..0000000
--- a/website/templates/js/contact.js
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
-// License: GNU General Public License v3. See license.txt
-
-$(document).ready(function() { 
-
-	$('.btn-send').click(function() {
-		var email = $('[name="email"]').val();
-		var message = $('[name="message"]').val();
-
-		if(!(email && message)) {
-			msgprint("Please enter both your email and message so that we \
-				can get back to you. Thanks!");
-			return false;
-		}
-
-		if(!valid_email(email)) {
-				msgprint("You seem to have written your name instead of your email. \
-					Please enter a valid email address so that we can get back.");
-				$('[name="email"]').focus();
-				return false;
-		}
-
-		$("#contact-alert").toggle(false);
-		erpnext.send_message({
-			subject: $('[name="subject"]').val(),
-			sender: email,
-			message: message,
-			callback: function(r) {
-				if(r.status==="okay") {
-					msgprint(r.message || "Thank you for your message.")
-				} else {
-					msgprint("There were errors");
-					console.log(r.exc);
-				}
-				$(':input').val('');
-			}
-		});
-	return false;
-	});
-
-});
-
-var msgprint = function(txt) {
-	if(txt) $("#contact-alert").html(txt).toggle(true);
-}
diff --git a/website/templates/pages/about.html b/website/templates/pages/about.html
deleted file mode 100644
index 277f790..0000000
--- a/website/templates/pages/about.html
+++ /dev/null
@@ -1,34 +0,0 @@
-{% extends "app/website/templates/html/page.html" %}
-
-{% set title="About Us" %}
-
-{% block content %}
-<div class="col-md-12">
-	{{ obj.doc.company_introduction or "<h2>About Us</h2><p>Some Introduction about your company that you would like your website visitor to know. More people than you think will read your About page. People always like to know who the are doing business with. Be authentic and avoid using jargon like 'value added services' etc. Be sure to update your company history and list of key team members in Website > About Us Settings</p>" }}
-	{% if obj.doclist.get({"doctype":"Company History"}) %}
-	<h3>{{ obj.doc.company_history_heading or "Company History" }}</h3>
-	{% for d in obj.doclist.get({"doctype":"Company History"}) %}
-	<div class="row">
-		<span class="col-md-2"><h4 style="margin:0px;">{{ d.year }}</h4></span>
-		<span class="col-md-10"><p>{{ d.highlight }}</p></span>
-	</div>
-	{% endfor %}
-	{% endif %}
-	{% if obj.doclist.get({"doctype":"About Us Team Member"}) %}
-	<h3>{{ obj.doc.team_members_heading or "Team Members" }}</h3>
-	{% for d in obj.doclist.get({"doctype":"About Us Team Member"}) %}
-	<div class="row" itemscope itemtype="http://schema.org/Person">
-		<span class="col-md-2">
-			<div class="avatar avatar-large">
-				<img class="avatar" src="{{ d.image_link }}" style="" itemprop="image">
-			</div>
-		</span>
-		<span class="col-md-10"><h4 itemprop="name">{{ d.full_name }}</h4>
-			<p itemprop="description">{{ d.bio }}</p>
-		</span>
-	</div>
-	{% endfor %}
-	{% endif %}
-	{{ obj.doc.footer or "" }}
-</div>
-{% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/account.html b/website/templates/pages/account.html
deleted file mode 100644
index 2a5acf6..0000000
--- a/website/templates/pages/account.html
+++ /dev/null
@@ -1,27 +0,0 @@
-{% extends "app/website/templates/html/page.html" %}
-
-{% set title="My Account" %}
-
-{% block content %}
-<div class="col-md-12">
-    <ul class="breadcrumb">
-    	<li><a href="index">Home</a></li>
-    	<li class="active">My Account</li>
-    </ul>
-	<!-- <h3>My Account</h3> -->
-	<ul class="nav nav-stacked pull-left">
-		<li><a href="profile"><i class="icon-user icon-fixed-width"></i> 
-			Change my name, password</a></li>
-		<li><a href="addresses"><i class="icon-map-marker icon-fixed-width"></i> 
-			My Addresses</a></li>
-		<li><a href="orders"><i class="icon-list icon-fixed-width"></i> My Orders</a></li>
-		<li><a href="tickets"><i class="icon-tags icon-fixed-width"></i> My Tickets</a></li>
-		<li style="border-top: 1px solid #ddd"></li>
-		<li><a href="invoices"><i class="icon-file-text icon-fixed-width"></i> Invoices</a></li>
-		<li><a href="shipments"><i class="icon-truck icon-fixed-width"></i> Shipments</a></li>
-		<li style="border-top: 1px solid #ddd"></li>
-		<li><a href="server.py?cmd=web_logout"><i class="icon-signout icon-fixed-width"></i>
-			Logout</a></li>
-	</ul>
-</div>
-{% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/blog.html b/website/templates/pages/blog.html
deleted file mode 100644
index 9bd1abf..0000000
--- a/website/templates/pages/blog.html
+++ /dev/null
@@ -1,33 +0,0 @@
-{% extends "app/website/templates/html/page.html" %}
-
-{% block javascript %}
-	{% include "app/website/templates/js/blog.js" %}
-{% endblock %}
-
-{% block css %}
-	{% include "app/website/templates/css/blog.css" %}
-{% endblock %}
-
-{% set title="Blog" %}
-
-{% block content %}
-<div class="col-md-12">
-	<h2 id="blog-title">{{ blog_title }}</h2>
-	{% if blog_introduction %}
-	<p>{{ blog_introduction }}</p>
-	{% endif %}
-	<h3 id="blot-subtitle" style="display:none;"></h3>
-	<br>
-	<div class="progress progress-striped active">
-		<div class="progress-bar progress-bar-info" style="width: 100%;"></div>
-	</div>
-	<div id="blog-list">
-		<!-- blog list will be generated dynamically -->
-	</div>
-	<div style="text-align: center;">
-		<button id="next-page" class="btn btn-default" 
-			style="display:none;">More...</button>
-	</div>
-</div>
-{% include 'app/website/templates/html/blog_footer.html' %}
-{% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/contact.html b/website/templates/pages/contact.html
deleted file mode 100644
index 86be163..0000000
--- a/website/templates/pages/contact.html
+++ /dev/null
@@ -1,60 +0,0 @@
-{% extends "app/website/templates/html/page.html" %}
-
-{% block javascript %}
-	{% include "app/website/templates/js/contact.js" %}
-{% endblock %}
-
-{% set title="Contact Us" %}
-
-{% block content %}
-<div class="col-md-12">
-	<h3>{{ obj.doc.heading or "Contact Us"}}</h3>
-	<div class="row">
-		<div class="web-form col-md-8">
-			<p id="contact-alert" class="alert alert-warning" 
-				style="display: none;">&nbsp;</p>
-			<p>
-				<select name="subject" class="form-control">
-				{% for option in obj.query_options %}
-					<option value="{{ option }}">{{ option }}</option>
-				{% endfor %}
-				</select>
-			</p>
-			<p>
-				<input class="form-control" name="email" type="text" 
-				placeholder="Your Email Address" />
-			</p>
-			<p>
-				<textarea rows="10" name="message" class="form-control"></textarea>
-			</p>
-			<p>
-				<button class="btn btn-primary btn-send">Send</button>
-			</p>
-		</div>
-		{% if obj.doc.address %}
-		<div class="col-md-3 col-md-offset-1 alert alert-warning" style="margin-top: 20px;" itemscope itemtype="http://schema.org/PostalAddress">
-			<h4><i class="icon-map-marker"></i> {{ obj.address.address_title }}</h4>
-			{% if obj.address.address_line1 %}
-				<span itemprop="streetAddress">{{ obj.address.address_line1 }}</span><br>
-			{% endif %}
-			{% if obj.address.address_line2 %}
-				<span itemprop="streetAddress">{{ obj.address.address_line2 }}</span><br>
-			{% endif %}
-			{% if obj.address.city %}
-				<span itemprop="addressLocality">{{ obj.address.city }}</span><br>
-			{% endif %}
-			{% if obj.address.state %}
-				<span itemprop="addressRegion">{{ obj.address.state }}</span><br>
-			{% endif %}
-			{% if obj.address.pincode %}
-				<span itemprop="postalCode">{{ obj.address.pincode }}</span><br>
-			{% endif %}
-			{% if obj.address.country %}
-				<span itemprop="addressCountry">{{ obj.address.country }}</span><br>
-			{% endif %}
-		</div>
-		{% endif %}
-	</div>
-	{{ obj.doc.introduction }}
-</div>
-{% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/index.html b/website/templates/pages/index.html
deleted file mode 100644
index 761da0c..0000000
--- a/website/templates/pages/index.html
+++ /dev/null
@@ -1 +0,0 @@
-{% extends "app/website/templates/html/web_page.html" %}
\ No newline at end of file
diff --git a/website/templates/pages/invoice.html b/website/templates/pages/invoice.html
deleted file mode 100644
index 26ddea4..0000000
--- a/website/templates/pages/invoice.html
+++ /dev/null
@@ -1,88 +0,0 @@
-{% extends "app/website/templates/html/page.html" %}
-
-{% set title=doc.name %}
-
-{% block content %}
-<div class="col-md-12">
-    <ul class="breadcrumb">
-    	<li><a href="index">Home</a></li>
-    	<li><a href="account">My Account</a></li>
-    	<li><a href="invoices">Invoices</a></li>
-    	<li class="active"><i class="icon-file-text icon-fixed-width"></i> {{ doc.name }}</li>
-    </ul>
-	<h3><i class="icon-file icon-fixed-width"></i> {{ doc.name }}</h3>
-	<hr>
-	{%- if doc.status -%}
-	<div style="font-size: 13px;">
-	<div class="row">
-		<div class="col-md-2">
-			<div class="label">{{ doc.status }}</div>
-		</div>
-		<div class="col-md-4">
-			{{ utils.formatdate(doc.transaction_date) }}
-		</div>
-	</div>
-	<br>
-	<div class="row">
-		<div class="col-md-12">
-		<table class="table table-bordered">
-			<tbody>
-				<tr>
-					<th>Sr</th>
-					<th>Item Name</th>
-					<th>Description</th>
-					<th>Qty</th>
-					<th>UoM</th>
-					<th>Basic Rate</th>
-					<th>Amount</th>
-				</tr>
-				{%- for row in doclist.get({"doctype":"Sales Order Item"}) %}
-				<tr>
-					<td style="width: 3%;">{{ row.idx }}</td>
-					<td style="width: 20%;">{{ row.item_name }}</td>
-					<td style="width: 37%;">{{ row.description }}</td>
-					<td style="width: 5%; text-align: right;">{{ row.qty }}</td>
-					<td style="width: 5%;">{{ row.stock_uom }}</td>
-					<td style="width: 15%; text-align: right;">{{ utils.fmt_money(row.export_rate, currency=doc.currency) }}</td>
-					<td style="width: 15%; text-align: right;">{{ utils.fmt_money(row.export_amount, currency=doc.currency) }}</td>
-				</tr>
-				{% endfor -%}
-			</tbody>
-		</table>
-		</div>
-	</div>
-	<div class="row">
-		<div class="col-md-6"></div>
-		<div class="col-md-6">
-		<table cellspacing=0 width=100%>
-		<tbody>
-			<tr>
-				<td>Net Total</td>
-				<td width=40% style="text-align: right;">{{
-					utils.fmt_money(doc.net_total/doc.conversion_rate, currency=doc.currency)
-				}}</td>
-			</tr>
-			{%- for charge in doclist.get({"doctype":"Sales Taxes and Charges"}) -%}
-			{%- if not charge.included_in_print_rate -%}
-			<tr>
-				<td>{{ charge.description }}</td>
-				<td style="text-align: right;">{{ utils.fmt_money(charge.tax_amount / doc.conversion_rate, currency=doc.currency) }}</td>
-			</tr>
-			{%- endif -%}
-			{%- endfor -%}
-			<tr>
-				<td>Grand Total</td>
-				<td style="text-align: right;">{{ utils.fmt_money(doc.grand_total_export, currency=doc.currency) }}</td>
-			</tr>
-			<tr style='font-weight: bold'>
-				<td>Rounded Total</td>
-				<td style="text-align: right;">{{ utils.fmt_money(doc.rounded_total_export, currency=doc.currency) }}</td>
-			</tr>
-		</tbody>
-		</table>	
-		</div>
-	</div>
-	</div>
-	{%- endif -%}
-</div>
-{% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/messages.html b/website/templates/pages/messages.html
deleted file mode 100644
index e1ea8d0..0000000
--- a/website/templates/pages/messages.html
+++ /dev/null
@@ -1,31 +0,0 @@
-{% extends "app/website/templates/html/transactions.html" %}
-
-{% block javascript -%}
-{{ super() }}
-
-var render = function(doc) {
-	doc.sender = doc.sender ? doc.sender : "To ";
-	doc.recipients = doc.recipients ? (" to " + doc.recipients) : "";
-	doc.content = remove_script_and_style(doc.content);
-	
-	if(!is_html(doc.content)) {
-		doc.content = doc.content.replace("\n", "<br>");
-	}
-		
-	$(repl('<a class="list-group-item">\
-			<div class="row col-md-12">%(subject)s</div>\
-			<div class="row text-muted">\
-				<div class="col-md-6">%(sender)s%(recipients)s</div>\
-				<div class="col-md-6 text-right">%(creation)s</div>\
-			</div>\
-			<div class="row col-md-12 msg-content" style="display: none;"><hr>%(content)s</div>\
-		</a>', doc))
-		.appendTo($list)
-		.on("click", function() {
-			$(this).find(".msg-content").toggle();
-		});
-	
-	
-}
-
-{%- endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/sales_transactions.html b/website/templates/pages/sales_transactions.html
deleted file mode 100644
index 7215339..0000000
--- a/website/templates/pages/sales_transactions.html
+++ /dev/null
@@ -1,25 +0,0 @@
-{% extends "app/website/templates/html/transactions.html" %}
-
-{% block javascript -%}
-global_number_format = "{{ global_number_format }}";
-currency = "{{ currency }}";
-wn.currency_symbols = {{ currency_symbols }};
-
-{{ super() }}
-
-var render = function(doc) {
-	doc.grand_total_export = format_currency(doc.grand_total_export, doc.currency);
-	
-	$(repl('<a href="{{ page }}?name=%(name)s" class="list-group-item">\
-			<div class="row">\
-				<div class="col-md-6">\
-					<div class="row col-md-12">%(name)s</div>\
-					<div class="row col-md-12 text-muted">%(items)s...</div>\
-				</div>\
-				<div class="col-md-3 text-right">%(grand_total_export)s</div>\
-				<div class="col-md-3 text-right text-muted">%(creation)s</div>\
-			</div>\
-		</a>', doc)).appendTo($list);
-};
-
-{%- endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/ticket.html b/website/templates/pages/ticket.html
deleted file mode 100644
index 6622ed1..0000000
--- a/website/templates/pages/ticket.html
+++ /dev/null
@@ -1,67 +0,0 @@
-{% extends "app/website/templates/html/page.html" %}
-
-{% set title=doc.name %}
-
-{% set status_label = {
-	"Open": "label-success",
-	"To Reply": "label-danger",
-	"Closed": "label-default"
-} %}
-
-{% block content %}
-<div class="col-md-12">
-    <ul class="breadcrumb">
-    	<li><a href="index">Home</a></li>
-    	<li><a href="account">My Account</a></li>
-    	<li><a href="tickets">My Tickets</a></li>
-    	<li class="active"><i class="icon-ticket icon-fixed-width"></i> {{ doc.name }}</li>
-    </ul>
-	<h3><i class="icon-ticket icon-fixed-width"></i> {{ doc.name }}</h3>
-	{% if doc.name == "Not Allowed" -%}
-		<script>ask_to_login();</script>
-	{% else %}
-	<hr>
-	{%- if doc.status -%}
-	{% if doc.status == "Waiting for Customer" -%}
-		{% set status = "To Reply" %}
-	{% else %}
-		{% set status = doc.status %}
-	{%- endif -%}
-	<div class="row">
-		<div class="col-md-2" style="margin-bottom: 7px;">
-			<span class="label {{ status_label.get(status) or 'label-default' }}">{{ status }}</span>
-		</div>
-		<div class="col-md-8">
-			<div class="row col-md-12">{{ doc.subject }}</div>
-		</div>
-		<div class="col-md-2 pull-right">
-			<span class="text-muted">{{ utils.formatdate(doc.creation) }}</span>
-		</div>
-	</div>
-	<br>
-	<h4>Messages</h4>
-	{%- if doclist.get({"doctype":"Communication"}) -%}
-	<div>
-		<table class="table table-bordered table-striped">
-			<tbody>
-				{%- for comm in doclist.get({"doctype":"Communication"}) %}
-				<tr>
-					<td>
-					<h5 style="text-transform: none">
-						{{ comm.sender }} on {{ utils.formatdate(doc.modified) }}</h5>
-					<hr>
-					<p>{{ webnotes.utils.is_html(comm.content) and comm.content or
-						comm.content.replace("\n", "<br>")}}</p>
-					</td>
-				</tr>
-				{% endfor -%}
-			</tbody>
-		</table>
-	</div>
-	{%- else -%}
-	<div class="alert">No messages</div>
-	{%- endif -%}
-	{%- endif -%}
-	{% endif -%}
-</div>
-{% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/tickets.html b/website/templates/pages/tickets.html
deleted file mode 100644
index 166dbcd..0000000
--- a/website/templates/pages/tickets.html
+++ /dev/null
@@ -1,31 +0,0 @@
-{% extends "app/website/templates/html/transactions.html" %}
-
-{% block javascript -%}
-{{ super() }}
-
-var status_label = {
-	"Open": "label-success",
-	"Waiting for Customer": "label-danger",
-	"Closed": "label-default"
-}
-
-var render = function(doc) {
-	doc.status = doc.status.trim();
-	doc.label_class = status_label[doc.status] || "label-default";
-	if(doc.status==="Waiting for Customer") doc.status = "To Reply";
-	
-	$(repl('<a href="{{ page }}?name=%(name)s" class="list-group-item">\
-			<div class="row">\
-				<div class="col-md-2" style="margin-bottom: 7px;"><span class="label %(label_class)s">\
-					%(status)s</span></div>\
-				<div class="col-md-8">\
-					<div class="row col-md-12">%(name)s</div>\
-					<div class="row col-md-12 text-muted">%(subject)s</div>\
-				</div>\
-				<div class="col-md-2 pull-right">\
-					<span class="text-muted">%(creation)s</span>\
-				</div>\
-			</div>\
-		</a>', doc)).appendTo($list);
-};
-{%- endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/transaction_list.html b/website/templates/pages/transaction_list.html
deleted file mode 100644
index 967a6a8..0000000
--- a/website/templates/pages/transaction_list.html
+++ /dev/null
@@ -1,77 +0,0 @@
-{% extends "app/website/templates/html/page.html" %}
-
-{% block content %}
-<div class="col-md-12">
-    <ul class="breadcrumb">
-    	<li><a href="index">Home</a></li>
-    	<li><a href="account">My Account</a></li>
-    	<li class="active"><i class="{{ icon }} icon-fixed-width"></i> {{ title }}</li>
-    </ul>
-	<div class="list-group transaction-list">
-		<div class="progress progress-striped active">
-			<div class="progress-bar progress-bar-info" style="width: 100%;"></div>
-		</div>
-	</div>
-	<div class="text-center">
-		<button class="btn btn-default btn-show-more" style="display: none;">More</button></div>
-</div>
-{% endblock %}
-
-{% block javascript %}
-global_number_format = "{{ global_number_format }}";
-currency = "{{ currency }}";
-wn.currency_symbols = {{ currency_symbols }};
-
-$(document).ready(function() {
-	var start = 0;
-	var $list = $(".transaction-list");
-	
-	var $show_more = $(".btn-show-more").on("click", function() {
-		get_transactions(this);
-	});
-	
-	var get_transactions = function(btn) {
-		wn.call({
-			method: "{{ method }}",
-			args: { start: start },
-			btn: btn,
-			callback: function(r) {
-				$list.find(".progress").remove();
-				$show_more.toggle(!(r.message && r.message.length===20));
-				
-				if(!(r.message && r.message.length)) {
-					console.log("empty");
-					if(!$list.html().trim()) {
-						$list.html("<div class='alert alert-warning'>\
-							{{ empty_list_message }}</div>");
-					}
-					return;
-				}
-			
-				start += r.message.length;
-			
-				$.each(r.message, function(i, doc) {
-					render(doc);
-				});
-			}
-		})
-	};
-	
-	var render = function(doc) {
-		doc.grand_total_export = format_currency(doc.grand_total_export, doc.currency);
-		
-		var $row = $(repl('<a href="{{ page }}?name=%(name)s" class="list-group-item">\
-				<div class="row">\
-					<div class="col-md-6">\
-						<div class="row col-md-12">%(name)s</div>\
-						<div class="row col-md-12 text-muted">%(items)s...</div>\
-					</div>\
-					<div class="col-md-3 text-right">%(grand_total_export)s</div>\
-					<div class="col-md-3 text-right text-muted">%(creation)s</div>\
-				</div>\
-			</a>', doc)).appendTo($list);
-	};
-	
-	get_transactions();
-});
-{% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/writers.html b/website/templates/pages/writers.html
deleted file mode 100644
index 5b254b0..0000000
--- a/website/templates/pages/writers.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "app/website/templates/html/page.html" %}
-
-{% set title="Blog Writers" %}
-
-{% block content %}
-<div class="col-md-12">
-	<h2 id="blog-title">Blog Writers</h2>
-	{% if writers_introduction %}
-	<p>{{ writers_introduction }}</p>
-	{% endif %}
-	<hr>
-	{% for blogger_info in bloggers %}
-	{% include "app/website/templates/html/blogger.html" %}	
-	{% endfor %}
-</div>
-{% include 'app/website/templates/html/blog_footer.html' %}
-{% endblock %}
\ No newline at end of file
