diff --git a/accounts/Print Format/Form 16A Print Format/Form 16A Print Format.txt b/accounts/Print Format/Form 16A Print Format/Form 16A Print Format.txt
deleted file mode 100644
index 2e5436b..0000000
--- a/accounts/Print Format/Form 16A Print Format/Form 16A Print Format.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-[
- {
-  "owner": "Administrator", 
-  "docstatus": 0, 
-  "creation": "2010-09-27 17:30:34", 
-  "modified_by": "Administrator", 
-  "modified": "2011-10-19 14:19:27"
- }, 
- {
-  "name": "__common__", 
-  "module": "Accounts", 
-  "standard": "Yes", 
-  "html": "<html>\n  <script>\n     function get_letter_head() {\n\t// add letter head\n\tvar cp = locals['Control Panel']['Control Panel'];\n\tif(doc.letter_head)\n\t\tvar lh= cstr(_p.letter_heads[doc.letter_head]);\n\telse if(cp.letter_head)\n\t\tvar lh= cp.letter_head;\n\telse \n\t\tvar lh= '';\n\t\t\n\treturn lh;\n}\n  </script>\n<body>\n<table border = \"1\" style='border-collapse: collapse;'>\n <tr>\n   <td>\n    <div style=\"border-bottom: 1px solid; padding-bottom: 5px; width:100%\"><script>get_letter_head()</script></div>\n   </td>\n </tr>\n <tr>\n   <td colspan = \"3\"><h1 align = \"center\"><b>FORM No. 16 A</b></h1>\n   <p align=\"right\">Certificate No:<script>doc.name</script></p>\n   <p align = \"center\">[See rule 31 (1)(b)]</p>\n   <h2 align = \"center\"><b>Certifiction of deduction of tax at source under section 203 of the Income-tax Act, 1961</b></h2>\n   <p>[For interest on securities; dividends; interests other than 'interests on securities';winnings from lottery or crossword puzzle;\n      winnings from horse race; payments to contractors and sub-contractors;insurance comission;payments to\n      \n      non-resident sportsmen/ sports associations;payments in respect of deposits under National Savings Scheme:\n      payments on account of repurchase of units by Mutual Fund or Unit Trust of India; commission, remuneration or prize\n     \n      on sale of lottery tickets; comission or brokerage;rent;fees for professional or technical services;royalty and any sum \n      under section 28(va);income in respect of units; payment of compensation on acquisition of certain immovable property;\n\n      other sums under section 195; income in respect of units of non-residents referred to in section 196A; income from units\n      referred to in section 196B;income from foreign currency bonds or shares of an Indian Company referred to in section</p>\n      196C; income of Foreign Institutional Investors from securities referred to in section 196D]\n   </td> \n  </tr>\n\n  <tr>\n    <td width=\"30%\">Name and address of person deducing tax</td>\n    <td width=\"40%\">Acknowledgement No.s of all quarterly statements of TDS under sub-section(3) of section 200 as provided by TIN Facilitation Centre or NSDL web-site</td>\n    <td width=\"30%\">Name and address of the person to whom payment is made or in whose account it is credited</td>\n  </tr>\n  \n  <tr>\n    <td>\n      <table>\n        <tr><script>doc.company</script></tr><br><br>\n        <tr><script>replace_newlines(doc.company_address)</script></tr>\n      </table>\n    </td>\n    <td>\n      <script>print_table('Form 16A', doc.name, 'form_16A_ack_details','Form 16A Ack Detail',  ['quarter','ack_no'], ['Quarter' , 'Acknowledgement No.'] , ['40%','60%']).innerHTML</script>\n    </td>\n    <td>\n      <table>\n        <tr><script>doc.party_name</script></tr><br><br>\n        <tr><script>replace_newlines(doc.party_address)</script></tr>\n      </table>\n    </td>\n  </tr>\n  \n  <tr>\n    <td>\n      <table>\n        <tr><b>Registration Details OF THE DEDUCTOR</b></tr><br>\n        <tr><script>replace_newlines(doc.registration_details)</script></tr>\n      </table>\n    </td>\n    \n    <td>\n      <table>\n        <tr><b><center>NATURE OF PAYMENT</center></b></tr><br><br>\n        <tr><b><center><script>doc.tds_category</script></center></b></tr>\n        \n      </table>\n    </td>\n    \n    <td>\n      <table>\n        <tr><b>PAN NO. OF THE PAYEE</b></tr><br>\n        <tr><script>doc.pan_number</script></tr>\n        \n      </table>\n    </td>\n  </tr>\n  \n  <tr>\n    <td align = \"center\" colspan =\"3\"><b>DETAILS OF PAYMENT, TAX DEDUCTION AND DEPOSIT OF TAX INTO CENTRAL GOVERNMENT ACCOUNT</b>\n    <p align = \"center\">(The deductor is to provide transaction wise details of tax deducted and deposited)</p>\n  </tr>\n  \n  <tr>\n    <td colspan=\"3\">\n      <script>print_table('Form 16A', doc.name, 'form_16A_tax_details','Form 16A Tax Detail', ['SR','amount_paid', 'date_of_payment','tds_main','surcharge','cess_on_tds','total_tax_deposited','cheque_no','bsr_code','tax_deposited_date','challan_no'], ['S No.' , 'Amount paid / credited','Date of payment / credit','TDS (Rs.)','Surcharge (Rs.)','Cess on TDS(Rs.)','Total Tax Deposited (Rs.)','Cheque/DD no.(if any)','BSR code on bank branch', 'Date on which tax deposited(dd/mm/yy)','Transfer Voucher/Challan Identification no.'] ,  ['3%', '10%','10%', '10%','10%','6%','10%' ,'10%','7%' ,'10%','7%','7%'] ).innerHTML</script>\n    </td>\n  </tr>\n  \n  <tr>\n    <td colspan=\"3\">\n      Certified that a sum of Rs. <script>doc.total_amount</script> has been deducted at source and paid to the credit of the Central Government as per details given above <br><br><br><br>\n      <p align=\"right\"> Signature of person responsible for deduction of tax \n    </td>\n  </tr>\n  \n  <tr>\n    <td colspan=\"3\">\n      <table width=\"100%\" border=\"0\">\n        <tr>\n          <td width=\"50%\">Place: <script>doc.place</script></td>\n          <td width=\"50%\" align=\"right\">Full Name: <script>doc.full_name</script></td>\n        </tr>\n        <tr>\n          <td width=\"50%\">Date: <script>date.str_to_user(doc.dt)</script></td>\n          <td width=\"50%\" align=\"right\">Designation: <script>doc.designation</script></td>\n        </tr>\n      </table>\n    </td>\n  </tr>\n  \n</table>\n</body>\n</html>", 
-  "doctype": "Print Format"
- }, 
- {
-  "name": "Form 16A Print Format", 
-  "doctype": "Print Format"
- }
-]
\ No newline at end of file
diff --git a/accounts/page/accounts_home/accounts_home.html b/accounts/page/accounts_home/accounts_home.html
index 0e71487..498f811 100644
--- a/accounts/page/accounts_home/accounts_home.html
+++ b/accounts/page/accounts_home/accounts_home.html
@@ -123,35 +123,10 @@
 			</div>
 
 			<div class="section india-specific">
