diff --git a/erpnext/accounts/doctype/c_form/c_form.py b/erpnext/accounts/doctype/c_form/c_form.py
index 48c952f..d0df2e4 100644
--- a/erpnext/accounts/doctype/c_form/c_form.py
+++ b/erpnext/accounts/doctype/c_form/c_form.py
@@ -62,7 +62,7 @@
 
 	def set_total_invoiced_amount(self):
 		total = sum([flt(d.grand_total) for d in self.get('invoice_details')])
-		frappe.db.set(self.doc, 'total_invoiced_amount', total)
+		frappe.db.set(self, 'total_invoiced_amount', total)
 
 	def get_invoice_details(self, invoice_no):
 		"""	Pull details from invoices for referrence """
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index d916adb..449fca0 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -374,7 +374,7 @@
 			frappe.db.sql("""delete from `tabC-Form Invoice Detail` where invoice_no = %s
 					and parent = %s""", (self.amended_from,	self.c_form_no))
 
-			frappe.db.set(self.doc, 'c_form_no', '')
+			frappe.db.set(self, 'c_form_no', '')
 			
 	def update_current_stock(self):
 		for d in self.get('entries'):
@@ -422,14 +422,14 @@
 		if cint(self.is_pos) == 1:
 			if flt(self.paid_amount) == 0:
 				if self.cash_bank_account: 
