Merge pull request #2203 from rmehta/mailbox

Mailbox
diff --git a/.travis.yml b/.travis.yml
index 1b4e340..344637a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -16,7 +16,7 @@
   - sudo apt-get install mariadb-server mariadb-common libmariadbclient-dev
   - wget http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.1/wkhtmltox-0.12.1_linux-precise-amd64.deb
   - sudo dpkg -i wkhtmltox-0.12.1_linux-precise-amd64.deb
-  - CFLAGS=-O0 pip install git+https://github.com/frappe/frappe.git@develop
+  - CFLAGS=-O0 pip install git+https://github.com/frappe/frappe.git@v5.0
   - CFLAGS=-O0 pip install --editable .
 
 before_script:
diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index 5ee6158..a20415b 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1 +1 @@
-__version__ = '4.3.0'
+__version__ = '5.0.0-alpha'
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
index 7bf6fcc..9f2385b 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
@@ -18,6 +18,9 @@
 		self.credit_days_global = -1
 		self.is_approving_authority = -1
 
+	def get_feed(self):
+		return self.voucher_type
+
 	def validate(self):
 		if not self.is_opening:
 			self.is_opening='No'
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py
index 362f42e..1e38cd7 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/general_ledger.py
@@ -78,7 +78,7 @@
 		conditions.append("voucher_no=%(voucher_no)s")
 
 
-	from frappe.widgets.reportview import build_match_conditions
+	from frappe.desk.reportview import build_match_conditions
 	match_conditions = build_match_conditions("GL Entry")
 	if match_conditions: conditions.append(match_conditions)
 
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index c658cdd..d28e8d7 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -7,7 +7,7 @@
 from frappe.utils import nowdate, cstr, flt, now, getdate, add_months
 from frappe import throw, _
 from frappe.utils import formatdate
-import frappe.widgets.reportview
+import frappe.desk.reportview
 
 class FiscalYearError(frappe.ValidationError): pass
 class BudgetError(frappe.ValidationError): pass
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.js b/erpnext/buying/doctype/purchase_common/purchase_common.js
index c2e76e2..0b4b2c1 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.js
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.js
@@ -10,6 +10,8 @@
 frappe.require("assets/erpnext/js/transaction.js");
 {% include "public/js/controllers/accounts.js" %}
 
+cur_frm.email_field = "contact_email";
+
 erpnext.buying.BuyingController = erpnext.TransactionController.extend({
 	onload: function() {
 		this.setup_queries();
diff --git a/erpnext/buying/doctype/quality_inspection/quality_inspection.py b/erpnext/buying/doctype/quality_inspection/quality_inspection.py
index 3fc130a..da34108 100644
--- a/erpnext/buying/doctype/quality_inspection/quality_inspection.py
+++ b/erpnext/buying/doctype/quality_inspection/quality_inspection.py
@@ -38,7 +38,7 @@
 
 def item_query(doctype, txt, searchfield, start, page_len, filters):
 	if filters.get("from"):
-		from frappe.widgets.reportview import get_match_cond
+		from frappe.desk.reportview import get_match_cond
 		filters.update({
 			"txt": txt,
 			"mcond": get_match_cond(filters["from"]),
diff --git a/erpnext/buying/doctype/supplier/supplier.js b/erpnext/buying/doctype/supplier/supplier.js
index b5c7fb1..5339067 100644
--- a/erpnext/buying/doctype/supplier/supplier.js
+++ b/erpnext/buying/doctype/supplier/supplier.js
@@ -20,13 +20,7 @@
 		// make lists
 		cur_frm.cscript.make_address(doc,dt,dn);
 		cur_frm.cscript.make_contact(doc,dt,dn);
-
-		cur_frm.communication_view = new frappe.views.CommunicationList({
-			list: frappe.get_list("Communication", {"supplier": doc.name}),
-			parent: cur_frm.fields_dict.communication_html.wrapper,
-			doc: doc
-		})
-  }
+	}
 }
 
 cur_frm.cscript.make_dashboard = function(doc) {
diff --git a/erpnext/buying/doctype/supplier/supplier.json b/erpnext/buying/doctype/supplier/supplier.json
index 1d21778..2c2fbff 100644
--- a/erpnext/buying/doctype/supplier/supplier.json
+++ b/erpnext/buying/doctype/supplier/supplier.json
@@ -1,260 +1,244 @@
 {
- "allow_import": 1, 
- "allow_rename": 1, 
- "autoname": "naming_series:", 
- "creation": "2013-01-10 16:34:11", 
- "description": "Supplier of Goods or Services.", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Master", 
+ "allow_import": 1,
+ "allow_rename": 1,
+ "autoname": "naming_series:",
+ "creation": "2013-01-10 16:34:11",
+ "description": "Supplier of Goods or Services.",
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "Master",
  "fields": [
   {
-   "fieldname": "basic_info", 
-   "fieldtype": "Section Break", 
-   "label": "Basic Info", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-user", 
+   "fieldname": "basic_info",
+   "fieldtype": "Section Break",
+   "label": "Basic Info",
+   "oldfieldtype": "Section Break",
+   "options": "icon-user",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "naming_series", 
-   "fieldtype": "Select", 
-   "label": "Series", 
-   "no_copy": 1, 
-   "oldfieldname": "naming_series", 
-   "oldfieldtype": "Select", 
-   "options": "SUPP-", 
+   "fieldname": "naming_series",
+   "fieldtype": "Select",
+   "label": "Series",
+   "no_copy": 1,
+   "oldfieldname": "naming_series",
+   "oldfieldtype": "Select",
+   "options": "SUPP-",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "supplier_name", 
-   "fieldtype": "Data", 
-   "in_list_view": 1, 
-   "label": "Supplier Name", 
-   "no_copy": 1, 
-   "oldfieldname": "supplier_name", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
+   "fieldname": "supplier_name",
+   "fieldtype": "Data",
+   "in_list_view": 1,
+   "label": "Supplier Name",
+   "no_copy": 1,
+   "oldfieldname": "supplier_name",
+   "oldfieldtype": "Data",
+   "permlevel": 0,
    "reqd": 1
-  }, 
+  },
   {
-   "fieldname": "column_break0", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0, 
+   "fieldname": "column_break0",
+   "fieldtype": "Column Break",
+   "permlevel": 0,
    "width": "50%"
-  }, 
+  },
   {
-   "fieldname": "supplier_type", 
-   "fieldtype": "Link", 
-   "in_list_view": 1, 
-   "label": "Supplier Type", 
-   "oldfieldname": "supplier_type", 
-   "oldfieldtype": "Link", 
-   "options": "Supplier Type", 
-   "permlevel": 0, 
+   "fieldname": "supplier_type",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "label": "Supplier Type",
+   "oldfieldname": "supplier_type",
+   "oldfieldtype": "Link",
+   "options": "Supplier Type",
+   "permlevel": 0,
    "reqd": 1
-  }, 
+  },
   {
-   "depends_on": "eval:!doc.__islocal", 
-   "fieldname": "address_contacts", 
-   "fieldtype": "Section Break", 
-   "label": "Address & Contacts", 
-   "oldfieldtype": "Column Break", 
-   "options": "icon-map-marker", 
+   "depends_on": "eval:!doc.__islocal",
+   "fieldname": "address_contacts",
+   "fieldtype": "Section Break",
+   "label": "Address & Contacts",
+   "oldfieldtype": "Column Break",
+   "options": "icon-map-marker",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "address_html", 
-   "fieldtype": "HTML", 
-   "label": "Address HTML", 
-   "permlevel": 0, 
+   "fieldname": "address_html",
+   "fieldtype": "HTML",
+   "label": "Address HTML",
+   "permlevel": 0,
    "read_only": 1
-  }, 
+  },
   {
-   "fieldname": "column_break1", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0, 
+   "fieldname": "column_break1",
+   "fieldtype": "Column Break",
+   "permlevel": 0,
    "width": "50%"
-  }, 
+  },
   {
-   "fieldname": "contact_html", 
-   "fieldtype": "HTML", 
-   "label": "Contact HTML", 
-   "permlevel": 0, 
+   "fieldname": "contact_html",
+   "fieldtype": "HTML",
+   "label": "Contact HTML",
+   "permlevel": 0,
    "read_only": 1
-  }, 
+  },
   {
-   "depends_on": "eval:!doc.__islocal", 
-   "fieldname": "communication_history", 
-   "fieldtype": "Section Break", 
-   "label": "Communication History", 
-   "options": "icon-comments", 
-   "permlevel": 0, 
-   "print_hide": 1
-  }, 
-  {
-   "fieldname": "communication_html", 
-   "fieldtype": "HTML", 
-   "label": "Communication HTML", 
-   "permlevel": 0, 
-   "print_hide": 1
-  }, 
-  {
-   "fieldname": "more_info", 
-   "fieldtype": "Section Break", 
-   "label": "More Info", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-file-text", 
+   "fieldname": "more_info",
+   "fieldtype": "Section Break",
+   "label": "More Info",
+   "oldfieldtype": "Section Break",
+   "options": "icon-file-text",
    "permlevel": 0
-  }, 
+  },
   {
-   "description": "Enter the company name under which Account Head will be created for this Supplier", 
-   "fieldname": "company", 
-   "fieldtype": "Link", 
-   "in_filter": 1, 
-   "label": "Company", 
-   "oldfieldname": "company", 
-   "oldfieldtype": "Link", 
-   "options": "Company", 
-   "permlevel": 0, 
-   "reqd": 1, 
+   "description": "Enter the company name under which Account Head will be created for this Supplier",
+   "fieldname": "company",
+   "fieldtype": "Link",
+   "in_filter": 1,
+   "label": "Company",
+   "oldfieldname": "company",
+   "oldfieldtype": "Link",
+   "options": "Company",
+   "permlevel": 0,
+   "reqd": 1,
    "search_index": 0
-  }, 
+  },
   {
-   "fieldname": "default_currency", 
-   "fieldtype": "Link", 
-   "ignore_user_permissions": 1, 
-   "label": "Default Currency", 
-   "no_copy": 1, 
-   "options": "Currency", 
+   "fieldname": "default_currency",
+   "fieldtype": "Link",
+   "ignore_user_permissions": 1,
+   "label": "Default Currency",
+   "no_copy": 1,
+   "options": "Currency",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "default_price_list", 
-   "fieldtype": "Link", 
-   "ignore_user_permissions": 1, 
-   "label": "Price List", 
-   "options": "Price List", 
+   "fieldname": "default_price_list",
+   "fieldtype": "Link",
+   "ignore_user_permissions": 1,
+   "label": "Price List",
+   "options": "Price List",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "default_taxes_and_charges", 
-   "fieldtype": "Link", 
-   "ignore_user_permissions": 1, 
-   "label": "Taxes and Charges", 
-   "options": "Purchase Taxes and Charges Master", 
+   "fieldname": "default_taxes_and_charges",
+   "fieldtype": "Link",
+   "ignore_user_permissions": 1,
+   "label": "Taxes and Charges",
+   "options": "Purchase Taxes and Charges Master",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "credit_days", 
-   "fieldtype": "Int", 
-   "label": "Credit Days", 
+   "fieldname": "credit_days",
+   "fieldtype": "Int",
+   "label": "Credit Days",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "column_break2", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0, 
+   "fieldname": "column_break2",
+   "fieldtype": "Column Break",
+   "permlevel": 0,
    "width": "50%"
-  }, 
+  },
   {
-   "fieldname": "website", 
-   "fieldtype": "Data", 
-   "label": "Website", 
-   "oldfieldname": "website", 
-   "oldfieldtype": "Data", 
+   "fieldname": "website",
+   "fieldtype": "Data",
+   "label": "Website",
+   "oldfieldname": "website",
+   "oldfieldtype": "Data",
    "permlevel": 0
-  }, 
+  },
   {
-   "description": "Statutory info and other general information about your Supplier", 
-   "fieldname": "supplier_details", 
-   "fieldtype": "Text", 
-   "label": "Supplier Details", 
-   "oldfieldname": "supplier_details", 
-   "oldfieldtype": "Code", 
+   "description": "Statutory info and other general information about your Supplier",
+   "fieldname": "supplier_details",
+   "fieldtype": "Text",
+   "label": "Supplier Details",
+   "oldfieldname": "supplier_details",
+   "oldfieldtype": "Code",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "communications", 
-   "fieldtype": "Table", 
-   "hidden": 1, 
-   "label": "Communications", 
-   "options": "Communication", 
-   "permlevel": 0, 
+   "fieldname": "communications",
+   "fieldtype": "Table",
+   "hidden": 1,
+   "label": "Communications",
+   "options": "Communication",
+   "permlevel": 0,
    "print_hide": 1
   }
- ], 
- "icon": "icon-user", 
- "idx": 1, 
- "modified": "2014-09-10 17:53:09.286715", 
- "modified_by": "Administrator", 
- "module": "Buying", 
- "name": "Supplier", 
- "owner": "Administrator", 
+ ],
+ "icon": "icon-user",
+ "idx": 1,
+ "modified": "2014-09-12 12:26:37.606976",
+ "modified_by": "Administrator",
+ "module": "Buying",
+ "name": "Supplier",
+ "owner": "Administrator",
  "permissions": [
   {
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
    "role": "Purchase User"
-  }, 
+  },
   {
-   "amend": 0, 
-   "create": 0, 
-   "delete": 0, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Purchase Manager", 
-   "submit": 0, 
+   "amend": 0,
+   "create": 0,
+   "delete": 0,
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Purchase Manager",
+   "submit": 0,
    "write": 0
-  }, 
+  },
   {
-   "amend": 0, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Purchase Master Manager", 
-   "submit": 0, 
+   "amend": 0,
+   "create": 1,
+   "delete": 1,
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Purchase Master Manager",
+   "submit": 0,
    "write": 1
-  }, 
+  },
   {
-   "apply_user_permissions": 1, 
-   "permlevel": 0, 
-   "read": 1, 
+   "apply_user_permissions": 1,
+   "permlevel": 0,
+   "read": 1,
    "role": "Material User"
-  }, 
+  },
   {
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
    "role": "Material Manager"
-  }, 
+  },
   {
-   "apply_user_permissions": 1, 
-   "permlevel": 0, 
-   "read": 1, 
+   "apply_user_permissions": 1,
+   "permlevel": 0,
+   "read": 1,
    "role": "Accounts User"
-  }, 
+  },
   {
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
    "role": "Accounts Manager"
   }
- ], 
- "search_fields": "supplier_name,supplier_type", 
+ ],
+ "search_fields": "supplier_name,supplier_type",
  "title_field": "supplier_name"
-}
\ No newline at end of file
+}
diff --git a/erpnext/buying/doctype/supplier/supplier.py b/erpnext/buying/doctype/supplier/supplier.py
index 240762e..baf8ce5 100644
--- a/erpnext/buying/doctype/supplier/supplier.py
+++ b/erpnext/buying/doctype/supplier/supplier.py
@@ -13,6 +13,8 @@
 from erpnext.utilities.transaction_base import TransactionBase
 
 class Supplier(TransactionBase):
+	def get_feed(self):
+		return self.supplier_name
 
 	def autoname(self):
 		supp_master_name = frappe.defaults.get_global_default('supp_master_name')
diff --git a/erpnext/config/desktop.py b/erpnext/config/desktop.py
index 9f40ef3..34f1599 100644
--- a/erpnext/config/desktop.py
+++ b/erpnext/config/desktop.py
@@ -7,13 +7,6 @@
 			"icon": "icon-money",
 			"type": "module"
 		},
-		"Activity": {
-			"color": "#e67e22",
-			"icon": "icon-play",
-			"label": _("Activity"),
-			"link": "activity",
-			"type": "page"
-		},
 		"Buying": {
 			"color": "#c0392b",
 			"icon": "icon-shopping-cart",
@@ -30,14 +23,6 @@
 			"icon": "icon-cogs",
 			"type": "module"
 		},
-		"Notes": {
-			"color": "#95a5a6",
-			"doctype": "Note",
-			"icon": "icon-file-alt",
-			"label": _("Notes"),
-			"link": "List/Note",
-			"type": "list"
-		},
 		"POS": {
 			"color": "#589494",
 			"icon": "icon-th",
diff --git a/erpnext/config/hr.py b/erpnext/config/hr.py
index 575de69..22f17e7 100644
--- a/erpnext/config/hr.py
+++ b/erpnext/config/hr.py
@@ -155,7 +155,7 @@
 				},
 				{
 					"type": "doctype",
-					"name": "Jobs Email Settings",
+					"name": "Email Account",
 					"description": _("Setup incoming server for jobs email id. (e.g. jobs@example.com)")
 				},
 			]
diff --git a/erpnext/config/selling.py b/erpnext/config/selling.py
index 1e5acad..e4d17bb 100644
--- a/erpnext/config/selling.py
+++ b/erpnext/config/selling.py
@@ -158,7 +158,7 @@
 				},
 				{
 					"type": "doctype",
-					"name": "Sales Email Settings",
+					"name": "Email Account",
 					"description": _("Setup incoming server for sales email id. (e.g. sales@example.com)")
 				},
 				{
diff --git a/erpnext/config/setup.py b/erpnext/config/setup.py
index 8db9ef2..f3c0cec 100644
--- a/erpnext/config/setup.py
+++ b/erpnext/config/setup.py
@@ -1,5 +1,5 @@
 from frappe import _
-from frappe.widgets.moduleview import add_setup_section
+from frappe.desk.moduleview import add_setup_section
 
 def get_data():
 	data = [
@@ -75,21 +75,6 @@
 				},
 				{
 					"type": "doctype",
-					"name": "Support Email Settings",
-					"description": _("Setup incoming server for support email id. (e.g. support@example.com)")
-				},
-				{
-					"type": "doctype",
-					"name": "Sales Email Settings",
-					"description": _("Setup incoming server for sales email id. (e.g. sales@example.com)")
-				},
-				{
-					"type": "doctype",
-					"name": "Jobs Email Settings",
-					"description": _("Setup incoming server for jobs email id. (e.g. jobs@example.com)")
-				},
-				{
-					"type": "doctype",
 					"name": "SMS Settings",
 					"description": _("Setup SMS gateway settings")
 				},
diff --git a/erpnext/config/support.py b/erpnext/config/support.py
index 97807a3..7e243b2 100644
--- a/erpnext/config/support.py
+++ b/erpnext/config/support.py
@@ -49,7 +49,7 @@
 			"items": [
 				{
 					"type": "doctype",
-					"name": "Support Email Settings",
+					"name": "Email Account",
 					"description": _("Setup incoming server for support email id. (e.g. support@example.com)")
 				},
 			]
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 7fa81c9..0d189c7 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -146,7 +146,6 @@
 			self.currency = company_currency
 			self.conversion_rate = 1.0
 		else:
-			from erpnext.setup.doctype.currency.currency import validate_conversion_rate
 			validate_conversion_rate(self.currency, self.conversion_rate,
 				self.meta.get_label("conversion_rate"), self.company)
 
@@ -500,3 +499,12 @@
 		taxes_and_charges.append(tax)
 
 	return taxes_and_charges
+
+def validate_conversion_rate(currency, conversion_rate, conversion_rate_label, company):
+	"""common validation for currency and price list currency"""
+
+	company_currency = frappe.db.get_value("Company", company, "default_currency")
+
+	if not conversion_rate:
+		throw(_("{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}.").format(
+			conversion_rate_label, currency, company_currency))
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 5f418c4..12d183c 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -18,6 +18,10 @@
 				"other_charges": "templates/print_formats/includes/taxes.html",
 			}
 
+	def get_feed(self):
+		return _("From {0} | {1} {2}").format(self.supplier_name, self.currency,
+			self.grand_total_import)
+
 	def validate(self):
 		super(BuyingController, self).validate()
 		if getattr(self, "supplier", None) and not self.supplier_name:
diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py
index d555532..cbbd82c 100644
--- a/erpnext/controllers/queries.py
+++ b/erpnext/controllers/queries.py
@@ -3,7 +3,7 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.widgets.reportview import get_match_cond
+from frappe.desk.reportview import get_match_cond
 from frappe.model.db_query import DatabaseQuery
 
 def get_filters_cond(doctype, filters, conditions):
@@ -276,7 +276,7 @@
 	if searchfield and txt:
 		filter_list.append([doctype, searchfield, "like", "%%%s%%" % txt])
 
