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..db6e009
--- /dev/null
+++ b/accounts/doctype/sales_invoice/templates/pages/invoice.html
@@ -0,0 +1,5 @@
+{% extends "app/portal/templates/sale.html" %}
+
+{% block status -%}
+	{% if doc.status %}{{ doc.status }}{% endif %}
+{%- endblock %}
\ 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..8fc8913
--- /dev/null
+++ b/accounts/doctype/sales_invoice/templates/pages/invoice.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 import _
+from webnotes.utils import flt, fmt_money
+
+no_cache = True
+
+def get_context():
+	from portal.utils import get_transaction_context
+	context = get_transaction_context("Sales Invoice", webnotes.form_dict.name)
+	modify_status(context.get("doc"))
+	context.update({
+		"parent_link": "invoices",
+		"parent_title": "Invoices"
+	})
+	return context
+	
+def modify_status(doc):
+	doc.status = ""
+	if flt(doc.outstanding_amount):
+		doc.status = '<span class="label %s"><i class="icon-fixed-width %s"></i> %s</span>' % \
+			("label-warning", "icon-exclamation-sign", 
+			_("To Pay") + " = " + fmt_money(doc.outstanding_amount, currency=doc.currency))
+	else:
+		doc.status = '<span class="label %s"><i class="icon-fixed-width %s"></i> %s</span>' % \
+			("label-success", "icon-ok", _("Paid"))
+		
\ 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..59e53a0
--- /dev/null
+++ b/accounts/doctype/sales_invoice/templates/pages/invoices.py
@@ -0,0 +1,28 @@
+# 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": "accounts.doctype.sales_invoice.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
+	from accounts.doctype.sales_invoice.templates.pages.invoice import modify_status
+	invoices = get_transaction_list("Sales Invoice", start, ["outstanding_amount"])
+	for d in invoices:
+		modify_status(d)
+	return invoices
\ 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/install_erpnext.py b/install_erpnext.py
index c57a9e2..6075746 100644
--- a/install_erpnext.py
+++ b/install_erpnext.py
@@ -288,7 +288,7 @@
 		RewriteCond %%{REQUEST_FILENAME} !-f
 		RewriteCond %%{REQUEST_FILENAME} !-d
 		RewriteCond %%{REQUEST_FILENAME} !-l