-					frappe.db.set(self.doc, 'paid_amount', 
+					frappe.db.set(self, 'paid_amount', 
 						(flt(self.grand_total) - flt(self.write_off_amount)))
 				else:
 					# show message that the amount is not paid
-					frappe.db.set(self.doc,'paid_amount',0)
+					frappe.db.set(self,'paid_amount',0)
 					frappe.msgprint("Note: Payment Entry will not be created since 'Cash/Bank Account' was not specified.")
 		else:
-			frappe.db.set(self.doc,'paid_amount',0)
+			frappe.db.set(self,'paid_amount',0)
 		
 	def check_prev_docstatus(self):
 		for d in self.get('entries'):
@@ -609,7 +609,7 @@
 	def convert_to_recurring(self):
 		if self.convert_into_recurring_invoice:
 			if not self.recurring_id:
-				frappe.db.set(self.doc, "recurring_id",
+				frappe.db.set(self, "recurring_id",
 					make_autoname("RECINV/.#####"))
 			
 			self.set_next_date()
@@ -645,7 +645,7 @@
 		next_date = get_next_date(self.posting_date,
 			month_map[self.recurring_type], cint(self.repeat_on_day_of_month))
 		
-		frappe.db.set(self.doc, 'next_date', next_date)
+		frappe.db.set(self, 'next_date', next_date)
 	
 def get_next_date(dt, mcount, day=None):
 	dt = getdate(dt)
@@ -794,8 +794,8 @@
 
 
 @frappe.whitelist()
-def make_delivery_note(source_name, target_doclist=None):
-	from frappe.model.mapper import get_mapped_doclist
+def make_delivery_note(source_name, target_doc=None):
+	from frappe.model.mapper import get_mapped_doc
 	
 	def set_missing_values(source, target):
 		bean = frappe.bean(target)
@@ -808,7 +808,7 @@
 			flt(source_doc.rate)
 		target_doc.qty = flt(source_doc.qty) - flt(source_doc.delivered_qty)
 	
-	doclist = get_mapped_doclist("Sales Invoice", source_name, 	{
+	doclist = get_mapped_doc("Sales Invoice", source_name, 	{
 		"Sales Invoice": {
 			"doctype": "Delivery Note", 
 			"validation": {
@@ -835,6 +835,6 @@
 			},
 			"add_if_empty": True
 		}
-	}, target_doclist, set_missing_values)
+	}, target_doc, set_missing_values)
 	
 	return [d.fields for d in doclist]
\ No newline at end of file
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index 7b1c24d..066afe0 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -135,7 +135,7 @@
 	def update_status(self, status):
 		self.check_modified_date()
 		# step 1:=> Set Status
-		frappe.db.set(self.doc,'status',cstr(status))
+		frappe.db.set(self,'status',cstr(status))
 
 		# step 2:=> Update Bin
 		self.update_bin(is_submit = (status == 'Submitted') and 1 or 0, is_stopped = 1)
@@ -154,7 +154,7 @@
 		
 		purchase_controller.update_last_purchase_rate(self, is_submit = 1)
 		
-		frappe.db.set(self.doc,'status','Submitted')
+		frappe.db.set(self,'status','Submitted')
 	 
 	def on_cancel(self):
 		pc_obj = get_obj(dt = 'Purchase Common')		
@@ -172,7 +172,7 @@
 			msgprint("Purchase Invoice : " + cstr(submitted[0][0]) + " has already been submitted !")
 			raise Exception
 
-		frappe.db.set(self.doc,'status','Cancelled')
+		frappe.db.set(self,'status','Cancelled')
 		self.update_prevdoc_status()
 		self.update_bin( is_submit = 0, is_stopped = 0)
 		pc_obj.update_last_purchase_rate(self, is_submit = 0)
@@ -181,8 +181,8 @@
 		pass
 		
 @frappe.whitelist()
-def make_purchase_receipt(source_name, target_doclist=None):
-	from frappe.model.mapper import get_mapped_doclist
+def make_purchase_receipt(source_name, target_doc=None):
+	from frappe.model.mapper import get_mapped_doc
 	
 	def set_missing_values(source, target):
 		bean = frappe.bean(target)
@@ -194,7 +194,7 @@
 		target.amount = (flt(obj.qty) - flt(obj.received_qty)) * flt(obj.rate)
 		target.base_amount = (flt(obj.qty) - flt(obj.received_qty)) * flt(obj.base_rate)
 
-	doclist = get_mapped_doclist("Purchase Order", source_name,	{
+	doclist = get_mapped_doc("Purchase Order", source_name,	{
 		"Purchase Order": {
 			"doctype": "Purchase Receipt", 
 			"validation": {
@@ -215,13 +215,13 @@
 			"doctype": "Purchase Taxes and Charges", 
 			"add_if_empty": True
 		}
-	}, target_doclist, set_missing_values)
+	}, target_doc, set_missing_values)
 
 	return [d.fields for d in doclist]
 	
 @frappe.whitelist()
-def make_purchase_invoice(source_name, target_doclist=None):
-	from frappe.model.mapper import get_mapped_doclist
+def make_purchase_invoice(source_name, target_doc=None):
+	from frappe.model.mapper import get_mapped_doc
 	
 	def set_missing_values(source, target):
 		bean = frappe.bean(target)
@@ -233,7 +233,7 @@
 		if flt(obj.base_rate):
 			target.qty = target.base_amount / flt(obj.base_rate)
 
-	doclist = get_mapped_doclist("Purchase Order", source_name,	{
+	doclist = get_mapped_doc("Purchase Order", source_name,	{
 		"Purchase Order": {
 			"doctype": "Purchase Invoice", 
 			"validation": {
@@ -253,6 +253,6 @@
 			"doctype": "Purchase Taxes and Charges", 
 			"add_if_empty": True
 		}
-	}, target_doclist, set_missing_values)
+	}, target_doc, set_missing_values)
 
 	return [d.fields for d in doclist]
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier/supplier.py b/erpnext/buying/doctype/supplier/supplier.py
index cb97d72..9179bc2 100644
--- a/erpnext/buying/doctype/supplier/supplier.py
+++ b/erpnext/buying/doctype/supplier/supplier.py
@@ -94,7 +94,7 @@
 	def after_rename(self, olddn, newdn, merge=False):
 		set_field = ''
 		if frappe.defaults.get_global_default('supp_master_name') == 'Supplier Name':
-			frappe.db.set(self.doc, "supplier_name", newdn)
+			frappe.db.set(self, "supplier_name", newdn)
 			self.update_contact()
 			set_field = ", supplier_name=%(newdn)s"
 		self.update_supplier_address(newdn, set_field)
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
index 8a11bfe..ef48c79 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -7,9 +7,8 @@
 
 from erpnext.controllers.buying_controller import BuyingController
 class SupplierQuotation(BuyingController):
-	def __init__(self, doc, doclist=None):
-		self.doc, self.doclist = doc, doclist or []
-		self.tname, self.fname = "Supplier Quotation Item", "quotation_items"
+	tname = "Supplier Quotation Item"
+	fname = "quotation_items"
 	
 	def validate(self):
 		super(DocType, self).validate()
@@ -26,10 +25,10 @@
 		self.validate_uom_is_integer("uom", "qty")
 
 	def on_submit(self):
-		frappe.db.set(self.doc, "status", "Submitted")
+		frappe.db.set(self, "status", "Submitted")
 
 	def on_cancel(self):
-		frappe.db.set(self.doc, "status", "Cancelled")
+		frappe.db.set(self, "status", "Cancelled")
 		
 	def on_trash(self):
 		pass
@@ -53,8 +52,8 @@
 		pc.validate_for_items(self)
 
 @frappe.whitelist()
-def make_purchase_order(source_name, target_doclist=None):
-	from frappe.model.mapper import get_mapped_doclist
+def make_purchase_order(source_name, target_doc=None):
+	from frappe.model.mapper import get_mapped_doc
 	
 	def set_missing_values(source, target):
 		bean = frappe.bean(target)
@@ -64,7 +63,7 @@
 	def update_item(obj, target, source_parent):
 		target.conversion_factor = 1
 
-	doclist = get_mapped_doclist("Supplier Quotation", source_name,		{
+	doclist = get_mapped_doc("Supplier Quotation", source_name,		{
 		"Supplier Quotation": {
 			"doctype": "Purchase Order", 
 			"validation": {
@@ -88,6 +87,6 @@
 			"doctype": "Purchase Taxes and Charges", 
 			"add_if_empty": True
 		},
-	}, target_doclist, set_missing_values)
+	}, target_doc, set_missing_values)
 
 	return [d.fields for d in doclist]
\ No newline at end of file
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index ebf84cd..d0e482e 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -103,7 +103,7 @@
 			self.net_total += item.base_amount
 			self.net_total_import += item.amount
 			
-		self.round_floats_in(self.doc, ["net_total", "net_total_import"])
+		self.round_floats_in(self, ["net_total", "net_total_import"])
 		
 	def calculate_totals(self):
 		self.grand_total = flt(self.tax_doclist[-1].total if self.tax_doclist 
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index def5eb0..5495e6f 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -172,7 +172,7 @@
 			self.net_total += item.base_amount
 			self.net_total_export += item.amount
 		
-		self.round_floats_in(self.doc, ["net_total", "net_total_export"])
+		self.round_floats_in(self, ["net_total", "net_total_export"])
 				
 	def calculate_totals(self):
 		self.grand_total = flt(self.tax_doclist and \
@@ -223,7 +223,7 @@
 		# write_off_amount is only for POS Invoice
 		# total_advance is only for non POS Invoice
 		if self.doctype == "Sales Invoice" and self.docstatus == 0:
-			self.round_floats_in(self.doc, ["grand_total", "total_advance", "write_off_amount",
+			self.round_floats_in(self, ["grand_total", "total_advance", "write_off_amount",
 				"paid_amount"])
 			total_amount_to_pay = self.grand_total - self.write_off_amount
 			self.outstanding_amount = flt(total_amount_to_pay - self.total_advance \
@@ -231,7 +231,7 @@
 		
 	def calculate_commission(self):
 		if self.meta.get_field("commission_rate"):
-			self.round_floats_in(self.doc, ["net_total", "commission_rate"])
+			self.round_floats_in(self, ["net_total", "commission_rate"])
 			if self.commission_rate > 100.0:
 				msgprint(_(self.meta.get_label("commission_rate")) + " " + 
 					_("cannot be greater than 100"), raise_exception=True)
diff --git a/erpnext/hr/doctype/appraisal/appraisal.py b/erpnext/hr/doctype/appraisal/appraisal.py
index 4fd1f99..b7b1421 100644
--- a/erpnext/hr/doctype/appraisal/appraisal.py
+++ b/erpnext/hr/doctype/appraisal/appraisal.py
@@ -6,12 +6,11 @@
 
 from frappe.utils import cstr, flt, getdate
 from frappe.model.bean import getlist
-from frappe import msgprint
-
+from frappe import msgprint, _
+from frappe.model.mapper import get_mapped_doc
 from frappe.model.document import Document
 
 class Appraisal(Document):
-
 	def validate(self):
 		if not self.status:
 			self.status = "Draft"
@@ -21,26 +20,23 @@
 		self.calculate_total()
 
 	def get_employee_name(self):
-		emp_nm = frappe.db.sql("select employee_name from `tabEmployee` where name=%s", self.employee)
-		emp_nm= emp_nm and emp_nm[0][0] or ''
-		self.employee_name = emp_nm
-		return emp_nm
+		self.employee_name = frappe.db.get_value("Employee", self.employee, "employee_name")
+		return self.employee_name
 		
 	def validate_dates(self):
 		if getdate(self.start_date) > getdate(self.end_date):
-			msgprint("End Date can not be less than Start Date")
-			raise Exception
+			frappe.throw(_("End Date can not be less than Start Date"))
 	
 	def validate_existing_appraisal(self):
 		chk = frappe.db.sql("""select name from `tabAppraisal` where employee=%s 
 			and (status='Submitted' or status='Completed') 
 			and ((start_date>=%s and start_date<=%s) 
-			or (end_date>=%s and end_date<=%s))""",(self.employee,self.start_date,self.end_date,self.start_date,self.end_date))
+			or (end_date>=%s and end_date<=%s))""",
+			(self.employee,self.start_date,self.end_date,self.start_date,self.end_date))
 		if chk:
-			msgprint("You have already created Appraisal "\
+			frappe.throw("You have already created Appraisal "\
 				+cstr(chk[0][0])+" in the current date range for employee "\
 				+cstr(self.employee_name))
-			raise Exception
 	
 	def calculate_total(self):
 		total, total_w  = 0, 0
@@ -61,22 +57,20 @@
 		self.total_score = total
 			
 	def on_submit(self):
-		frappe.db.set(self.doc, 'status', 'Submitted')
+		frappe.db.set(self, 'status', 'Submitted')
 	
 	def on_cancel(self): 
-		frappe.db.set(self.doc, 'status', 'Cancelled')
+		frappe.db.set(self, 'status', 'Cancelled')
 
 @frappe.whitelist()
-def fetch_appraisal_template(source_name, target_doclist=None):
-	from frappe.model.mapper import get_mapped_doclist
-	
-	doclist = get_mapped_doclist("Appraisal Template", source_name, {
+def fetch_appraisal_template(source_name, target_doc=None):
+	target_doc = get_mapped_doc("Appraisal Template", source_name, {
 		"Appraisal Template": {
 			"doctype": "Appraisal", 
 		}, 
 		"Appraisal Template Goal": {
 			"doctype": "Appraisal Goal", 
 		}
-	}, target_doclist)
+	}, target_doc)
 
-	return [d.fields for d in doclist]
\ No newline at end of file
+	return target_doc
\ No newline at end of file
diff --git a/erpnext/hr/doctype/appraisal_template/appraisal_template.py b/erpnext/hr/doctype/appraisal_template/appraisal_template.py
index bd3cc5f..930d509 100644
--- a/erpnext/hr/doctype/appraisal_template/appraisal_template.py
+++ b/erpnext/hr/doctype/appraisal_template/appraisal_template.py
@@ -8,10 +8,9 @@
 from frappe.model.document import Document
 
 class AppraisalTemplate(Document):
-		
 	def validate(self):
 		self.total_points = 0
-		for d in self.doclist.get({"doctype":"Appraisal Template Goal"}):
+		for d in self.get("kra_sheet"):
 			self.total_points += int(d.per_weightage or 0)
 		
 		if int(self.total_points) != 100:
diff --git a/erpnext/hr/doctype/attendance/attendance.py b/erpnext/hr/doctype/attendance/attendance.py
index 1478e9f..24dd188 100644
--- a/erpnext/hr/doctype/attendance/attendance.py
+++ b/erpnext/hr/doctype/attendance/attendance.py
@@ -6,8 +6,6 @@
 
 from frappe.utils import getdate, nowdate
 from frappe import msgprint, _
-
-
 from frappe.model.document import Document
 
 class Attendance(Document):
@@ -58,4 +56,4 @@
 		# this is done because sometimes user entered wrong employee name 
 		# while uploading employee attendance
 		employee_name = frappe.db.get_value("Employee", self.employee, "employee_name")
-		frappe.db.set(self.doc, 'employee_name', employee_name)
\ No newline at end of file
+		frappe.db.set(self, 'employee_name', employee_name)
\ No newline at end of file
diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.py b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
index 32812e2..f16f615 100755
--- a/erpnext/hr/doctype/leave_allocation/leave_allocation.py
+++ b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
@@ -9,9 +9,6 @@
 from frappe.model.document import Document
 
 class LeaveAllocation(Document):
-	def __init__(self, doc, doclist):
-		self.doc, self.doclist = doc, doclist
-		
 	def validate(self):
 		self.validate_new_leaves_allocated_value()
 		self.check_existing_leave_allocation()
@@ -84,7 +81,7 @@
 			self.leave_type)
 		cf = cf and cint(cf[0][0]) or 0
 		if not cf:
-			frappe.db.set(self.doc,'carry_forward',0)
+			frappe.db.set(self,'carry_forward',0)
 			msgprint("Sorry! You cannot carry forward %s" % (self.leave_type),
 				raise_exception=1)
 
@@ -107,8 +104,8 @@
 
 	def get_total_allocated_leaves(self):
 		leave_det = self.get_carry_forwarded_leaves()
-		frappe.db.set(self.doc,'carry_forwarded_leaves',flt(leave_det['carry_forwarded_leaves']))
-		frappe.db.set(self.doc,'total_leaves_allocated',flt(leave_det['total_leaves_allocated']))
+		frappe.db.set(self,'carry_forwarded_leaves',flt(leave_det['carry_forwarded_leaves']))
+		frappe.db.set(self,'total_leaves_allocated',flt(leave_det['total_leaves_allocated']))
 
 	def check_for_leave_application(self):
 		exists = frappe.db.sql("""select name from `tabLeave Application`
diff --git a/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py b/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py
index 57bb224..81ab56b 100644
--- a/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py
+++ b/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py
@@ -14,11 +14,6 @@
 from frappe.model.document import Document
 
 class LeaveControlPanel(Document):
-	def __init__(self, doc, doclist):
-		self.doc = doc
-		self.doclist = doclist	 
-	
-
 	def get_employees(self):		
 		lst1 = [[self.employee_type,"employment_type"],[self.branch,"branch"],[self.designation,"designation"],[self.department, "department"],[self.grade,"grade"]]
 		condition = "where "
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py
index dbccaef..c81f22d 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.py
@@ -34,8 +34,8 @@
 		return struct and struct[0][0] or ''
 
 	def pull_sal_struct(self, struct):
-		from erpnext.hr.doctype.salary_structure.salary_structure import get_mapped_doclist
-		self.doclist = get_mapped_doclist(struct, self.doclist)
+		from erpnext.hr.doctype.salary_structure.salary_structure import get_mapped_doc
+		self.doclist = get_mapped_doc(struct, self.doclist)
 		
 	def pull_emp_details(self):
 		emp = frappe.db.get_value("Employee", self.employee, 
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.py b/erpnext/hr/doctype/salary_structure/salary_structure.py
index 340ffe9..4c01073 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.py
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.py
@@ -70,11 +70,11 @@
 		self.validate_amount()
 		
 @frappe.whitelist()
-def make_salary_slip(source_name, target_doclist=None):
-	return [d.fields for d in get_mapped_doclist(source_name, target_doclist)]
+def make_salary_slip(source_name, target_doc=None):
+	return [d.fields for d in get_mapped_doc(source_name, target_doc)]
 	
-def get_mapped_doclist(source_name, target_doclist=None):
-	from frappe.model.mapper import get_mapped_doclist
+def get_mapped_doc(source_name, target_doc=None):
+	from frappe.model.mapper import get_mapped_doc
 	
 	def postprocess(source, target):
 		sal_slip = frappe.bean(target)
@@ -82,7 +82,7 @@
 		sal_slip.run_method("get_leave_details")
 		sal_slip.run_method("calculate_net_pay")
 
-	doclist = get_mapped_doclist("Salary Structure", source_name, {
+	doclist = get_mapped_doc("Salary Structure", source_name, {
 		"Salary Structure": {
 			"doctype": "Salary Slip", 
 			"field_map": {
@@ -107,6 +107,6 @@
 			],
 			"add_if_empty": True
 		}
-	}, target_doclist, postprocess)
+	}, target_doc, postprocess)
 
 	return doclist
diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index d3b822b..e3199f9 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -45,8 +45,8 @@
 		self.manage_default_bom()
 
 	def on_cancel(self):
-		frappe.db.set(self.doc, "is_active", 0)
-		frappe.db.set(self.doc, "is_default", 0)
+		frappe.db.set(self, "is_active", 0)
+		frappe.db.set(self, "is_default", 0)
 
 		# check if used in any other bom
 		self.validate_bom_links()
@@ -174,12 +174,12 @@
 		"""
 		if self.is_default and self.is_active:
 			from frappe.model.utils import set_default
-			set_default(self.doc, "item")
+			set_default(self, "item")
 			frappe.db.set_value("Item", self.item, "default_bom", self.name)
 		
 		else:
 			if not self.is_active:
-				frappe.db.set(self.doc, "is_default", 0)
+				frappe.db.set(self, "is_default", 0)
 			
 			frappe.db.sql("update `tabItem` set default_bom = null where name = %s and default_bom = %s", 
 				 (self.item, self.name))
diff --git a/erpnext/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py b/erpnext/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py
index 96696c7..cf7750a 100644
--- a/erpnext/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py
+++ b/erpnext/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py
@@ -10,10 +10,6 @@
 from frappe.model.document import Document
 
 class BomReplaceTool(Document):
-	def __init__( self, doc, doclist=[]):
-		self.doc = doc
-		self.doclist = doclist
-		
 	def replace_bom(self):
 		self.validate_bom()
 		self.update_new_bom()
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py
index 4921d06..a22088a 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/production_order.py
@@ -94,20 +94,20 @@
 
 	def update_status(self, status):
 		if status == 'Stopped':
-			frappe.db.set(self.doc, 'status', cstr(status))
+			frappe.db.set(self, 'status', cstr(status))
 		else:
 			if flt(self.qty) == flt(self.produced_qty):
-				frappe.db.set(self.doc, 'status', 'Completed')
+				frappe.db.set(self, 'status', 'Completed')
 			if flt(self.qty) > flt(self.produced_qty):
-				frappe.db.set(self.doc, 'status', 'In Process')
+				frappe.db.set(self, 'status', 'In Process')
 			if flt(self.produced_qty) == 0:
-				frappe.db.set(self.doc, 'status', 'Submitted')
+				frappe.db.set(self, 'status', 'Submitted')
 
 
 	def on_submit(self):
 		if not self.wip_warehouse:
 			frappe.throw(_("WIP Warehouse required before Submit"))
-		frappe.db.set(self.doc,'status', 'Submitted')
+		frappe.db.set(self,'status', 'Submitted')
 		self.update_planned_qty(self.qty)
 		
 
@@ -119,7 +119,7 @@
 			frappe.throw("""Submitted Stock Entry %s exists against this production order. 
 				Hence can not be cancelled.""" % stock_entry[0][0])
 
-		frappe.db.set(self.doc,'status', 'Cancelled')
+		frappe.db.set(self,'status', 'Cancelled')
 		self.update_planned_qty(-self.qty)
 
 	def update_planned_qty(self, qty):
diff --git a/erpnext/manufacturing/doctype/workstation/workstation.py b/erpnext/manufacturing/doctype/workstation/workstation.py
index c2c492e..ec026c5 100644
--- a/erpnext/manufacturing/doctype/workstation/workstation.py
+++ b/erpnext/manufacturing/doctype/workstation/workstation.py
@@ -8,20 +8,16 @@
 from frappe.model.document import Document
 
 class Workstation(Document):
-  def __init__(self, doc, doclist=[]):
-    self.doc = doc
-    self.doclist = doclist
-
-  def update_bom_operation(self):
-      bom_list = frappe.db.sql("""select DISTINCT parent from `tabBOM Operation` 
-	  	where workstation = %s""", self.name)
-      for bom_no in bom_list:
-        frappe.db.sql("""update `tabBOM Operation` set hour_rate = %s 
-			where parent = %s and workstation = %s""", 
-			(self.hour_rate, bom_no[0], self.name))
-  
-  def on_update(self):
-    frappe.db.set(self.doc, 'overhead', flt(self.hour_rate_electricity) + 
+	def update_bom_operation(self):
+		bom_list = frappe.db.sql("""select DISTINCT parent from `tabBOM Operation` 
+			where workstation = %s""", self.name)
+		for bom_no in bom_list:
+			frappe.db.sql("""update `tabBOM Operation` set hour_rate = %s 
+				where parent = %s and workstation = %s""", 
+				(self.hour_rate, bom_no[0], self.name))
+	
+	def on_update(self):
+		frappe.db.set(self, 'overhead', flt(self.hour_rate_electricity) + 
 		flt(self.hour_rate_consumable) + flt(self.hour_rate_rent))
-    frappe.db.set(self.doc, 'hour_rate', flt(self.hour_rate_labour) + flt(self.overhead))
-    self.update_bom_operation()
\ No newline at end of file
+		frappe.db.set(self, 'hour_rate', flt(self.hour_rate_labour) + flt(self.overhead))
+		self.update_bom_operation()
\ No newline at end of file
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index c9e7992..e5364d0 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -128,7 +128,7 @@
 	def after_rename(self, olddn, newdn, merge=False):
 		set_field = ''
 		if frappe.defaults.get_global_default('cust_master_name') == 'Customer Name':
-			frappe.db.set(self.doc, "customer_name", newdn)
+			frappe.db.set(self, "customer_name", newdn)
 			self.update_contact()
 			set_field = ", customer_name=%(newdn)s"
 		self.update_customer_address(newdn, set_field)
diff --git a/erpnext/selling/doctype/installation_note/installation_note.py b/erpnext/selling/doctype/installation_note/installation_note.py
index 3b1ea40..db6d7ec 100644
--- a/erpnext/selling/doctype/installation_note/installation_note.py
+++ b/erpnext/selling/doctype/installation_note/installation_note.py
@@ -100,12 +100,12 @@
 			msgprint("Please fetch items from Delivery Note selected", raise_exception=1)
 	
 	def on_update(self):
-		frappe.db.set(self.doc, 'status', 'Draft')
+		frappe.db.set(self, 'status', 'Draft')
 	
 	def on_submit(self):
 		self.validate_serial_no()
 		self.update_prevdoc_status()
-		frappe.db.set(self.doc, 'status', 'Submitted')
+		frappe.db.set(self, 'status', 'Submitted')
 	
 	def on_cancel(self):
 		for d in self.get('installed_item_details'):
@@ -115,4 +115,4 @@
 					frappe.db.set_value("Serial No", sr_no, "status", "Delivered")
 
 		self.update_prevdoc_status()
-		frappe.db.set(self.doc, 'status', 'Cancelled')
+		frappe.db.set(self, 'status', 'Cancelled')
diff --git a/erpnext/selling/doctype/lead/lead.py b/erpnext/selling/doctype/lead/lead.py
index 908ab48..9852429 100644
--- a/erpnext/selling/doctype/lead/lead.py
+++ b/erpnext/selling/doctype/lead/lead.py
@@ -71,11 +71,11 @@
 			"status": ["!=", "Lost"]})
 
 @frappe.whitelist()
-def make_customer(source_name, target_doclist=None):
-	return _make_customer(source_name, target_doclist)
+def make_customer(source_name, target_doc=None):
+	return _make_customer(source_name, target_doc)
 
-def _make_customer(source_name, target_doclist=None, ignore_permissions=False):
-	from frappe.model.mapper import get_mapped_doclist
+def _make_customer(source_name, target_doc=None, ignore_permissions=False):
+	from frappe.model.mapper import get_mapped_doc
 	
 	def set_missing_values(source, target):
 		if source.company_name:
@@ -87,7 +87,7 @@
 			
 		target[0].customer_group = frappe.db.get_default("customer_group")
 			
-	doclist = get_mapped_doclist("Lead", source_name, 
+	doclist = get_mapped_doc("Lead", source_name, 
 		{"Lead": {
 			"doctype": "Customer",
 			"field_map": {
@@ -96,15 +96,15 @@
 				"contact_no": "phone_1",
 				"fax": "fax_1"
 			}
-		}}, target_doclist, set_missing_values, ignore_permissions=ignore_permissions)
+		}}, target_doc, set_missing_values, ignore_permissions=ignore_permissions)
 		
 	return [d.fields for d in doclist]
 	
 @frappe.whitelist()
-def make_opportunity(source_name, target_doclist=None):
-	from frappe.model.mapper import get_mapped_doclist
+def make_opportunity(source_name, target_doc=None):
+	from frappe.model.mapper import get_mapped_doc
 		
-	doclist = get_mapped_doclist("Lead", source_name, 
+	doclist = get_mapped_doc("Lead", source_name, 
 		{"Lead": {
 			"doctype": "Opportunity",
 			"field_map": {
@@ -116,7 +116,7 @@
 				"email_id": "contact_email",
 				"mobile_no": "contact_mobile"
 			}
-		}}, target_doclist)
+		}}, target_doc)
 		
 	return [d if isinstance(d, dict) else d.fields for d in doclist]
 	
diff --git a/erpnext/selling/doctype/opportunity/opportunity.py b/erpnext/selling/doctype/opportunity/opportunity.py
index 4c6863c..8a103be 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.py
+++ b/erpnext/selling/doctype/opportunity/opportunity.py
@@ -118,8 +118,8 @@
 		
 	def declare_enquiry_lost(self,arg):
 		if not self.has_quotation():
-			frappe.db.set(self.doc, 'status', 'Lost')
-			frappe.db.set(self.doc, 'order_lost_reason', arg)
+			frappe.db.set(self, 'status', 'Lost')
+			frappe.db.set(self, 'order_lost_reason', arg)
 		else:
 			frappe.throw(_("Cannot declare as lost, because Quotation has been made."))
 
@@ -130,15 +130,15 @@
 		return frappe.db.get_value("Quotation Item", {"prevdoc_docname": self.name, "docstatus": 1})
 		
 @frappe.whitelist()
-def make_quotation(source_name, target_doclist=None):
-	from frappe.model.mapper import get_mapped_doclist
+def make_quotation(source_name, target_doc=None):
+	from frappe.model.mapper import get_mapped_doc
 	
 	def set_missing_values(source, target):
 		quotation = frappe.bean(target)
 		quotation.run_method("onload_post_render")
 		quotation.run_method("calculate_taxes_and_totals")
 	
-	doclist = get_mapped_doclist("Opportunity", source_name, {
+	doclist = get_mapped_doc("Opportunity", source_name, {
 		"Opportunity": {
 			"doctype": "Quotation", 
 			"field_map": {
@@ -159,6 +159,6 @@
 			},
 			"add_if_empty": True
 		}
-	}, target_doclist, set_missing_values)
+	}, target_doc, set_missing_values)
 		
 	return [d.fields for d in doclist]
\ No newline at end of file
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index 8f816c8..bcccdaa 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -59,8 +59,8 @@
 	
 	def declare_order_lost(self, arg):
 		if not self.has_sales_order():
-			frappe.db.set(self.doc, 'status', 'Lost')
-			frappe.db.set(self.doc, 'order_lost_reason', arg)
+			frappe.db.set(self, 'status', 'Lost')
+			frappe.db.set(self, 'order_lost_reason', arg)
 			self.update_opportunity()
 		else:
 			frappe.throw(_("Cannot set as Lost as Sales Order is made."))
@@ -95,11 +95,11 @@
 		
 	
 @frappe.whitelist()
-def make_sales_order(source_name, target_doclist=None):
-	return _make_sales_order(source_name, target_doclist)
+def make_sales_order(source_name, target_doc=None):
+	return _make_sales_order(source_name, target_doc)
 	
-def _make_sales_order(source_name, target_doclist=None, ignore_permissions=False):
-	from frappe.model.mapper import get_mapped_doclist
+def _make_sales_order(source_name, target_doc=None, ignore_permissions=False):
+	from frappe.model.mapper import get_mapped_doc
 	
 	customer = _make_customer(source_name, ignore_permissions)
 	
@@ -112,7 +112,7 @@
 		si.ignore_permissions = ignore_permissions
 		si.run_method("onload_post_render")
 			
-	doclist = get_mapped_doclist("Quotation", source_name, {
+	doclist = get_mapped_doc("Quotation", source_name, {
 			"Quotation": {
 				"doctype": "Sales Order", 
 				"validation": {
@@ -133,7 +133,7 @@
 				"doctype": "Sales Team",
 				"add_if_empty": True
 			}
-		}, target_doclist, set_missing_values, ignore_permissions=ignore_permissions)
+		}, target_doc, set_missing_values, ignore_permissions=ignore_permissions)
 		
 	# postprocess: fetch shipping address, set missing values
 		
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 98ccf11..ff235b1 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -9,20 +9,16 @@
 from frappe.model.bean import getlist
 from frappe.model.code import get_obj
 from frappe import msgprint
-from frappe.model.mapper import get_mapped_doclist
+from frappe.model.mapper import get_mapped_doc
 
 from erpnext.controllers.selling_controller import SellingController
 
 class SalesOrder(SellingController):
-	def __init__(self, doc, doclist=None):
-		self.doc = doc
-		if not doclist: doclist = []
-		self.doclist = doclist
-		self.tname = 'Sales Order Item'
-		self.fname = 'sales_order_details'
-		self.person_tname = 'Target Detail'
-		self.partner_tname = 'Partner Target Detail'
-		self.territory_tname = 'Territory Target Detail'
+	tname = 'Sales Order Item'
+	fname = 'sales_order_details'
+	person_tname = 'Target Detail'
+	partner_tname = 'Partner Target Detail'
+	territory_tname = 'Territory Target Detail'
 	
 	def validate_mandatory(self):
 		# validate transaction date v/s delivery date
@@ -168,7 +164,7 @@
 		get_obj('Authorization Control').validate_approving_authority(self.doctype, self.grand_total, self)
 		
 		self.update_prevdoc_status('submit')
-		frappe.db.set(self.doc, 'status', 'Submitted')
+		frappe.db.set(self, 'status', 'Submitted')
 	
 	def on_cancel(self):
 		# Cannot cancel stopped SO
@@ -180,7 +176,7 @@
 		
 		self.update_prevdoc_status('cancel')
 		
-		frappe.db.set(self.doc, 'status', 'Cancelled')
+		frappe.db.set(self, 'status', 'Cancelled')
 		
 	def check_nextdoc_docstatus(self):
 		# Checks Delivery Note
@@ -224,14 +220,14 @@
 	def stop_sales_order(self):
 		self.check_modified_date()
 		self.update_stock_ledger(-1)
-		frappe.db.set(self.doc, 'status', 'Stopped')
+		frappe.db.set(self, 'status', 'Stopped')
 		msgprint("""%s: %s has been Stopped. To make transactions against this Sales Order 
 			you need to Unstop it.""" % (self.doctype, self.name))
 
 	def unstop_sales_order(self):
 		self.check_modified_date()
 		self.update_stock_ledger(1)
-		frappe.db.set(self.doc, 'status', 'Submitted')
+		frappe.db.set(self, 'status', 'Submitted')
 		msgprint("%s: %s has been Unstopped" % (self.doctype, self.name))
 
 
@@ -261,11 +257,11 @@
 	bean.run_method("onload_post_render")
 	
 @frappe.whitelist()
-def make_material_request(source_name, target_doclist=None):	
+def make_material_request(source_name, target_doc=None):	
 	def postprocess(source, doclist):
 		doclist[0].material_request_type = "Purchase"
 	
-	doclist = get_mapped_doclist("Sales Order", source_name, {
+	doclist = get_mapped_doc("Sales Order", source_name, {
 		"Sales Order": {
 			"doctype": "Material Request", 
 			"validation": {
@@ -279,18 +275,18 @@
 				"stock_uom": "uom"
 			}
 		}
-	}, target_doclist, postprocess)
+	}, target_doc, postprocess)
 	
 	return [(d if isinstance(d, dict) else d.fields) for d in doclist]
 
 @frappe.whitelist()
-def make_delivery_note(source_name, target_doclist=None):	
+def make_delivery_note(source_name, target_doc=None):	
 	def update_item(obj, target, source_parent):
 		target.base_amount = (flt(obj.qty) - flt(obj.delivered_qty)) * flt(obj.base_rate)
 		target.amount = (flt(obj.qty) - flt(obj.delivered_qty)) * flt(obj.rate)
 		target.qty = flt(obj.qty) - flt(obj.delivered_qty)
 			
-	doclist = get_mapped_doclist("Sales Order", source_name, {
+	doclist = get_mapped_doc("Sales Order", source_name, {
 		"Sales Order": {
 			"doctype": "Delivery Note", 
 			"field_map": {
@@ -319,12 +315,12 @@
 			"doctype": "Sales Team",
 			"add_if_empty": True
 		}
-	}, target_doclist, set_missing_values)
+	}, target_doc, set_missing_values)
 	
 	return [d.fields for d in doclist]
 
 @frappe.whitelist()
-def make_sales_invoice(source_name, target_doclist=None):
+def make_sales_invoice(source_name, target_doc=None):
 	def set_missing_values(source, target):
 		bean = frappe.bean(target)
 		bean.is_pos = 0
@@ -335,7 +331,7 @@
 		target.base_amount = target.amount * flt(source_parent.conversion_rate)
 		target.qty = obj.rate and target.amount / flt(obj.rate) or obj.qty
 			
-	doclist = get_mapped_doclist("Sales Order", source_name, {
+	doclist = get_mapped_doc("Sales Order", source_name, {
 		"Sales Order": {
 			"doctype": "Sales Invoice", 
 			"validation": {
@@ -359,18 +355,18 @@
 			"doctype": "Sales Team", 
 			"add_if_empty": True
 		}
-	}, target_doclist, set_missing_values)
+	}, target_doc, set_missing_values)
 	
 	return [d.fields for d in doclist]
 	
 @frappe.whitelist()
-def make_maintenance_schedule(source_name, target_doclist=None):
+def make_maintenance_schedule(source_name, target_doc=None):
 	maint_schedule = frappe.db.sql("""select t1.name 
 		from `tabMaintenance Schedule` t1, `tabMaintenance Schedule Item` t2 
 		where t2.parent=t1.name and t2.prevdoc_docname=%s and t1.docstatus=1""", source_name)
 		
 	if not maint_schedule:
-		doclist = get_mapped_doclist("Sales Order", source_name, {
+		doclist = get_mapped_doc("Sales Order", source_name, {
 			"Sales Order": {
 				"doctype": "Maintenance Schedule", 
 				"field_map": {
@@ -387,19 +383,19 @@
 				},
 				"add_if_empty": True
 			}
-		}, target_doclist)
+		}, target_doc)
 	
 		return [d.fields for d in doclist]
 	
 @frappe.whitelist()
-def make_maintenance_visit(source_name, target_doclist=None):
+def make_maintenance_visit(source_name, target_doc=None):
 	visit = frappe.db.sql("""select t1.name 
 		from `tabMaintenance Visit` t1, `tabMaintenance Visit Purpose` t2 
 		where t2.parent=t1.name and t2.prevdoc_docname=%s 
 		and t1.docstatus=1 and t1.completion_status='Fully Completed'""", source_name)
 		
 	if not visit:
-		doclist = get_mapped_doclist("Sales Order", source_name, {
+		doclist = get_mapped_doc("Sales Order", source_name, {
 			"Sales Order": {
 				"doctype": "Maintenance Visit", 
 				"field_map": {
@@ -417,6 +413,6 @@
 				},
 				"add_if_empty": True
 			}
-		}, target_doclist)
+		}, target_doc)
 	
 		return [d.fields for d in doclist]
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index b6b2305..2aa3245 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -107,8 +107,8 @@
 			self.import_chart_of_account()
 		else:
 			self.create_standard_accounts()
-			frappe.db.set(self.doc, "receivables_group", "Accounts Receivable - " + self.abbr)
-			frappe.db.set(self.doc, "payables_group", "Accounts Payable - " + self.abbr)
+			frappe.db.set(self, "receivables_group", "Accounts Receivable - " + self.abbr)
+			frappe.db.set(self, "payables_group", "Accounts Payable - " + self.abbr)
 			
 	def import_chart_of_account(self):
 		chart = frappe.bean("Chart of Accounts", self.chart_of_accounts)
@@ -132,7 +132,7 @@
 					"group_or_ledger": "Ledger", "company": self.name})
 
 				if account and not self.get(field):
-					frappe.db.set(self.doc, field, account)
+					frappe.db.set(self, field, account)
 			
 		_set_default_accounts({
 			"default_cash_account": "Cash",
@@ -170,7 +170,7 @@
 				cc_bean.ignore_mandatory = True
 			cc_bean.insert()
 			
-		frappe.db.set(self.doc, "cost_center", "Main - " + self.abbr)
+		frappe.db.set(self, "cost_center", "Main - " + self.abbr)
 
 	def on_trash(self):
 		"""
@@ -200,7 +200,7 @@
 			frappe.throw(_("Sorry, companies cannot be merged"))
 	
 	def after_rename(self, olddn, newdn, merge=False):
-		frappe.db.set(self.doc, "company_name", newdn)
+		frappe.db.set(self, "company_name", newdn)
 
 		frappe.db.sql("""update `tabDefaultValue` set defvalue=%s 
 			where defkey='Company' and defvalue=%s""", (newdn, olddn))
diff --git a/erpnext/setup/doctype/notification_control/notification_control.py b/erpnext/setup/doctype/notification_control/notification_control.py
index 9557171..8594856 100644
--- a/erpnext/setup/doctype/notification_control/notification_control.py
+++ b/erpnext/setup/doctype/notification_control/notification_control.py
@@ -19,6 +19,6 @@
 
 	def set_message(self, arg = ''):
 		fn = self.select_transaction.lower().replace(' ', '_') + '_message'
-		frappe.db.set(self.doc, fn, self.custom_message)
+		frappe.db.set(self, fn, self.custom_message)
 		msgprint("Custom Message for %s updated!" % self.select_transaction)
 
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index 617a883..d48024f 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -9,7 +9,7 @@
 from frappe.model.code import get_obj
 from frappe import msgprint, _
 import frappe.defaults
-from frappe.model.mapper import get_mapped_doclist
+from frappe.model.mapper import get_mapped_doc
 from erpnext.stock.utils import update_bin
 from erpnext.controllers.selling_controller import SellingController
 
@@ -163,7 +163,7 @@
 		self.make_gl_entries()
 
 		# set DN status
-		frappe.db.set(self.doc, 'status', 'Submitted')
+		frappe.db.set(self, 'status', 'Submitted')
 
 
 	def on_cancel(self):
@@ -174,7 +174,7 @@
 		
 		self.update_stock_ledger()
 
-		frappe.db.set(self.doc, 'status', 'Cancelled')
+		frappe.db.set(self, 'status', 'Cancelled')
 		self.cancel_packing_slips()
 		
 		self.make_cancel_gl_entries()
@@ -285,7 +285,7 @@
 	return invoiced_qty_map
 
 @frappe.whitelist()
-def make_sales_invoice(source_name, target_doclist=None):
+def make_sales_invoice(source_name, target_doc=None):
 	invoiced_qty_map = get_invoiced_qty_map(source_name)
 	
 	def update_accounts(source, target):
@@ -305,7 +305,7 @@
 	def update_item(source_doc, target_doc, source_parent):
 		target_doc.qty = source_doc.qty - invoiced_qty_map.get(source_doc.name, 0)
 	
-	doclist = get_mapped_doclist("Delivery Note", source_name, 	{
+	doclist = get_mapped_doc("Delivery Note", source_name, 	{
 		"Delivery Note": {
 			"doctype": "Sales Invoice", 
 			"validation": {
@@ -334,17 +334,17 @@
 			},
 			"add_if_empty": True
 		}
-	}, target_doclist, update_accounts)
+	}, target_doc, update_accounts)
 	
 	return [d.fields for d in doclist]
 	
 @frappe.whitelist()
-def make_installation_note(source_name, target_doclist=None):
+def make_installation_note(source_name, target_doc=None):
 	def update_item(obj, target, source_parent):
 		target.qty = flt(obj.qty) - flt(obj.installed_qty)
 		target.serial_no = obj.serial_no
 	
-	doclist = get_mapped_doclist("Delivery Note", source_name, 	{
+	doclist = get_mapped_doc("Delivery Note", source_name, 	{
 		"Delivery Note": {
 			"doctype": "Installation Note", 
 			"validation": {
@@ -361,6 +361,6 @@
 			"postprocess": update_item,
 			"condition": lambda doc: doc.installed_qty < doc.qty
 		}
-	}, target_doclist)
+	}, target_doc)
 
 	return [d.fields for d in doclist]
\ No newline at end of file
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index 76e6aa2..30ebb1b 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -100,7 +100,7 @@
 				update_bin(args)		
 		
 	def on_submit(self):
-		frappe.db.set(self.doc, 'status', 'Submitted')
+		frappe.db.set(self, 'status', 'Submitted')
 		self.update_bin(is_submit = 1, is_stopped = 0)
 	
 	def check_modified_date(self):
@@ -118,7 +118,7 @@
 		self.update_bin(is_submit = (status == 'Submitted') and 1 or 0, is_stopped = 1)
 
 		# Step 2:=> Set status 
-		frappe.db.set(self.doc, 'status', cstr(status))
+		frappe.db.set(self, 'status', cstr(status))
 		
 		# Step 3:=> Acknowledge User
 		msgprint(self.doctype + ": " + self.name + " has been %s." % ((status == 'Submitted') and 'Unstopped' or cstr(status)))
@@ -137,7 +137,7 @@
 		self.update_bin(is_submit = 0, is_stopped = (cstr(self.status) == 'Stopped') and 1 or 0)
 		
 		# Step 5:=> Set Status
-		frappe.db.set(self.doc,'status','Cancelled')
+		frappe.db.set(self,'status','Cancelled')
 		
 	def update_completed_qty(self, mr_items=None):
 		if self.material_request_type != "Transfer":
@@ -217,8 +217,8 @@
 			"posting_date": bean.posting_date,
 		})
 
-def set_missing_values(source, target_doclist):
-	po = frappe.bean(target_doclist)
+def set_missing_values(source, target_doc):
+	po = frappe.bean(target_doc)
 	po.run_method("set_missing_values")
 	
 def update_item(obj, target, source_parent):
@@ -226,10 +226,10 @@
 	target.qty = flt(obj.qty) - flt(obj.ordered_qty)
 
 @frappe.whitelist()
-def make_purchase_order(source_name, target_doclist=None):
-	from frappe.model.mapper import get_mapped_doclist
+def make_purchase_order(source_name, target_doc=None):
+	from frappe.model.mapper import get_mapped_doc
 
-	doclist = get_mapped_doclist("Material Request", source_name, 	{
+	doclist = get_mapped_doc("Material Request", source_name, 	{
 		"Material Request": {
 			"doctype": "Purchase Order", 
 			"validation": {
@@ -248,34 +248,34 @@
 			],
 			"postprocess": update_item
 		}
-	}, target_doclist, set_missing_values)
+	}, target_doc, set_missing_values)
 
 	return [d.fields for d in doclist]
 	
 @frappe.whitelist()
-def make_purchase_order_based_on_supplier(source_name, target_doclist=None):
-	from frappe.model.mapper import get_mapped_doclist
-	if target_doclist:
-		if isinstance(target_doclist, basestring):
+def make_purchase_order_based_on_supplier(source_name, target_doc=None):
+	from frappe.model.mapper import get_mapped_doc
+	if target_doc:
+		if isinstance(target_doc, basestring):
 			import json
-			target_doclist = frappe.doclist(json.loads(target_doclist))
-		target_doclist = target_doclist.get({"parentfield": ["!=", "po_details"]})
+			target_doc = frappe.doclist(json.loads(target_doc))
+		target_doc = target_doc.get({"parentfield": ["!=", "po_details"]})
 		
 	material_requests, supplier_items = get_material_requests_based_on_supplier(source_name)
 	
-	def postprocess(source, target_doclist):
-		target_doclist[0].supplier = source_name
-		set_missing_values(source, target_doclist)
+	def postprocess(source, target_doc):
+		target_doc[0].supplier = source_name
+		set_missing_values(source, target_doc)
 		
-		po_items = target_doclist.get({"parentfield": "po_details"})
-		target_doclist = target_doclist.get({"parentfield": ["!=", "po_details"]}) + \
+		po_items = target_doc.get({"parentfield": "po_details"})
+		target_doc = target_doc.get({"parentfield": ["!=", "po_details"]}) + \
 			[d for d in po_items 
 				if d.get("item_code") in supplier_items and d.get("qty") > 0]
 		
-		return target_doclist
+		return target_doc
 		
 	for mr in material_requests:
-		target_doclist = get_mapped_doclist("Material Request", mr, 	{
+		target_doc = get_mapped_doc("Material Request", mr, 	{
 			"Material Request": {
 				"doctype": "Purchase Order", 
 			}, 
@@ -290,9 +290,9 @@
 				],
 				"postprocess": update_item
 			}
-		}, target_doclist, postprocess)
+		}, target_doc, postprocess)
 	
-	return [d.fields for d in target_doclist]
+	return [d.fields for d in target_doc]
 	
 def get_material_requests_based_on_supplier(supplier):
 	supplier_items = [d[0] for d in frappe.db.get_values("Item", 
@@ -309,10 +309,10 @@
 	return material_requests, supplier_items
 	
 @frappe.whitelist()
-def make_supplier_quotation(source_name, target_doclist=None):
-	from frappe.model.mapper import get_mapped_doclist
+def make_supplier_quotation(source_name, target_doc=None):
+	from frappe.model.mapper import get_mapped_doc
 
-	doclist = get_mapped_doclist("Material Request", source_name, {
+	doclist = get_mapped_doc("Material Request", source_name, {
 		"Material Request": {
 			"doctype": "Supplier Quotation", 
 			"validation": {
@@ -328,13 +328,13 @@
 				"parenttype": "prevdoc_doctype"
 			}
 		}
-	}, target_doclist, set_missing_values)
+	}, target_doc, set_missing_values)
 
 	return [d.fields for d in doclist]
 	
 @frappe.whitelist()
-def make_stock_entry(source_name, target_doclist=None):
-	from frappe.model.mapper import get_mapped_doclist
+def make_stock_entry(source_name, target_doc=None):
+	from frappe.model.mapper import get_mapped_doc
 	
 	def update_item(obj, target, source_parent):
 		target.conversion_factor = 1
@@ -346,7 +346,7 @@
 		se = frappe.bean(target)
 		se.run_method("get_stock_and_rate")
 
-	doclist = get_mapped_doclist("Material Request", source_name, {
+	doclist = get_mapped_doc("Material Request", source_name, {
 		"Material Request": {
 			"doctype": "Stock Entry", 
 			"validation": {
@@ -364,6 +364,6 @@
 			},
 			"postprocess": update_item
 		}
-	}, target_doclist, set_missing_values)
+	}, target_doc, set_missing_values)
 
 	return [d.fields for d in doclist]
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index b6e0539..74c8cff 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -229,7 +229,7 @@
 		get_obj('Authorization Control').validate_approving_authority(self.doctype, self.company, self.grand_total)
 
 		# Set status as Submitted
-		frappe.db.set(self.doc, 'status', 'Submitted')
+		frappe.db.set(self, 'status', 'Submitted')
 
 		self.update_prevdoc_status()
 		
@@ -267,7 +267,7 @@
 			frappe.throw("Purchase Invoice : " + cstr(submitted[0][0]) + 
 				" has already been submitted !")
 		
-		frappe.db.set(self.doc,'status','Cancelled')
+		frappe.db.set(self,'status','Cancelled')
 
 		self.update_ordered_qty()
 		
@@ -295,14 +295,14 @@
 		
 	
 @frappe.whitelist()
-def make_purchase_invoice(source_name, target_doclist=None):
-	from frappe.model.mapper import get_mapped_doclist
+def make_purchase_invoice(source_name, target_doc=None):
+	from frappe.model.mapper import get_mapped_doc
 	
 	def set_missing_values(source, target):
 		bean = frappe.bean(target)
 		bean.run_method("set_missing_values")
 
-	doclist = get_mapped_doclist("Purchase Receipt", source_name,	{
+	doclist = get_mapped_doc("Purchase Receipt", source_name,	{
 		"Purchase Receipt": {
 			"doctype": "Purchase Invoice", 
 			"validation": {
@@ -322,6 +322,6 @@
 			"doctype": "Purchase Taxes and Charges", 
 			"add_if_empty": True
 		}
-	}, target_doclist, set_missing_values)
+	}, target_doc, set_missing_values)
 
 	return [d.fields for d in doclist]
\ No newline at end of file
diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py
index 88b2602..333f3f7 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.py
+++ b/erpnext/stock/doctype/serial_no/serial_no.py
@@ -21,9 +21,8 @@
 class SerialNoDuplicateError(ValidationError): pass
 
 class SerialNo(StockController):
-	def __init__(self, doc, doclist=None):
-		self.doc = doc
-		self.doclist = doclist or []
+	def __init__(self, arg1, arg2=None):
+		super(SerialNo, self).__init__(arg1, arg2)
 		self.via_stock_ledger = False
 
 	def validate(self):
diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
index 69217b8..0482dd3 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
+++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
@@ -29,7 +29,7 @@
 		self.actual_amt_check()
 		
 		from erpnext.stock.doctype.serial_no.serial_no import process_serial_no
-		process_serial_no(self.doc)
+		process_serial_no(self)
 
 	#check for item quantity available in stock
 	def actual_amt_check(self):
diff --git a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py b/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
index 6c49ed9..28972d3 100644
--- a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
+++ b/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
@@ -10,9 +10,6 @@
 from frappe.model.document import Document
 
 class StockUomReplaceUtility(Document):
-	def __init__(self, d, dl=[]):
-		self.doc, self.doclist = d,dl
-
 	def validate_mandatory(self):
 		if not cstr(self.item_code):
 			msgprint("Please Enter an Item.")
diff --git a/erpnext/support/doctype/customer_issue/customer_issue.py b/erpnext/support/doctype/customer_issue/customer_issue.py
index 619452b..7e69382 100644
--- a/erpnext/support/doctype/customer_issue/customer_issue.py
+++ b/erpnext/support/doctype/customer_issue/customer_issue.py
@@ -33,14 +33,14 @@
 			msgprint("Maintenance Visit No. "+lst1+" already created against this customer issue. So can not be Cancelled")
 			raise Exception
 		else:
-			frappe.db.set(self.doc, 'status', 'Cancelled')
+			frappe.db.set(self, 'status', 'Cancelled')
 
 	def on_update(self):
 		pass
 
 @frappe.whitelist()
-def make_maintenance_visit(source_name, target_doclist=None):
-	from frappe.model.mapper import get_mapped_doclist
+def make_maintenance_visit(source_name, target_doc=None):
+	from frappe.model.mapper import get_mapped_doc
 	
 	visit = frappe.db.sql("""select t1.name 
 		from `tabMaintenance Visit` t1, `tabMaintenance Visit Purpose` t2 
@@ -48,7 +48,7 @@
 		and t1.docstatus=1 and t1.completion_status='Fully Completed'""", source_name)
 		
 	if not visit:
-		doclist = get_mapped_doclist("Customer Issue", source_name, {
+		doclist = get_mapped_doc("Customer Issue", source_name, {
 			"Customer Issue": {
 				"doctype": "Maintenance Visit", 
 				"field_map": {
@@ -57,6 +57,6 @@
 					"name": "prevdoc_docname"
 				}
 			}
-		}, target_doclist)
+		}, target_doc)
 	
 		return [d.fields for d in doclist]
\ No newline at end of file
diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
index 1c40552..0052ab2 100644
--- a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
+++ b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
@@ -80,7 +80,7 @@
 						"ref_name": self.name
 					}).insert(ignore_permissions=1)
 
-		frappe.db.set(self.doc, 'status', 'Submitted')		
+		frappe.db.set(self, 'status', 'Submitted')		
 
 	def create_schedule_list(self, start_date, end_date, no_of_visit, sales_person):
 		schedule_list = []		
@@ -199,7 +199,7 @@
 		self.validate_sales_order()
 	
 	def on_update(self):
-		frappe.db.set(self.doc, 'status', 'Draft')
+		frappe.db.set(self, 'status', 'Draft')
 
 	def update_amc_date(self, serial_nos, amc_expiry_date=None):
 		for serial_no in serial_nos:
@@ -261,20 +261,20 @@
 			if d.serial_no:
 				serial_nos = get_valid_serial_nos(d.serial_no)
 				self.update_amc_date(serial_nos)
-		frappe.db.set(self.doc, 'status', 'Cancelled')
+		frappe.db.set(self, 'status', 'Cancelled')
 		delete_events(self.doctype, self.name)
 
 	def on_trash(self):
 		delete_events(self.doctype, self.name)
 
 @frappe.whitelist()
-def make_maintenance_visit(source_name, target_doclist=None):
-	from frappe.model.mapper import get_mapped_doclist
+def make_maintenance_visit(source_name, target_doc=None):
+	from frappe.model.mapper import get_mapped_doc
 	
 	def update_status(source, target, parent):
 		target.maintenance_type = "Scheduled"
 	
-	doclist = get_mapped_doclist("Maintenance Schedule", source_name, {
+	doclist = get_mapped_doc("Maintenance Schedule", source_name, {
 		"Maintenance Schedule": {
 			"doctype": "Maintenance Visit", 
 			"field_map": {
@@ -293,6 +293,6 @@
 				"sales_person": "service_person"
 			}
 		}
-	}, target_doclist)
+	}, target_doc)
 
 	return [d.fields for d in doclist]
\ No newline at end of file
diff --git a/erpnext/support/doctype/maintenance_visit/maintenance_visit.py b/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
index c3f9181..f8eb96a 100644
--- a/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
+++ b/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
@@ -79,11 +79,11 @@
 	
 	def on_submit(self):
 		self.update_customer_issue(1)		
-		frappe.db.set(self.doc, 'status', 'Submitted')
+		frappe.db.set(self, 'status', 'Submitted')
 	
 	def on_cancel(self):
 		self.check_if_last_visit()		
-		frappe.db.set(self.doc, 'status', 'Cancelled')
+		frappe.db.set(self, 'status', 'Cancelled')
 
 	def on_update(self):
 		pass
\ No newline at end of file
diff --git a/erpnext/support/doctype/newsletter/newsletter.py b/erpnext/support/doctype/newsletter/newsletter.py
index aed338ac..f28afa8 100644
--- a/erpnext/support/doctype/newsletter/newsletter.py
+++ b/erpnext/support/doctype/newsletter/newsletter.py
@@ -40,7 +40,7 @@
 			"doctype": self.send_to_doctype
 		}))
 
-		frappe.db.set(self.doc, "email_sent", 1)
+		frappe.db.set(self, "email_sent", 1)
 	
 	def get_recipients(self):
 		self.email_field = None