-				<div class="section-head">Tax Deduction (India)</div>
+				<div class="section-head">India Specific</div>
 				<div class="section-body">
 					<div class="section-item">
 						<a class="section-link" 
-							title = "Tax Deduction at Source (TDS) payments to be made to the goverment"
-							href="#List/TDS Payment">TDS Payments</a>
-					</div>
-					<div class="section-item">
-						<a class="section-link" 
-							title = "Update with acknowledgement recd from the government"
-							href="#List/TDS Return Acknowledgement">TDS Return Acknowledgement</a>
-					</div>
-					<div class="section-item">
-						<a class="section-link" 
-							title = "Tax deduction (TDS) categories"
-							href="#List/TDS Category">TDS Category</a>
-					</div>
-					<div class="section-item">
-						<a class="section-link" 
-							title = "Tax deduction (TDS) rates for different periods"
-							href="#List/TDS Rate Chart">TDS Rate Chart</a>
-					</div>
-					<div class="section-item">
-						<a class="section-link" 
-							title = "Challan given to employees/suppliers whose tax (TDS) has been deducted"
-							href="#List/Form 16A">Form 16A</a>
-					</div>
-					<div class="section-item">
-						<a class="section-link" 
 							title = "C-Forms received from customers"
 							href="#List/C-Form">C-Form</a>
 					</div>
