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/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.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/setup.py b/erpnext/config/setup.py
index 8db9ef2..82fed9d 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 = [
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..0f3dc48 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):
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..6c09030 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -20,7 +20,6 @@
 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"]
@@ -28,24 +27,15 @@
 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"
 	}
 
 
 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"
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/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/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/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.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/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/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/email_digest/email_digest.py b/erpnext/setup/doctype/email_digest/email_digest.py
index 90ea22f..c66d3de 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.py
+++ b/erpnext/setup/doctype/email_digest/email_digest.py
@@ -295,7 +295,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/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py
index 2750e21..cc1cd23 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.py
@@ -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/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/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/support_ticket/support_ticket.py b/erpnext/support/doctype/support_ticket/support_ticket.py
index 4cdc20a..1212218 100644
--- a/erpnext/support/doctype/support_ticket/support_ticket.py
+++ b/erpnext/support/doctype/support_ticket/support_ticket.py
@@ -3,11 +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
 
 class SupportTicket(TransactionBase):
+	def get_feed(self):
+		return "{0}: {1}".format(_(self.status, self.subject))
 
 	def get_sender(self, comm):
 		return frappe.db.get_value('Support Email Settings',None,'support_email')
@@ -30,7 +33,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/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/__init__.py b/erpnext/utilities/doctype/note/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/utilities/doctype/note/__init__.py
+++ /dev/null
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