-		RewriteRule ^([^/]+)$ /web.py?page=$1 [QSA,L]		
+		RewriteRule ^([^/]+)$ /web.py?page=$1 [QSA,L]
 	</Directory>
 </VirtualHost>""" % (install_path, install_path)
 	
diff --git a/patches/patch_list.py b/patches/patch_list.py
index b57efcb..20be3a5 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -264,4 +264,5 @@
 	"execute:webnotes.reload_doc('setup', 'doctype', 'features_setup') # 2013-09-05",
 	"patches.september_2013.p02_fix_serial_no_status",
 	"patches.september_2013.p03_update_stock_uom_in_sle",
+	"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 92%
rename from website/templates/pages/sale.html
rename to portal/templates/sale.html
index 1c03da2..2a7c603 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>
@@ -18,7 +17,7 @@
 	<div>
 	<div class="row">
 		<div class="col-xs-6">
-			{% if doc.status -%}<div class="label label-default">{{ doc.status }}</div>{%- endif %}
+			{% block status -%}{%- endblock %}
 		</div>
 		<div class="col-xs-6">
 			<span class="pull-right">{{ utils.formatdate(doc.posting_date or doc.transaction_date) }}</span>
diff --git a/portal/templates/sales_transactions.html b/portal/templates/sales_transactions.html
new file mode 100644
index 0000000..5f33797
--- /dev/null
+++ b/portal/templates/sales_transactions.html
@@ -0,0 +1,30 @@
+{% 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);
+		if(!doc.status) doc.status = "";
+		
+		$(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 class="row col-md-12">%(status)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..8f42d9b
--- /dev/null
+++ b/portal/utils.py
@@ -0,0 +1,71 @@
+# 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, additional_fields=None):
+	# find customer id
+	customer = webnotes.conn.get_value("Contact", {"email_id": webnotes.session.user}, 
+		"customer")
+	
+	if customer:
+		if additional_fields:
+			additional_fields = ", " + ", ".join(("`%s`" % f for f in additional_fields))
+		else:
+			additional_fields = ""
+			
+		transactions = webnotes.conn.sql("""select name, creation, currency, grand_total_export
+			%s
+			from `tab%s` where customer=%s and docstatus=1
+			order by creation desc
+			limit %s, 20""" % (additional_fields, doctype, "%s", "%s"), 
+			(customer, cint(start)), as_dict=True)
+		for doc in transactions:
+			items = webnotes.conn.sql_list("""select item_name
+				from `tab%s Item` where parent=%s limit 6""" % (doctype, "%s"), doc.name)
+			doc.items = ", ".join(items[:5]) + ("..." if (len(items) > 5) else "")
+			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..db6e009
--- /dev/null
+++ b/selling/doctype/sales_order/templates/pages/order.html
@@ -0,0 +1,5 @@
+{% extends "app/portal/templates/sale.html" %}
+
+{% block status -%}
+	{% if doc.status %}{{ doc.status }}{% endif %}
+{%- endblock %}
\ 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..88a4d46
--- /dev/null
+++ b/selling/doctype/sales_order/templates/pages/order.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 import _
+
+no_cache = True
+
+def get_context():
+	from portal.utils import get_transaction_context
+	context = get_transaction_context("Sales Order", webnotes.form_dict.name)
+	modify_status(context.get("doc"))
+	context.update({
+		"parent_link": "orders",
+		"parent_title": "My Orders"
+	})
+	return context
+	
+def modify_status(doc):
+	doc.status = []
+	if 0 < doc.per_billed < 100:
+		doc.status.append(("label-warning", "icon-ok", _("Partially Billed")))
+	elif doc.per_billed == 100:
+		doc.status.append(("label-success", "icon-ok", _("Billed")))
+	
+	if 0 < doc.per_delivered < 100:
+		doc.status.append(("label-warning", "icon-truck", _("Partially Delivered")))
+	elif doc.per_delivered == 100:
+		doc.status.append(("label-success", "icon-truck", _("Delivered")))
+	doc.status = " " + " ".join(('<span class="label %s"><i class="icon-fixed-width %s"></i> %s</span>' % s 
+			for s in doc.status))
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..150a20f
--- /dev/null
+++ b/selling/doctype/sales_order/templates/pages/orders.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
+
+no_cache = True
+
+def get_context():
+	from portal.utils import get_currency_context
+	context = get_currency_context()
+	context.update({
+		"title": "My Orders",
+		"method": "selling.doctype.sales_order.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
+	from selling.doctype.sales_order.templates.pages.order import modify_status
+	orders = get_transaction_list("Sales Order", start, ["per_billed", "per_delivered"])
+	for d in orders:
+		modify_status(d)
+		
+	return orders
+	
\ 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/install.py b/startup/install.py
index ea281b8..83606e0 100644
--- a/startup/install.py
+++ b/startup/install.py
@@ -5,44 +5,6 @@
 
 import webnotes
 
-def pre_import():
-	webnotes.conn.begin()
-	make_modules()
-	make_roles()
-	webnotes.conn.commit()
-	
-def make_modules():
-	modules = [
-		"Home", "System", "Utilities", "Website", "Setup",
-		"Selling", "Buying", "Projects", "Accounts", "Stock",
-		"Support", "HR", "Manufacturing"]
-	
-	for m in modules:
-		doc = webnotes.doc(fielddata = {
-			"doctype": "Module Def",
-			"module_name": m,
-		})
-		doc.insert()
-	
-def make_roles():
-	roles = [
-		"Accounts Manager", "Accounts User", "Analytics", "Auditor",
-		"Blogger", "Customer", "Employee", "Expense Approver",
-		"HR Manager", "HR User", "Leave Approver", "Maintenance Manager",
-		"Maintenance User", "Manufacturing Manager", "Manufacturing User",
-		"Material Manager", "Material Master Manager", "Material User",
-		"Partner", "Projects User", "Projects Manager", "Purchase Manager", "Purchase Master Manager",
-		"Purchase User", "Quality Manager", "Sales Manager",
-		"Sales Master Manager", "Sales User", "Supplier", "Support Manager",
-		"Support Team", "Website Manager"]
-		
-	for r in roles:
-		doc = webnotes.doc(fielddata = {
-			"doctype":"Role",
-			"role_name": r
-		})
-		doc.insert()
-
 def post_import():
 	webnotes.conn.begin()
 
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 2c702a6..236961a 100644
--- a/stock/doctype/item/item.py
+++ b/stock/doctype/item/item.py
@@ -227,7 +227,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)
 
@@ -257,13 +257,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/demo/make_erpnext_demo.py b/utilities/demo/make_erpnext_demo.py
index 9e56839..766da26 100644
--- a/utilities/demo/make_erpnext_demo.py
+++ b/utilities/demo/make_erpnext_demo.py
@@ -19,7 +19,7 @@
 	roles = ["Accounts Manager", "Analytics", "Expense Approver", "Accounts User", 
 		"Leave Approver", "Blogger", "Customer", "Sales Manager", "Employee", "Support Manager", 
 		"HR Manager", "HR User", "Maintenance Manager", "Maintenance User", "Material Manager", 
-		"Material Master Manager", "Material User", "Partner", "Manufacturing Manager", 
+		"Material Master Manager", "Material User", "Manufacturing Manager", 
 		"Manufacturing User", "Projects User", "Purchase Manager", "Purchase Master Manager", 
 		"Purchase User", "Quality Manager", "Report Manager", "Sales Master Manager", 
 		"Sales User", "Supplier", "Support Team"]
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