diff --git a/home/__init__.py b/home/__init__.py
index 436e8ec..e508ac7 100644
--- a/home/__init__.py
+++ b/home/__init__.py
@@ -21,6 +21,7 @@
 feed_dict = {
 	# Project
 	'Project':		       ['[%(status)s]', '#000080'],
+	'Task':		       ['[%(status)s] %(subject)s', '#000080'],
 
 	# Sales
 	'Lead':			 ['%(lead_name)s', '#000080'],
@@ -81,8 +82,9 @@
 	f.full_name = get_fullname(owner)
 	f.save()
 
-def update_feed(doc, method=None):   
+def update_feed(controller, method=None):   
 	"adds a new feed"
+	doc = controller.doc
 	if method in ['on_update', 'on_submit']:
 		subject, color = feed_dict.get(doc.doctype, [None, None])
 		if subject:			
diff --git a/hr/doctype/employee/employee.txt b/hr/doctype/employee/employee.txt
index 826df84..0c48287 100644
--- a/hr/doctype/employee/employee.txt
+++ b/hr/doctype/employee/employee.txt
@@ -2,9 +2,9 @@
  {
   "owner": "Administrator", 
   "docstatus": 0, 
-  "creation": "2012-11-30 11:49:12", 
+  "creation": "2012-12-03 10:13:46", 
   "modified_by": "Administrator", 
-  "modified": "2012-11-30 11:54:31"
+  "modified": "2012-12-27 14:45:31"
  }, 
  {
   "autoname": "naming_series:", 
@@ -52,9 +52,16 @@
   "permlevel": 0
  }, 
  {
+  "doctype": "DocField", 
+  "label": "Image View", 
+  "options": "image", 
+  "fieldname": "image_view", 
+  "fieldtype": "Image", 
+  "permlevel": 0
+ }, 
+ {
   "print_hide": 1, 
   "no_copy": 1, 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Employee", 
   "fieldname": "employee", 
@@ -67,32 +74,28 @@
   "description": "<span class=\"sys_manager\">To setup, please go to Setup > Naming Series</span>", 
   "no_copy": 1, 
   "oldfieldtype": "Select", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Naming Series", 
   "oldfieldname": "naming_series", 
-  "permlevel": 0, 
+  "options": "EMP/", 
   "fieldname": "naming_series", 
   "fieldtype": "Select", 
   "reqd": 0, 
-  "options": "EMP/"
+  "permlevel": 0
  }, 
  {
   "oldfieldtype": "Select", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Salutation", 
   "oldfieldname": "salutation", 
-  "trigger": "Client", 
+  "options": "\nMr\nMs", 
   "fieldname": "salutation", 
   "fieldtype": "Select", 
   "search_index": 0, 
-  "options": "\nMr\nMs", 
   "permlevel": 0
  }, 
  {
   "oldfieldtype": "Data", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Full Name", 
   "oldfieldname": "employee_name", 
@@ -102,6 +105,30 @@
   "permlevel": 0
  }, 
  {
+  "doctype": "DocField", 
+  "label": "Image", 
+  "options": "attach_files:", 
+  "fieldname": "image", 
+  "fieldtype": "Select", 
+  "permlevel": 0
+ }, 
+ {
+  "doctype": "DocField", 
+  "width": "50%", 
+  "fieldname": "column_break1", 
+  "fieldtype": "Column Break", 
+  "permlevel": 0
+ }, 
+ {
+  "description": "System User (login) ID. If set, it will become default for all HR forms.", 
+  "doctype": "DocField", 
+  "label": "User ID", 
+  "options": "Profile", 
+  "fieldname": "user_id", 
+  "fieldtype": "Link", 
+  "permlevel": 0
+ }, 
+ {
   "oldfieldtype": "Data", 
   "doctype": "DocField", 
   "label": "Employee Number", 
@@ -113,25 +140,7 @@
   "in_filter": 1
  }, 
  {
-  "description": "System User (login) ID. If set, it will become default for all HR forms.", 
-  "colour": "White:FFF", 
-  "doctype": "DocField", 
-  "label": "User ID", 
-  "options": "Profile", 
-  "fieldname": "user_id", 
-  "fieldtype": "Link", 
-  "permlevel": 0
- }, 
- {
-  "doctype": "DocField", 
-  "width": "50%", 
-  "fieldname": "column_break1", 
-  "fieldtype": "Column Break", 
-  "permlevel": 0
- }, 
- {
   "oldfieldtype": "Date", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Date of Joining", 
   "oldfieldname": "date_of_joining", 
@@ -142,11 +151,9 @@
  }, 
  {
   "oldfieldtype": "Date", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Date of Birth", 
   "oldfieldname": "date_of_birth", 
-  "trigger": "Client", 
   "fieldname": "date_of_birth", 
   "fieldtype": "Date", 
   "search_index": 0, 
@@ -194,7 +201,6 @@
  {
   "default": "Active", 
   "oldfieldtype": "Select", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Status", 
   "oldfieldname": "status", 
@@ -221,7 +227,6 @@
  {
   "description": "Applicable Holiday List", 
   "oldfieldtype": "Link", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Holiday List", 
   "oldfieldname": "holiday_list", 
@@ -249,7 +254,6 @@
  }, 
  {
   "oldfieldtype": "Date", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Final Confirmation Date", 
   "oldfieldname": "final_confirmation_date", 
@@ -294,7 +298,6 @@
  }, 
  {
   "oldfieldtype": "Link", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Branch", 
   "oldfieldname": "branch", 
@@ -307,7 +310,6 @@
  }, 
  {
   "oldfieldtype": "Link", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Department", 
   "oldfieldname": "department", 
@@ -320,21 +322,19 @@
  }, 
  {
   "oldfieldtype": "Link", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Designation", 
   "oldfieldname": "designation", 
-  "permlevel": 0, 
+  "options": "Designation", 
   "fieldname": "designation", 
   "fieldtype": "Link", 
   "search_index": 1, 
   "reqd": 0, 
-  "options": "Designation", 
+  "permlevel": 0, 
   "in_filter": 1
  }, 
  {
   "oldfieldtype": "Link", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Grade", 
   "oldfieldname": "grade", 
@@ -378,33 +378,29 @@
  }, 
  {
   "oldfieldtype": "Select", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Salary Mode", 
   "oldfieldname": "salary_mode", 
-  "trigger": "Client", 
+  "options": "\nBank\nCash\nCheque", 
   "fieldname": "salary_mode", 
   "fieldtype": "Select", 
-  "options": "\nBank\nCash\nCheque", 
   "permlevel": 0
  }, 
  {
   "oldfieldtype": "Link", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Bank Name", 
   "oldfieldname": "bank_name", 
-  "permlevel": 0, 
+  "options": "Suggest", 
   "fieldname": "bank_name", 
   "fieldtype": "Data", 
   "depends_on": "eval:doc.salary_mode == 'Bank'", 
   "hidden": 0, 
-  "options": "Suggest", 
+  "permlevel": 0, 
   "in_filter": 1
  }, 
  {
   "oldfieldtype": "Data", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Bank A/C No.", 
   "oldfieldname": "bank_ac_no", 
@@ -546,6 +542,21 @@
  }, 
  {
   "doctype": "DocField", 
+  "label": "Bio", 
+  "fieldname": "sb53", 
+  "fieldtype": "Section Break", 
+  "permlevel": 0
+ }, 
+ {
+  "description": "Short biography for website and other publications.", 
+  "doctype": "DocField", 
+  "label": "Bio", 
+  "fieldname": "bio", 
+  "fieldtype": "Text Editor", 
+  "permlevel": 0
+ }, 
+ {
+  "doctype": "DocField", 
   "label": "Personal Details", 
   "fieldname": "personal_details", 
   "fieldtype": "Section Break", 
@@ -588,10 +599,8 @@
  }, 
  {
   "oldfieldtype": "Button", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Salary Structure", 
-  "trigger": "Client", 
   "fieldname": "salary_structure", 
   "fieldtype": "Button", 
   "hidden": 1, 
@@ -629,7 +638,6 @@
  }, 
  {
   "description": "Here you can maintain family details like name and occupation of parent, spouse and children", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Family Background", 
   "fieldname": "family_background", 
@@ -638,7 +646,6 @@
  }, 
  {
   "description": "Here you can maintain height, weight, allergies, medical concerns etc", 
-  "colour": "White:FFF", 
   "doctype": "DocField", 
   "label": "Health Details", 
   "fieldname": "health_details", 
diff --git a/patches/december_2012/delete_form16_print_format.py b/patches/december_2012/delete_form16_print_format.py
new file mode 100644
index 0000000..4234d65
--- /dev/null
+++ b/patches/december_2012/delete_form16_print_format.py
@@ -0,0 +1,3 @@
+import webnotes
+def execute():
+	webnotes.delete_doc("Print Format", "Form 16A Print Format")
\ No newline at end of file
diff --git a/patches/november_2012/production_order_patch.py b/patches/november_2012/production_order_patch.py
index e6a1192..b49cd72 100644
--- a/patches/november_2012/production_order_patch.py
+++ b/patches/november_2012/production_order_patch.py
@@ -8,5 +8,5 @@
 		set use_multi_level_bom = if(consider_sa_items_as_raw_materials='Yes', 0, 1)""")
 	
 	webnotes.conn.sql("""update `tabProduction Order` 
-		set use_multi_level_bom = if(consider_sa_items_as_raw_materials='Yes', 0, 1)
+		set use_multi_level_bom = if(consider_sa_items='Yes', 0, 1)
 		where use_multi_level_bom is null""")
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 32958d7..17334d9 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -560,6 +560,10 @@
 	},
 	{
 		'patch_module': 'patches.december_2012',
+<<<<<<< HEAD
 		'patch_file': 'address_title',
+=======
+		'patch_file': 'delete_form16_print_format',
+>>>>>>> a85b2e4ee349c544acb7a1949351e9a7c70f7b7c
 	},
 ]
\ No newline at end of file
diff --git a/public/js/stock_analytics.js b/public/js/stock_analytics.js
new file mode 100644
index 0000000..35b3f56
--- /dev/null
+++ b/public/js/stock_analytics.js
@@ -0,0 +1,196 @@
+// ERPNext - web based ERP (http://erpnext.com)
+// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
+// 
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// 
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+wn.require("app/js/stock_grid_report.js");
+
+erpnext.StockAnalytics = erpnext.StockGridReport.extend({
+	init: function(wrapper, opts) {
+		var args = {
+			title: "Stock Analytics",
+			page: wrapper,
+			parent: $(wrapper).find('.layout-main'),
+			appframe: wrapper.appframe,
+			doctypes: ["Item", "Item Group", "Warehouse", "Stock Ledger Entry", "Brand", 
+				"Fiscal Year"],
+			tree_grid: {
+				show: true, 
+				parent_field: "parent_item_group", 
+				formatter: function(item) {
+					if(!item.is_group) {
+						return repl('<a href="#stock-ledger/item_code=%(enc_value)s">%(value)s</a>',
+							{
+								value: item.name,
+								enc_value: encodeURIComponent(item.name)
+							});
+					} else {
+						return item.name;
+					}
+					
+				}
+			},
+		}
+		
+		if(opts) $.extend(args, opts);
+		
+		this._super(args);
+	},
+	setup_columns: function() {
+		var std_columns = [
+			{id: "check", name: "Plot", field: "check", width: 30,
+				formatter: this.check_formatter},
+			{id: "name", name: "Item", field: "name", width: 300,
+				formatter: this.tree_formatter},
+			{id: "brand", name: "Brand", field: "brand", width: 100},
+			{id: "opening", name: "Opening", field: "opening", hidden: true,
+				formatter: this.currency_formatter}
+		];
+
+		this.make_date_range_columns();
+		this.columns = std_columns.concat(this.columns);
+	},
+	filters: [
+		{fieldtype:"Select", label: "Value or Qty", options:["Value (Weighted Average)", 
+			"Value (FIFO)", "Quantity"],
+			filter: function(val, item, opts, me) {
+				return me.apply_zero_filter(val, item, opts, me);
+			}},
+		{fieldtype:"Select", label: "Brand", link:"Brand", 
+			default_value: "Select Brand...", filter: function(val, item, opts) {
+				return val == opts.default_value || item.brand == val || item._show;
+			}},
+		{fieldtype:"Select", label: "Warehouse", link:"Warehouse", 
+			default_value: "Select Warehouse..."},
+		{fieldtype:"Date", label: "From Date"},
+		{fieldtype:"Label", label: "To"},
+		{fieldtype:"Date", label: "To Date"},
+		{fieldtype:"Select", label: "Range", 
+			options:["Daily", "Weekly", "Monthly", "Quarterly", "Yearly"]},
+		{fieldtype:"Button", label: "Refresh", icon:"icon-refresh icon-white", cssClass:"btn-info"},
+		{fieldtype:"Button", label: "Reset Filters"}
+	],
+	setup_filters: function() {
+		var me = this;
+		this._super();
+		
+		this.trigger_refresh_on_change(["value_or_qty", "brand", "warehouse", "range"]);
+
+		this.show_zero_check();
+		this.setup_plot_check();
+	},
+	init_filter_values: function() {
+		this._super();
+		this.filter_inputs.range && this.filter_inputs.range.val('Monthly');
+	},
+	prepare_data: function() {
+		var me = this;
+				
+		if(!this.data) {
+			var items = this.prepare_tree("Item", "Item Group");
+
+			me.parent_map = {};
+			me.item_by_name = {};
+			me.data = [];
+
+			$.each(items, function(i, v) {
+				var d = copy_dict(v);
+
+				me.data.push(d);
+				me.item_by_name[d.name] = d;
+				if(d.parent_item_group) {
+					me.parent_map[d.name] = d.parent_item_group;
+				}
+				me.reset_item_values(d);
+			});
+			this.set_indent();
+			this.data[0].checked = true;
+		} else {
+			// otherwise, only reset values
+			$.each(this.data, function(i, d) {
+				me.reset_item_values(d);
+			});
+		}
+		
+		this.prepare_balances();
+		this.update_groups();
+		
+	},
+	prepare_balances: function() {
+		var me = this;
+		var from_date = dateutil.str_to_obj(this.from_date);
+		var to_date = dateutil.str_to_obj(this.to_date);
+		var data = wn.report_dump.data["Stock Ledger Entry"];
+
+		this.item_warehouse = {};
+
+		for(var i=0, j=data.length; i<j; i++) {
+			var sl = data[i];
+			sl.posting_datetime = sl.posting_date + " " + sl.posting_time;
+			var posting_datetime = dateutil.str_to_obj(sl.posting_datetime);
+			
+			if(me.is_default("warehouse") ? true : me.warehouse == sl.warehouse) {
+				var item = me.item_by_name[sl.item_code];
+				
+				if(me.value_or_qty!="Quantity") {
+					var wh = me.get_item_warehouse(sl.warehouse, sl.item_code);
+					var is_fifo = this.value_or_qty== "Value (FIFO)";
+					var diff = me.get_value_diff(wh, sl, is_fifo);
+				} else {
+					var diff = sl.qty;
+				}
+
+				if(posting_datetime < from_date) {
+					item.opening += diff;
+				} else if(posting_datetime <= to_date) {
+					item[me.column_map[sl.posting_date].field] += diff;
+				} else {
+					break;
+				}
+			}
+		}
+	},
+	update_groups: function() {
+		var me = this;
+
+		$.each(this.data, function(i, item) {
+			// update groups
+			if(!item.is_group && me.apply_filter(item, "brand")) {
+				var balance = item.opening;
+				$.each(me.columns, function(i, col) {
+					if(col.formatter==me.currency_formatter && !col.hidden) {
+						item[col.field] = balance + item[col.field];
+						balance = item[col.field];
+					}
+				});
+				
+				var parent = me.parent_map[item.name];
+				while(parent) {
+					parent_group = me.item_by_name[parent];
+					$.each(me.columns, function(c, col) {
+						if (col.formatter == me.currency_formatter) {
+							parent_group[col.field] = 
+								flt(parent_group[col.field])
+								+ flt(item[col.field]);
+						}
+					});
+					parent = me.parent_map[parent];
+				}
+			}
+		});
+	},
+	get_plot_points: function(item, col, idx) {
+		return [[dateutil.user_to_obj(col.name).getTime(), item[col.field]]]
+	}
+});
\ No newline at end of file
diff --git a/selling/doctype/customer/customer.js b/selling/doctype/customer/customer.js
index bb3e0ce..7b5397e 100644
--- a/selling/doctype/customer/customer.js
+++ b/selling/doctype/customer/customer.js
@@ -48,7 +48,7 @@
 		cur_frm.communication_view = new wn.views.CommunicationList({
 			list: wn.model.get("Communication", {"customer": doc.name}),
 			parent: cur_frm.fields_dict.communication_html.wrapper,
-			doc: doc
+			doc: doc,
 		});
 	}
 }
@@ -114,4 +114,4 @@
 }
 
 
-cur_frm.fields_dict.lead_name.get_query = erpnext.utils.lead_query;
\ No newline at end of file
+cur_frm.fields_dict.lead_name.get_query = erpnext.utils.lead_query;
diff --git a/selling/doctype/lead/lead_list.js b/selling/doctype/lead/lead_list.js
index 227a232..21f0ffd 100644
--- a/selling/doctype/lead/lead_list.js
+++ b/selling/doctype/lead/lead_list.js
@@ -5,6 +5,7 @@
 			'tabLead.lead_name',
 			'tabLead.status',
 			'tabLead.source',
+			'tabLead.company_name',
 			'tabLead.modified_by'
 		]);
 		this.stats = this.stats.concat(['status', 'source', 'rating', 'company']);
@@ -29,7 +30,8 @@
 		{width: '5%', content:'avatar_modified'},
 		{width: '30%', content:'lead_name'},
 		{width: '12%', content:'status_html'},
-		{width: '38%', content:'lead_status+tags', css: {color:'#222'}},
+		{width: '15%', content:'lead_status+tags', css: {color:'#222'}},
+		{width: '23%', content: 'company_name'},
 		{width: '12%', content:'modified', css: {'text-align': 'right', 'color':'#777'}}
 	]
 })
diff --git a/startup/event_handlers.py b/startup/event_handlers.py
index 70a66e9..16fb523 100644
--- a/startup/event_handlers.py
+++ b/startup/event_handlers.py
@@ -46,10 +46,6 @@
 	"""add comment to feed"""
 	home.make_feed('Comment', doc.comment_doctype, doc.comment_docname, doc.comment_by,
 		'<i>"' + doc.comment + '"</i>', '#6B24B3')
-
-def doclist_all(doc, method):
-	"""doclist trigger called from webnotes.model.wrapper on any event"""
-	home.update_feed(doc, method)
 	
 def boot_session(bootinfo):
 	"""boot session - send website info if guest"""
diff --git a/startup/observers.py b/startup/observers.py
new file mode 100644
index 0000000..7dad77a
--- /dev/null
+++ b/startup/observers.py
@@ -0,0 +1,20 @@
+# ERPNext - web based ERP (http://erpnext.com)
+# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+observer_map = {
+	"*:on_update": "home.update_feed",
+	"*:on_submit": "home.update_feed",
+}
\ No newline at end of file
diff --git a/stock/page/stock_analytics/stock_analytics.js b/stock/page/stock_analytics/stock_analytics.js
index 03b2c73..a003963 100644
--- a/stock/page/stock_analytics/stock_analytics.js
+++ b/stock/page/stock_analytics/stock_analytics.js
@@ -14,200 +14,19 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-wn.require("app/js/stock_grid_report.js");
 
-// done so that it doesn't throw error when inherited in stock-balance report
-if(wn.pages["stock-analytics"]) {
-	wn.pages['stock-analytics'].onload = function(wrapper) { 
-		wn.ui.make_app_page({
-			parent: wrapper,
-			title: 'Stock Analytics',
-			single_column: true
-		});
+wn.pages['stock-analytics'].onload = function(wrapper) { 
+	wn.ui.make_app_page({
+		parent: wrapper,
+		title: 'Stock Analytics',
+		single_column: true
+	});
 
-		new erpnext.StockAnalytics(wrapper);
+	new erpnext.StockAnalytics(wrapper);
 
-		wrapper.appframe.add_home_breadcrumb()
-		wrapper.appframe.add_module_breadcrumb("Stock")
-		wrapper.appframe.add_breadcrumb("icon-bar-chart")
-	}
+	wrapper.appframe.add_home_breadcrumb()
+	wrapper.appframe.add_module_breadcrumb("Stock")
+	wrapper.appframe.add_breadcrumb("icon-bar-chart")
 }
 
-erpnext.StockAnalytics = erpnext.StockGridReport.extend({
-	init: function(wrapper, opts) {
-		var args = {
-			title: "Stock Analytics",
-			page: wrapper,
-			parent: $(wrapper).find('.layout-main'),
-			appframe: wrapper.appframe,
-			doctypes: ["Item", "Item Group", "Warehouse", "Stock Ledger Entry", "Brand", 
-				"Fiscal Year"],
-			tree_grid: {
-				show: true, 
-				parent_field: "parent_item_group", 
-				formatter: function(item) {
-					if(!item.is_group) {
-						return repl('<a href="#stock-ledger/item_code=%(enc_value)s">%(value)s</a>',
-							{
-								value: item.name,
-								enc_value: encodeURIComponent(item.name)
-							});
-					} else {
-						return item.name;
-					}
-					
-				}
-			},
-		}
-		
-		if(opts) $.extend(args, opts);
-		
-		this._super(args);
-	},
-	setup_columns: function() {
-		var std_columns = [
-			{id: "check", name: "Plot", field: "check", width: 30,
-				formatter: this.check_formatter},
-			{id: "name", name: "Item", field: "name", width: 300,
-				formatter: this.tree_formatter},
-			{id: "brand", name: "Brand", field: "brand", width: 200},
-			{id: "opening", name: "Opening", field: "opening", hidden: true,
-				formatter: this.currency_formatter}
-		];
-
-		this.make_date_range_columns();
-		this.columns = std_columns.concat(this.columns);
-	},
-	filters: [
-		{fieldtype:"Select", label: "Value or Qty", options:["Value (Weighted Average)", 
-			"Value (FIFO)", "Quantity"],
-			filter: function(val, item, opts, me) {
-				return me.apply_zero_filter(val, item, opts, me);
-			}},
-		{fieldtype:"Select", label: "Brand", link:"Brand", 
-			default_value: "Select Brand...", filter: function(val, item, opts) {
-				return val == opts.default_value || item.brand == val || item._show;
-			}},
-		{fieldtype:"Select", label: "Warehouse", link:"Warehouse", 
-			default_value: "Select Warehouse..."},
-		{fieldtype:"Date", label: "From Date"},
-		{fieldtype:"Label", label: "To"},
-		{fieldtype:"Date", label: "To Date"},
-		{fieldtype:"Select", label: "Range", 
-			options:["Daily", "Weekly", "Monthly", "Quarterly", "Yearly"]},
-		{fieldtype:"Button", label: "Refresh", icon:"icon-refresh icon-white", cssClass:"btn-info"},
-		{fieldtype:"Button", label: "Reset Filters"}
-	],
-	setup_filters: function() {
-		var me = this;
-		this._super();
-		
-		this.trigger_refresh_on_change(["value_or_qty", "brand", "warehouse", "range"]);
-
-		this.show_zero_check();
-		this.setup_plot_check();
-	},
-	init_filter_values: function() {
-		this._super();
-		this.filter_inputs.range && this.filter_inputs.range.val('Monthly');
-	},
-	prepare_data: function() {
-		var me = this;
-				
-		if(!this.data) {
-			var items = this.prepare_tree("Item", "Item Group");
-
-			me.parent_map = {};
-			me.item_by_name = {};
-			me.data = [];
-
-			$.each(items, function(i, v) {
-				var d = copy_dict(v);
-
-				me.data.push(d);
-				me.item_by_name[d.name] = d;
-				if(d.parent_item_group) {
-					me.parent_map[d.name] = d.parent_item_group;
-				}
-				me.reset_item_values(d);
-			});
-			this.set_indent();
-			this.data[0].checked = true;
-		} else {
-			// otherwise, only reset values
-			$.each(this.data, function(i, d) {
-				me.reset_item_values(d);
-			});
-		}
-		
-		this.prepare_balances();
-		this.update_groups();
-		
-	},
-	prepare_balances: function() {
-		var me = this;
-		var from_date = dateutil.str_to_obj(this.from_date);
-		var to_date = dateutil.str_to_obj(this.to_date);
-		var data = wn.report_dump.data["Stock Ledger Entry"];
-
-		this.item_warehouse = {};
-
-		for(var i=0, j=data.length; i<j; i++) {
-			var sl = data[i];
-			sl.posting_datetime = sl.posting_date + " " + sl.posting_time;
-			var posting_datetime = dateutil.str_to_obj(sl.posting_datetime);
-			
-			if(me.is_default("warehouse") ? true : me.warehouse == sl.warehouse) {
-				var item = me.item_by_name[sl.item_code];
-				
-				if(me.value_or_qty!="Quantity") {
-					var wh = me.get_item_warehouse(sl.warehouse, sl.item_code);
-					var is_fifo = this.value_or_qty== "Value (FIFO)";
-					var diff = me.get_value_diff(wh, sl, is_fifo);
-				} else {
-					var diff = sl.qty;
-				}
-
-				if(posting_datetime < from_date) {
-					item.opening += diff;
-				} else if(posting_datetime <= to_date) {
-					item[me.column_map[sl.posting_date].field] += diff;
-				} else {
-					break;
-				}
-			}
-		}
-	},
-	update_groups: function() {
-		var me = this;
-
-		$.each(this.data, function(i, item) {
-			// update groups
-			if(!item.is_group && me.apply_filter(item, "brand")) {
-				var balance = item.opening;
-				$.each(me.columns, function(i, col) {
-					if(col.formatter==me.currency_formatter && !col.hidden) {
-						item[col.field] = balance + item[col.field];
-						balance = item[col.field];
-					}
-				});
-				
-				var parent = me.parent_map[item.name];
-				while(parent) {
-					parent_group = me.item_by_name[parent];
-					$.each(me.columns, function(c, col) {
-						if (col.formatter == me.currency_formatter) {
-							parent_group[col.field] = 
-								flt(parent_group[col.field])
-								+ flt(item[col.field]);
-						}
-					});
-					parent = me.parent_map[parent];
-				}
-			}
-		});
-	},
-	get_plot_points: function(item, col, idx) {
-		return [[dateutil.user_to_obj(col.name).getTime(), item[col.field]]]
-	}
-});
\ No newline at end of file
+wn.require("app/js/stock_analytics.js");
\ No newline at end of file
diff --git a/stock/page/stock_balance/stock_balance.js b/stock/page/stock_balance/stock_balance.js
index 7268aca..3033470 100644
--- a/stock/page/stock_balance/stock_balance.js
+++ b/stock/page/stock_balance/stock_balance.js
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-wn.require("../app/stock/page/stock_analytics/stock_analytics.js");
+wn.require("app/js/stock_analytics.js");
 
 wn.pages['stock-balance'].onload = function(wrapper) { 
 	wn.ui.make_app_page({
diff --git a/support/doctype/support_ticket/__init__.py b/support/doctype/support_ticket/__init__.py
index a53c76b..0295e32 100644
--- a/support/doctype/support_ticket/__init__.py
+++ b/support/doctype/support_ticket/__init__.py
@@ -81,7 +81,7 @@
 			if exists and exists[0] and exists[0][0]:
 				st = webnotes.get_obj('Support Ticket', thread_id)
 				
-				from support.doctype.communication.communication import make
+				from core.doctype.communication.communication import make
 				
 				make(content=content, sender=full_email_id, doctype="Support Ticket",
 					name=thread_id, lead = st.doc.lead, contact=st.doc.contact)
diff --git a/support/doctype/support_ticket/support_ticket.js b/support/doctype/support_ticket/support_ticket.js
index 3e607fb..3484bf3 100644
--- a/support/doctype/support_ticket/support_ticket.js
+++ b/support/doctype/support_ticket/support_ticket.js
@@ -51,6 +51,7 @@
 		var comm_list = wn.model.get("Communication", {"support_ticket": doc.name})
 		comm_list.push({
 			"sender": doc.raised_by,
+			"creation": doc.creation,
 			"modified": doc.creation,
 			"content": doc.description});
 					
diff --git a/utilities/doctype/address/address.py b/utilities/doctype/address/address.py
index 08bf5cd..ae0f217 100644
--- a/utilities/doctype/address/address.py
+++ b/utilities/doctype/address/address.py
@@ -31,7 +31,8 @@
 			self.doc.name = self.doc.supplier + '-' + self.doc.address_type
 		elif self.doc.sales_partner:
 			self.doc.name = self.doc.sales_partner + '-' + self.doc.address_type
-			
+		elif self.doc.address_title:
+			self.doc.address_title = self.doc.address_title + "-" + self.doc.address_type
 
 	def validate(self):
 		self.validate_for_whom()
diff --git a/utilities/doctype/sms_control/sms_control.py b/utilities/doctype/sms_control/sms_control.py
index a1a886e..61b45b1 100644
--- a/utilities/doctype/sms_control/sms_control.py
+++ b/utilities/doctype/sms_control/sms_control.py
@@ -41,7 +41,7 @@
 				d = d.replace(x, '')
 
 			# mobile no validation for erpnext gateway
-			if webnotes.conn.webnotes.conn.get_value('SMS Settings', None, 'sms_gateway_url'):
+			if webnotes.conn.get_value('SMS Settings', None, 'sms_gateway_url'):
 				mob_no = d
 			else:
 				if not d.startswith("0") and len(d) == 10:
diff --git a/website/css/website.css b/website/css/website.css
index b392f5e..daf0318 100644
--- a/website/css/website.css
+++ b/website/css/website.css
@@ -65,14 +65,6 @@
 	float: left;
 }
 
-.website-missing-image {
-	background-color: #eee;
-	padding: 40px;
-	width: 32px;
-	font-size: 32px;
-	color: #888;
-}
-
 .clear {
 	clear: both;
 }
diff --git a/website/doctype/about_us_settings/__init__.py b/website/doctype/about_us_settings/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/website/doctype/about_us_settings/__init__.py
diff --git a/website/doctype/about_us_settings/about_us_settings.py b/website/doctype/about_us_settings/about_us_settings.py
new file mode 100644
index 0000000..a0e8726
--- /dev/null
+++ b/website/doctype/about_us_settings/about_us_settings.py
@@ -0,0 +1,18 @@
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import webnotes
+from website.utils import url_for_website
+
+class DocType:
+	def __init__(self, d, dl):
+		self.doc, self.doclist = d, dl
+		
+	def onload(self):
+		"""load employee"""
+		emp_list = []
+		for d in self.doclist.get({"doctype":"About Us Team Member"}):
+			emp = webnotes.doc("Employee", d.employee)
+			emp.image = url_for_website(emp.image)
+			emp_list.append(emp)
+		self.doclist += emp_list
\ 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
new file mode 100644
index 0000000..9facfbb
--- /dev/null
+++ b/website/doctype/about_us_settings/about_us_settings.txt
@@ -0,0 +1,98 @@
+[
+ {
+  "owner": "Administrator", 
+  "docstatus": 0, 
+  "creation": "2012-12-27 14:24:35", 
+  "modified_by": "Administrator", 
+  "modified": "2012-12-27 15:51:11"
+ }, 
+ {
+  "issingle": 1, 
+  "description": "Settings for the About Us Page", 
+  "doctype": "DocType", 
+  "module": "Website", 
+  "document_type": "Master", 
+  "name": "__common__"
+ }, 
+ {
+  "name": "__common__", 
+  "parent": "About Us Settings", 
+  "doctype": "DocField", 
+  "parenttype": "DocType", 
+  "permlevel": 0, 
+  "parentfield": "fields"
+ }, 
+ {
+  "parent": "About Us Settings", 
+  "read": 1, 
+  "name": "__common__", 
+  "create": 1, 
+  "doctype": "DocPerm", 
+  "write": 1, 
+  "parenttype": "DocType", 
+  "role": "Website Manager", 
+  "permlevel": 0, 
+  "parentfield": "permissions"
+ }, 
+ {
+  "name": "About Us Settings", 
+  "doctype": "DocType"
+ }, 
+ {
+  "description": "Introduce your company to the website visitor.", 
+  "doctype": "DocField", 
+  "label": "Company Introduction", 
+  "fieldname": "company_introduction", 
+  "fieldtype": "Text Editor"
+ }, 
+ {
+  "doctype": "DocField", 
+  "label": "Company History", 
+  "fieldname": "sb0", 
+  "fieldtype": "Section Break"
+ }, 
+ {
+  "description": "\"Company History\"", 
+  "doctype": "DocField", 
+  "label": "Company History Heading", 
+  "fieldname": "company_history_heading", 
+  "fieldtype": "Data"
+ }, 
+ {
+  "doctype": "DocField", 
+  "label": "Company History", 
+  "fieldname": "company_history", 
+  "fieldtype": "Table", 
+  "options": "Company History"
+ }, 
+ {
+  "doctype": "DocField", 
+  "label": "Team Members", 
+  "fieldname": "sb1", 
+  "fieldtype": "Section Break"
+ }, 
+ {
+  "description": "\"Team Members\" or \"Management\"", 
+  "doctype": "DocField", 
+  "label": "Team Members Heading", 
+  "fieldname": "team_members_heading", 
+  "fieldtype": "Data"
+ }, 
+ {
+  "doctype": "DocField", 
+  "label": "Team Members", 
+  "fieldname": "team_members", 
+  "fieldtype": "Table", 
+  "options": "About Us Team Member"
+ }, 
+ {
+  "description": "More content for the bottom of the page.", 
+  "doctype": "DocField", 
+  "label": "Footer", 
+  "fieldname": "footer", 
+  "fieldtype": "Text Editor"
+ }, 
+ {
+  "doctype": "DocPerm"
+ }
+]
\ 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
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/website/doctype/about_us_team_member/__init__.py
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
new file mode 100644
index 0000000..928aa9f
--- /dev/null
+++ b/website/doctype/about_us_team_member/about_us_team_member.py
@@ -0,0 +1,8 @@
+# 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
new file mode 100644
index 0000000..a68ddcf
--- /dev/null
+++ b/website/doctype/about_us_team_member/about_us_team_member.txt
@@ -0,0 +1,35 @@
+[
+ {
+  "owner": "Administrator", 
+  "docstatus": 0, 
+  "creation": "2012-12-27 14:28:45", 
+  "modified_by": "Administrator", 
+  "modified": "2012-12-27 14:49:44"
+ }, 
+ {
+  "istable": 1, 
+  "name": "__common__", 
+  "doctype": "DocType", 
+  "module": "Website"
+ }, 
+ {
+  "parent": "About Us Team Member", 
+  "doctype": "DocField", 
+  "name": "__common__", 
+  "label": "Employee", 
+  "width": "300px", 
+  "parenttype": "DocType", 
+  "options": "Employee", 
+  "fieldname": "employee", 
+  "fieldtype": "Link", 
+  "permlevel": 0, 
+  "parentfield": "fields"
+ }, 
+ {
+  "name": "About Us Team Member", 
+  "doctype": "DocType"
+ }, 
+ {
+  "doctype": "DocField"
+ }
+]
\ No newline at end of file
diff --git a/website/doctype/company_history/__init__.py b/website/doctype/company_history/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/website/doctype/company_history/__init__.py
diff --git a/website/doctype/company_history/company_history.py b/website/doctype/company_history/company_history.py
new file mode 100644
index 0000000..928aa9f
--- /dev/null
+++ b/website/doctype/company_history/company_history.py
@@ -0,0 +1,8 @@
+# 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
new file mode 100644
index 0000000..64fe6c2
--- /dev/null
+++ b/website/doctype/company_history/company_history.txt
@@ -0,0 +1,40 @@
+[
+ {
+  "owner": "Administrator", 
+  "docstatus": 0, 
+  "creation": "2012-12-27 14:25:38", 
+  "modified_by": "Administrator", 
+  "modified": "2012-12-27 14:25:38"
+ }, 
+ {
+  "istable": 1, 
+  "name": "__common__", 
+  "doctype": "DocType", 
+  "module": "Website"
+ }, 
+ {
+  "name": "__common__", 
+  "parent": "Company History", 
+  "doctype": "DocField", 
+  "parenttype": "DocType", 
+  "permlevel": 0, 
+  "parentfield": "fields"
+ }, 
+ {
+  "name": "Company History", 
+  "doctype": "DocType"
+ }, 
+ {
+  "doctype": "DocField", 
+  "label": "Year", 
+  "fieldname": "year", 
+  "fieldtype": "Data"
+ }, 
+ {
+  "doctype": "DocField", 
+  "label": "Highlight", 
+  "width": "300px", 
+  "fieldname": "highlight", 
+  "fieldtype": "Text"
+ }
+]
\ No newline at end of file
diff --git a/website/page/website_home/website_home.html b/website/page/website_home/website_home.html
index b32995b..e4c86b0 100644
--- a/website/page/website_home/website_home.html
+++ b/website/page/website_home/website_home.html
@@ -20,11 +20,11 @@
 			<br>
 			<h5><a href="#Form/Product Settings">Product Settings</a></h5>
 			<p class="help">Settings for Product Catalog on the website.</p>
+			<br>
+			<h5><a href="#Form/About Us Settings">About Us Settings</a></h5>
+			<p class="help">Settings for About Us Page.</p>
 		</div>
 		<div style="clear: both"></div>
-		<hr>
-		<h3>Reports</h3>
-		<div class="reports-list"></div>
 	</div>
 	<div class="layout-side-section">
 		<div class="psidebar">
diff --git a/website/templates/html/product_group.html b/website/templates/html/product_group.html
index 7c22a15..feebafe 100644
--- a/website/templates/html/product_group.html
+++ b/website/templates/html/product_group.html
@@ -21,7 +21,7 @@
 			<div class="well well-small">
 				<div class="container-fluid" style="padding-left: 0px; margin-left:-10px; line-height: 2em;">
 				{% for d in sub_groups %}
-					<div class="span2">
+					<div class="span4">
 						<a href="{{ d.page_name }}">{{ d.name }} ({{ d.count }})</a>
 					</div>
 				{% endfor %}
diff --git a/website/templates/html/product_missing_image.html b/website/templates/html/product_missing_image.html
index 81cc0d8..3858a13 100644
--- a/website/templates/html/product_missing_image.html
+++ b/website/templates/html/product_missing_image.html
@@ -1 +1 @@
-<div class='website-missing-image'><i class='icon-camera'></i></div>
\ No newline at end of file
+<div class='missing-image'><i class='icon-camera'></i></div>
\ No newline at end of file
diff --git a/website/templates/pages/about.html b/website/templates/pages/about.html
new file mode 100644
index 0000000..f4b6e30
--- /dev/null
+++ b/website/templates/pages/about.html
@@ -0,0 +1,40 @@
+{% extends "html/page.html" %}
+
+{% block content %}
+<div class="layout-wrapper">
+	<div class="layout-main">
+	{% if obj.doc.company_introduction %}
+	{{ obj.doc.company_introduction }}
+	{% endif %}
+	{% if obj.doclist.get({"doctype":"Company History"}) %}
+	<h3>{{ obj.doc.company_history_heading or "Company History" }}</h3>
+	<table class="table table-bordered" style="width: 100%; table-layout: fixed">
+		<tbody>
+			{% for d in obj.doclist.get({"doctype":"Company History"}) %}
+			<tr>
+				<td style="width: 30%; text-align: right"><h4>{{ d.year }}</h4></td>
+				<td>{{ d.highlight }}</td>
+			</tr>
+			{% endfor %}
+		</tbody>
+	</table>
+	{% endif %}
+	{% if obj.doclist.get({"doctype":"Employee"}) %}
+	<h3>{{ obj.doc.team_members_heading or "Team Members" }}</h3>
+	<table class="table table-bordered" style="width: 100%; table-layout: fixed">
+		<tbody>
+			{% for d in obj.doclist.get({"doctype":"Employee"}) %}
+			<tr>
+				<td style="text-align:right; width: 30%;">
+					<img src="{{ d.image }}" style=""></td>
+				<td><h4>{{ d.employee_name }}</h4>
+					{{ d.bio }}</td>
+			</tr>
+			{% endfor %}
+		</tbody>
+	</table>
+	{% endif %}
+	{{ obj.doc.footer or "" }}
+	</div>
+</div>
+{% endblock %}
\ No newline at end of file
diff --git a/website/utils.py b/website/utils.py
index 8d24574..52a0898 100644
--- a/website/utils.py
+++ b/website/utils.py
@@ -40,6 +40,10 @@
 	})
 }
 
+page_settings_map = {
+	"about": "About Us Settings"
+}
+
 def render(page_name):
 	"""render html page"""
 	try:
@@ -98,6 +102,10 @@
 	"""set page_name and check if it is unique"""
 	webnotes.conn.set(doc, "page_name", page_name(title))
 	
+	standard_pages = get_template_pages()
+	if doc.page_name in standard_pages:
+		webnotes.conn.sql("""Page Name cannot be one of %s""" % ', '.join(standard_pages))
+	
 	res = webnotes.conn.sql("""\
 		select count(*) from `tab%s`
 		where page_name=%s and name!=%s""" % (doc.doctype, '%s', '%s'),
@@ -135,10 +143,12 @@
 		page_name = get_home_page()
 	
 	if page_name in get_template_pages():
-		args = {
+		args = webnotes._dict({
 			'template': 'pages/%s.html' % page_name,
 			'name': page_name,
-		}
+		})
+		if page_name in page_settings_map:
+			args.obj = webnotes.model_wrapper(page_settings_map[page_name]).obj
 	else:
 		args = get_doc_fields(page_name)
 	