-	return frappe.widgets.reportview.execute("Account", filters = filter_list,
+	return frappe.desk.reportview.execute("Account", filters = filter_list,
 		fields = ["name", "parent_account"],
 		limit_start=start, limit_page_length=page_len, as_list=True)
 
diff --git a/erpnext/controllers/recurring_document.py b/erpnext/controllers/recurring_document.py
index bdf8b29..3395d0c 100644
--- a/erpnext/controllers/recurring_document.py
+++ b/erpnext/controllers/recurring_document.py
@@ -134,7 +134,7 @@
 
 def assign_task_to_owner(doc, doctype, msg, users):
 	for d in users:
-		from frappe.widgets.form import assign_to
+		from frappe.desk.form import assign_to
 		args = {
 			'assign_to' 	:	d,
 			'doctype'		:	doctype,
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index 86d8837..9e237e1 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -18,6 +18,10 @@
 				"other_charges": "templates/print_formats/includes/taxes.html",
 			}
 
+	def get_feed(self):
+		return _("To {0} | {1} {2}").format(self.customer_name, self.currency,
+			self.grand_total_export)
+
 	def onload(self):
 		if self.doctype in ("Sales Order", "Delivery Note", "Sales Invoice"):
 			for item in self.get(self.fname):
@@ -29,13 +33,6 @@
 		self.validate_max_discount()
 		check_active_sales_items(self)
 
-	def get_sender(self, comm):
-		sender = None
-		if cint(frappe.db.get_value('Sales Email Settings', None, 'extract_emails')):
-			sender = frappe.db.get_value('Sales Email Settings', None, 'email_id')
-
-		return sender or comm.sender or frappe.session.user
-
 	def set_missing_values(self, for_validate=False):
 		super(SellingController, self).set_missing_values(for_validate)
 
diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index 1188be5..9825b04 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -8,37 +8,23 @@
 from frappe.model.document import Document
 
 status_map = {
-	"Contact": [
-		["Replied", "communication_sent"],
-		["Open", "communication_received"]
-	],
-	"Job Applicant": [
-		["Replied", "communication_sent"],
-		["Open", "communication_received"]
-	],
 	"Lead": [
-		["Replied", "communication_sent"],
 		["Converted", "has_customer"],
 		["Opportunity", "has_opportunity"],
-		["Open", "communication_received"],
 	],
 	"Opportunity": [
 		["Draft", None],
 		["Submitted", "eval:self.docstatus==1"],
 		["Lost", "eval:self.status=='Lost'"],
 		["Quotation", "has_quotation"],
-		["Replied", "communication_sent"],
 		["Cancelled", "eval:self.docstatus==2"],
-		["Open", "communication_received"],
 	],
 	"Quotation": [
 		["Draft", None],
 		["Submitted", "eval:self.docstatus==1"],
 		["Lost", "eval:self.status=='Lost'"],
 		["Ordered", "has_sales_order"],
-		["Replied", "communication_sent"],
 		["Cancelled", "eval:self.docstatus==2"],
-		["Open", "communication_received"],
 	],
 	"Sales Order": [
 		["Draft", None],
@@ -46,10 +32,6 @@
 		["Stopped", "eval:self.status=='Stopped'"],
 		["Cancelled", "eval:self.docstatus==2"],
 	],
-	"Support Ticket": [
-		["Replied", "communication_sent"],
-		["Open", "communication_received"]
-	],
 }
 
 class StatusUpdater(Document):
@@ -90,25 +72,6 @@
 			if update:
 				frappe.db.set_value(self.doctype, self.name, "status", self.status)
 
-	def on_communication(self):
-		if not self.get("communications"): return
-		self.communication_set = True
-		self.get("communications").sort(key=lambda d: d.creation)
-		self.set_status(update=True)
-		del self.communication_set
-
-	def communication_received(self):
-		if getattr(self, "communication_set", False):
-			last_comm = self.get("communications")
-			if last_comm:
-				return last_comm[-1].sent_or_received == "Received"
-
-	def communication_sent(self):
-		if getattr(self, "communication_set", False):
-			last_comm = self.get("communications")
-			if last_comm:
-				return last_comm[-1].sent_or_received == "Sent"
-
 	def validate_qty(self):
 		"""
 			Validates qty at row level
diff --git a/erpnext/home/__init__.py b/erpnext/home/__init__.py
deleted file mode 100644
index 26a11a2..0000000
--- a/erpnext/home/__init__.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# 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/>.
-
-from __future__ import unicode_literals
-import frappe
-from frappe import msgprint
-
-feed_dict = {
-	# Project
-	'Project': ['[%(status)s]', '#000080'],
-	'Task': ['[%(status)s] %(subject)s', '#000080'],
-
-	# Sales
-	'Lead': ['%(lead_name)s', '#000080'],
-	'Quotation': ['[%(status)s] To %(customer_name)s worth %(currency)s %(grand_total_export)s', '#4169E1'],
-	'Sales Order': ['[%(status)s] To %(customer_name)s worth %(currency)s %(grand_total_export)s', '#4169E1'],
-
-	# Purchase
-	'Supplier': ['%(supplier_name)s, %(supplier_type)s', '#6495ED'],
-	'Purchase Order': ['[%(status)s] %(name)s To %(supplier_name)s for %(currency)s  %(grand_total_import)s', '#4169E1'],
-
-	# Stock
-	'Delivery Note': ['[%(status)s] To %(customer_name)s', '#4169E1'],
-	'Purchase Receipt': ['[%(status)s] From %(supplier)s', '#4169E1'],
-
-	# Accounts
-	'Journal Voucher': ['[%(voucher_type)s] %(name)s', '#4169E1'],
-	'Purchase Invoice': ['To %(supplier_name)s for %(currency)s %(grand_total_import)s', '#4169E1'],
-	'Sales Invoice': ['To %(customer_name)s for %(currency)s %(grand_total_export)s', '#4169E1'],
-
-	# HR
-	'Expense Claim': ['[%(approval_status)s] %(name)s by %(employee_name)s', '#4169E1'],
-	'Salary Slip': ['%(employee_name)s for %(month)s %(fiscal_year)s', '#4169E1'],
-	'Leave Transaction': ['%(leave_type)s for %(employee)s', '#4169E1'],
-
-	# Support
-	'Customer Issue': ['[%(status)s] %(description)s by %(customer_name)s', '#000080'],
-	'Maintenance Visit': ['To %(customer_name)s', '#4169E1'],
-	'Support Ticket': ["[%(status)s] %(subject)s", '#000080'],
-
-	# Website
-	'Web Page': ['%(title)s', '#000080'],
-	'Blog': ['%(title)s', '#000080']
-}
-
-def make_feed(feedtype, doctype, name, owner, subject, color):
-	"makes a new Feed record"
-	#msgprint(subject)
-	from frappe.utils import get_fullname
-
-	if feedtype in ('Login', 'Comment', 'Assignment'):
-		# delete old login, comment feed
-		frappe.db.sql("""delete from tabFeed where
-			datediff(curdate(), creation) > 7 and doc_type in ('Comment', 'Login', 'Assignment')""")
-	else:
-		# one feed per item
-		frappe.db.sql("""delete from tabFeed
-			where doc_type=%s and doc_name=%s
-			and ifnull(feed_type,'') != 'Comment'""", (doctype, name))
-
-	f = frappe.new_doc('Feed')
-	f.owner = owner
-	f.feed_type = feedtype
-	f.doc_type = doctype
-	f.doc_name = name
-	f.subject = subject
-	f.color = color
-	f.full_name = get_fullname(owner)
-	f.save(ignore_permissions=True)
-
-def update_feed(doc, method=None):
-	"adds a new feed"
-	if frappe.flags.in_patch:
-		return
-
-	if method in ['on_update', 'on_submit']:
-		subject, color = feed_dict.get(doc.doctype, [None, None])
-		if subject:
-			make_feed('', doc.doctype, doc.name, doc.owner, subject % doc.as_dict(), color)
-
-def make_comment_feed(doc, method):
-	"""add comment to feed"""
-	comment = doc.comment
-	if len(comment) > 240:
-		comment = comment[:240] + "..."
-
-	make_feed('Comment', doc.comment_doctype, doc.comment_docname, doc.comment_by,
-		'<i>"' + comment + '"</i>', '#6B24B3')
-
diff --git a/erpnext/home/doctype/__init__.py b/erpnext/home/doctype/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/home/doctype/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/home/doctype/feed/README.md b/erpnext/home/doctype/feed/README.md
deleted file mode 100644
index 085e575..0000000
--- a/erpnext/home/doctype/feed/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Activity Feed.
\ No newline at end of file
diff --git a/erpnext/home/doctype/feed/__init__.py b/erpnext/home/doctype/feed/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/home/doctype/feed/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/home/doctype/feed/feed.json b/erpnext/home/doctype/feed/feed.json
deleted file mode 100644
index bef8aac..0000000
--- a/erpnext/home/doctype/feed/feed.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "autoname": "hash",
- "creation": "2012-07-03 13:29:42",
- "docstatus": 0,
- "doctype": "DocType",
- "fields": [
-  {
-   "fieldname": "feed_type",
-   "fieldtype": "Select",
-   "in_list_view": 1,
-   "label": "Feed Type",
-   "options": "\nComment\nLogin",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "doc_type",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Doc Type",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "doc_name",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Doc Name",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "subject",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Subject",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "color",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Color",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "full_name",
-   "fieldtype": "Data",
-   "label": "Full Name",
-   "permlevel": 0
-  }
- ],
- "icon": "icon-rss",
- "idx": 1,
- "modified": "2014-06-18 03:49:10.882587",
- "modified_by": "Administrator",
- "module": "Home",
- "name": "Feed",
- "owner": "Administrator",
- "permissions": [
-  {
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "System Manager"
-  },
-  {
-   "apply_user_permissions": 1,
-   "permlevel": 0,
-   "read": 1,
-   "role": "All"
-  }
- ]
-}
diff --git a/erpnext/home/doctype/feed/feed.py b/erpnext/home/doctype/feed/feed.py
deleted file mode 100644
index df8ccb2..0000000
--- a/erpnext/home/doctype/feed/feed.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-import frappe.defaults
-import frappe.permissions
-from frappe.model.document import Document
-
-class Feed(Document):
-	pass
-
-def on_doctype_update():
-	if not frappe.db.sql("""show index from `tabFeed`
-		where Key_name="feed_doctype_docname_index" """):
-		frappe.db.commit()
-		frappe.db.sql("""alter table `tabFeed`
-			add index feed_doctype_docname_index(doc_type, doc_name)""")
-
-def get_permission_query_conditions(user):
-	if not user: user = frappe.session.user
-
-	if not frappe.permissions.apply_user_permissions("Feed", "read", user):
-		return ""
-
-	user_permissions = frappe.defaults.get_user_permissions(user)
-	can_read = frappe.get_user(user).get_can_read()
-
-	can_read_doctypes = ['"{}"'.format(doctype) for doctype in
-		list(set(can_read) - set(user_permissions.keys()))]
-
-	if not can_read_doctypes:
-		return ""
-
-	conditions = ["tabFeed.doc_type in ({})".format(", ".join(can_read_doctypes))]
-
-	if user_permissions:
-		can_read_docs = []
-		for doctype, names in user_permissions.items():
-			for n in names:
-				can_read_docs.append('"{}|{}"'.format(doctype, n))
-
-		if can_read_docs:
-			conditions.append("concat_ws('|', tabFeed.doc_type, tabFeed.doc_name) in ({})".format(
-				", ".join(can_read_docs)))
-
-	return "(" + " or ".join(conditions) + ")"
-
-def has_permission(doc, user):
-	return frappe.has_permission(doc.doc_type, "read", doc.doc_name, user=user)
diff --git a/erpnext/home/page/__init__.py b/erpnext/home/page/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/home/page/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/home/page/activity/README.md b/erpnext/home/page/activity/README.md
deleted file mode 100644
index 59e0352..0000000
--- a/erpnext/home/page/activity/README.md
+++ /dev/null
@@ -1 +0,0 @@
-List of latest activities based on Feed.
\ No newline at end of file
diff --git a/erpnext/home/page/activity/__init__.py b/erpnext/home/page/activity/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/home/page/activity/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/home/page/activity/activity.css b/erpnext/home/page/activity/activity.css
deleted file mode 100644
index 28b1b40..0000000
--- a/erpnext/home/page/activity/activity.css
+++ /dev/null
@@ -1,23 +0,0 @@
-#page-activity .label {
-	display: inline-block;
-	width: 100px;
-	margin-right: 7px;
-}
-
-#page-activity .label-info {
-	cursor: pointer;
-}
-
-#page-activity .user-info {
-	float: right;
-	color: #777;
-	font-size: 10px;
-}
-
-#page-activity .date-sep {
-	margin: 0px -15px 11px -15px;
-	padding: 5px 0px;
-	border-bottom: 2px solid #aaa;
-	color: #555;
-	font-size: 10px;
-}
\ No newline at end of file
diff --git a/erpnext/home/page/activity/activity.js b/erpnext/home/page/activity/activity.js
deleted file mode 100644
index f50f6c8..0000000
--- a/erpnext/home/page/activity/activity.js
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
-
-frappe.pages['activity'].onload = function(wrapper) {
-	frappe.ui.make_app_page({
-		parent: wrapper,
-		title: __("Activity"),
-		single_column: true
-	})
-	wrapper.appframe.add_module_icon("Activity");
-
-	var list = new frappe.ui.Listing({
-		hide_refresh: true,
-		appframe: wrapper.appframe,
-		method: 'erpnext.home.page.activity.activity.get_feed',
-		parent: $(wrapper).find(".layout-main"),
-		render_row: function(row, data) {
-			new erpnext.ActivityFeed(row, data);
-		}
-	});
-	list.run();
-
-	wrapper.appframe.set_title_right(__("Refresh"), function() { list.run(); });
-
-	// Build Report Button
-	if(frappe.boot.user.can_get_report.indexOf("Feed")!=-1) {
-		wrapper.appframe.add_button(__('Build Report'), function() {
-			frappe.set_route('Report', "Feed");
-		}, 'icon-th');
-	}
-}
-
-erpnext.last_feed_date = false;
-erpnext.ActivityFeed = Class.extend({
-	init: function(row, data) {
-		this.scrub_data(data);
-		this.add_date_separator(row, data);
-		if(!data.add_class) data.add_class = "label-default";
-		$(row).append(repl('<div style="margin: 0px">\
-			<span class="avatar avatar-small"><img src="%(imgsrc)s" /></span> \
-			<span %(onclick)s class="label %(add_class)s">%(feed_type)s</span>\
-			%(link)s %(subject)s <span class="user-info">%(by)s</span></div>', data));
-	},
-	scrub_data: function(data) {
-		data.by = frappe.user_info(data.owner).fullname;
-		data.imgsrc = frappe.utils.get_file_link(frappe.user_info(data.owner).image);
-
-		// feedtype
-		if(!data.feed_type) {
-			data.feed_type = __(data.doc_type);
-			data.add_class = "label-info";
-			data.onclick = repl('onclick="window.location.href=\'#!List/%(feed_type)s\';"', data)
-		}
-
-		// color for comment
-		if(data.feed_type=='Comment') {
-			data.add_class = "label-danger";
-		}
-
-		if(data.feed_type=='Assignment') {
-			data.add_class = "label-warning";
-		}
-
-		// link
-		if(data.doc_name && data.feed_type!='Login') {
-			data.link = frappe.format(data.doc_name, {"fieldtype":"Link", "options":data.doc_type})
-		} else {
-			data.link = "";
-		}
-	},
-	add_date_separator: function(row, data) {
-		var date = dateutil.str_to_obj(data.modified);
-		var last = erpnext.last_feed_date;
-
-		if((last && dateutil.obj_to_str(last) != dateutil.obj_to_str(date)) || (!last)) {
-			var diff = dateutil.get_day_diff(dateutil.get_today(), dateutil.obj_to_str(date));
-			if(diff < 1) {
-				pdate = 'Today';
-			} else if(diff < 2) {
-				pdate = 'Yesterday';
-			} else {
-				pdate = dateutil.global_date_format(date);
-			}
-			$(row).html(repl('<div class="date-sep" style="padding-left: 15px;">%(date)s</div>', {date: pdate}));
-		}
-		erpnext.last_feed_date = date;
-	}
-})
diff --git a/erpnext/home/page/activity/activity.json b/erpnext/home/page/activity/activity.json
deleted file mode 100644
index a65057e..0000000
--- a/erpnext/home/page/activity/activity.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "creation": "2013-04-09 11:45:31.000000", 
- "docstatus": 0, 
- "doctype": "Page", 
- "icon": "icon-play", 
- "idx": 1, 
- "modified": "2013-07-11 14:40:20.000000", 
- "modified_by": "Administrator", 
- "module": "Home", 
- "name": "activity", 
- "owner": "Administrator", 
- "page_name": "activity", 
- "roles": [
-  {
-   "role": "All"
-  }
- ], 
- "standard": "Yes", 
- "title": "Activity"
-}
\ No newline at end of file
diff --git a/erpnext/home/page/activity/activity.py b/erpnext/home/page/activity/activity.py
deleted file mode 100644
index f8e1213..0000000
--- a/erpnext/home/page/activity/activity.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe.utils import cint
-
-@frappe.whitelist()
-def get_feed(limit_start, limit_page_length):
-	"""get feed"""
-	return frappe.get_list("Feed", fields=["name", "feed_type", "doc_type", "subject", "owner", "modified"],
-		limit_start = limit_start, limit_page_length = limit_page_length)
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 166d830..f9ac629 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -4,7 +4,7 @@
 app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations"
 app_icon = "icon-th"
 app_color = "#e74c3c"
-app_version = "4.3.0"
+app_version = "5.0.0-alpha"
 
 error_report_email = "support@erpnext.com"
 
@@ -20,32 +20,15 @@
 dump_report_map = "erpnext.startup.report_data_map.data_map"
 update_website_context = "erpnext.startup.webutils.update_website_context"
 
-on_session_creation = "erpnext.startup.event_handlers.on_session_creation"
 before_tests = "erpnext.setup.utils.before_tests"
 
 website_generators = ["Item Group", "Item", "Sales Partner"]
 
 standard_queries = "Customer:erpnext.selling.doctype.customer.customer.get_customer_list"
 
-permission_query_conditions = {
-		"Feed": "erpnext.home.doctype.feed.feed.get_permission_query_conditions",
-		"Note": "erpnext.utilities.doctype.note.note.get_permission_query_conditions"
-	}
-
-has_permission = {
-		"Feed": "erpnext.home.doctype.feed.feed.has_permission",
-		"Note": "erpnext.utilities.doctype.note.note.has_permission"
-	}
-
+communication_covert_to = ["Lead", "Support Ticket", "Job Application"]
 
 doc_events = {
-	"*": {
-		"on_update": "erpnext.home.update_feed",
-		"on_submit": "erpnext.home.update_feed"
-	},
-	"Comment": {
-		"on_update": "erpnext.home.make_comment_feed"
-	},
 	"Stock Entry": {
 		"on_submit": "erpnext.stock.doctype.material_request.material_request.update_completed_qty",
 		"on_cancel": "erpnext.stock.doctype.material_request.material_request.update_completed_qty"
@@ -57,11 +40,6 @@
 }
 
 scheduler_events = {
-	"all": [
-		"erpnext.support.doctype.support_ticket.get_support_mails.get_support_mails",
-		"erpnext.hr.doctype.job_applicant.get_job_applications.get_job_applications",
-		"erpnext.selling.doctype.lead.get_leads.get_leads"
-	],
 	"daily": [
 		"erpnext.controllers.recurring_document.create_recurring_documents",
 		"erpnext.stock.utils.reorder_item",
@@ -76,3 +54,6 @@
 	]
 }
 
+default_mail_footer = """<div style="padding: 7px; text-align: right; color: #888"><small>
+	<a style="color: #888" href="https://erpnext.com">Sent via ERPNext</a></div>"""
+
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/erpnext/hr/doctype/expense_claim/expense_claim.py
index 560ee02..4db9cbf 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.py
@@ -11,6 +11,10 @@
 class InvalidExpenseApproverError(frappe.ValidationError): pass
 
 class ExpenseClaim(Document):
+	def get_feed(self):
+		return _("{0}: From {0} for {1}").format(self.approval_status,
+			self.employee_name, self.total_claimed_amount)
+
 	def validate(self):
 		self.validate_fiscal_year()
 		self.validate_exp_details()
diff --git a/erpnext/hr/doctype/job_applicant/get_job_applications.py b/erpnext/hr/doctype/job_applicant/get_job_applications.py
deleted file mode 100644
index e4a8d70..0000000
--- a/erpnext/hr/doctype/job_applicant/get_job_applications.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe.utils import cstr, cint
-from frappe.utils.email_lib.receive import POP3Mailbox
-from frappe.core.doctype.communication.communication import _make
-
-class JobsMailbox(POP3Mailbox):	
-	def setup(self, args=None):
-		self.settings = args or frappe.get_doc("Jobs Email Settings", "Jobs Email Settings")
-		
-	def process_message(self, mail):
-		if mail.from_email == self.settings.email_id:
-			return
-			
-		name = frappe.db.get_value("Job Applicant", {"email_id": mail.from_email}, 
-			"name")
-		if name:
-			applicant = frappe.get_doc("Job Applicant", name)
-			if applicant.status!="Rejected":
-				applicant.status = "Open"
-			applicant.ignore_permissions = True
-			applicant.save()
-		else:
-			name = (mail.from_real_name and (mail.from_real_name + " - ") or "") \
-				+ mail.from_email
-			applicant = frappe.get_doc({
-				"creation": mail.date,
-				"doctype":"Job Applicant",
-				"applicant_name": name,
-				"email_id": mail.from_email,
-				"status": "Open"
-			})
-			applicant.ignore_permissions = True
-			applicant.ignore_mandatory = True
-			applicant.insert()
-		
-		mail.save_attachments_in_doc(applicant)
-				
-		_make(content=mail.content, sender=mail.from_email, subject=mail.subject or "No Subject",
-			doctype="Job Applicant", name=applicant.name, sent_or_received="Received")
-
-def get_job_applications():
-	if cint(frappe.db.get_value('Jobs Email Settings', None, 'extract_emails')):
-		JobsMailbox()
\ No newline at end of file
diff --git a/erpnext/hr/doctype/job_applicant/job_applicant.js b/erpnext/hr/doctype/job_applicant/job_applicant.js
index 762bd96..63b58db 100644
--- a/erpnext/hr/doctype/job_applicant/job_applicant.js
+++ b/erpnext/hr/doctype/job_applicant/job_applicant.js
@@ -3,16 +3,9 @@
 
 // For license information, please see license.txt
 
+// for communication
+cur_frm.email_field = "email_id";
 cur_frm.cscript = {
 	refresh: function(doc) {
-		cur_frm.cscript.make_listing(doc);
-	},
-	make_listing: function(doc) {
-		cur_frm.communication_view = new frappe.views.CommunicationList({
-			list: frappe.get_list("Communication", {"parent": doc.name, "parenttype": "Job Applicant"}),
-			parent: cur_frm.fields_dict['thread_html'].wrapper,
-			doc: doc,
-			recipients: doc.email_id
-		})
 	},
 }
diff --git a/erpnext/hr/doctype/job_applicant/job_applicant.py b/erpnext/hr/doctype/job_applicant/job_applicant.py
index 1f09c26..ddbf97f 100644
--- a/erpnext/hr/doctype/job_applicant/job_applicant.py
+++ b/erpnext/hr/doctype/job_applicant/job_applicant.py
@@ -5,13 +5,9 @@
 
 from __future__ import unicode_literals
 import frappe
-from erpnext.utilities.transaction_base import TransactionBase
+from frappe.model.document import Document
 from frappe.utils import extract_email_id
 
-class JobApplicant(TransactionBase):
-
-	def get_sender(self, comm):
-		return frappe.db.get_value('Jobs Email Settings',None,'email_id') or comm.sender or frappe.session.user
-
+class JobApplicant(Document):
 	def validate(self):
 		self.set_status()
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py
index 1751eb1..aacb7d4 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/erpnext/hr/doctype/leave_application/leave_application.py
@@ -17,6 +17,10 @@
 
 from frappe.model.document import Document
 class LeaveApplication(Document):
+	def get_feed(self):
+		return _("{0}: From {0} of type {1}").format(self.status,
+			self.employee_name, self.leave_type)
+
 	def validate(self):
 		if not getattr(self, "__islocal", None) and frappe.db.exists(self.doctype, self.name):
 			self.previous_doc = frappe.db.get_value(self.doctype, self.name, "*", as_dict=True)
@@ -212,7 +216,7 @@
 
 	def notify(self, args):
 		args = frappe._dict(args)
-		from frappe.core.page.messages.messages import post
+		from frappe.desk.page.messages.messages import post
 		post(**{"txt": args.message, "contact": args.message_to, "subject": args.subject,
 			"notify": cint(self.follow_via_email)})
 
@@ -249,7 +253,7 @@
 
 	employee, company = employee.name, employee.company
 
-	from frappe.widgets.reportview import build_match_conditions
+	from frappe.desk.reportview import build_match_conditions
 	match_conditions = build_match_conditions("Leave Application")
 
 	# show department leaves for employee
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py
index 7c905a6..f3ac652 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.py
@@ -185,12 +185,10 @@
 
 
 	def send_mail_funct(self):
-		from frappe.utils.email_lib import sendmail
-
 		receiver = frappe.db.get_value("Employee", self.employee, "company_email")
 		if receiver:
 			subj = 'Salary Slip - ' + cstr(self.month) +'/'+cstr(self.fiscal_year)
-			sendmail([receiver], subject=subj, msg = _("Please see attachment"),
+			frappe.sendmail([receiver], subject=subj, msg = _("Please see attachment"),
 				attachments=[{
 					"fname": self.name + ".pdf",
 					"fcontent": frappe.get_print_format(self.doctype, self.name, as_pdf = True)
diff --git a/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py b/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py
index 4b92848..f54b2e4 100644
--- a/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py
+++ b/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py
@@ -4,7 +4,7 @@
 from __future__ import unicode_literals
 import frappe
 from frappe import _
-from frappe.widgets.reportview import execute as runreport
+from frappe.desk.reportview import execute as runreport
 
 def execute(filters=None):
 	if not filters: filters = {}
diff --git a/erpnext/modules.txt b/erpnext/modules.txt
index 32547e9..68d095e 100644
--- a/erpnext/modules.txt
+++ b/erpnext/modules.txt
@@ -1,6 +1,5 @@
 Accounts
 Buying
-Home
 HR
 Manufacturing
 Projects
diff --git a/erpnext/patches/repair_tools/fix_naming_series_records_lost_by_reload.py b/erpnext/patches/repair_tools/fix_naming_series_records_lost_by_reload.py
index 981ffd0..36fa277 100644
--- a/erpnext/patches/repair_tools/fix_naming_series_records_lost_by_reload.py
+++ b/erpnext/patches/repair_tools/fix_naming_series_records_lost_by_reload.py
@@ -7,7 +7,7 @@
 import re
 from frappe.model.naming import make_autoname
 from frappe.utils import cint
-from frappe.utils.email_lib import sendmail_to_system_managers
+from frappe.email import sendmail_to_system_managers
 
 doctype_series_map = {
 	'Attendance': 'ATT-',
diff --git a/erpnext/patches/v4_0/create_custom_fields_for_india_specific_fields.py b/erpnext/patches/v4_0/create_custom_fields_for_india_specific_fields.py
index 9b07000..5bca5e6 100644
--- a/erpnext/patches/v4_0/create_custom_fields_for_india_specific_fields.py
+++ b/erpnext/patches/v4_0/create_custom_fields_for_india_specific_fields.py
@@ -3,7 +3,7 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.core.doctype.custom_field.custom_field import create_custom_field_if_values_exist
+from frappe.custom.doctype.custom_field.custom_field import create_custom_field_if_values_exist
 
 def execute():
 	frappe.reload_doc("stock", "doctype", "purchase_receipt")
diff --git a/erpnext/patches/v4_0/import_country_codes.py b/erpnext/patches/v4_0/import_country_codes.py
index 4d1177e..e2e9f9d 100644
--- a/erpnext/patches/v4_0/import_country_codes.py
+++ b/erpnext/patches/v4_0/import_country_codes.py
@@ -3,7 +3,7 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.country_info import get_all
+from frappe.geo.country_info import get_all
 from erpnext.setup.install import import_country_and_currency
 
 def execute():
diff --git a/erpnext/patches/v4_0/reset_permissions_for_masters.py b/erpnext/patches/v4_0/reset_permissions_for_masters.py
index d031bd0..30aa47a 100644
--- a/erpnext/patches/v4_0/reset_permissions_for_masters.py
+++ b/erpnext/patches/v4_0/reset_permissions_for_masters.py
@@ -10,9 +10,9 @@
 		"Comment", "Communication", "Company", "Contact Us Settings",
 		"Country", "Currency", "Currency Exchange", "Deduction Type", "Department",
 		"Designation", "Earning Type", "Event", "Feed", "File Data", "Fiscal Year",
-		"HR Settings", "Industry Type", "Jobs Email Settings", "Leave Type", "Letter Head",
+		"HR Settings", "Industry Type", "Leave Type", "Letter Head",
 		"Mode of Payment", "Module Def", "Naming Series", "POS Setting", "Print Heading",
-		"Report", "Role", "Sales Email Settings", "Selling Settings", "Stock Settings", "Supplier Type", "UOM"):
+		"Report", "Role", "Selling Settings", "Stock Settings", "Supplier Type", "UOM"):
 		try:
 			frappe.reset_perms(doctype)
 		except:
diff --git a/erpnext/patches/v4_0/set_naming_series_property_setter.py b/erpnext/patches/v4_0/set_naming_series_property_setter.py
index 7161492..ffbfc24 100644
--- a/erpnext/patches/v4_0/set_naming_series_property_setter.py
+++ b/erpnext/patches/v4_0/set_naming_series_property_setter.py
@@ -4,7 +4,7 @@
 from __future__ import unicode_literals
 
 import frappe
-from frappe.core.doctype.property_setter.property_setter import make_property_setter
+from frappe.custom.doctype.property_setter.property_setter import make_property_setter
 
 doctype_series_map = {
 	'Attendance': 'ATT-',
diff --git a/erpnext/patches/v4_0/split_email_settings.py b/erpnext/patches/v4_0/split_email_settings.py
index dd36eef..c04e1d5 100644
--- a/erpnext/patches/v4_0/split_email_settings.py
+++ b/erpnext/patches/v4_0/split_email_settings.py
@@ -5,6 +5,16 @@
 import frappe
 
 def execute():
+	print "WARNING!!!! Email Settings not migrated. Please setup your email again."
+
+	# this will happen if you are migrating very old accounts
+	# comment out this line below and remember to create new Email Accounts
+	# for incoming and outgoing mails
+	raise Exception
+
+	return
+
+
 	frappe.reload_doc("core", "doctype", "outgoing_email_settings")
 	frappe.reload_doc("support", "doctype", "support_email_settings")
 
@@ -12,7 +22,6 @@
 	map_outgoing_email_settings(email_settings)
 	map_support_email_settings(email_settings)
 
-	frappe.delete_doc("DocType", "Email Settings")
 
 def map_outgoing_email_settings(email_settings):
 	outgoing_email_settings = frappe.get_doc("Outgoing Email Settings")
diff --git a/erpnext/patches/v4_1/set_outgoing_email_footer.py b/erpnext/patches/v4_1/set_outgoing_email_footer.py
index d38f2c2..73d8d60 100644
--- a/erpnext/patches/v4_1/set_outgoing_email_footer.py
+++ b/erpnext/patches/v4_1/set_outgoing_email_footer.py
@@ -6,6 +6,7 @@
 from erpnext.setup.install import default_mail_footer
 
 def execute():
+	return
 	mail_footer = frappe.db.get_default('mail_footer') or ''
 	mail_footer += default_mail_footer
 	frappe.db.set_value("Outgoing Email Settings", "Outgoing Email Settings", "footer", mail_footer)
diff --git a/erpnext/patches/v4_2/add_currency_turkish_lira.py b/erpnext/patches/v4_2/add_currency_turkish_lira.py
index f547661..d768d58 100644
--- a/erpnext/patches/v4_2/add_currency_turkish_lira.py
+++ b/erpnext/patches/v4_2/add_currency_turkish_lira.py
@@ -3,7 +3,7 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.country_info import get_country_info
+from frappe.geo.country_info import get_country_info
 from erpnext.setup.install import add_country_and_currency
 
 def execute():
diff --git a/erpnext/utilities/doctype/note/__init__.py b/erpnext/patches/v4_4/__init__.py
similarity index 100%
rename from erpnext/utilities/doctype/note/__init__.py
rename to erpnext/patches/v4_4/__init__.py
diff --git a/erpnext/patches/v4_4/make_email_accounts.py b/erpnext/patches/v4_4/make_email_accounts.py
new file mode 100644
index 0000000..9e8538d
--- /dev/null
+++ b/erpnext/patches/v4_4/make_email_accounts.py
@@ -0,0 +1,73 @@
+import frappe
+
+def execute():
+	frappe.reload_doc("email", "doctype", "email_account")
+
+	# outgoing
+	outgoing = frappe.get_doc("Outgoing Email Settings")
+	account = frappe.new_doc("Email Account")
+	mapping = {
+		"email_id": "mail_login",
+		"password": "mail_password",
+		"footer": "footer",
+		"smtp_server": "mail_server",
+		"smtp_port": "mail_port",
+		"use_tls": "use_ssl"
+	}
+
+	for target_fieldname, source_fieldname in mapping.iteritems():
+		account.set(target_fieldname, outgoing.get(source_fieldname))
+
+	account.enable_outgoing = 1
+	account.enable_incoming = 0
+	account.is_global = 1
+
+	account.insert()
+
+	# support
+	support = frappe.get_doc("Support Email Settings")
+	account = frappe.new_doc("Email Account")
+	mapping = {
+		"enable_incoming": "sync_support_mails",
+		"email_id": "mail_login",
+		"password": "mail_password",
+		"pop3_server": "mail_server",
+		"use_ssl": "use_ssl",
+		"signature": "support_signature",
+		"enable_auto_reply": "send_autoreply",
+		"auto_reply_message": "support_autoreply"
+	}
+
+	for target_fieldname, source_fieldname in mapping.iteritems():
+		account.set(target_fieldname, support.get(source_fieldname))
+
+	account.enable_outgoing = 0
+	account.is_global = 1
+
+	account.insert()
+
+	# sales, jobs
+	for doctype in ("Sales Email Settings", "Jobs Email Settings"):
+		source = frappe.get_doc(doctype)
+		account = frappe.new_doc("Email Account")
+		mapping = {
+			"enable_incoming": "extract_emails",
+			"email_id": "username",
+			"password": "password",
+			"pop3_server": "host",
+			"use_ssl": "use_ssl",
+		}
+
+		for target_fieldname, source_fieldname in mapping.iteritems():
+			account.set(target_fieldname, source.get(source_fieldname))
+
+		account.enable_outgoing = 0
+		account.is_global = 1
+		account.append_to = "Lead" if doctype=="Sales Email Settings" else "Job Applicant"
+
+		account.insert()
+
+	for doctype in ("Outgoing Email Settings", "Support Email Settings",
+		"Sales Email Settings", "Jobs Email Settings"):
+		frappe.delete_doc("DocType", doctype)
+
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index 88e6e12..ce9b561 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -11,6 +11,8 @@
 from frappe.model.document import Document
 
 class Project(Document):
+	def get_feed(self):
+		return self.status
 
 	def get_gross_profit(self):
 		pft, per_pft =0, 0
@@ -70,4 +72,4 @@
 
 @frappe.whitelist()
 def get_cost_center_name(project_name):
-	return frappe.db.get_value("Project", project_name, "cost_center")
\ No newline at end of file
+	return frappe.db.get_value("Project", project_name, "cost_center")
diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py
index 8d63f12..fe1ce7f 100644
--- a/erpnext/projects/doctype/task/task.py
+++ b/erpnext/projects/doctype/task/task.py
@@ -11,6 +11,9 @@
 from frappe.model.document import Document
 
 class Task(Document):
+	def get_feed(self):
+		return '{0}: {1}'.format(_(self.status), self.subject)
+
 	def get_project_details(self):
 		return {
 			"project": self.project
@@ -47,7 +50,7 @@
 
 @frappe.whitelist()
 def get_events(start, end, filters=None):
-	from frappe.widgets.reportview import build_match_conditions
+	from frappe.desk.reportview import build_match_conditions
 	if not frappe.has_permission("Task"):
 		frappe.msgprint(_("No Permission"), raise_exception=1)
 
diff --git a/erpnext/projects/doctype/time_log/time_log.py b/erpnext/projects/doctype/time_log/time_log.py
index eb8afc7..6678392 100644
--- a/erpnext/projects/doctype/time_log/time_log.py
+++ b/erpnext/projects/doctype/time_log/time_log.py
@@ -61,7 +61,7 @@
 
 @frappe.whitelist()
 def get_events(start, end):
-	from frappe.widgets.reportview import build_match_conditions
+	from frappe.desk.reportview import build_match_conditions
 	if not frappe.has_permission("Time Log"):
 		frappe.msgprint(_("No Permission"), raise_exception=1)
 
diff --git a/erpnext/projects/report/daily_time_log_summary/daily_time_log_summary.py b/erpnext/projects/report/daily_time_log_summary/daily_time_log_summary.py
index b8f746b..fecdc2f 100644
--- a/erpnext/projects/report/daily_time_log_summary/daily_time_log_summary.py
+++ b/erpnext/projects/report/daily_time_log_summary/daily_time_log_summary.py
@@ -75,7 +75,7 @@
 	if filters.get("to_date"):
 		conditions += " and to_time <= timestamp(%(to_date)s, %(to_time)s)"
 
-	from frappe.widgets.reportview import build_match_conditions
+	from frappe.desk.reportview import build_match_conditions
 	match_conditions = build_match_conditions("Time Log")
 	if match_conditions:
 		conditions += " and %s" % match_conditions
diff --git a/erpnext/projects/utils.py b/erpnext/projects/utils.py
index 6fee9b3..b36519b 100644
--- a/erpnext/projects/utils.py
+++ b/erpnext/projects/utils.py
@@ -12,7 +12,7 @@
 
 @frappe.whitelist()
 def query_task(doctype, txt, searchfield, start, page_len, filters):
-	from frappe.widgets.reportview import build_match_conditions
+	from frappe.desk.reportview import build_match_conditions
 	
 	search_string = "%%%s%%" % txt
 	order_by_string = "%s%%" % txt
diff --git a/erpnext/selling/doctype/customer/customer.js b/erpnext/selling/doctype/customer/customer.js
index e5d2ca9..9829ed2 100644
--- a/erpnext/selling/doctype/customer/customer.js
+++ b/erpnext/selling/doctype/customer/customer.js
@@ -34,11 +34,6 @@
 		// make lists
 		cur_frm.cscript.make_address(doc, dt, dn);
 		cur_frm.cscript.make_contact(doc, dt, dn);
-
-		cur_frm.communication_view = new frappe.views.CommunicationList({
-			parent: cur_frm.fields_dict.communication_html.wrapper,
-			doc: doc,
-		});
 	}
 }
 
diff --git a/erpnext/selling/doctype/customer/customer.json b/erpnext/selling/doctype/customer/customer.json
index 47286de..bb481fa 100644
--- a/erpnext/selling/doctype/customer/customer.json
+++ b/erpnext/selling/doctype/customer/customer.json
@@ -1,377 +1,361 @@
 {
- "allow_import": 1, 
- "allow_rename": 1, 
- "autoname": "naming_series:", 
- "creation": "2013-06-11 14:26:44", 
- "description": "Buyer of Goods and Services.", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Master", 
+ "allow_import": 1,
+ "allow_rename": 1,
+ "autoname": "naming_series:",
+ "creation": "2013-06-11 14:26:44",
+ "description": "Buyer of Goods and Services.",
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "Master",
  "fields": [
   {
-   "fieldname": "basic_info", 
-   "fieldtype": "Section Break", 
-   "label": "Basic Info", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-user", 
-   "permlevel": 0, 
+   "fieldname": "basic_info",
+   "fieldtype": "Section Break",
+   "label": "Basic Info",
+   "oldfieldtype": "Section Break",
+   "options": "icon-user",
+   "permlevel": 0,
    "reqd": 0
-  }, 
+  },
   {
-   "fieldname": "naming_series", 
-   "fieldtype": "Select", 
-   "label": "Series", 
-   "no_copy": 1, 
-   "options": "CUST-", 
-   "permlevel": 0, 
+   "fieldname": "naming_series",
+   "fieldtype": "Select",
+   "label": "Series",
+   "no_copy": 1,
+   "options": "CUST-",
+   "permlevel": 0,
    "print_hide": 0
-  }, 
+  },
   {
-   "fieldname": "customer_name", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "in_filter": 1, 
-   "in_list_view": 1, 
-   "label": "Full Name", 
-   "no_copy": 1, 
-   "oldfieldname": "customer_name", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
+   "fieldname": "customer_name",
+   "fieldtype": "Data",
+   "hidden": 0,
+   "in_filter": 1,
+   "in_list_view": 1,
+   "label": "Full Name",
+   "no_copy": 1,
+   "oldfieldname": "customer_name",
+   "oldfieldtype": "Data",
+   "permlevel": 0,
+   "print_hide": 0,
+   "report_hide": 0,
+   "reqd": 1,
    "search_index": 1
-  }, 
+  },
   {
-   "fieldname": "customer_type", 
-   "fieldtype": "Select", 
-   "label": "Type", 
-   "oldfieldname": "customer_type", 
-   "oldfieldtype": "Select", 
-   "options": "\nCompany\nIndividual", 
-   "permlevel": 0, 
+   "fieldname": "customer_type",
+   "fieldtype": "Select",
+   "label": "Type",
+   "oldfieldname": "customer_type",
+   "oldfieldtype": "Select",
+   "options": "\nCompany\nIndividual",
+   "permlevel": 0,
    "reqd": 1
-  }, 
+  },
   {
-   "fieldname": "lead_name", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "in_filter": 1, 
-   "label": "From Lead", 
-   "no_copy": 1, 
-   "oldfieldname": "lead_name", 
-   "oldfieldtype": "Link", 
-   "options": "Lead", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "fieldname": "lead_name",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "in_filter": 1,
+   "label": "From Lead",
+   "no_copy": 1,
+   "oldfieldname": "lead_name",
+   "oldfieldtype": "Link",
+   "options": "Lead",
+   "permlevel": 0,
+   "print_hide": 1,
    "report_hide": 1
-  }, 
+  },
   {
-   "fieldname": "column_break0", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0, 
+   "fieldname": "column_break0",
+   "fieldtype": "Column Break",
+   "permlevel": 0,
    "width": "50%"
-  }, 
+  },
   {
-   "description": "<a href=\"#Sales Browser/Customer Group\">Add / Edit</a>", 
-   "fieldname": "customer_group", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "in_filter": 1, 
-   "label": "Customer Group", 
-   "oldfieldname": "customer_group", 
-   "oldfieldtype": "Link", 
-   "options": "Customer Group", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "reqd": 1, 
+   "description": "<a href=\"#Sales Browser/Customer Group\">Add / Edit</a>",
+   "fieldname": "customer_group",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "in_filter": 1,
+   "label": "Customer Group",
+   "oldfieldname": "customer_group",
+   "oldfieldtype": "Link",
+   "options": "Customer Group",
+   "permlevel": 0,
+   "print_hide": 0,
+   "reqd": 1,
    "search_index": 1
-  }, 
+  },
   {
-   "description": "<a href=\"#Sales Browser/Territory\">Add / Edit</a>", 
-   "fieldname": "territory", 
-   "fieldtype": "Link", 
-   "in_list_view": 1, 
-   "label": "Territory", 
-   "oldfieldname": "territory", 
-   "oldfieldtype": "Link", 
-   "options": "Territory", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "description": "<a href=\"#Sales Browser/Territory\">Add / Edit</a>",
+   "fieldname": "territory",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "label": "Territory",
+   "oldfieldname": "territory",
+   "oldfieldtype": "Link",
+   "options": "Territory",
+   "permlevel": 0,
+   "print_hide": 1,
    "reqd": 1
-  }, 
+  },
   {
-   "depends_on": "eval:!doc.__islocal", 
-   "fieldname": "address_contacts", 
-   "fieldtype": "Section Break", 
-   "label": "Address & Contacts", 
-   "options": "icon-map-marker", 
+   "depends_on": "eval:!doc.__islocal",
+   "fieldname": "address_contacts",
+   "fieldtype": "Section Break",
+   "label": "Address & Contacts",
+   "options": "icon-map-marker",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "address_html", 
-   "fieldtype": "HTML", 
-   "label": "Address HTML", 
-   "permlevel": 0, 
+   "fieldname": "address_html",
+   "fieldtype": "HTML",
+   "label": "Address HTML",
+   "permlevel": 0,
    "read_only": 1
-  }, 
+  },
   {
-   "fieldname": "column_break1", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0, 
+   "fieldname": "column_break1",
+   "fieldtype": "Column Break",
+   "permlevel": 0,
    "width": "50%"
-  }, 
+  },
   {
-   "fieldname": "contact_html", 
-   "fieldtype": "HTML", 
-   "label": "Contact HTML", 
-   "oldfieldtype": "HTML", 
-   "permlevel": 0, 
+   "fieldname": "contact_html",
+   "fieldtype": "HTML",
+   "label": "Contact HTML",
+   "oldfieldtype": "HTML",
+   "permlevel": 0,
    "read_only": 1
-  }, 
+  },
   {
-   "depends_on": "eval:!doc.__islocal", 
-   "fieldname": "communication_history", 
-   "fieldtype": "Section Break", 
-   "label": "Communication History", 
-   "options": "icon-comments", 
-   "permlevel": 0, 
-   "print_hide": 1
-  }, 
-  {
-   "fieldname": "communication_html", 
-   "fieldtype": "HTML", 
-   "label": "Communication HTML", 
-   "permlevel": 0, 
-   "print_hide": 1
-  }, 
-  {
-   "fieldname": "more_info", 
-   "fieldtype": "Section Break", 
-   "label": "More Info", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-file-text", 
+   "fieldname": "more_info",
+   "fieldtype": "Section Break",
+   "label": "More Info",
+   "oldfieldtype": "Section Break",
+   "options": "icon-file-text",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "column_break2", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0, 
+   "fieldname": "column_break2",
+   "fieldtype": "Column Break",
+   "permlevel": 0,
    "width": "50%"
-  }, 
+  },
   {
-   "description": "To create an Account Head under a different company, select the company and save customer.", 
-   "fieldname": "company", 
-   "fieldtype": "Link", 
-   "in_filter": 1, 
-   "label": "Company", 
-   "oldfieldname": "company", 
-   "oldfieldtype": "Link", 
-   "options": "Company", 
-   "permlevel": 0, 
-   "reqd": 1, 
+   "description": "To create an Account Head under a different company, select the company and save customer.",
+   "fieldname": "company",
+   "fieldtype": "Link",
+   "in_filter": 1,
+   "label": "Company",
+   "oldfieldname": "company",
+   "oldfieldtype": "Link",
+   "options": "Company",
+   "permlevel": 0,
+   "reqd": 1,
    "search_index": 1
-  }, 
+  },
   {
-   "description": "Your Customer's TAX registration numbers (if applicable) or any general information", 
-   "fieldname": "customer_details", 
-   "fieldtype": "Text", 
-   "label": "Customer Details", 
-   "oldfieldname": "customer_details", 
-   "oldfieldtype": "Code", 
+   "description": "Your Customer's TAX registration numbers (if applicable) or any general information",
+   "fieldname": "customer_details",
+   "fieldtype": "Text",
+   "label": "Customer Details",
+   "oldfieldname": "customer_details",
+   "oldfieldtype": "Code",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "column_break3", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0, 
+   "fieldname": "column_break3",
+   "fieldtype": "Column Break",
+   "permlevel": 0,
    "width": "50%"
-  }, 
+  },
   {
-   "fieldname": "default_currency", 
-   "fieldtype": "Link", 
-   "ignore_user_permissions": 1, 
-   "label": "Currency", 
-   "no_copy": 1, 
-   "options": "Currency", 
+   "fieldname": "default_currency",
+   "fieldtype": "Link",
+   "ignore_user_permissions": 1,
+   "label": "Currency",
+   "no_copy": 1,
+   "options": "Currency",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "default_price_list", 
-   "fieldtype": "Link", 
-   "ignore_user_permissions": 1, 
-   "label": "Price List", 
-   "options": "Price List", 
+   "fieldname": "default_price_list",
+   "fieldtype": "Link",
+   "ignore_user_permissions": 1,
+   "label": "Price List",
+   "options": "Price List",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "default_taxes_and_charges", 
-   "fieldtype": "Link", 
-   "ignore_user_permissions": 1, 
-   "label": "Taxes and Charges", 
-   "options": "Sales Taxes and Charges Master", 
+   "fieldname": "default_taxes_and_charges",
+   "fieldtype": "Link",
+   "ignore_user_permissions": 1,
+   "label": "Taxes and Charges",
+   "options": "Sales Taxes and Charges Master",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "credit_days", 
-   "fieldtype": "Int", 
-   "label": "Credit Days", 
-   "oldfieldname": "credit_days", 
-   "oldfieldtype": "Int", 
+   "fieldname": "credit_days",
+   "fieldtype": "Int",
+   "label": "Credit Days",
+   "oldfieldname": "credit_days",
+   "oldfieldtype": "Int",
    "permlevel": 1
-  }, 
+  },
   {
-   "fieldname": "credit_limit", 
-   "fieldtype": "Currency", 
-   "label": "Credit Limit", 
-   "oldfieldname": "credit_limit", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
+   "fieldname": "credit_limit",
+   "fieldtype": "Currency",
+   "label": "Credit Limit",
+   "oldfieldname": "credit_limit",
+   "oldfieldtype": "Currency",
+   "options": "Company:company:default_currency",
    "permlevel": 1
-  }, 
+  },
   {
-   "fieldname": "website", 
-   "fieldtype": "Data", 
-   "label": "Website", 
+   "fieldname": "website",
+   "fieldtype": "Data",
+   "label": "Website",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "sales_team_section_break", 
-   "fieldtype": "Section Break", 
-   "label": "Sales Team", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-group", 
+   "fieldname": "sales_team_section_break",
+   "fieldtype": "Section Break",
+   "label": "Sales Team",
+   "oldfieldtype": "Section Break",
+   "options": "icon-group",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "default_sales_partner", 
-   "fieldtype": "Link", 
-   "ignore_user_permissions": 1, 
-   "label": "Sales Partner", 
-   "oldfieldname": "default_sales_partner", 
-   "oldfieldtype": "Link", 
-   "options": "Sales Partner", 
+   "fieldname": "default_sales_partner",
+   "fieldtype": "Link",
+   "ignore_user_permissions": 1,
+   "label": "Sales Partner",
+   "oldfieldname": "default_sales_partner",
+   "oldfieldtype": "Link",
+   "options": "Sales Partner",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "default_commission_rate", 
-   "fieldtype": "Float", 
-   "label": "Commission Rate", 
-   "oldfieldname": "default_commission_rate", 
-   "oldfieldtype": "Currency", 
+   "fieldname": "default_commission_rate",
+   "fieldtype": "Float",
+   "label": "Commission Rate",
+   "oldfieldname": "default_commission_rate",
+   "oldfieldtype": "Currency",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "sales_team", 
-   "fieldtype": "Table", 
-   "label": "Sales Team Details", 
-   "oldfieldname": "sales_team", 
-   "oldfieldtype": "Table", 
-   "options": "Sales Team", 
+   "fieldname": "sales_team",
+   "fieldtype": "Table",
+   "label": "Sales Team Details",
+   "oldfieldname": "sales_team",
+   "oldfieldtype": "Table",
+   "options": "Sales Team",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "communications", 
-   "fieldtype": "Table", 
-   "hidden": 1, 
-   "label": "Communications", 
-   "options": "Communication", 
-   "permlevel": 0, 
+   "fieldname": "communications",
+   "fieldtype": "Table",
+   "hidden": 1,
+   "label": "Communications",
+   "options": "Communication",
+   "permlevel": 0,
    "print_hide": 1
   }
- ], 
- "icon": "icon-user", 
- "idx": 1, 
- "modified": "2014-09-10 16:41:07.553182", 
- "modified_by": "Administrator", 
- "module": "Selling", 
- "name": "Customer", 
- "owner": "Administrator", 
+ ],
+ "icon": "icon-user",
+ "idx": 1,
+ "modified": "2014-09-12 12:26:47.480965",
+ "modified_by": "Administrator",
+ "module": "Selling",
+ "name": "Customer",
+ "owner": "Administrator",
  "permissions": [
   {
-   "amend": 0, 
-   "apply_user_permissions": 1, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Sales User", 
-   "submit": 0, 
+   "amend": 0,
+   "apply_user_permissions": 1,
+   "create": 1,
+   "delete": 0,
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Sales User",
+   "submit": 0,
    "write": 1
-  }, 
+  },
   {
-   "cancel": 0, 
-   "delete": 0, 
-   "permlevel": 1, 
-   "read": 1, 
+   "cancel": 0,
+   "delete": 0,
+   "permlevel": 1,
+   "read": 1,
    "role": "Sales User"
-  }, 
+  },
   {
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
    "role": "Sales Manager"
-  }, 
+  },
   {
-   "amend": 0, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Sales Master Manager", 
-   "set_user_permissions": 1, 
-   "submit": 0, 
+   "amend": 0,
+   "create": 1,
+   "delete": 1,
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Sales Master Manager",
+   "set_user_permissions": 1,
+   "submit": 0,
    "write": 1
-  }, 
+  },
   {
-   "cancel": 0, 
-   "delete": 0, 
-   "permlevel": 1, 
-   "read": 1, 
-   "role": "Sales Master Manager", 
+   "cancel": 0,
+   "delete": 0,
+   "permlevel": 1,
+   "read": 1,
+   "role": "Sales Master Manager",
    "write": 1
-  }, 
+  },
   {
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
    "role": "Material User"
-  }, 
+  },
   {
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
    "role": "Material Manager"
-  }, 
+  },
   {
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
    "role": "Accounts User"
-  }, 
+  },
   {
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
    "role": "Accounts Manager"
   }
- ], 
- "search_fields": "customer_name,customer_group,territory", 
+ ],
+ "search_fields": "customer_name,customer_group,territory",
  "title_field": "customer_name"
-}
\ No newline at end of file
+}
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index 362542e..a43b44d 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -12,6 +12,8 @@
 from erpnext.accounts.party import create_party_account
 
 class Customer(TransactionBase):
+	def get_feed(self):
+		return self.customer_name
 
 	def autoname(self):
 		cust_master_name = frappe.defaults.get_global_default('cust_master_name')
diff --git a/erpnext/selling/doctype/lead/get_leads.py b/erpnext/selling/doctype/lead/get_leads.py
deleted file mode 100644
index b765db6..0000000
--- a/erpnext/selling/doctype/lead/get_leads.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe.utils import cstr, cint
-from frappe.utils.email_lib.receive import POP3Mailbox
-from frappe.core.doctype.communication.communication import _make
-
-def add_sales_communication(subject, content, sender, real_name, mail=None, 
-	status="Open", date=None):
-	lead_name = frappe.db.get_value("Lead", {"email_id": sender})
-	contact_name = frappe.db.get_value("Contact", {"email_id": sender})
-
-	if not (lead_name or contact_name):
-		# none, create a new Lead
-		lead = frappe.get_doc({
-			"doctype":"Lead",
-			"lead_name": real_name or sender,
-			"email_id": sender,
-			"status": status,
-			"source": "Email"
-		})
-		lead.ignore_permissions = True
-		lead.ignore_mandatory = True
-		lead.insert()
-		lead_name = lead.name
-
-	parent_doctype = "Contact" if contact_name else "Lead"
-	parent_name = contact_name or lead_name
-
-	message = _make(content=content, sender=sender, subject=subject,
-		doctype = parent_doctype, name = parent_name, date=date, sent_or_received="Received")
-	
-	if mail:
-		# save attachments to parent if from mail
-		doc = frappe.get_doc(parent_doctype, parent_name)
-		mail.save_attachments_in_doc(doc)
-
-class SalesMailbox(POP3Mailbox):	
-	def setup(self, args=None):
-		self.settings = args or frappe.get_doc("Sales Email Settings", "Sales Email Settings")
-		
-	def process_message(self, mail):
-		if mail.from_email == self.settings.email_id:
-			return
-		
-		add_sales_communication(mail.subject, mail.content, mail.from_email, 
-			mail.from_real_name, mail=mail, date=mail.date)
-
-def get_leads():
-	if cint(frappe.db.get_value('Sales Email Settings', None, 'extract_emails')):
-		SalesMailbox()
\ No newline at end of file
diff --git a/erpnext/selling/doctype/lead/lead.js b/erpnext/selling/doctype/lead/lead.js
index ca6d007..75f3add 100644
--- a/erpnext/selling/doctype/lead/lead.js
+++ b/erpnext/selling/doctype/lead/lead.js
@@ -4,6 +4,8 @@
 {% include 'setup/doctype/contact_control/contact_control.js' %};
 
 frappe.provide("erpnext");
+cur_frm.email_field = "email_id";
+
 erpnext.LeadController = frappe.ui.form.Controller.extend({
 	setup: function() {
 		this.frm.fields_dict.customer.get_query = function(doc, cdt, cdn) {
@@ -34,13 +36,6 @@
 			this.frm.appframe.add_button(__("Send SMS"), this.frm.cscript.send_sms, "icon-mobile-phone");
 		}
 
-		cur_frm.communication_view = new frappe.views.CommunicationList({
-			list: frappe.get_list("Communication", {"parenttype": "Lead", "parent":this.frm.doc.name}),
-			parent: this.frm.fields_dict.communication_html.wrapper,
-			doc: this.frm.doc,
-			recipients: this.frm.doc.email_id
-		});
-
 		if(!this.frm.doc.__islocal) {
 			this.make_address_list();
 		}
diff --git a/erpnext/selling/doctype/lead/lead.json b/erpnext/selling/doctype/lead/lead.json
index 2d3d49c..b78ca4f 100644
--- a/erpnext/selling/doctype/lead/lead.json
+++ b/erpnext/selling/doctype/lead/lead.json
@@ -59,11 +59,6 @@
    "search_index": 1
   }, 
   {
-   "fieldname": "cb6", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0
-  }, 
-  {
    "default": "Lead", 
    "fieldname": "status", 
    "fieldtype": "Select", 
@@ -93,6 +88,12 @@
    "search_index": 0
   }, 
   {
+   "fieldname": "col_break123", 
+   "fieldtype": "Column Break", 
+   "permlevel": 0, 
+   "width": "50%"
+  }, 
+  {
    "depends_on": "eval:doc.source == 'Customer'", 
    "fieldname": "customer", 
    "fieldtype": "Link", 
@@ -116,14 +117,6 @@
    "permlevel": 0
   }, 
   {
-   "fieldname": "communication_history", 
-   "fieldtype": "Section Break", 
-   "label": "Communication", 
-   "options": "icon-comments", 
-   "permlevel": 0, 
-   "print_hide": 1
-  }, 
-  {
    "default": "__user", 
    "fieldname": "lead_owner", 
    "fieldtype": "Link", 
@@ -136,12 +129,6 @@
    "search_index": 1
   }, 
   {
-   "fieldname": "col_break123", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0, 
-   "width": "50%"
-  }, 
-  {
    "allow_on_submit": 0, 
    "fieldname": "contact_by", 
    "fieldtype": "Link", 
@@ -171,21 +158,6 @@
    "width": "100px"
   }, 
   {
-   "fieldname": "sec_break123", 
-   "fieldtype": "Section Break", 
-   "options": "Simple", 
-   "permlevel": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "fieldname": "communication_html", 
-   "fieldtype": "HTML", 
-   "label": "Communication HTML", 
-   "oldfieldname": "follow_up", 
-   "oldfieldtype": "Table", 
-   "permlevel": 0
-  }, 
-  {
    "fieldname": "fold", 
    "fieldtype": "Fold", 
    "label": "fold", 
@@ -355,20 +327,11 @@
    "fieldtype": "Check", 
    "label": "Blog Subscriber", 
    "permlevel": 0
-  }, 
-  {
-   "fieldname": "communications", 
-   "fieldtype": "Table", 
-   "hidden": 1, 
-   "label": "Communications", 
-   "options": "Communication", 
-   "permlevel": 0, 
-   "print_hide": 1
   }
  ], 
  "icon": "icon-user", 
  "idx": 1, 
- "modified": "2014-08-12 05:22:18.801092", 
+ "modified": "2014-09-11 18:52:50.397563", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Lead", 
@@ -376,6 +339,34 @@
  "permissions": [
   {
    "amend": 0, 
+   "cancel": 0, 
+   "create": 0, 
+   "delete": 0, 
+   "match": "", 
+   "permlevel": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "All", 
+   "submit": 0, 
+   "write": 0
+  }, 
+  {
+   "amend": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 0, 
+   "email": 1, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Sales User", 
+   "submit": 0, 
+   "write": 1
+  }, 
+  {
+   "amend": 0, 
+   "cancel": 0, 
    "create": 1, 
    "delete": 1, 
    "email": 1, 
@@ -389,7 +380,7 @@
   }, 
   {
    "amend": 0, 
-   "apply_user_permissions": 1, 
+   "cancel": 0, 
    "create": 1, 
    "delete": 0, 
    "email": 1, 
@@ -397,9 +388,35 @@
    "print": 1, 
    "read": 1, 
    "report": 1, 
-   "role": "Sales User", 
+   "role": "System Manager", 
    "submit": 0, 
    "write": 1
+  }, 
+  {
+   "amend": 0, 
+   "cancel": 0, 
+   "create": 0, 
+   "delete": 0, 
+   "match": "", 
+   "permlevel": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Sales Manager", 
+   "submit": 0, 
+   "write": 0
+  }, 
+  {
+   "amend": 0, 
+   "cancel": 0, 
+   "create": 0, 
+   "delete": 0, 
+   "match": "", 
+   "permlevel": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Sales User", 
+   "submit": 0, 
+   "write": 0
   }
  ], 
  "search_fields": "lead_name,lead_owner,status", 
diff --git a/erpnext/selling/doctype/lead/lead.py b/erpnext/selling/doctype/lead/lead.py
index 3c345ef..667a39f 100644
--- a/erpnext/selling/doctype/lead/lead.py
+++ b/erpnext/selling/doctype/lead/lead.py
@@ -11,6 +11,9 @@
 from erpnext.controllers.selling_controller import SellingController
 
 class Lead(SellingController):
+	def get_feed(self):
+		return '{0}: {1}'.format(_(self.status), self.lead_name)
+
 	def onload(self):
 		customer = frappe.db.get_value("Customer", {"lead_name": self.name})
 		self.get("__onload").is_customer = customer
diff --git a/erpnext/selling/doctype/opportunity/opportunity.js b/erpnext/selling/doctype/opportunity/opportunity.js
index af31d39..df84d72 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.js
+++ b/erpnext/selling/doctype/opportunity/opportunity.js
@@ -8,6 +8,8 @@
 
 
 frappe.provide("erpnext.selling");
+cur_frm.email_field = "contact_email";
+
 // TODO commonify this code
 erpnext.selling.Opportunity = frappe.ui.form.Controller.extend({
 	onload: function() {
@@ -26,15 +28,6 @@
 			set_multiple(cdt, cdn, { fiscal_year:sys_defaults.fiscal_year });
 
 
-		if(!this.frm.doc.__islocal) {
-			cur_frm.communication_view = new frappe.views.CommunicationList({
-				list: frappe.get_list("Communication", {"parent": this.frm.doc.name, "parenttype": "Opportunity"}),
-				parent: cur_frm.fields_dict.communication_html.wrapper,
-				doc: this.frm.doc,
-				recipients: this.frm.doc.contact_email
-			});
-		}
-
 		if(this.frm.doc.customer && !this.frm.doc.customer_name) cur_frm.cscript.customer(this.frm.doc);
 
 		this.setup_queries();
diff --git a/erpnext/selling/doctype/opportunity/opportunity.json b/erpnext/selling/doctype/opportunity/opportunity.json
index 513fbc8..fdda647 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.json
+++ b/erpnext/selling/doctype/opportunity/opportunity.json
@@ -135,26 +135,6 @@
    "read_only": 0
   }, 
   {
-   "description": "Keep a track of communication related to this enquiry which will help for future reference.", 
-   "fieldname": "communication_history", 
-   "fieldtype": "Section Break", 
-   "label": "Communication History", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-comments", 
-   "permlevel": 0, 
-   "read_only": 0
-  }, 
-  {
-   "allow_on_submit": 1, 
-   "fieldname": "communication_html", 
-   "fieldtype": "HTML", 
-   "label": "Communication HTML", 
-   "oldfieldname": "follow_up", 
-   "oldfieldtype": "Table", 
-   "permlevel": 0, 
-   "read_only": 0
-  }, 
-  {
    "fieldname": "fold", 
    "fieldtype": "Fold", 
    "permlevel": 0
@@ -402,21 +382,12 @@
    "print_hide": 1, 
    "read_only": 1, 
    "width": "150px"
-  }, 
-  {
-   "fieldname": "communications", 
-   "fieldtype": "Table", 
-   "hidden": 1, 
-   "label": "Communications", 
-   "options": "Communication", 
-   "permlevel": 0, 
-   "print_hide": 1
   }
  ], 
  "icon": "icon-info-sign", 
  "idx": 1, 
  "is_submittable": 1, 
- "modified": "2014-08-12 05:21:51.282397", 
+ "modified": "2014-09-11 18:53:14.037512", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Opportunity", 
@@ -424,7 +395,6 @@
  "permissions": [
   {
    "amend": 1, 
-   "apply_user_permissions": 1, 
    "cancel": 1, 
    "create": 1, 
    "delete": 1, 
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 8cff8d8..5f25446 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -53,15 +53,6 @@
 				}, "icon-download", "btn-default");
 		}
 
-		if (!doc.__islocal) {
-			cur_frm.communication_view = new frappe.views.CommunicationList({
-				list: frappe.get_list("Communication", {"parent": doc.name, "parenttype": "Quotation"}),
-				parent: cur_frm.fields_dict.communication_html.wrapper,
-				doc: doc,
-				recipients: doc.contact_email
-			});
-		}
-
 		this.toggle_reqd_lead_customer();
 	},
 
diff --git a/erpnext/selling/doctype/quotation/quotation.json b/erpnext/selling/doctype/quotation/quotation.json
index 5d960e9..107abc2 100644
--- a/erpnext/selling/doctype/quotation/quotation.json
+++ b/erpnext/selling/doctype/quotation/quotation.json
@@ -1,925 +1,931 @@
 {
- "allow_import": 1, 
- "autoname": "naming_series:", 
- "creation": "2013-05-24 19:29:08", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Transaction", 
+ "allow_import": 1,
+ "autoname": "naming_series:",
+ "creation": "2013-05-24 19:29:08",
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "Transaction",
  "fields": [
   {
-   "fieldname": "customer_section", 
-   "fieldtype": "Section Break", 
-   "label": "Customer", 
-   "options": "icon-user", 
+   "fieldname": "customer_section",
+   "fieldtype": "Section Break",
+   "label": "Customer",
+   "options": "icon-user",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "column_break0", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0, 
-   "read_only": 0, 
+   "fieldname": "column_break0",
+   "fieldtype": "Column Break",
+   "permlevel": 0,
+   "read_only": 0,
    "width": "50%"
-  }, 
+  },
   {
-   "fieldname": "naming_series", 
-   "fieldtype": "Select", 
-   "label": "Series", 
-   "no_copy": 1, 
-   "oldfieldname": "naming_series", 
-   "oldfieldtype": "Select", 
-   "options": "QTN-", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
+   "fieldname": "naming_series",
+   "fieldtype": "Select",
+   "label": "Series",
+   "no_copy": 1,
+   "oldfieldname": "naming_series",
+   "oldfieldtype": "Select",
+   "options": "QTN-",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
    "reqd": 1
-  }, 
+  },
   {
-   "default": "Customer", 
-   "fieldname": "quotation_to", 
-   "fieldtype": "Select", 
-   "in_filter": 1, 
-   "label": "Quotation To", 
-   "oldfieldname": "quotation_to", 
-   "oldfieldtype": "Select", 
-   "options": "\nLead\nCustomer", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "report_hide": 0, 
+   "default": "Customer",
+   "fieldname": "quotation_to",
+   "fieldtype": "Select",
+   "in_filter": 1,
+   "label": "Quotation To",
+   "oldfieldname": "quotation_to",
+   "oldfieldtype": "Select",
+   "options": "\nLead\nCustomer",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
+   "report_hide": 0,
    "reqd": 1
-  }, 
+  },
   {
-   "depends_on": "eval:doc.quotation_to == \"Customer\"", 
-   "fieldname": "customer", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "in_filter": 1, 
-   "label": "Customer", 
-   "oldfieldname": "customer", 
-   "oldfieldtype": "Link", 
-   "options": "Customer", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
+   "depends_on": "eval:doc.quotation_to == \"Customer\"",
+   "fieldname": "customer",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "in_filter": 1,
+   "label": "Customer",
+   "oldfieldname": "customer",
+   "oldfieldtype": "Link",
+   "options": "Customer",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
    "search_index": 1
-  }, 
+  },
   {
-   "depends_on": "eval:doc.quotation_to == \"Lead\"", 
-   "fieldname": "lead", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "in_filter": 1, 
-   "label": "Lead", 
-   "oldfieldname": "lead", 
-   "oldfieldtype": "Link", 
-   "options": "Lead", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "depends_on": "eval:doc.quotation_to == \"Lead\"",
+   "fieldname": "lead",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "in_filter": 1,
+   "label": "Lead",
+   "oldfieldname": "lead",
+   "oldfieldtype": "Link",
+   "options": "Lead",
+   "permlevel": 0,
+   "print_hide": 1,
    "read_only": 0
-  }, 
+  },
   {
-   "fieldname": "customer_name", 
-   "fieldtype": "Data", 
-   "hidden": 1, 
-   "in_list_view": 1, 
-   "label": "Customer / Lead Name", 
-   "permlevel": 0, 
+   "fieldname": "customer_name",
+   "fieldtype": "Data",
+   "hidden": 1,
+   "in_list_view": 1,
+   "label": "Customer / Lead Name",
+   "permlevel": 0,
    "read_only": 1
-  }, 
+  },
   {
-   "fieldname": "address_display", 
-   "fieldtype": "Small Text", 
-   "hidden": 1, 
-   "in_filter": 0, 
-   "label": "Address", 
-   "oldfieldname": "customer_address", 
-   "oldfieldtype": "Small Text", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 1, 
-   "reqd": 0, 
+   "fieldname": "address_display",
+   "fieldtype": "Small Text",
+   "hidden": 1,
+   "in_filter": 0,
+   "label": "Address",
+   "oldfieldname": "customer_address",
+   "oldfieldtype": "Small Text",
+   "permlevel": 0,
+   "print_hide": 0,
+   "read_only": 1,
+   "reqd": 0,
    "search_index": 0
-  }, 
+  },
   {
-   "fieldname": "contact_display", 
-   "fieldtype": "Small Text", 
-   "hidden": 1, 
-   "in_filter": 0, 
-   "label": "Contact", 
-   "permlevel": 0, 
-   "print_hide": 0, 
+   "fieldname": "contact_display",
+   "fieldtype": "Small Text",
+   "hidden": 1,
+   "in_filter": 0,
+   "label": "Contact",
+   "permlevel": 0,
+   "print_hide": 0,
    "read_only": 1
-  }, 
+  },
   {
-   "fieldname": "contact_mobile", 
-   "fieldtype": "Small Text", 
-   "hidden": 1, 
-   "label": "Mobile No", 
-   "permlevel": 0, 
-   "print_hide": 0, 
+   "fieldname": "contact_mobile",
+   "fieldtype": "Small Text",
+   "hidden": 1,
+   "label": "Mobile No",
+   "permlevel": 0,
+   "print_hide": 0,
    "read_only": 1
-  }, 
+  },
   {
-   "fieldname": "contact_email", 
-   "fieldtype": "Small Text", 
-   "hidden": 1, 
-   "label": "Contact Email", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "fieldname": "contact_email",
+   "fieldtype": "Small Text",
+   "hidden": 1,
+   "label": "Contact Email",
+   "permlevel": 0,
+   "print_hide": 1,
    "read_only": 1
-  }, 
+  },
   {
-   "fieldname": "column_break1", 
-   "fieldtype": "Column Break", 
-   "oldfieldtype": "Column Break", 
-   "permlevel": 0, 
-   "read_only": 0, 
+   "fieldname": "column_break1",
+   "fieldtype": "Column Break",
+   "oldfieldtype": "Column Break",
+   "permlevel": 0,
+   "read_only": 0,
    "width": "50%"
-  }, 
+  },
   {
-   "fieldname": "amended_from", 
-   "fieldtype": "Link", 
-   "ignore_user_permissions": 1, 
-   "label": "Amended From", 
-   "no_copy": 1, 
-   "oldfieldname": "amended_from", 
-   "oldfieldtype": "Data", 
-   "options": "Quotation", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1, 
+   "fieldname": "amended_from",
+   "fieldtype": "Link",
+   "ignore_user_permissions": 1,
+   "label": "Amended From",
+   "no_copy": 1,
+   "oldfieldname": "amended_from",
+   "oldfieldtype": "Data",
+   "options": "Quotation",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 1,
    "width": "150px"
-  }, 
+  },
   {
-   "description": "Select the relevant company name if you have multiple companies.", 
-   "fieldname": "company", 
-   "fieldtype": "Link", 
-   "in_filter": 1, 
-   "label": "Company", 
-   "oldfieldname": "company", 
-   "oldfieldtype": "Link", 
-   "options": "Company", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
+   "description": "Select the relevant company name if you have multiple companies.",
+   "fieldname": "company",
+   "fieldtype": "Link",
+   "in_filter": 1,
+   "label": "Company",
+   "oldfieldname": "company",
+   "oldfieldtype": "Link",
+   "options": "Company",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
+   "reqd": 1,
+   "search_index": 0,
    "width": "150px"
-  }, 
+  },
   {
-   "default": "Today", 
-   "fieldname": "transaction_date", 
-   "fieldtype": "Date", 
-   "in_filter": 1, 
-   "label": "Date", 
-   "no_copy": 1, 
-   "oldfieldname": "transaction_date", 
-   "oldfieldtype": "Date", 
-   "permlevel": 0, 
-   "read_only": 0, 
-   "reqd": 1, 
-   "search_index": 1, 
+   "default": "Today",
+   "fieldname": "transaction_date",
+   "fieldtype": "Date",
+   "in_filter": 1,
+   "label": "Date",
+   "no_copy": 1,
+   "oldfieldname": "transaction_date",
+   "oldfieldtype": "Date",
+   "permlevel": 0,
+   "read_only": 0,
+   "reqd": 1,
+   "search_index": 1,
    "width": "100px"
-  }, 
+  },
   {
-   "default": "Sales", 
-   "fieldname": "order_type", 
-   "fieldtype": "Select", 
-   "in_filter": 1, 
-   "label": "Order Type", 
-   "oldfieldname": "order_type", 
-   "oldfieldtype": "Select", 
-   "options": "\nSales\nMaintenance\nShopping Cart", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "reqd": 1, 
+   "default": "Sales",
+   "fieldname": "order_type",
+   "fieldtype": "Select",
+   "in_filter": 1,
+   "label": "Order Type",
+   "oldfieldname": "order_type",
+   "oldfieldtype": "Select",
+   "options": "\nSales\nMaintenance\nShopping Cart",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
+   "reqd": 1,
    "search_index": 0
-  }, 
+  },
   {
-   "fieldname": "section_break0", 
-   "fieldtype": "Section Break", 
-   "label": "Currency and Price List", 
-   "options": "icon-tag", 
-   "permlevel": 0, 
+   "fieldname": "section_break0",
+   "fieldtype": "Section Break",
+   "label": "Currency and Price List",
+   "options": "icon-tag",
+   "permlevel": 0,
    "read_only": 0
-  }, 
+  },
   {
-   "fieldname": "currency", 
-   "fieldtype": "Link", 
-   "in_filter": 1, 
-   "label": "Currency", 
-   "oldfieldname": "currency", 
-   "oldfieldtype": "Select", 
-   "options": "Currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
+   "fieldname": "currency",
+   "fieldtype": "Link",
+   "in_filter": 1,
+   "label": "Currency",
+   "oldfieldname": "currency",
+   "oldfieldtype": "Select",
+   "options": "Currency",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
+   "reqd": 1,
+   "search_index": 0,
    "width": "100px"
-  }, 
+  },
   {
-   "description": "Rate at which customer's currency is converted to company's base currency", 
-   "fieldname": "conversion_rate", 
-   "fieldtype": "Float", 
-   "label": "Exchange Rate", 
-   "oldfieldname": "conversion_rate", 
-   "oldfieldtype": "Currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "reqd": 1, 
+   "description": "Rate at which customer's currency is converted to company's base currency",
+   "fieldname": "conversion_rate",
+   "fieldtype": "Float",
+   "label": "Exchange Rate",
+   "oldfieldname": "conversion_rate",
+   "oldfieldtype": "Currency",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
+   "reqd": 1,
    "width": "100px"
-  }, 
+  },
   {
-   "fieldname": "column_break2", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0, 
-   "read_only": 0, 
+   "fieldname": "column_break2",
+   "fieldtype": "Column Break",
+   "permlevel": 0,
+   "read_only": 0,
    "width": "50%"
-  }, 
+  },
   {
-   "fieldname": "selling_price_list", 
-   "fieldtype": "Link", 
-   "in_filter": 1, 
-   "label": "Price List", 
-   "oldfieldname": "price_list_name", 
-   "oldfieldtype": "Select", 
-   "options": "Price List", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
+   "fieldname": "selling_price_list",
+   "fieldtype": "Link",
+   "in_filter": 1,
+   "label": "Price List",
+   "oldfieldname": "price_list_name",
+   "oldfieldtype": "Select",
+   "options": "Price List",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
+   "reqd": 1,
+   "search_index": 0,
    "width": "100px"
-  }, 
+  },
   {
-   "fieldname": "price_list_currency", 
-   "fieldtype": "Link", 
-   "label": "Price List Currency", 
-   "options": "Currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1, 
+   "fieldname": "price_list_currency",
+   "fieldtype": "Link",
+   "label": "Price List Currency",
+   "options": "Currency",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 1,
    "reqd": 1
-  }, 
+  },
   {
-   "description": "Rate at which Price list currency is converted to company's base currency", 
-   "fieldname": "plc_conversion_rate", 
-   "fieldtype": "Float", 
-   "label": "Price List Exchange Rate", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
+   "description": "Rate at which Price list currency is converted to company's base currency",
+   "fieldname": "plc_conversion_rate",
+   "fieldtype": "Float",
+   "label": "Price List Exchange Rate",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
    "reqd": 1
-  }, 
+  },
   {
-   "fieldname": "ignore_pricing_rule", 
-   "fieldtype": "Check", 
-   "label": "Ignore Pricing Rule", 
-   "no_copy": 1, 
-   "permlevel": 1, 
+   "fieldname": "ignore_pricing_rule",
+   "fieldtype": "Check",
+   "label": "Ignore Pricing Rule",
+   "no_copy": 1,
+   "permlevel": 1,
    "print_hide": 1
-  }, 
+  },
   {
-   "fieldname": "items", 
-   "fieldtype": "Section Break", 
-   "label": "Items", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-shopping-cart", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
+   "fieldname": "items",
+   "fieldtype": "Section Break",
+   "label": "Items",
+   "oldfieldtype": "Section Break",
+   "options": "icon-shopping-cart",
+   "permlevel": 0,
+   "print_hide": 0,
+   "read_only": 0,
    "search_index": 0
-  }, 
+  },
   {
-   "allow_on_submit": 1, 
-   "fieldname": "quotation_details", 
-   "fieldtype": "Table", 
-   "label": "Quotation Items", 
-   "oldfieldname": "quotation_details", 
-   "oldfieldtype": "Table", 
-   "options": "Quotation Item", 
-   "permlevel": 0, 
-   "read_only": 0, 
-   "reqd": 0, 
+   "allow_on_submit": 1,
+   "fieldname": "quotation_details",
+   "fieldtype": "Table",
+   "label": "Quotation Items",
+   "oldfieldname": "quotation_details",
+   "oldfieldtype": "Table",
+   "options": "Quotation Item",
+   "permlevel": 0,
+   "read_only": 0,
+   "reqd": 0,
    "width": "40px"
-  }, 
+  },
   {
-   "fieldname": "sec_break23", 
-   "fieldtype": "Section Break", 
-   "permlevel": 0, 
+   "fieldname": "sec_break23",
+   "fieldtype": "Section Break",
+   "permlevel": 0,
    "read_only": 0
-  }, 
+  },
   {
-   "fieldname": "net_total", 
-   "fieldtype": "Currency", 
-   "label": "Net Total (Company Currency)", 
-   "no_copy": 0, 
-   "oldfieldname": "net_total", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1, 
-   "reqd": 0, 
+   "fieldname": "net_total",
+   "fieldtype": "Currency",
+   "label": "Net Total (Company Currency)",
+   "no_copy": 0,
+   "oldfieldname": "net_total",
+   "oldfieldtype": "Currency",
+   "options": "Company:company:default_currency",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 1,
+   "reqd": 0,
    "width": "100px"
-  }, 
+  },
   {
-   "fieldname": "column_break_28", 
-   "fieldtype": "Column Break", 
+   "fieldname": "column_break_28",
+   "fieldtype": "Column Break",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "net_total_export", 
-   "fieldtype": "Currency", 
-   "label": "Net Total", 
-   "options": "currency", 
-   "permlevel": 0, 
+   "fieldname": "net_total_export",
+   "fieldtype": "Currency",
+   "label": "Net Total",
+   "options": "currency",
+   "permlevel": 0,
    "read_only": 1
-  }, 
+  },
   {
-   "fieldname": "taxes", 
-   "fieldtype": "Section Break", 
-   "label": "Taxes and Charges", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-money", 
-   "permlevel": 0, 
+   "fieldname": "taxes",
+   "fieldtype": "Section Break",
+   "label": "Taxes and Charges",
+   "oldfieldtype": "Section Break",
+   "options": "icon-money",
+   "permlevel": 0,
    "read_only": 0
-  }, 
+  },
   {
-   "fieldname": "taxes_and_charges", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "label": "Taxes and Charges", 
-   "oldfieldname": "charge", 
-   "oldfieldtype": "Link", 
-   "options": "Sales Taxes and Charges Master", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "fieldname": "taxes_and_charges",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "label": "Taxes and Charges",
+   "oldfieldname": "charge",
+   "oldfieldtype": "Link",
+   "options": "Sales Taxes and Charges Master",
+   "permlevel": 0,
+   "print_hide": 1,
    "read_only": 0
-  }, 
+  },
   {
-   "fieldname": "column_break_34", 
-   "fieldtype": "Column Break", 
+   "fieldname": "column_break_34",
+   "fieldtype": "Column Break",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "shipping_rule", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "label": "Shipping Rule", 
-   "oldfieldtype": "Button", 
-   "options": "Shipping Rule", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "fieldname": "shipping_rule",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "label": "Shipping Rule",
+   "oldfieldtype": "Button",
+   "options": "Shipping Rule",
+   "permlevel": 0,
+   "print_hide": 1,
    "read_only": 0
-  }, 
+  },
   {
-   "fieldname": "section_break_36", 
-   "fieldtype": "Section Break", 
+   "fieldname": "section_break_36",
+   "fieldtype": "Section Break",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "other_charges", 
-   "fieldtype": "Table", 
-   "label": "Sales Taxes and Charges", 
-   "oldfieldname": "other_charges", 
-   "oldfieldtype": "Table", 
-   "options": "Sales Taxes and Charges", 
-   "permlevel": 0, 
+   "fieldname": "other_charges",
+   "fieldtype": "Table",
+   "label": "Sales Taxes and Charges",
+   "oldfieldname": "other_charges",
+   "oldfieldtype": "Table",
+   "options": "Sales Taxes and Charges",
+   "permlevel": 0,
    "read_only": 0
-  }, 
+  },
   {
-   "fieldname": "other_charges_calculation", 
-   "fieldtype": "HTML", 
-   "label": "Taxes and Charges Calculation", 
-   "oldfieldtype": "HTML", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "fieldname": "other_charges_calculation",
+   "fieldtype": "HTML",
+   "label": "Taxes and Charges Calculation",
+   "oldfieldtype": "HTML",
+   "permlevel": 0,
+   "print_hide": 1,
    "read_only": 0
-  }, 
+  },
   {
-   "fieldname": "section_break_39", 
-   "fieldtype": "Section Break", 
+   "fieldname": "section_break_39",
+   "fieldtype": "Section Break",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "other_charges_total", 
-   "fieldtype": "Currency", 
-   "label": "Taxes and Charges Total (Company Currency)", 
-   "oldfieldname": "other_charges_total", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "fieldname": "other_charges_total",
+   "fieldtype": "Currency",
+   "label": "Taxes and Charges Total (Company Currency)",
+   "oldfieldname": "other_charges_total",
+   "oldfieldtype": "Currency",
+   "options": "Company:company:default_currency",
+   "permlevel": 0,
+   "print_hide": 1,
    "read_only": 1
-  }, 
+  },
   {
-   "fieldname": "column_break_42", 
-   "fieldtype": "Column Break", 
+   "fieldname": "column_break_42",
+   "fieldtype": "Column Break",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "other_charges_total_export", 
-   "fieldtype": "Currency", 
-   "label": "Taxes and Charges Total", 
-   "options": "currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "fieldname": "other_charges_total_export",
+   "fieldtype": "Currency",
+   "label": "Taxes and Charges Total",
+   "options": "currency",
+   "permlevel": 0,
+   "print_hide": 1,
    "read_only": 1
-  }, 
+  },
   {
-   "fieldname": "discount_amount", 
-   "fieldtype": "Currency", 
-   "label": "Discount Amount", 
-   "options": "Company:company:default_currency", 
+   "fieldname": "discount_amount",
+   "fieldtype": "Currency",
+   "label": "Discount Amount",
+   "options": "Company:company:default_currency",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "totals", 
-   "fieldtype": "Section Break", 
-   "label": "Totals", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-money", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "fieldname": "totals",
+   "fieldtype": "Section Break",
+   "label": "Totals",
+   "oldfieldtype": "Section Break",
+   "options": "icon-money",
+   "permlevel": 0,
+   "print_hide": 1,
    "read_only": 0
-  }, 
+  },
   {
-   "fieldname": "grand_total", 
-   "fieldtype": "Currency", 
-   "label": "Grand Total (Company Currency)", 
-   "no_copy": 0, 
-   "oldfieldname": "grand_total", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1, 
-   "reqd": 0, 
+   "fieldname": "grand_total",
+   "fieldtype": "Currency",
+   "label": "Grand Total (Company Currency)",
+   "no_copy": 0,
+   "oldfieldname": "grand_total",
+   "oldfieldtype": "Currency",
+   "options": "Company:company:default_currency",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 1,
+   "reqd": 0,
    "width": "200px"
-  }, 
+  },
   {
-   "fieldname": "rounded_total", 
-   "fieldtype": "Currency", 
-   "label": "Rounded Total (Company Currency)", 
-   "no_copy": 0, 
-   "oldfieldname": "rounded_total", 
-   "oldfieldtype": "Currency", 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1, 
+   "fieldname": "rounded_total",
+   "fieldtype": "Currency",
+   "label": "Rounded Total (Company Currency)",
+   "no_copy": 0,
+   "oldfieldname": "rounded_total",
+   "oldfieldtype": "Currency",
+   "options": "Company:company:default_currency",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 1,
    "width": "200px"
-  }, 
+  },
   {
-   "description": "In Words will be visible once you save the Quotation.", 
-   "fieldname": "in_words", 
-   "fieldtype": "Data", 
-   "label": "In Words (Company Currency)", 
-   "no_copy": 0, 
-   "oldfieldname": "in_words", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1, 
+   "description": "In Words will be visible once you save the Quotation.",
+   "fieldname": "in_words",
+   "fieldtype": "Data",
+   "label": "In Words (Company Currency)",
+   "no_copy": 0,
+   "oldfieldname": "in_words",
+   "oldfieldtype": "Data",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 1,
    "width": "200px"
-  }, 
+  },
   {
-   "fieldname": "column_break3", 
-   "fieldtype": "Column Break", 
-   "oldfieldtype": "Column Break", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
+   "fieldname": "column_break3",
+   "fieldtype": "Column Break",
+   "oldfieldtype": "Column Break",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
    "width": "50%"
-  }, 
+  },
   {
-   "fieldname": "grand_total_export", 
-   "fieldtype": "Currency", 
-   "in_list_view": 1, 
-   "label": "Grand Total", 
-   "no_copy": 0, 
-   "oldfieldname": "grand_total_export", 
-   "oldfieldtype": "Currency", 
-   "options": "currency", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 1, 
-   "reqd": 0, 
+   "fieldname": "grand_total_export",
+   "fieldtype": "Currency",
+   "in_list_view": 1,
+   "label": "Grand Total",
+   "no_copy": 0,
+   "oldfieldname": "grand_total_export",
+   "oldfieldtype": "Currency",
+   "options": "currency",
+   "permlevel": 0,
+   "print_hide": 0,
+   "read_only": 1,
+   "reqd": 0,
    "width": "200px"
-  }, 
+  },
   {
-   "fieldname": "rounded_total_export", 
-   "fieldtype": "Currency", 
-   "label": "Rounded Total", 
-   "no_copy": 0, 
-   "oldfieldname": "rounded_total_export", 
-   "oldfieldtype": "Currency", 
-   "options": "currency", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 1, 
-   "reqd": 0, 
+   "fieldname": "rounded_total_export",
+   "fieldtype": "Currency",
+   "label": "Rounded Total",
+   "no_copy": 0,
+   "oldfieldname": "rounded_total_export",
+   "oldfieldtype": "Currency",
+   "options": "currency",
+   "permlevel": 0,
+   "print_hide": 0,
+   "read_only": 1,
+   "reqd": 0,
    "width": "200px"
-  }, 
+  },
   {
-   "fieldname": "in_words_export", 
-   "fieldtype": "Data", 
-   "label": "In Words", 
-   "no_copy": 0, 
-   "oldfieldname": "in_words_export", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 1, 
+   "fieldname": "in_words_export",
+   "fieldtype": "Data",
+   "label": "In Words",
+   "no_copy": 0,
+   "oldfieldname": "in_words_export",
+   "oldfieldtype": "Data",
+   "permlevel": 0,
+   "print_hide": 0,
+   "read_only": 1,
    "width": "200px"
-  }, 
+  },
   {
-   "fieldname": "fold", 
-   "fieldtype": "Fold", 
-   "label": "Fold", 
+   "fieldname": "fold",
+   "fieldtype": "Fold",
+   "label": "Fold",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "terms_section_break", 
-   "fieldtype": "Section Break", 
-   "label": "Terms and Conditions", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-legal", 
-   "permlevel": 0, 
-   "print_hide": 0, 
+   "fieldname": "terms_section_break",
+   "fieldtype": "Section Break",
+   "label": "Terms and Conditions",
+   "oldfieldtype": "Section Break",
+   "options": "icon-legal",
+   "permlevel": 0,
+   "print_hide": 0,
    "read_only": 0
-  }, 
+  },
   {
-   "fieldname": "tc_name", 
-   "fieldtype": "Link", 
-   "label": "Terms", 
-   "oldfieldname": "tc_name", 
-   "oldfieldtype": "Link", 
-   "options": "Terms and Conditions", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
+   "fieldname": "tc_name",
+   "fieldtype": "Link",
+   "label": "Terms",
+   "oldfieldname": "tc_name",
+   "oldfieldtype": "Link",
+   "options": "Terms and Conditions",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
    "report_hide": 1
-  }, 
+  },
   {
-   "fieldname": "terms", 
-   "fieldtype": "Text Editor", 
-   "label": "Term Details", 
-   "oldfieldname": "terms", 
-   "oldfieldtype": "Text Editor", 
-   "permlevel": 0, 
+   "fieldname": "terms",
+   "fieldtype": "Text Editor",
+   "label": "Term Details",
+   "oldfieldname": "terms",
+   "oldfieldtype": "Text Editor",
+   "permlevel": 0,
    "read_only": 0
-  }, 
+  },
   {
-   "fieldname": "contact_section", 
-   "fieldtype": "Section Break", 
-   "label": "Contact Info", 
-   "options": "icon-bullhorn", 
-   "permlevel": 0, 
+   "fieldname": "contact_section",
+   "fieldtype": "Section Break",
+   "label": "Contact Info",
+   "options": "icon-bullhorn",
+   "permlevel": 0,
    "read_only": 0
-  }, 
+  },
   {
-   "description": "<a href=\"#Sales Browser/Territory\">Add / Edit</a>", 
-   "fieldname": "territory", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "in_filter": 1, 
-   "label": "Territory", 
-   "options": "Territory", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "reqd": 1, 
+   "description": "<a href=\"#Sales Browser/Territory\">Add / Edit</a>",
+   "fieldname": "territory",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "in_filter": 1,
+   "label": "Territory",
+   "options": "Territory",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
+   "reqd": 1,
    "search_index": 0
-  }, 
+  },
   {
-   "depends_on": "customer", 
-   "description": "<a href=\"#Sales Browser/Customer Group\">Add / Edit</a>", 
-   "fieldname": "customer_group", 
-   "fieldtype": "Link", 
-   "in_filter": 1, 
-   "label": "Customer Group", 
-   "oldfieldname": "customer_group", 
-   "oldfieldtype": "Link", 
-   "options": "Customer Group", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "reqd": 0, 
+   "depends_on": "customer",
+   "description": "<a href=\"#Sales Browser/Customer Group\">Add / Edit</a>",
+   "fieldname": "customer_group",
+   "fieldtype": "Link",
+   "in_filter": 1,
+   "label": "Customer Group",
+   "oldfieldname": "customer_group",
+   "oldfieldtype": "Link",
+   "options": "Customer Group",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
+   "reqd": 0,
    "search_index": 0
-  }, 
+  },
   {
-   "fieldname": "shipping_address_name", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "label": "Shipping Address", 
-   "options": "Address", 
-   "permlevel": 0, 
+   "fieldname": "shipping_address_name",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "label": "Shipping Address",
+   "options": "Address",
+   "permlevel": 0,
    "print_hide": 1
-  }, 
+  },
   {
-   "fieldname": "shipping_address", 
-   "fieldtype": "Small Text", 
-   "hidden": 1, 
-   "label": "Shipping Address", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "fieldname": "shipping_address",
+   "fieldtype": "Small Text",
+   "hidden": 1,
+   "label": "Shipping Address",
+   "permlevel": 0,
+   "print_hide": 1,
    "read_only": 1
-  }, 
+  },
   {
-   "depends_on": "customer", 
-   "fieldname": "col_break98", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0, 
-   "read_only": 0, 
+   "depends_on": "customer",
+   "fieldname": "col_break98",
+   "fieldtype": "Column Break",
+   "permlevel": 0,
+   "read_only": 0,
    "width": "50%"
-  }, 
+  },
   {
-   "fieldname": "customer_address", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "in_filter": 1, 
-   "label": "Customer Address", 
-   "options": "Address", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "fieldname": "customer_address",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "in_filter": 1,
+   "label": "Customer Address",
+   "options": "Address",
+   "permlevel": 0,
+   "print_hide": 1,
    "read_only": 0
-  }, 
+  },
   {
-   "depends_on": "eval:doc.customer", 
-   "fieldname": "contact_person", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "in_filter": 1, 
-   "label": "Contact Person", 
-   "oldfieldname": "contact_person", 
-   "oldfieldtype": "Link", 
-   "options": "Contact", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
+   "depends_on": "eval:doc.customer",
+   "fieldname": "contact_person",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "in_filter": 1,
+   "label": "Contact Person",
+   "oldfieldname": "contact_person",
+   "oldfieldtype": "Link",
+   "options": "Contact",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
    "reqd": 0
-  }, 
+  },
   {
-   "fieldname": "more_info", 
-   "fieldtype": "Section Break", 
-   "label": "More Info", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-file-text", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "fieldname": "more_info",
+   "fieldtype": "Section Break",
+   "label": "More Info",
+   "oldfieldtype": "Section Break",
+   "options": "icon-file-text",
+   "permlevel": 0,
+   "print_hide": 1,
    "read_only": 0
-  }, 
+  },
   {
-   "fieldname": "campaign", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "label": "Campaign", 
-   "no_copy": 0, 
-   "oldfieldname": "campaign", 
-   "oldfieldtype": "Link", 
-   "options": "Campaign", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
+   "fieldname": "campaign",
+   "fieldtype": "Link",
+   "hidden": 0,
+   "label": "Campaign",
+   "no_copy": 0,
+   "oldfieldname": "campaign",
+   "oldfieldtype": "Link",
+   "options": "Campaign",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
    "report_hide": 0
-  }, 
+  },
   {
-   "fieldname": "source", 
-   "fieldtype": "Select", 
-   "hidden": 0, 
-   "label": "Source", 
-   "no_copy": 0, 
-   "oldfieldname": "source", 
-   "oldfieldtype": "Select", 
-   "options": "\nExisting Customer\nReference\nAdvertisement\nCold Calling\nExhibition\nSupplier Reference\nMass Mailing\nCustomer's Vendor\nCampaign", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
+   "fieldname": "source",
+   "fieldtype": "Select",
+   "hidden": 0,
+   "label": "Source",
+   "no_copy": 0,
+   "oldfieldname": "source",
+   "oldfieldtype": "Select",
+   "options": "\nExisting Customer\nReference\nAdvertisement\nCold Calling\nExhibition\nSupplier Reference\nMass Mailing\nCustomer's Vendor\nCampaign",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
    "report_hide": 0
-  }, 
+  },
   {
-   "allow_on_submit": 0, 
-   "default": "Draft", 
-   "fieldname": "status", 
-   "fieldtype": "Select", 
-   "in_filter": 1, 
-   "in_list_view": 1, 
-   "label": "Status", 
-   "no_copy": 1, 
-   "oldfieldname": "status", 
-   "oldfieldtype": "Select", 
-   "options": "Draft\nSubmitted\nOrdered\nLost\nCancelled", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1, 
-   "reqd": 1, 
+   "allow_on_submit": 0,
+   "default": "Draft",
+   "fieldname": "status",
+   "fieldtype": "Select",
+   "in_filter": 1,
+   "in_list_view": 1,
+   "label": "Status",
+   "no_copy": 1,
+   "oldfieldname": "status",
+   "oldfieldtype": "Select",
+   "options": "Draft\nSubmitted\nOrdered\nLost\nCancelled",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 1,
+   "reqd": 1,
    "search_index": 0
-  }, 
+  },
   {
-   "allow_on_submit": 1, 
-   "fieldname": "order_lost_reason", 
-   "fieldtype": "Small Text", 
-   "label": "Quotation Lost Reason", 
-   "no_copy": 1, 
-   "oldfieldname": "order_lost_reason", 
-   "oldfieldtype": "Small Text", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "allow_on_submit": 1,
+   "fieldname": "order_lost_reason",
+   "fieldtype": "Small Text",
+   "label": "Quotation Lost Reason",
+   "no_copy": 1,
+   "oldfieldname": "order_lost_reason",
+   "oldfieldtype": "Small Text",
+   "permlevel": 0,
+   "print_hide": 1,
    "read_only": 0
-  }, 
+  },
   {
-   "fieldname": "column_break4", 
-   "fieldtype": "Column Break", 
-   "oldfieldtype": "Column Break", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
+   "fieldname": "column_break4",
+   "fieldtype": "Column Break",
+   "oldfieldtype": "Column Break",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
    "width": "50%"
-  }, 
+  },
   {
-   "allow_on_submit": 1, 
-   "fieldname": "letter_head", 
-   "fieldtype": "Link", 
-   "label": "Letter Head", 
-   "oldfieldname": "letter_head", 
-   "oldfieldtype": "Select", 
-   "options": "Letter Head", 
-   "permlevel": 0, 
-   "print_hide": 1, 
+   "allow_on_submit": 1,
+   "fieldname": "letter_head",
+   "fieldtype": "Link",
+   "label": "Letter Head",
+   "oldfieldname": "letter_head",
+   "oldfieldtype": "Select",
+   "options": "Letter Head",
+   "permlevel": 0,
+   "print_hide": 1,
    "read_only": 0
-  }, 
+  },
   {
-   "allow_on_submit": 1, 
-   "fieldname": "select_print_heading", 
-   "fieldtype": "Link", 
-   "label": "Print Heading", 
-   "no_copy": 1, 
-   "oldfieldname": "select_print_heading", 
-   "oldfieldtype": "Link", 
-   "options": "Print Heading", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
+   "allow_on_submit": 1,
+   "fieldname": "select_print_heading",
+   "fieldtype": "Link",
+   "label": "Print Heading",
+   "no_copy": 1,
+   "oldfieldname": "select_print_heading",
+   "oldfieldtype": "Link",
+   "options": "Print Heading",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
    "report_hide": 1
-  }, 
+  },
   {
-   "fieldname": "fiscal_year", 
-   "fieldtype": "Link", 
-   "in_filter": 1, 
-   "label": "Fiscal Year", 
-   "oldfieldname": "fiscal_year", 
-   "oldfieldtype": "Select", 
-   "options": "Fiscal Year", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "reqd": 1, 
+   "fieldname": "fiscal_year",
+   "fieldtype": "Link",
+   "in_filter": 1,
+   "label": "Fiscal Year",
+   "oldfieldname": "fiscal_year",
+   "oldfieldtype": "Select",
+   "options": "Fiscal Year",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 0,
+   "reqd": 1,
    "search_index": 0
-  }, 
+  },
   {
-   "fieldname": "enq_det", 
-   "fieldtype": "Text", 
-   "hidden": 1, 
-   "label": "Opportunity Item", 
-   "no_copy": 0, 
-   "oldfieldname": "enq_det", 
-   "oldfieldtype": "Text", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1, 
+   "fieldname": "enq_det",
+   "fieldtype": "Text",
+   "hidden": 1,
+   "label": "Opportunity Item",
+   "no_copy": 0,
+   "oldfieldname": "enq_det",
+   "oldfieldtype": "Text",
+   "permlevel": 0,
+   "print_hide": 1,
+   "read_only": 1,
    "report_hide": 0
-  }, 
-  {
-   "fieldname": "communication_history", 
-   "fieldtype": "Section Break", 
-   "label": "Communication History", 
-   "oldfieldtype": "Section Break", 
-   "options": "icon-comments", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0
-  }, 
-  {
-   "allow_on_submit": 1, 
-   "depends_on": "eval:!doc.__islocal", 
-   "fieldname": "communication_html", 
-   "fieldtype": "HTML", 
-   "label": "Communication HTML", 
-   "oldfieldname": "follow_up", 
-   "oldfieldtype": "Table", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "width": "40px"
-  }, 
-  {
-   "fieldname": "communications", 
-   "fieldtype": "Table", 
-   "hidden": 1, 
-   "label": "Communications", 
-   "options": "Communication", 
-   "permlevel": 0, 
-   "print_hide": 1
   }
- ], 
- "hide_toolbar": 0, 
- "icon": "icon-shopping-cart", 
- "idx": 1, 
- "is_submittable": 1, 
- "max_attachments": 1, 
- "modified": "2014-09-09 05:35:33.413559", 
- "modified_by": "Administrator", 
- "module": "Selling", 
- "name": "Quotation", 
- "owner": "Administrator", 
+ ],
+ "hide_toolbar": 0,
+ "icon": "icon-shopping-cart",
+ "idx": 1,
+ "is_submittable": 1,
+ "max_attachments": 1,
+ "modified": "2014-09-11 18:53:08.594908",
+ "modified_by": "Administrator",
+ "module": "Selling",
+ "name": "Quotation",
+ "owner": "Administrator",
  "permissions": [
   {
-   "amend": 1, 
-   "cancel": 1, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Sales Manager", 
-   "submit": 1, 
+   "amend": 1,
+   "cancel": 1,
+   "create": 1,
+   "delete": 1,
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Sales User",
+   "submit": 1,
    "write": 1
-  }, 
+  },
   {
-   "amend": 1, 
-   "apply_user_permissions": 1, 
-   "cancel": 1, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Sales User", 
-   "submit": 1, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 1, 
-   "cancel": 0, 
-   "create": 0, 
-   "delete": 0, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Customer", 
-   "submit": 0, 
+   "amend": 0,
+   "cancel": 0,
+   "create": 0,
+   "delete": 0,
+   "match": "",
+   "permlevel": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Sales User",
+   "submit": 0,
    "write": 0
-  }, 
+  },
   {
-   "amend": 1, 
-   "cancel": 1, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Maintenance Manager", 
-   "submit": 1, 
-   "write": 1
-  }, 
+   "cancel": 0,
+   "delete": 0,
+   "email": 1,
+   "match": "",
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Customer"
+  },
   {
-   "amend": 1, 
-   "apply_user_permissions": 1, 
-   "cancel": 1, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Maintenance User", 
-   "submit": 1, 
-   "write": 1
-  }, 
+   "amend": 0,
+   "cancel": 0,
+   "create": 0,
+   "delete": 0,
+   "match": "",
+   "permlevel": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Sales Manager",
+   "submit": 0,
+   "write": 0
+  },
   {
-   "permlevel": 1, 
-   "read": 1, 
-   "role": "Sales Manager", 
+   "amend": 1,
+   "cancel": 1,
+   "create": 1,
+   "delete": 1,
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Sales Manager",
+   "submit": 1,
    "write": 1
+  },
+  {
+   "amend": 1,
+   "cancel": 1,
+   "create": 1,
+   "delete": 1,
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Maintenance Manager",
+   "submit": 1,
+   "write": 1
+  },
+  {
+   "amend": 0,
+   "cancel": 0,
+   "create": 0,
+   "delete": 0,
+   "match": "",
+   "permlevel": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Maintenance Manager",
+   "submit": 0
+  },
+  {
+   "amend": 1,
+   "cancel": 1,
+   "create": 1,
+   "delete": 1,
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Maintenance User",
+   "submit": 1,
+   "write": 1
+  },
+  {
+   "amend": 0,
+   "cancel": 0,
+   "create": 0,
+   "delete": 0,
+   "match": "",
+   "permlevel": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Maintenance User",
+   "submit": 0
   }
- ], 
- "read_only_onload": 1, 
- "search_fields": "status,transaction_date,customer,lead,order_type", 
- "sort_field": "modified", 
+ ],
+ "read_only_onload": 1,
+ "search_fields": "status,transaction_date,customer,lead,order_type",
+ "sort_field": "modified",
  "sort_order": "DESC"
-}
\ No newline at end of file
+}
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index 66e935a..a5460fc 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -13,6 +13,8 @@
 
 {% include "public/js/controllers/accounts.js" %}
 
+cur_frm.email_field = "contact_email";
+
 erpnext.selling.SellingController = erpnext.TransactionController.extend({
 	onload: function() {
 		this._super();
@@ -591,7 +593,7 @@
 		method:'erpnext.projects.doctype.project.project.get_cost_center_name' ,
 		args: {	project_name: frm.doc.project_name	},
 		callback: function(r, rt) {
-			if(!r.exc) { 
+			if(!r.exc) {
 				$.each(frm.doc[cur_frm.cscript.fname] || [], function(i, row) {
 					frappe.model.set_value(row.doctype, row.name, "cost_center", r.message);
 					msgprint(__("Cost Center For Item with Item Code '"+row.item_name+"' has been Changed to "+ r.message));
diff --git a/erpnext/setup/doctype/backup_manager/backup_manager.js b/erpnext/setup/doctype/backup_manager/backup_manager.js
index ee2b1a7..03c6bf9 100644
--- a/erpnext/setup/doctype/backup_manager/backup_manager.js
+++ b/erpnext/setup/doctype/backup_manager/backup_manager.js
@@ -4,17 +4,17 @@
 $.extend(cur_frm.cscript, {
 	refresh: function() {
 		cur_frm.disable_save();
-		
-		if(!(cint(cur_frm.doc.dropbox_access_allowed) || 
+
+		if(!(cint(cur_frm.doc.dropbox_access_allowed) ||
 			cint(cur_frm.doc.gdrive_access_allowed))) {
 				cur_frm.set_intro(__("You can start by selecting backup frequency and granting access for sync"));
 		} else {
 			var services = {
-				"dropbox": __("Dropbox"),
-				"gdrive": __("Google Drive")
+				"dropbox": __("Dropbox")
+				// "gdrive": __("Google Drive")
 			}
 			var active_services = [];
-			
+
 			$.each(services, function(service, label) {
 				var access_allowed = cint(cur_frm.doc[service + "_access_allowed"]);
 				var frequency = cur_frm.doc["upload_backups_to_" + service];
@@ -22,27 +22,27 @@
 					active_services.push(label + " [" + frequency + "]");
 				}
 			});
-			
+
 			if(active_services.length > 0) {
-				cur_frm.set_intro(__("Backups will be uploaded to") + ": " + 
+				cur_frm.set_intro(__("Backups will be uploaded to") + ": " +
 					frappe.utils.comma_and(active_services));
 			} else {
 				cur_frm.set_intro("");
 			}
 		}
-		
+
 	},
-	
+
 	validate_send_notifications_to: function() {
 		if(!cur_frm.doc.send_notifications_to) {
-			msgprint(__("Please specify") + ": " + 
+			msgprint(__("Please specify") + ": " +
 				__(frappe.meta.get_label(cur_frm.doctype, "send_notifications_to")));
 			return false;
 		}
-		
+
 		return true;
 	},
-	
+
 	allow_dropbox_access: function() {
 		if(cur_frm.cscript.validate_send_notifications_to()) {
 			return frappe.call({
@@ -59,7 +59,7 @@
 			});
 		}
 	},
-	
+
 	allow_gdrive_access: function() {
 		if(cur_frm.cscript.validate_send_notifications_to()) {
 			return frappe.call({
@@ -72,7 +72,7 @@
 			});
 		}
 	},
-	
+
 	validate_gdrive: function() {
 		return frappe.call({
 			method: "erpnext.setup.doctype.backup_manager.backup_googledrive.gdrive_callback",
@@ -81,11 +81,11 @@
 			},
 		});
 	},
-	
+
 	upload_backups_to_dropbox: function() {
 		cur_frm.save();
 	},
-	
+
 	// upload_backups_to_gdrive: function() {
 	// 	cur_frm.save();
 	// },
diff --git a/erpnext/setup/doctype/backup_manager/backup_manager.py b/erpnext/setup/doctype/backup_manager/backup_manager.py
index ff4e115..2695a46 100644
--- a/erpnext/setup/doctype/backup_manager/backup_manager.py
+++ b/erpnext/setup/doctype/backup_manager/backup_manager.py
@@ -21,10 +21,10 @@
 def take_backups_if(freq):
 	if frappe.db.get_value("Backup Manager", None, "upload_backups_to_dropbox")==freq:
 		take_backups_dropbox()
-		
+
 	# if frappe.db.get_value("Backup Manager", None, "upload_backups_to_gdrive")==freq:
 	# 	take_backups_gdrive()
-	
+
 @frappe.whitelist()
 def take_backups_dropbox():
 	did_not_upload, error_log = [], []
@@ -32,7 +32,7 @@
 		from erpnext.setup.doctype.backup_manager.backup_dropbox import backup_to_dropbox
 		did_not_upload, error_log = backup_to_dropbox()
 		if did_not_upload: raise Exception
-		
+
 		send_email(True, "Dropbox")
 	except Exception:
 		file_and_error = [" - ".join(f) for f in zip(did_not_upload, error_log)]
@@ -40,7 +40,7 @@
 		frappe.errprint(error_message)
 		send_email(False, "Dropbox", error_message)
 
-#backup to gdrive 
+#backup to gdrive
 @frappe.whitelist()
 def take_backups_gdrive():
 	did_not_upload, error_log = [], []
@@ -48,7 +48,7 @@
 		from erpnext.setup.doctype.backup_manager.backup_googledrive import backup_to_gdrive
 		did_not_upload, error_log = backup_to_gdrive()
 		if did_not_upload: raise Exception
-		
+
 		send_email(True, "Google Drive")
 	except Exception:
 		file_and_error = [" - ".join(f) for f in zip(did_not_upload, error_log)]
@@ -57,10 +57,9 @@
 		send_email(False, "Google Drive", error_message)
 
 def send_email(success, service_name, error_status=None):
-	from frappe.utils.email_lib import sendmail
 	if success:
 		subject = "Backup Upload Successful"
-		message ="""<h3>Backup Uploaded Successfully</h3><p>Hi there, this is just to inform you 
+		message ="""<h3>Backup Uploaded Successfully</h3><p>Hi there, this is just to inform you
 		that your backup was successfully uploaded to your %s account. So relax!</p>
 		""" % service_name
 
@@ -71,9 +70,9 @@
 		<p>Error message: %s</p>
 		<p>Please contact your system manager for more information.</p>
 		""" % (service_name, error_status)
-	
+
 	if not frappe.db:
 		frappe.connect()
-	
+
 	recipients = frappe.db.get_value("Backup Manager", None, "send_notifications_to").split(",")
-	sendmail(recipients, subject=subject, msg=message)
+	frappe.sendmail(recipients=recipients, subject=subject, msg=message)
diff --git a/erpnext/setup/doctype/country/README.md b/erpnext/setup/doctype/country/README.md
deleted file mode 100644
index 0e3f46c..0000000
--- a/erpnext/setup/doctype/country/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Country Master.
\ No newline at end of file
diff --git a/erpnext/setup/doctype/country/__init__.py b/erpnext/setup/doctype/country/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/setup/doctype/country/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/country/country.json b/erpnext/setup/doctype/country/country.json
deleted file mode 100644
index 1798ca1..0000000
--- a/erpnext/setup/doctype/country/country.json
+++ /dev/null
@@ -1,107 +0,0 @@
-{
- "allow_import": 1, 
- "autoname": "field:country_name", 
- "creation": "2013-01-19 10:23:30", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Master", 
- "fields": [
-  {
-   "fieldname": "country_name", 
-   "fieldtype": "Data", 
-   "in_list_view": 1, 
-   "label": "Country Name", 
-   "oldfieldname": "country_name", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
-   "reqd": 1
-  }, 
-  {
-   "fieldname": "date_format", 
-   "fieldtype": "Data", 
-   "in_list_view": 1, 
-   "label": "Date Format", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "time_zones", 
-   "fieldtype": "Text", 
-   "in_list_view": 1, 
-   "label": "Time Zones", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "code", 
-   "fieldtype": "Data", 
-   "in_list_view": 1, 
-   "label": "Code", 
-   "permlevel": 0
-  }
- ], 
- "icon": "icon-globe", 
- "idx": 1, 
- "in_create": 0, 
- "modified": "2014-05-27 03:49:08.984710", 
- "modified_by": "Administrator", 
- "module": "Setup", 
- "name": "Country", 
- "owner": "Administrator", 
- "permissions": [
-  {
-   "amend": 0, 
-   "create": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Sales Master Manager", 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "create": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Purchase Master Manager", 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "apply_user_permissions": 1, 
-   "create": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "HR User", 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "create": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "HR Manager", 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "apply_user_permissions": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "All"
-  }
- ], 
- "read_only": 0
-}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/country/country.py b/erpnext/setup/doctype/country/country.py
deleted file mode 100644
index 5e16f51..0000000
--- a/erpnext/setup/doctype/country/country.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-
-from frappe.model.document import Document
-
-class Country(Document):
-	pass
\ No newline at end of file
diff --git a/erpnext/setup/doctype/country/test_country.py b/erpnext/setup/doctype/country/test_country.py
deleted file mode 100644
index b261066..0000000
--- a/erpnext/setup/doctype/country/test_country.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-test_records = frappe.get_test_records('Country')
\ No newline at end of file
diff --git a/erpnext/setup/doctype/country/test_records.json b/erpnext/setup/doctype/country/test_records.json
deleted file mode 100644
index 5a7c8a5..0000000
--- a/erpnext/setup/doctype/country/test_records.json
+++ /dev/null
@@ -1,6 +0,0 @@
-[
- {
-  "country_name": "_Test Country", 
-  "doctype": "Country"
- }
-]
\ No newline at end of file
diff --git a/erpnext/setup/doctype/currency/README.md b/erpnext/setup/doctype/currency/README.md
deleted file mode 100644
index 3e1558e..0000000
--- a/erpnext/setup/doctype/currency/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Currency Master with details about abbreviation, symbol etc.
\ No newline at end of file
diff --git a/erpnext/setup/doctype/currency/__init__.py b/erpnext/setup/doctype/currency/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/setup/doctype/currency/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/currency/currency.js b/erpnext/setup/doctype/currency/currency.js
deleted file mode 100644
index 79343e9..0000000
--- a/erpnext/setup/doctype/currency/currency.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
-
-cur_frm.cscript.refresh = function(doc) {
-	cur_frm.set_intro("");
-	if(!cur_frm.doc.enabled) {
-		cur_frm.set_intro(__("This Currency is disabled. Enable to use in transactions"))
-	}
-}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/currency/currency.json b/erpnext/setup/doctype/currency/currency.json
deleted file mode 100644
index ee7be19..0000000
--- a/erpnext/setup/doctype/currency/currency.json
+++ /dev/null
@@ -1,117 +0,0 @@
-{
- "autoname": "field:currency_name",
- "creation": "2013-01-28 10:06:02",
- "description": "**Currency** Master",
- "docstatus": 0,
- "doctype": "DocType",
- "fields": [
-  {
-   "fieldname": "currency_name",
-   "fieldtype": "Data",
-   "label": "Currency Name",
-   "oldfieldname": "currency_name",
-   "oldfieldtype": "Data",
-   "permlevel": 0,
-   "reqd": 1
-  },
-  {
-   "fieldname": "enabled",
-   "fieldtype": "Check",
-   "in_list_view": 1,
-   "label": "Enabled",
-   "permlevel": 0
-  },
-  {
-   "description": "Sub-currency. For e.g. \"Cent\"",
-   "fieldname": "fraction",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Fraction",
-   "permlevel": 0
-  },
-  {
-   "description": "1 Currency = [?] Fraction\nFor e.g. 1 USD = 100 Cent",
-   "fieldname": "fraction_units",
-   "fieldtype": "Int",
-   "in_list_view": 1,
-   "label": "Fraction Units",
-   "permlevel": 0
-  },
-  {
-   "description": "A symbol for this currency. For e.g. $",
-   "fieldname": "symbol",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Symbol",
-   "permlevel": 0
-  },
-  {
-   "description": "How should this currency be formatted? If not set, will use system defaults",
-   "fieldname": "number_format",
-   "fieldtype": "Select",
-   "in_list_view": 1,
-   "label": "Number Format",
-   "options": "\n#,###.##\n#.###,##\n# ###.##\n# ###,##\n#'###.##\n#, ###.##\n#,##,###.##\n#,###.###\n#.###\n#,###",
-   "permlevel": 0
-  }
- ],
- "icon": "icon-bitcoin",
- "idx": 1,
- "in_create": 0,
- "modified": "2014-06-18 03:49:09.038451",
- "modified_by": "Administrator",
- "module": "Setup",
- "name": "Currency",
- "owner": "Administrator",
- "permissions": [
-  {
-   "create": 1,
-   "delete": 1,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "Accounts Manager",
-   "submit": 0,
-   "write": 1
-  },
-  {
-   "amend": 0,
-   "create": 1,
-   "delete": 1,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "Sales Master Manager",
-   "submit": 0,
-   "write": 1
-  },
-  {
-   "amend": 0,
-   "create": 1,
-   "delete": 0,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "Purchase Master Manager",
-   "submit": 0,
-   "write": 1
-  },
-  {
-   "apply_user_permissions": 1,
-   "delete": 0,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "All"
-  }
- ],
- "read_only": 0
-}
diff --git a/erpnext/setup/doctype/currency/currency.py b/erpnext/setup/doctype/currency/currency.py
deleted file mode 100644
index abfbe19..0000000
--- a/erpnext/setup/doctype/currency/currency.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe import throw, _
-
-from frappe.model.document import Document
-
-class Currency(Document):
-	def validate(self):
-		frappe.clear_cache()
-
-def validate_conversion_rate(currency, conversion_rate, conversion_rate_label, company):
-	"""common validation for currency and price list currency"""
-
-	company_currency = frappe.db.get_value("Company", company, "default_currency")
-
-	if not conversion_rate:
-		throw(_("{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}.").format(
-			conversion_rate_label, currency, company_currency))
diff --git a/erpnext/setup/doctype/currency/test_currency.py b/erpnext/setup/doctype/currency/test_currency.py
deleted file mode 100644
index f0c6cee..0000000
--- a/erpnext/setup/doctype/currency/test_currency.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-# pre loaded
-
-import frappe
-test_records = frappe.get_test_records('Currency')
\ No newline at end of file
diff --git a/erpnext/setup/doctype/currency/test_records.json b/erpnext/setup/doctype/currency/test_records.json
deleted file mode 100644
index 0637a08..0000000
--- a/erpnext/setup/doctype/currency/test_records.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
\ No newline at end of file
diff --git a/erpnext/setup/doctype/email_digest/email_digest.py b/erpnext/setup/doctype/email_digest/email_digest.py
index 59a42cb..89a87f7 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.py
+++ b/erpnext/setup/doctype/email_digest/email_digest.py
@@ -9,7 +9,6 @@
 from frappe.utils.dateutils import datetime_in_user_format
 from datetime import timedelta
 from dateutil.relativedelta import relativedelta
-from frappe.utils.email_lib import sendmail
 from frappe.core.doctype.user.user import STANDARD_USERS
 
 content_sequence = [
@@ -83,10 +82,10 @@
 				msg_for_this_receipient = self.get_msg_html(self.get_user_specific_content(user_id) + \
 					common_msg)
 				if msg_for_this_receipient:
-					sendmail(recipients=user_id,
+					frappe.sendmail(recipients=user_id,
 						subject="[ERPNext] [{frequency} Digest] {name}".format(
 							frequency=self.frequency, name=self.name),
-						msg=msg_for_this_receipient)
+						msg=msg_for_this_receipient, bulk=True)
 
 	def get_digest_msg(self):
 		return self.get_msg_html(self.get_user_specific_content(frappe.session.user) + \
@@ -295,7 +294,7 @@
 			filter_by_company=False)
 
 	def get_calendar_events(self, user_id):
-		from frappe.core.doctype.event.event import get_events
+		from frappe.desk.doctype.event.event import get_events
 		events = get_events(self.future_from_date.strftime("%Y-%m-%d"), self.future_to_date.strftime("%Y-%m-%d"))
 
 		html = ""
diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.py b/erpnext/setup/doctype/global_defaults/global_defaults.py
index a8905f1..e67ba444 100644
--- a/erpnext/setup/doctype/global_defaults/global_defaults.py
+++ b/erpnext/setup/doctype/global_defaults/global_defaults.py
@@ -6,7 +6,7 @@
 import frappe
 import frappe.defaults
 from frappe.utils import cint
-from frappe.core.doctype.property_setter.property_setter import make_property_setter
+from frappe.custom.doctype.property_setter.property_setter import make_property_setter
 
 keydict = {
 	# "key in defaults": "key in Global Defaults"
diff --git a/erpnext/setup/doctype/jobs_email_settings/README.md b/erpnext/setup/doctype/jobs_email_settings/README.md
deleted file mode 100644
index 8314c55..0000000
--- a/erpnext/setup/doctype/jobs_email_settings/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Settings to extract job applications via email (POP).
\ No newline at end of file
diff --git a/erpnext/setup/doctype/jobs_email_settings/__init__.py b/erpnext/setup/doctype/jobs_email_settings/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/setup/doctype/jobs_email_settings/__init__.py
+++ /dev/null
diff --git a/erpnext/setup/doctype/jobs_email_settings/jobs_email_settings.js b/erpnext/setup/doctype/jobs_email_settings/jobs_email_settings.js
deleted file mode 100644
index cda8fd6..0000000
--- a/erpnext/setup/doctype/jobs_email_settings/jobs_email_settings.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
-
-// For license information, please see license.txt
-
-cur_frm.cscript = {
-	refresh: function(doc) {
-		cur_frm.set_intro("");
-		if(doc.extract_emails) {
-			cur_frm.set_intro(__("Active: Will extract emails from ") + doc.email_id);
-		} else {
-			cur_frm.set_intro(__("Not Active"));
-		}
-	}
-}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/jobs_email_settings/jobs_email_settings.json b/erpnext/setup/doctype/jobs_email_settings/jobs_email_settings.json
deleted file mode 100644
index e6fec9d..0000000
--- a/erpnext/setup/doctype/jobs_email_settings/jobs_email_settings.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "creation": "2013-01-15 16:50:01.000000", 
- "description": "Email settings for jobs email id \"jobs@example.com\"", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "fields": [
-  {
-   "description": "Settings to extract Job Applicants from a mailbox e.g. \"jobs@example.com\"", 
-   "fieldname": "pop3_mail_settings", 
-   "fieldtype": "Section Break", 
-   "label": "POP3 Mail Settings", 
-   "permlevel": 0
-  }, 
-  {
-   "description": "Check to activate", 
-   "fieldname": "extract_emails", 
-   "fieldtype": "Check", 
-   "label": "Extract Emails", 
-   "permlevel": 0
-  }, 
-  {
-   "description": "Email Id where a job applicant will email e.g. \"jobs@example.com\"", 
-   "fieldname": "email_id", 
-   "fieldtype": "Data", 
-   "label": "Email Id", 
-   "permlevel": 0
-  }, 
-  {
-   "description": "POP3 server e.g. (pop.gmail.com)", 
-   "fieldname": "host", 
-   "fieldtype": "Data", 
-   "label": "Host", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "use_ssl", 
-   "fieldtype": "Check", 
-   "label": "Use SSL", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "username", 
-   "fieldtype": "Data", 
-   "label": "Username", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "password", 
-   "fieldtype": "Password", 
-   "label": "Password", 
-   "permlevel": 0
-  }
- ], 
- "icon": "icon-cog", 
- "idx": 1, 
- "issingle": 1, 
- "modified": "2013-12-20 19:23:16.000000", 
- "modified_by": "Administrator", 
- "module": "Setup", 
- "name": "Jobs Email Settings", 
- "owner": "Administrator", 
- "permissions": [
-  {
-   "create": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "role": "System Manager", 
-   "write": 1
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/jobs_email_settings/jobs_email_settings.py b/erpnext/setup/doctype/jobs_email_settings/jobs_email_settings.py
deleted file mode 100644
index 5d8bab8..0000000
--- a/erpnext/setup/doctype/jobs_email_settings/jobs_email_settings.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe import _
-from frappe.utils import cint
-
-from frappe.model.document import Document
-
-class JobsEmailSettings(Document):
-
-	def validate(self):
-		if cint(self.extract_emails) and not (self.email_id and self.host and \
-			self.username and self.password):
-
-			frappe.throw(_("""Host, Email and Password required if emails are to be pulled"""))
diff --git a/erpnext/setup/doctype/naming_series/naming_series.py b/erpnext/setup/doctype/naming_series/naming_series.py
index cb0d437..bd6b708 100644
--- a/erpnext/setup/doctype/naming_series/naming_series.py
+++ b/erpnext/setup/doctype/naming_series/naming_series.py
@@ -12,15 +12,27 @@
 class NamingSeries(Document):
 
 	def get_transactions(self, arg=None):
+		doctypes = list(set(frappe.db.sql_list("""select parent
+				from `tabDocField` where fieldname='naming_series'""")
+			+ frappe.db.sql_list("""select dt from `tabCustom Field`
+				where fieldname='naming_series'""")))
+
+		prefixes = ""
+		for d in doctypes:
+			print d
+			try:
+				options = self.get_options(d)
+			except frappe.DoesNotExistError:
+				continue
+
+			prefixes = prefixes + "\n" + options
+
+		prefixes.replace("\n\n", "\n")
+		prefixes = "\n".join(sorted(prefixes.split()))
+
 		return {
-			"transactions": "\n".join([''] + sorted(list(set(
-				frappe.db.sql_list("""select parent
-					from `tabDocField` where fieldname='naming_series'""")
-				+ frappe.db.sql_list("""select dt from `tabCustom Field`
-					where fieldname='naming_series'""")
-				)))),
-			"prefixes": "\n".join([''] + [i[0] for i in
-				frappe.db.sql("""select name from tabSeries order by name""")])
+			"transactions": "\n".join([''] + sorted(doctypes)),
+			"prefixes": prefixes
 		}
 
 	def scrub_options_list(self, ol):
@@ -110,8 +122,8 @@
 		if not re.match("^[a-zA-Z0-9- /.#]*$", n):
 			throw(_('Special Characters except "-" and "/" not allowed in naming series'))
 
-	def get_options(self, arg=''):
-		return frappe.get_meta(self.select_doc_for_series).get_field("naming_series").options
+	def get_options(self, arg=None):
+		return frappe.get_meta(arg or self.select_doc_for_series).get_field("naming_series").options
 
 	def get_current(self, arg=None):
 		"""get series current"""
@@ -135,7 +147,7 @@
 			msgprint(_("Please select prefix first"))
 
 def set_by_naming_series(doctype, fieldname, naming_series, hide_name_field=True):
-	from frappe.core.doctype.property_setter.property_setter import make_property_setter
+	from frappe.custom.doctype.property_setter.property_setter import make_property_setter
 	if naming_series:
 		make_property_setter(doctype, "naming_series", "hidden", 0, "Check")
 		make_property_setter(doctype, "naming_series", "reqd", 1, "Check")
diff --git a/erpnext/setup/doctype/sales_email_settings/README.md b/erpnext/setup/doctype/sales_email_settings/README.md
deleted file mode 100644
index 8d7d48f..0000000
--- a/erpnext/setup/doctype/sales_email_settings/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Settings for creating new Communication, Leads from sales inbox like "sales@example.com" via POP3.
\ No newline at end of file
diff --git a/erpnext/setup/doctype/sales_email_settings/__init__.py b/erpnext/setup/doctype/sales_email_settings/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/setup/doctype/sales_email_settings/__init__.py
+++ /dev/null
diff --git a/erpnext/setup/doctype/sales_email_settings/sales_email_settings.js b/erpnext/setup/doctype/sales_email_settings/sales_email_settings.js
deleted file mode 100644
index cda8fd6..0000000
--- a/erpnext/setup/doctype/sales_email_settings/sales_email_settings.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
-
-// For license information, please see license.txt
-
-cur_frm.cscript = {
-	refresh: function(doc) {
-		cur_frm.set_intro("");
-		if(doc.extract_emails) {
-			cur_frm.set_intro(__("Active: Will extract emails from ") + doc.email_id);
-		} else {
-			cur_frm.set_intro(__("Not Active"));
-		}
-	}
-}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/sales_email_settings/sales_email_settings.json b/erpnext/setup/doctype/sales_email_settings/sales_email_settings.json
deleted file mode 100644
index c19f2e2..0000000
--- a/erpnext/setup/doctype/sales_email_settings/sales_email_settings.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "creation": "2013-01-16 10:25:26.000000", 
- "description": "Email settings to extract Leads from sales email id e.g. \"sales@example.com\"", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "fields": [
-  {
-   "description": "Email settings to extract Leads from sales email id e.g. \"sales@example.com\"", 
-   "fieldname": "pop3_mail_settings", 
-   "fieldtype": "Section Break", 
-   "label": "POP3 Mail Settings", 
-   "permlevel": 0
-  }, 
-  {
-   "description": "Check to activate", 
-   "fieldname": "extract_emails", 
-   "fieldtype": "Check", 
-   "label": "Extract Emails", 
-   "permlevel": 0
-  }, 
-  {
-   "description": "Email Id where a job applicant will email e.g. \"jobs@example.com\"", 
-   "fieldname": "email_id", 
-   "fieldtype": "Data", 
-   "label": "Email Id", 
-   "permlevel": 0
-  }, 
-  {
-   "description": "POP3 server e.g. (pop.gmail.com)", 
-   "fieldname": "host", 
-   "fieldtype": "Data", 
-   "label": "Host", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "use_ssl", 
-   "fieldtype": "Check", 
-   "label": "Use SSL", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "username", 
-   "fieldtype": "Data", 
-   "label": "Username", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "password", 
-   "fieldtype": "Password", 
-   "label": "Password", 
-   "permlevel": 0
-  }
- ], 
- "icon": "icon-cog", 
- "idx": 1, 
- "issingle": 1, 
- "modified": "2013-12-20 19:21:38.000000", 
- "modified_by": "Administrator", 
- "module": "Setup", 
- "name": "Sales Email Settings", 
- "owner": "Administrator", 
- "permissions": [
-  {
-   "create": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "role": "System Manager", 
-   "write": 1
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/sales_email_settings/sales_email_settings.py b/erpnext/setup/doctype/sales_email_settings/sales_email_settings.py
deleted file mode 100644
index 88dc411..0000000
--- a/erpnext/setup/doctype/sales_email_settings/sales_email_settings.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe import _
-from frappe.utils import cint
-
-from frappe.model.document import Document
-
-class SalesEmailSettings(Document):
-		
-	def validate(self):
-		if cint(self.extract_emails) and not (self.email_id and self.host and \
-			self.username and self.password):
-			
-			frappe.msgprint(_("""Host, Email and Password required if emails are to be pulled"""),
-				raise_exception=True)
\ No newline at end of file
diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py
index 0e8e58d..dce101e 100644
--- a/erpnext/setup/install.py
+++ b/erpnext/setup/install.py
@@ -13,7 +13,6 @@
 def after_install():
 	frappe.get_doc({'doctype': "Role", "role_name": "Analytics"}).insert()
 	set_single_defaults()
-	import_country_and_currency()
 	from erpnext.accounts.doctype.chart_of_accounts.import_charts import import_charts
 	import_charts()
 	frappe.db.set_default('desktop:home_page', 'setup-wizard')
@@ -22,38 +21,6 @@
 	add_all_roles_to("Administrator")
 	frappe.db.commit()
 
-def import_country_and_currency():
-	from frappe.country_info import get_all
-	data = get_all()
-
-	for name in data:
-		country = frappe._dict(data[name])
-		add_country_and_currency(name, country)
-
-	# enable frequently used currencies
-	for currency in ("INR", "USD", "GBP", "EUR", "AED", "AUD", "JPY", "CNY", "CHF"):
-		frappe.db.set_value("Currency", currency, "enabled", 1)
-
-def add_country_and_currency(name, country):
-	if not frappe.db.exists("Country", name):
-		frappe.get_doc({
-			"doctype": "Country",
-			"country_name": name,
-			"code": country.code,
-			"date_format": country.date_format or "dd-mm-yyyy",
-			"time_zones": "\n".join(country.timezones or [])
-		}).insert()
-
-	if country.currency and not frappe.db.exists("Currency", country.currency):
-		frappe.get_doc({
-			"doctype": "Currency",
-			"currency_name": country.currency,
-			"fraction": country.currency_fraction,
-			"symbol": country.currency_symbol,
-			"fraction_units": country.currency_fraction_units,
-			"number_format": country.number_format
-		}).insert()
-
 def feature_setup():
 	"""save global defaults and features setup"""
 	doc = frappe.get_doc("Features Setup", "Features Setup")
@@ -85,6 +52,3 @@
 				pass
 
 	frappe.db.set_default("date_format", "dd-mm-yyyy")
-
-	frappe.db.set_value("Outgoing Email Settings", "Outgoing Email Settings", "footer",
-		default_mail_footer)
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py
index d3942e4..cc1cd23 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.py
@@ -8,7 +8,7 @@
 from frappe import _
 from frappe.utils.file_manager import save_file
 from frappe.translate import set_default_language, get_dict, get_lang_dict, send_translations
-from frappe.country_info import get_country_info
+from frappe.geo.country_info import get_country_info
 from frappe.utils.nestedset import get_root_of
 from default_website import website_maker
 import install_fixtures
@@ -227,9 +227,11 @@
 
 def create_feed_and_todo():
 	"""update activty feed and create todo for creation of item, customer, vendor"""
-	from erpnext.home import make_feed
-	make_feed('Comment', 'ToDo', '', frappe.session['user'],
-		'ERNext Setup Complete!', '#6B24B3')
+	frappe.get_doc({
+		"doctype": "Feed",
+		"feedtype": "Comment",
+		"subject": "ERPNext Setup Complete!"
+	}).insert(ignore_permissions=True)
 
 def create_email_digest():
 	from frappe.utils.user import get_system_managers
diff --git a/erpnext/startup/event_handlers.py b/erpnext/startup/event_handlers.py
deleted file mode 100644
index 6dac990..0000000
--- a/erpnext/startup/event_handlers.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt"
-
-
-from __future__ import unicode_literals
-import frappe
-from frappe.utils import nowtime
-from frappe.utils.user import get_user_fullname
-from erpnext.home import make_feed
-
-def on_session_creation(login_manager):
-	"""make feed"""
-	if frappe.session['user'] != 'Guest':
-		# create feed
-		make_feed('Login', 'User', login_manager.user, login_manager.user,
-			'%s logged in at %s' % (get_user_fullname(login_manager.user), nowtime()),
-			login_manager.user=='Administrator' and '#8CA2B3' or '#1B750D')
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index eeda2ce..05ad09b 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -21,6 +21,9 @@
 	tname = 'Material Request Item'
 	fname = 'indent_details'
 
+	def get_feed(self):
+		return _("{0}: {1}").format(self.status, self.material_request_type)
+
 	def check_if_already_pulled(self):
 		pass#if self.[d.sales_order_no for d in self.get('indent_details')]
 
diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py
index 14c409b..bc49090 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.py
+++ b/erpnext/stock/doctype/serial_no/serial_no.py
@@ -192,9 +192,6 @@
 			self.set_sales_details(last_sle.get("delivery_sle"))
 			self.set_maintenance_status()
 
-	def on_communication(self):
-		return
-
 def process_serial_no(sle):
 	item_det = get_item_details(sle.item_code)
 	validate_serial_no(sle, item_det)
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index c3aab6a..74f88f2 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -26,6 +26,10 @@
 
 class StockEntry(StockController):
 	fname = 'mtn_details'
+
+	def get_feed(self):
+		return _("From {0} to {1}").format(self.from_warehouse, self.to_warehouse)
+
 	def onload(self):
 		if self.docstatus==1:
 			for item in self.get(self.fname):
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index fffb52e..19f9724 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -8,6 +8,7 @@
 import json
 from erpnext.accounts.doctype.pricing_rule.pricing_rule import get_pricing_rule_for_item
 from erpnext.setup.utils import get_exchange_rate
+from frappe.model.meta import get_field_precision
 
 @frappe.whitelist()
 def get_item_details(args):
@@ -206,8 +207,7 @@
 		throw(_("Price List not selected"))
 
 def validate_conversion_rate(args, meta):
-	from erpnext.setup.doctype.currency.currency import validate_conversion_rate
-	from frappe.model.meta import get_field_precision
+	from erpnext.controllers.accounts_controller import validate_conversion_rate
 
 	# validate currency conversion rate
 	validate_conversion_rate(args.currency, args.conversion_rate,
diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py
index 31fc6a0..2b4e368 100644
--- a/erpnext/stock/utils.py
+++ b/erpnext/stock/utils.py
@@ -6,7 +6,6 @@
 import json
 from frappe.utils import flt, cstr, nowdate, add_days, cint
 from frappe.defaults import get_global_default
-from frappe.utils.email_lib import sendmail
 from erpnext.accounts.utils import get_fiscal_year, FiscalYearError
 
 class InvalidWarehouseCompany(frappe.ValidationError): pass
@@ -345,11 +344,11 @@
 			msg += "<tr><td>" + item.item_code + "</td><td>" + item.warehouse + "</td><td>" + \
 				cstr(item.qty) + "</td><td>" + cstr(item.uom) + "</td></tr>"
 		msg += "</table>"
-	sendmail(email_list, subject='Auto Material Request Generation Notification', msg = msg)
+	frappe.sendmail(recipients=email_list, subject='Auto Material Request Generation Notification', msg = msg)
 
 def notify_errors(exceptions_list):
 	subject = "[Important] [ERPNext] Error(s) while creating Material Requests based on Re-order Levels"
-	msg = """Dear System Manager,
+	content = """Dear System Manager,
 
 An error occured for certain Items while creating Material Requests based on Re-order level.
 
@@ -362,5 +361,5 @@
 Regards,
 Administrator""" % ("\n\n".join(exceptions_list),)
 
-	from frappe.utils.user import get_system_managers
-	sendmail(get_system_managers(), subject=subject, msg=msg)
+	from frappe.email import sendmail_to_system_managers
+	sendmail_to_system_managers(subject, content)
diff --git a/erpnext/support/doctype/customer_issue/customer_issue.py b/erpnext/support/doctype/customer_issue/customer_issue.py
index 45adb0b..9e6300e 100644
--- a/erpnext/support/doctype/customer_issue/customer_issue.py
+++ b/erpnext/support/doctype/customer_issue/customer_issue.py
@@ -12,6 +12,8 @@
 from erpnext.utilities.transaction_base import TransactionBase
 
 class CustomerIssue(TransactionBase):
+	def get_feed(self):
+		return _("{0}: From {1}").format(self.status, self.customer_name)
 
 	def validate(self):
 		if session['user'] != 'Guest' and not self.customer:
diff --git a/erpnext/support/doctype/maintenance_visit/maintenance_visit.py b/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
index e16017d..ef2fb41 100644
--- a/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
+++ b/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
@@ -8,6 +8,8 @@
 from erpnext.utilities.transaction_base import TransactionBase
 
 class MaintenanceVisit(TransactionBase):
+	def get_feed(self):
+		return _("To {0}").format(self.customer_name)
 
 	def get_item_details(self, item_code):
 		return frappe.db.get_value("Item", item_code, ["item_name", "description"], as_dict=1)
diff --git a/erpnext/support/doctype/newsletter/newsletter.py b/erpnext/support/doctype/newsletter/newsletter.py
index 15bf0da..1a9713f 100644
--- a/erpnext/support/doctype/newsletter/newsletter.py
+++ b/erpnext/support/doctype/newsletter/newsletter.py
@@ -94,7 +94,7 @@
 
 		sender = self.send_from or frappe.utils.get_formatted_email(self.owner)
 
-		from frappe.utils.email_lib.bulk import send
+		from frappe.email.bulk import send
 
 		if not frappe.flags.in_test:
 			frappe.db.auto_commit_on_many_writes = True
diff --git a/erpnext/support/doctype/support_email_settings/__init__.py b/erpnext/support/doctype/support_email_settings/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/support/doctype/support_email_settings/__init__.py
+++ /dev/null
diff --git a/erpnext/support/doctype/support_email_settings/support_email_settings.json b/erpnext/support/doctype/support_email_settings/support_email_settings.json
deleted file mode 100644
index dd45049..0000000
--- a/erpnext/support/doctype/support_email_settings/support_email_settings.json
+++ /dev/null
@@ -1,92 +0,0 @@
-{
- "allow_copy": 1, 
- "creation": "2014-03-03 19:48:46.000000", 
- "description": "Email Settings for Outgoing and Incoming Emails.", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "fields": [
-  {
-   "description": "Check this to pull emails from your mailbox", 
-   "fieldname": "sync_support_mails", 
-   "fieldtype": "Check", 
-   "label": "Sync Support Mails", 
-   "permlevel": 0
-  }, 
-  {
-   "description": "Your support email id - must be a valid email - this is where your emails will come!", 
-   "fieldname": "support_email", 
-   "fieldtype": "Data", 
-   "label": "Support Email", 
-   "permlevel": 0
-  }, 
-  {
-   "description": "POP3 mail server (e.g. pop.gmail.com)", 
-   "fieldname": "mail_server", 
-   "fieldtype": "Data", 
-   "label": "POP3 Mail Server", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "use_ssl", 
-   "fieldtype": "Check", 
-   "label": "Use SSL", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "mail_login", 
-   "fieldtype": "Data", 
-   "label": "User Name", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "mail_password", 
-   "fieldtype": "Password", 
-   "label": "Support Password", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "cb1", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0
-  }, 
-  {
-   "description": "Signature to be appended at the end of every email", 
-   "fieldname": "support_signature", 
-   "fieldtype": "Text", 
-   "label": "Signature", 
-   "permlevel": 0
-  }, 
-  {
-   "default": "1", 
-   "fieldname": "send_autoreply", 
-   "fieldtype": "Check", 
-   "label": "Send Autoreply", 
-   "permlevel": 0
-  }, 
-  {
-   "description": "Autoreply when a new mail is received", 
-   "fieldname": "support_autoreply", 
-   "fieldtype": "Text", 
-   "label": "Custom Autoreply Message", 
-   "permlevel": 0
-  }
- ], 
- "icon": "icon-cog", 
- "idx": 1, 
- "in_create": 1, 
- "issingle": 1, 
- "modified": "2014-03-03 20:20:34.000000", 
- "modified_by": "Administrator", 
- "module": "Support", 
- "name": "Support Email Settings", 
- "owner": "Administrator", 
- "permissions": [
-  {
-   "create": 1, 
-   "permlevel": 0, 
-   "read": 1, 
-   "role": "System Manager", 
-   "write": 1
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/support/doctype/support_email_settings/support_email_settings.py b/erpnext/support/doctype/support_email_settings/support_email_settings.py
deleted file mode 100644
index be88891..0000000
--- a/erpnext/support/doctype/support_email_settings/support_email_settings.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# MIT License. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe import _
-from frappe.utils import cint
-from frappe.model.document import Document
-from frappe.utils.email_lib.receive import POP3Mailbox
-import _socket, poplib
-
-class SupportEmailSettings(Document):
-
-	def validate(self):
-		"""
-			Checks support ticket email settings
-		"""
-		if cint(self.sync_support_mails) and self.mail_server and not frappe.local.flags.in_patch:
-			inc_email = frappe._dict(self.as_dict())
-			# inc_email.encode()
-			inc_email.host = self.mail_server
-			inc_email.use_ssl = self.use_ssl
-			try:
-				err_msg = _('User Name or Support Password missing. Please enter and try again.')
-				if not (self.mail_login and self.mail_password):
-					raise AttributeError, err_msg
-				inc_email.username = self.mail_login
-				inc_email.password = self.mail_password
-			except AttributeError, e:
-				frappe.msgprint(err_msg)
-				raise
-
-			pop_mb = POP3Mailbox(inc_email)
-
-			try:
-				pop_mb.connect()
-			except _socket.error, e:
-				# Invalid mail server -- due to refusing connection
-				frappe.msgprint(_('Invalid Mail Server. Please rectify and try again.'))
-				raise
-			except poplib.error_proto, e:
-				frappe.msgprint(_('Invalid User Name or Support Password. Please rectify and try again.'))
-				raise
diff --git a/erpnext/support/doctype/support_ticket/get_support_mails.py b/erpnext/support/doctype/support_ticket/get_support_mails.py
deleted file mode 100644
index 21f7c90..0000000
--- a/erpnext/support/doctype/support_ticket/get_support_mails.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe.utils import cstr, cint, decode_dict, today
-from frappe.utils.email_lib import sendmail
-from frappe.utils.email_lib.receive import POP3Mailbox
-from frappe.core.doctype.communication.communication import _make
-
-class SupportMailbox(POP3Mailbox):
-	def setup(self, args=None):
-		self.email_settings = frappe.get_doc("Support Email Settings", "Support Email Settings")
-		self.settings = args or frappe._dict({
-			"use_ssl": self.email_settings.use_ssl,
-			"host": self.email_settings.mail_server,
-			"username": self.email_settings.mail_login,
-			"password": self.email_settings.mail_password
-		})
-
-	def process_message(self, mail):
-		if mail.from_email == self.email_settings.get('support_email'):
-			return
-		thread_id = mail.get_thread_id()
-		new_ticket = False
-
-		if not (thread_id and frappe.db.exists("Support Ticket", thread_id)):
-			new_ticket = True
-
-		ticket = add_support_communication(mail.subject, mail.content, mail.from_email,
-			docname=None if new_ticket else thread_id, mail=mail)
-
-		if new_ticket and cint(self.email_settings.send_autoreply) and \
-			"mailer-daemon" not in mail.from_email.lower():
-				self.send_auto_reply(ticket)
-
-	def send_auto_reply(self, d):
-		signature = self.email_settings.get('support_signature') or ''
-		response = self.email_settings.get('support_autoreply') or ("""
-A new Ticket has been raised for your query. If you have any additional information, please
-reply back to this mail.
-
-### We will get back to you as soon as possible
-
----
-
-Original Query:
-
-""" + d.description + "\n\n---\n\n" + cstr(signature))
-
-		sendmail(\
-			recipients = [cstr(d.raised_by)], \
-			sender = cstr(self.email_settings.get('support_email')), \
-			subject = '['+cstr(d.name)+'] ' + cstr(d.subject), \
-			msg = cstr(response))
-
-def get_support_mails():
-	if cint(frappe.db.get_value('Support Email Settings', None, 'sync_support_mails')):
-		SupportMailbox()
-
-def add_support_communication(subject, content, sender, docname=None, mail=None):
-	if docname:
-		ticket = frappe.get_doc("Support Ticket", docname)
-		ticket.status = 'Open'
-		ticket.ignore_permissions = True
-		ticket.save()
-	else:
-		ticket = frappe.get_doc(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.ignore_mandatory = True
-		ticket.insert()
-
-	_make(content=content, sender=sender, subject = subject,
-		doctype="Support Ticket", name=ticket.name,
-		date=mail.date if mail else today(), sent_or_received="Received")
-
-	if mail:
-		mail.save_attachments_in_doc(ticket)
-
-	return ticket
diff --git a/erpnext/support/doctype/support_ticket/support_ticket.js b/erpnext/support/doctype/support_ticket/support_ticket.js
index d4531dc..cd77be4 100644
--- a/erpnext/support/doctype/support_ticket/support_ticket.js
+++ b/erpnext/support/doctype/support_ticket/support_ticket.js
@@ -7,11 +7,11 @@
 frappe.provide("erpnext.support");
 
 cur_frm.add_fetch("customer", "customer_name", "customer_name")
+cur_frm.email_field = "raised_by";
 
 $.extend(cur_frm.cscript, {
 	refresh: function(doc) {
 		erpnext.toggle_naming_series();
-		cur_frm.cscript.make_listing(doc);
 		if(!doc.__islocal) {
 			if(cur_frm.fields_dict.status.get_status()=="Write") {
 				if(doc.status!='Closed') cur_frm.add_custom_button('Close',
@@ -26,28 +26,6 @@
 		refresh_field('status');
 	},
 
-	make_listing: function(doc) {
-		var wrapper = cur_frm.fields_dict['thread_html'].wrapper;
-
-		var comm_list = frappe.get_list("Communication", {"parent": doc.name, "parenttype":"Support Ticket"})
-
-		if(!comm_list.length) {
-			comm_list.push({
-				"sender": doc.raised_by,
-				"creation": doc.creation,
-				"subject": doc.subject,
-				"content": doc.description});
-		}
-
-		cur_frm.communication_view = new frappe.views.CommunicationList({
-			list: comm_list,
-			parent: wrapper,
-			doc: doc,
-			recipients: doc.raised_by
-		})
-
-	},
-
 	'Close Ticket': function() {
 		cur_frm.cscript.set_status("Closed");
 	},
diff --git a/erpnext/support/doctype/support_ticket/support_ticket.json b/erpnext/support/doctype/support_ticket/support_ticket.json
index 91bc884..3a66c5b 100644
--- a/erpnext/support/doctype/support_ticket/support_ticket.json
+++ b/erpnext/support/doctype/support_ticket/support_ticket.json
@@ -1,5 +1,6 @@
 {
-  "autoname": "naming_series:", 
+ "allow_attach": 1, 
+ "autoname": "naming_series:", 
  "creation": "2013-02-01 10:36:25", 
  "docstatus": 0, 
  "doctype": "DocType", 
@@ -68,13 +69,6 @@
    "reqd": 1
   }, 
   {
-   "fieldname": "sb00", 
-   "fieldtype": "Section Break", 
-   "label": "Messages", 
-   "options": "icon-comments", 
-   "permlevel": 0
-  }, 
-  {
    "depends_on": "eval:doc.__islocal", 
    "fieldname": "description", 
    "fieldtype": "Text", 
@@ -85,14 +79,6 @@
    "reqd": 0
   }, 
   {
-   "depends_on": "eval:!doc.__islocal", 
-   "fieldname": "thread_html", 
-   "fieldtype": "HTML", 
-   "label": "Thread HTML", 
-   "permlevel": 0, 
-   "read_only": 1
-  }, 
-  {
    "fieldname": "fold", 
    "fieldtype": "Fold", 
    "permlevel": 0
@@ -228,20 +214,11 @@
    "hidden": 1, 
    "label": "Content Type", 
    "permlevel": 0
-  }, 
-  {
-   "fieldname": "communications", 
-   "fieldtype": "Table", 
-   "hidden": 1, 
-   "label": "Communications", 
-   "options": "Communication", 
-   "permlevel": 0, 
-   "print_hide": 1
   }
  ], 
  "icon": "icon-ticket", 
  "idx": 1, 
- "modified": "2014-08-12 05:25:45.420934", 
+ "modified": "2014-09-11 18:53:21.140997", 
  "modified_by": "Administrator", 
  "module": "Support", 
  "name": "Support Ticket", 
@@ -249,6 +226,7 @@
  "permissions": [
   {
    "amend": 0, 
+   "cancel": 0, 
    "create": 1, 
    "delete": 0, 
    "email": 1, 
@@ -262,7 +240,7 @@
   }, 
   {
    "amend": 0, 
-   "apply_user_permissions": 1, 
+   "cancel": 0, 
    "create": 1, 
    "delete": 0, 
    "email": 1, 
@@ -276,7 +254,7 @@
   }, 
   {
    "amend": 0, 
-   "apply_user_permissions": 1, 
+   "cancel": 0, 
    "create": 1, 
    "delete": 1, 
    "email": 1, 
@@ -287,6 +265,30 @@
    "role": "Support Team", 
    "submit": 0, 
    "write": 1
+  }, 
+  {
+   "amend": 0, 
+   "cancel": 0, 
+   "create": 0, 
+   "delete": 0, 
+   "permlevel": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Support Team", 
+   "submit": 0, 
+   "write": 1
+  }, 
+  {
+   "amend": 0, 
+   "cancel": 0, 
+   "create": 0, 
+   "delete": 0, 
+   "permlevel": 2, 
+   "read": 1, 
+   "report": 1, 
+   "role": "Support Team", 
+   "submit": 0, 
+   "write": 0
   }
  ], 
  "search_fields": "status,customer,subject,raised_by", 
diff --git a/erpnext/support/doctype/support_ticket/support_ticket.py b/erpnext/support/doctype/support_ticket/support_ticket.py
index 4cdc20a..4e24571 100644
--- a/erpnext/support/doctype/support_ticket/support_ticket.py
+++ b/erpnext/support/doctype/support_ticket/support_ticket.py
@@ -3,24 +3,14 @@
 
 from __future__ import unicode_literals
 import frappe
+from frappe import _
 
-from erpnext.utilities.transaction_base import TransactionBase
-from frappe.utils import now, extract_email_id
+from frappe.model.document import Document
+from frappe.utils import now
 
-class SupportTicket(TransactionBase):
-
-	def get_sender(self, comm):
-		return frappe.db.get_value('Support Email Settings',None,'support_email')
-
-	def get_subject(self, comm):
-		return '[' + self.name + '] ' + (comm.subject or 'No Subject Specified')
-
-	def get_content(self, comm):
-		signature = frappe.db.get_value('Support Email Settings',None,'support_signature')
-		content = comm.content
-		if signature:
-			content += '<p>' + signature + '</p>'
-		return content
+class SupportTicket(Document):
+	def get_feed(self):
+		return "{0}: {1}".format(_(self.status), self.subject)
 
 	def get_portal_page(self):
 		return "ticket"
@@ -30,7 +20,7 @@
 		self.set_lead_contact(self.raised_by)
 
 		if self.status == "Closed":
-			from frappe.widgets.form.assign_to import clear
+			from frappe.desk.form.assign_to import clear
 			clear(self.doctype, self.name)
 
 	def set_lead_contact(self, email_id):
diff --git a/erpnext/templates/utils.py b/erpnext/templates/utils.py
index d3c93eb..9892924 100644
--- a/erpnext/templates/utils.py
+++ b/erpnext/templates/utils.py
@@ -7,19 +7,14 @@
 @frappe.whitelist(allow_guest=True)
 def send_message(subject="Website Query", message="", sender="", status="Open"):
 	from frappe.templates.pages.contact import send_message as website_send_message
-	res = website_send_message(subject, message, sender)
 
-	if not res:
-		return
+	website_send_message(subject, message, sender)
 
-	if subject=="Support":
-		# create support ticket
-		from erpnext.support.doctype.support_ticket.get_support_mails import add_support_communication
-		add_support_communication(subject, message, sender, mail=None)
-	else:
-		# make lead / communication
-		from erpnext.selling.doctype.lead.get_leads import add_sales_communication
-		add_sales_communication(subject or "Website Query", message, sender, sender,
-			mail=None, status=status)
-
-	return res
+	comm = frappe.get_doc({
+		"doctype":"Communication",
+		"subject": subject,
+		"content": message,
+		"sender": sender,
+		"sent_or_received": "Received"
+	})
+	comm.insert(ignore_permissions=True)
diff --git a/erpnext/utilities/doctype/contact/contact.js b/erpnext/utilities/doctype/contact/contact.js
index f2a2fdc..fe407d9 100644
--- a/erpnext/utilities/doctype/contact/contact.js
+++ b/erpnext/utilities/doctype/contact/contact.js
@@ -3,16 +3,8 @@
 
 {% include 'controllers/js/contact_address_common.js' %};
 
-cur_frm.cscript.refresh = function(doc) {
-	cur_frm.communication_view = new frappe.views.CommunicationList({
-		list: frappe.get_list("Communication", {"parent": doc.name, "parenttype": "Contact"}),
-		parent: cur_frm.fields_dict.communication_html.wrapper,
-		doc: doc,
-		recipients: doc.email_id
-	});
-}
-
+cur_frm.email_field = "email_id";
 cur_frm.cscript.hide_dialog = function() {
 	if(cur_frm.contact_list)
 		cur_frm.contact_list.run();
-}
\ No newline at end of file
+}
diff --git a/erpnext/utilities/doctype/contact/contact.json b/erpnext/utilities/doctype/contact/contact.json
index c52cfdc..0207675 100644
--- a/erpnext/utilities/doctype/contact/contact.json
+++ b/erpnext/utilities/doctype/contact/contact.json
@@ -67,21 +67,6 @@
    "reqd": 0
   }, 
   {
-   "fieldname": "sb00", 
-   "fieldtype": "Section Break", 
-   "label": "Communication History", 
-   "options": "icon-comments", 
-   "permlevel": 0, 
-   "print_hide": 1
-  }, 
-  {
-   "fieldname": "communication_html", 
-   "fieldtype": "HTML", 
-   "label": "Communication HTML", 
-   "permlevel": 0, 
-   "print_hide": 1
-  }, 
-  {
    "fieldname": "contact_details", 
    "fieldtype": "Section Break", 
    "label": "Reference", 
@@ -187,28 +172,20 @@
    "fieldtype": "Check", 
    "label": "Unsubscribed", 
    "permlevel": 0
-  }, 
-  {
-   "fieldname": "communications", 
-   "fieldtype": "Table", 
-   "hidden": 1, 
-   "label": "Communications", 
-   "options": "Communication", 
-   "permlevel": 0, 
-   "print_hide": 1
   }
  ], 
  "icon": "icon-user", 
  "idx": 1, 
  "in_create": 0, 
  "in_dialog": 0, 
- "modified": "2014-07-30 05:44:25.767076", 
+ "modified": "2014-09-11 18:53:17.311624", 
  "modified_by": "Administrator", 
  "module": "Utilities", 
  "name": "Contact", 
  "owner": "Administrator", 
  "permissions": [
   {
+   "cancel": 0, 
    "create": 1, 
    "delete": 1, 
    "email": 1, 
@@ -222,6 +199,7 @@
   }, 
   {
    "amend": 0, 
+   "cancel": 0, 
    "create": 1, 
    "delete": 1, 
    "email": 1, 
@@ -234,6 +212,7 @@
    "write": 1
   }, 
   {
+   "cancel": 0, 
    "create": 1, 
    "delete": 1, 
    "email": 1, 
@@ -246,6 +225,7 @@
    "write": 1
   }, 
   {
+   "cancel": 0, 
    "create": 1, 
    "delete": 0, 
    "email": 1, 
@@ -258,6 +238,7 @@
    "write": 1
   }, 
   {
+   "cancel": 0, 
    "create": 1, 
    "delete": 0, 
    "email": 1, 
@@ -270,6 +251,7 @@
    "write": 1
   }, 
   {
+   "cancel": 0, 
    "create": 1, 
    "delete": 0, 
    "email": 1, 
@@ -282,6 +264,7 @@
    "write": 1
   }, 
   {
+   "cancel": 0, 
    "create": 1, 
    "delete": 0, 
    "email": 1, 
@@ -294,7 +277,7 @@
    "write": 1
   }, 
   {
-   "apply_user_permissions": 1, 
+   "cancel": 0, 
    "create": 1, 
    "delete": 0, 
    "email": 1, 
@@ -307,7 +290,7 @@
    "write": 1
   }, 
   {
-   "apply_user_permissions": 1, 
+   "cancel": 0, 
    "create": 1, 
    "delete": 0, 
    "email": 1, 
@@ -320,7 +303,7 @@
    "write": 1
   }, 
   {
-   "apply_user_permissions": 1, 
+   "cancel": 0, 
    "create": 1, 
    "delete": 0, 
    "email": 1, 
@@ -333,7 +316,7 @@
    "write": 1
   }, 
   {
-   "apply_user_permissions": 1, 
+   "cancel": 0, 
    "create": 1, 
    "delete": 0, 
    "email": 1, 
@@ -344,6 +327,18 @@
    "role": "Accounts User", 
    "submit": 0, 
    "write": 1
+  }, 
+  {
+   "amend": 0, 
+   "cancel": 0, 
+   "create": 0, 
+   "delete": 0, 
+   "match": "", 
+   "permlevel": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "All", 
+   "submit": 0
   }
  ]
 }
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/note/README.md b/erpnext/utilities/doctype/note/README.md
deleted file mode 100644
index 95d7b33..0000000
--- a/erpnext/utilities/doctype/note/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Shared Note. (Page with standard information, links, attachments).
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/note/note.json b/erpnext/utilities/doctype/note/note.json
deleted file mode 100644
index 66d99f4..0000000
--- a/erpnext/utilities/doctype/note/note.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "allow_rename": 1, 
- "creation": "2013-05-24 13:41:00", 
- "description": "Note is a free page where users can share documents / notes", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Transaction", 
- "fields": [
-  {
-   "fieldname": "title", 
-   "fieldtype": "Data", 
-   "in_list_view": 0, 
-   "label": "Title", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "reqd": 1
-  }, 
-  {
-   "description": "Help: To link to another record in the system, use \"#Form/Note/[Note Name]\" as the Link URL. (don't use \"http://\")", 
-   "fieldname": "content", 
-   "fieldtype": "Text Editor", 
-   "in_list_view": 0, 
-   "label": "Content", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "share", 
-   "fieldtype": "Section Break", 
-   "label": "Share", 
-   "permlevel": 0
-  }, 
-  {
-   "description": "Everyone can read", 
-   "fieldname": "public", 
-   "fieldtype": "Check", 
-   "in_list_view": 1, 
-   "label": "Public", 
-   "permlevel": 0, 
-   "print_hide": 1
-  }, 
-  {
-   "fieldname": "share_with", 
-   "fieldtype": "Table", 
-   "label": "Share With", 
-   "options": "Note User", 
-   "permlevel": 0, 
-   "print_hide": 1
-  }
- ], 
- "icon": "icon-file-text", 
- "idx": 1, 
- "modified": "2014-07-30 03:24:38.302928", 
- "modified_by": "Administrator", 
- "module": "Utilities", 
- "name": "Note", 
- "owner": "Administrator", 
- "permissions": [
-  {
-   "apply_user_permissions": 1, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "role": "All", 
-   "write": 1
-  }
- ], 
- "read_only_onload": 1
-}
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/note/note.py b/erpnext/utilities/doctype/note/note.py
deleted file mode 100644
index 2db4137..0000000
--- a/erpnext/utilities/doctype/note/note.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe import _
-from frappe.model.document import Document
-
-class Note(Document):
-	def autoname(self):
-		# replace forbidden characters
-		import re
-		self.name = re.sub("[%'\"#*?`]", "", self.title.strip())
-
-	def before_print(self):
-		self.print_heading = self.name
-		self.sub_heading = ""
-
-def get_permission_query_conditions(user):
-	if not user: user = frappe.session.user
-
-	if user == "Administrator":
-		return ""
-
-	return """(`tabNote`.public=1 or `tabNote`.owner="{user}" or exists (
-		select name from `tabNote User`
-			where `tabNote User`.parent=`tabNote`.name
-			and `tabNote User`.user="{user}"))""".format(user=user)
-
-def has_permission(doc, ptype, user):
-	if doc.public == 1 or user == "Administrator":
-		return True
-
-	if user == doc.owner:
-		return True
-
-	note_user_map = dict((d.user, d) for d in doc.get("share_with"))
-	if user in note_user_map:
-		if ptype == "read":
-			return True
-		elif note_user_map.get(user).permission == "Edit":
-			return True
-
-	return False
diff --git a/erpnext/utilities/doctype/note/note_list.html b/erpnext/utilities/doctype/note/note_list.html
deleted file mode 100644
index d3289d2..0000000
--- a/erpnext/utilities/doctype/note/note_list.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<div class="row" style="max-height: 30px;">
-	<div class="col-xs-12">
-		<div class="text-ellipsis">
-			{%= list.get_avatar_and_id(doc) %}
-
-			{% if(!doc.public) { %}
-			<span style="margin-right: 8px;"
-				title="{%= __("Private") %}" class="filterable"
-				data-filter="public,=,Yes">
-				<i class="icon-lock text-muted"></i>
-			</span>
-			{% } %}
-
-		</div>
-	</div>
-</div>
diff --git a/erpnext/utilities/doctype/note/note_list.js b/erpnext/utilities/doctype/note/note_list.js
deleted file mode 100644
index 161ebad..0000000
--- a/erpnext/utilities/doctype/note/note_list.js
+++ /dev/null
@@ -1,3 +0,0 @@
-frappe.listview_settings['Note'] = {
-	add_fields: ["title", "public"],
-}
diff --git a/erpnext/utilities/doctype/note/test_note.py b/erpnext/utilities/doctype/note/test_note.py
deleted file mode 100644
index 997c57b..0000000
--- a/erpnext/utilities/doctype/note/test_note.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors and Contributors
-# See license.txt
-
-import frappe
-import unittest
-
-test_records = frappe.get_test_records('Note')
-
-class TestNote(unittest.TestCase):
-	pass
diff --git a/erpnext/utilities/doctype/note/test_records.json b/erpnext/utilities/doctype/note/test_records.json
deleted file mode 100644
index f3d7cff..0000000
--- a/erpnext/utilities/doctype/note/test_records.json
+++ /dev/null
@@ -1,7 +0,0 @@
-[
-	{
-		"doctype": "Note",
-		"name": "_Test Note 1",
-		"title": "Test Note Title"
-	}
-]
diff --git a/erpnext/utilities/doctype/note_user/README.md b/erpnext/utilities/doctype/note_user/README.md
deleted file mode 100644
index a8e066d..0000000
--- a/erpnext/utilities/doctype/note_user/README.md
+++ /dev/null
@@ -1 +0,0 @@
-User who can access / edit the parent Note.
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/note_user/__init__.py b/erpnext/utilities/doctype/note_user/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/utilities/doctype/note_user/__init__.py
+++ /dev/null
diff --git a/erpnext/utilities/doctype/note_user/note_user.json b/erpnext/utilities/doctype/note_user/note_user.json
deleted file mode 100644
index e67a75c..0000000
--- a/erpnext/utilities/doctype/note_user/note_user.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "creation": "2013-05-24 14:24:48", 
- "description": "List of users who can edit a particular Note", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Other", 
- "fields": [
-  {
-   "fieldname": "user", 
-   "fieldtype": "Link", 
-   "ignore_user_permissions": 1, 
-   "in_list_view": 1, 
-   "label": "User", 
-   "options": "User", 
-   "permlevel": 0, 
-   "reqd": 1
-  }, 
-  {
-   "default": "Edit", 
-   "fieldname": "permission", 
-   "fieldtype": "Select", 
-   "in_list_view": 1, 
-   "label": "Permission", 
-   "options": "Edit\nRead", 
-   "permlevel": 0
-  }
- ], 
- "idx": 1, 
- "istable": 1, 
- "modified": "2014-06-04 02:33:27.466061", 
- "modified_by": "Administrator", 
- "module": "Utilities", 
- "name": "Note User", 
- "owner": "Administrator", 
- "permissions": []
-}
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/note_user/note_user.py b/erpnext/utilities/doctype/note_user/note_user.py
deleted file mode 100644
index 1594f78..0000000
--- a/erpnext/utilities/doctype/note_user/note_user.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import frappe
-
-from frappe.model.document import Document
-
-class NoteUser(Document):
-	pass
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 5cea41c..be7f892 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,6 @@
 from setuptools import setup, find_packages
-import os
 
-version = "4.3.0"
+version = "5.0.0-alpha"
 
 with open("requirements.txt", "r") as f:
 	install_requires = f.readlines()