Removed controller.py
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
index 3374e4a..a966142 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
@@ -6,9 +6,9 @@
 from __future__ import unicode_literals
 import frappe
 from frappe import throw, _
-from frappe.model.controller import DocListController
+from frappe.model.document import Document
 
-class PricingRule(DocListController):
+class PricingRule(Document):
 	def validate(self):
 		self.validate_mandatory()
 		self.cleanup_fields_value()
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py
index f63a767..8dd2759 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py
@@ -4,14 +4,14 @@
 from __future__ import unicode_literals
 import frappe
 from frappe.utils import cint
-from frappe.model.controller import DocListController
+from frappe.model.document import Document
 
-class SalesTaxesandChargesMaster(DocListController):		
+class SalesTaxesandChargesMaster(Document):
 	def validate(self):
 		if self.is_default == 1:
-			frappe.db.sql("""update `tabSales Taxes and Charges Master` set is_default = 0 
-				where ifnull(is_default,0) = 1 and name != %s and company = %s""", 
+			frappe.db.sql("""update `tabSales Taxes and Charges Master` set is_default = 0
+				where ifnull(is_default,0) = 1 and name != %s and company = %s""",
 				(self.name, self.company))
-				
+
 		# at least one territory
-		self.validate_table_has_rows("valid_for_territories")
\ No newline at end of file
+		self.validate_table_has_rows("valid_for_territories")
diff --git a/erpnext/accounts/doctype/shipping_rule/shipping_rule.py b/erpnext/accounts/doctype/shipping_rule/shipping_rule.py
index 55b7ed6..f9f64e4 100644
--- a/erpnext/accounts/doctype/shipping_rule/shipping_rule.py
+++ b/erpnext/accounts/doctype/shipping_rule/shipping_rule.py
@@ -7,15 +7,14 @@
 import frappe
 from frappe import _, msgprint, throw
 from frappe.utils import flt, fmt_money
-from frappe.model.controller import DocListController
+from frappe.model.document import Document
 from erpnext.setup.utils import get_company_currency
 
 class OverlappingConditionError(frappe.ValidationError): pass
 class FromGreaterThanToError(frappe.ValidationError): pass
 class ManyBlankToValuesError(frappe.ValidationError): pass
 
-class ShippingRule(DocListController):
-
+class ShippingRule(Document):
 	def validate(self):
 		self.validate_value("calculate_based_on", "in", ["Net Total", "Net Weight"])
 		self.shipping_rule_conditions = self.get("shipping_rule_conditions")
diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index 4ccdbda..2f655ba 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -5,8 +5,7 @@
 import frappe
 from frappe.utils import flt
 from frappe import msgprint, _, throw
-
-from frappe.model.controller import DocListController
+from frappe.model.document import Document
 
 status_map = {
 	"Contact": [
@@ -53,7 +52,7 @@
 	],
 }
 
-class StatusUpdater(DocListController):
+class StatusUpdater(Document):
 	"""
 		Updates the status of the calling records
 		Delivery Note: Update Delivered Qty, Update Percent and Validate over delivery
diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py
index 4550007..e1a060b 100644
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/erpnext/hr/doctype/employee/employee.py
@@ -9,9 +9,9 @@
 from frappe import throw, _
 import frappe.permissions
 from frappe.defaults import get_restrictions
-from frappe.model.controller import DocListController
+from frappe.model.document import Document
 
-class Employee(DocListController):
+class Employee(Document):
 	def autoname(self):
 		naming_method = frappe.db.get_value("HR Settings", None, "emp_created_by")
 		if not naming_method:
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py
index d74e930..dd24463 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/erpnext/hr/doctype/leave_application/leave_application.py
@@ -14,15 +14,14 @@
 class InvalidLeaveApproverError(frappe.ValidationError): pass
 class LeaveApproverIdentityError(frappe.ValidationError): pass
 
-from frappe.model.controller import DocListController
-class LeaveApplication(DocListController):
-	def setup(self):
+from frappe.model.document import Document
+class LeaveApplication(Document):
+	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)
 		else:
 			self.previous_doc = None
 
-	def validate(self):
 		self.validate_to_date()
 		self.validate_balance_leaves()
 		self.validate_leave_overlap()
diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py
index df42bb5..e29297c 100644
--- a/erpnext/setup/doctype/item_group/item_group.py
+++ b/erpnext/setup/doctype/item_group/item_group.py
@@ -27,8 +27,8 @@
 		self.validate_one_root()
 
 	def after_rename(self, olddn, newdn, merge=False):
-		NestedSet.after_rename(self)
-		WebsiteGenerator.after_rename(self)
+		NestedSet.after_rename(self, olddn, newdn, merge)
+		WebsiteGenerator.after_rename(self, olddn, newdn, merge)
 
 	def on_trash(self):
 		NestedSet.on_trash(self)
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index 62842f1..870fcd0 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -11,11 +11,10 @@
 from erpnext.controllers.stock_controller import StockController
 
 class StockReconciliation(StockController):
-	def setup(self):
+	def validate(self):
 		self.head_row = ["Item Code", "Warehouse", "Quantity", "Valuation Rate"]
 		self.entries = []
 
-	def validate(self):
 		self.validate_data()
 		self.validate_expense_account()