diff --git a/MANIFEST.in b/MANIFEST.in
index 7bf6b4d..1414d50 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -3,7 +3,6 @@
 include *.json
 include *.md
 include *.py
-include *.txt
 recursive-include erpnext *.css
 recursive-include erpnext *.csv
 recursive-include erpnext *.html
@@ -14,5 +13,4 @@
 recursive-include erpnext *.png
 recursive-include erpnext *.py
 recursive-include erpnext *.svg
-recursive-include erpnext *.txt
 recursive-exclude * *.pyc
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
index cbb8fd9..a2fbec1 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
@@ -360,7 +360,7 @@
 	# debit bank
 	jv.doclist[2].debit = si.outstanding_amount
 	
-	return [d.fields for d in jv.doclist]
+	return jv.as_dict()
 
 @frappe.whitelist()
 def get_payment_entry_from_purchase_invoice(purchase_invoice):
@@ -378,7 +378,7 @@
 	# credit bank
 	jv.doclist[2].credit = pi.outstanding_amount
 	
-	return [d.fields for d in jv.doclist]
+	return jv.as_dict()
 
 def get_payment_entry(doc):
 	bank_account = get_default_bank_cash_account(doc.company, "Bank Voucher")
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index d55d3a5..b3e9a11 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -326,7 +326,7 @@
 			if frappe.db.get_value('Selling Settings', None, dic[i]) == 'Yes':
 				for d in self.get('entries'):
 					if frappe.db.get_value('Item', d.item_code, 'is_stock_item') == 'Yes' \
-						and not d.fields[i.lower().replace(' ','_')]:
+						and not d.get(i.lower().replace(' ','_')):
 						msgprint("%s is mandatory for stock item which is not mentioed against item: %s"%(i,d.item_code), raise_exception=1)
 
 
@@ -836,4 +836,4 @@
 		}
 	}, target_doc, set_missing_values)
 	
-	return [d.fields for d in doclist]
\ No newline at end of file
+	return doclist.as_dict()
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index 4e366b3..7879dcb 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -32,7 +32,7 @@
 		w.docstatus = '0'
 		w.insert()
 
-		w2 = frappe.get_doc([d.fields.copy() for d in w.doclist])
+		w2 = frappe.copy_doc(w)
 		
 		import time
 		time.sleep(1)
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.py b/erpnext/buying/doctype/purchase_common/purchase_common.py
index ec8c281..a571144 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.py
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.py
@@ -82,7 +82,7 @@
 			if d.doctype == 'Purchase Receipt Item':
 				f_lst.pop('received_qty')
 			for x in f_lst :
-				if d.fields.has_key(x):
+				if d.meta.has_field(x):
 					d.set(x, f_lst[x])
 			
 			item = frappe.db.sql("""select is_stock_item, is_purchase_item, 
@@ -103,9 +103,9 @@
 			
 			# list criteria that should not repeat if item is stock item
 			e = [d.schedule_date, d.item_code, d.description, d.warehouse, d.uom, 
-				d.fields.has_key('prevdoc_docname') and d.prevdoc_docname or d.fields.has_key('sales_order_no') and d.sales_order_no or '', 
-				d.fields.has_key('prevdoc_detail_docname') and d.prevdoc_detail_docname or '', 
-				d.fields.has_key('batch_no') and d.batch_no or '']
+				d.meta.has_field('prevdoc_docname') and d.prevdoc_docname or d.meta.has_field('sales_order_no') and d.sales_order_no or '', 
+				d.meta.has_field('prevdoc_detail_docname') and d.prevdoc_detail_docname or '', 
+				d.meta.has_field('batch_no') and d.batch_no or '']
 			
 			# if is not stock item
 			f = [d.schedule_date, d.item_code, d.description]
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index b850497..ca68e2b 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -73,7 +73,7 @@
 	def check_for_stopped_status(self, pc_obj):
 		check_list =[]
 		for d in self.get('po_details'):
-			if d.fields.has_key('prevdoc_docname') and d.prevdoc_docname and d.prevdoc_docname not in check_list:
+			if d.meta.has_field('prevdoc_docname') and d.prevdoc_docname and d.prevdoc_docname not in check_list:
 				check_list.append(d.prevdoc_docname)
 				pc_obj.check_for_stopped_status( d.prevdoc_doctype, d.prevdoc_docname)
 
@@ -216,7 +216,7 @@
 		}
 	}, target_doc, set_missing_values)
 
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 	
 @frappe.whitelist()
 def make_purchase_invoice(source_name, target_doc=None):
@@ -254,4 +254,4 @@
 		}
 	}, target_doc, set_missing_values)
 
-	return [d.fields for d in doclist]
\ No newline at end of file
+	return doclist.as_dict()
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
index 004954f..dbca9b5 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
@@ -88,4 +88,4 @@
 		},
 	}, target_doc, set_missing_values)
 
-	return [d.fields for d in doclist]
\ No newline at end of file
+	return doclist.as_dict()
\ No newline at end of file
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 2d54b74..777150e 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -26,7 +26,7 @@
 			if not self.get(fieldname) and self.meta.get_field(fieldname):
 				self.set(fieldname, today())
 				if not self.fiscal_year:
-					self.fiscal_year = get_fiscal_year(self.fields[fieldname])[0]
+					self.fiscal_year = get_fiscal_year(self.get(fieldname))[0]
 					
 	def validate_date_with_fiscal_year(self):
 		if self.meta.get_field("fiscal_year") :
@@ -36,15 +36,15 @@
 			elif self.meta.get_field("transaction_date"):
 				date_field = "transaction_date"
 				
-			if date_field and self.fields[date_field]:
-				validate_fiscal_year(self.fields[date_field], self.fiscal_year, 
+			if date_field and self.get(date_field):
+				validate_fiscal_year(self.get(date_field), self.fiscal_year, 
 					label=self.meta.get_label(date_field))
 					
 	def validate_for_freezed_account(self):
 		for fieldname in ["customer", "supplier"]:
 			if self.meta.get_field(fieldname) and self.get(fieldname):
 				accounts = frappe.db.get_values("Account", 
-					{"master_type": fieldname.title(), "master_name": self.fields[fieldname], 
+					{"master_type": fieldname.title(), "master_name": self.get(fieldname), 
 					"company": self.company}, "name")
 				if accounts:
 					from erpnext.accounts.doctype.gl_entry.gl_entry import validate_frozen_account
@@ -347,13 +347,13 @@
 				"tax_fraction_for_current_item", 
 				"grand_total_fraction_for_current_item"):
 				if fieldname in tax.fields:
-					del tax.fields[fieldname]
+					del tax.get(fieldname)
 			
 			tax.item_wise_tax_detail = json.dumps(tax.item_wise_tax_detail)
 			
 	def _set_in_company_currency(self, item, print_field, base_field):
 		"""set values in base currency"""
-		item.set(base_field, flt((flt(item.fields[print_field],)
+		item.set(base_field, flt((flt(item.get(print_field),)
 			self.precision(print_field, item)) * self.conversion_rate),
 			self.precision(base_field, item))
 			
@@ -419,7 +419,7 @@
 		for item in self.get("entries"):
 			if item.get(item_ref_dn):
 				ref_amt = flt(frappe.db.get_value(ref_dt + " Item", 
-					item.fields[item_ref_dn], based_on), self.precision(based_on, item))
+					item.get(item_ref_dn), based_on), self.precision(based_on, item))
 				if not ref_amt:
 					frappe.msgprint(_("As amount for item") + ": " + item.item_code + _(" in ") + 
 						ref_dt + _(" is zero, system will not check for over-billed"))
@@ -427,9 +427,9 @@
 					already_billed = frappe.db.sql("""select sum(%s) from `tab%s` 
 						where %s=%s and docstatus=1 and parent != %s""" % 
 						(based_on, self.tname, item_ref_dn, '%s', '%s'), 
-						(item.fields[item_ref_dn], self.name))[0][0]
+						(item.get(item_ref_dn), self.name))[0][0]
 				
-					total_billed_amt = flt(flt(already_billed) + flt(item.fields[based_on]), 
+					total_billed_amt = flt(flt(already_billed) + flt(item.get(based_on)), 
 						self.precision(based_on, item))
 				
 					tolerance, item_tolerance, global_tolerance = get_tolerance_for(item.item_code, 
@@ -443,7 +443,7 @@
 						frappe.throw(_("Row #") + cstr(item.idx) + ": " + 
 							_(" Max amount allowed for Item ") + cstr(item.item_code) + 
 							_(" against ") + ref_dt + " " + 
-							cstr(item.fields[ref_dt.lower().replace(" ", "_")]) + _(" is ") + 
+							cstr(item.get(ref_dt.lower().replace(" ", "_"))) + _(" is ") + 
 							cstr(max_allowed_amt) + ". \n" + 
 							_("""If you want to increase your overflow tolerance, please increase \
 							tolerance % in Global Defaults or Item master. 				
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index d0e482e..b186e5c 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -152,12 +152,12 @@
 		
 		if not self.meta.get_field("item_tax_amount", parentfield=self.fname):
 			for item in self.item_doclist:
-				del item.fields["item_tax_amount"]
+				del item.get("item_tax_amount")
 				
 		if not self.meta.get_field("tax_amount_after_discount_amount", 
 				parentfield=self.other_fname):
 			for tax in self.tax_doclist:
-				del tax.fields["tax_amount_after_discount_amount"]
+				del tax.get("tax_amount_after_discount_amount")
 				
 	# update valuation rate
 	def update_valuation_rate(self, parentfield):
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index da4d939..f2e1c08 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -363,11 +363,11 @@
 	def check_stop_sales_order(self, ref_fieldname):
 		for d in self.get(self.fname):
 			if d.get(ref_fieldname):
-				status = frappe.db.get_value("Sales Order", d.fields[ref_fieldname], "status")
+				status = frappe.db.get_value("Sales Order", d.get(ref_fieldname), "status")
 				if status == "Stopped":
 					frappe.throw(self.doctype + 
 						_(" can not be created/modified against stopped Sales Order ") + 
-						d.fields[ref_fieldname])
+						d.get(ref_fieldname))
 		
 def check_active_sales_items(obj):
 	for d in obj.doclist.get({"parentfield": obj.fname}):
diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index 24c5db1..ba8118e 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -115,7 +115,7 @@
 			# get unique transactions to update
 			for d in self.doclist:
 				if d.doctype == args['source_dt'] and d.get(args["join_field"]):
-					args['name'] = d.fields[args['join_field']]
+					args['name'] = d.get(args['join_field'])
 
 					# get all qty where qty > target_field
 					item = frappe.db.sql("""select item_code, `{target_ref_field}`, 
@@ -244,7 +244,7 @@
 			if item.get(ref_fieldname) \
 				and item.get(ref_fieldname) in all_zero_amount_refdoc \
 				and item.get(ref_fieldname) not in zero_amount_refdoc:
-					zero_amount_refdoc.append(item.fields[ref_fieldname])
+					zero_amount_refdoc.append(item.get(ref_fieldname))
 		
 		if zero_amount_refdoc:
 			self.update_biling_status(zero_amount_refdoc, ref_dt, ref_fieldname)
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index a24834e..33b7fdb 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -223,11 +223,11 @@
 			make_gl_entries(gl_entries)
 			
 	def check_expense_account(self, item):
-		if item.fields.has_key("expense_account") and not item.expense_account:
+		if item.meta.has_field("expense_account") and not item.expense_account:
 			msgprint(_("""Expense/Difference account is mandatory for item: """) + item.item_code, 
 				raise_exception=1)
 				
-		if item.fields.has_key("expense_account") and not item.cost_center:
+		if item.meta.has_field("expense_account") and not item.cost_center:
 			msgprint(_("""Cost Center is mandatory for item: """) + item.item_code, 
 				raise_exception=1)
 				
diff --git a/erpnext/hr/doctype/salary_manager/salary_manager.py b/erpnext/hr/doctype/salary_manager/salary_manager.py
index ac64963..5bb0be5 100644
--- a/erpnext/hr/doctype/salary_manager/salary_manager.py
+++ b/erpnext/hr/doctype/salary_manager/salary_manager.py
@@ -51,7 +51,7 @@
 		
 	def check_mandatory(self):
 		for f in ['company', 'month', 'fiscal_year']:
-			if not self.fields[f]:
+			if not self.get(f):
 				msgprint("Please select %s to proceed" % f, raise_exception=1)
 		
 	
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.py b/erpnext/hr/doctype/salary_structure/salary_structure.py
index 09956d1..05e3268 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.py
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.py
@@ -71,7 +71,7 @@
 		
 @frappe.whitelist()
 def make_salary_slip(source_name, target_doc=None):
-	return [d.fields for d in get_mapped_doc(source_name, target_doc)]
+	return get_mapped_doc(source_name, target_doc).as_dict()
 	
 def get_mapped_doc(source_name, target_doc=None):
 	from frappe.model.mapper import get_mapped_doc
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py
index fd97980..efdf2c4 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/production_order.py
@@ -168,4 +168,4 @@
 		stock_entry.to_warehouse = production_order.fg_warehouse
 		
 	stock_entry.run_method("get_items")
-	return [d.fields for d in stock_entry.doclist]
+	return stock_entry.as_dict()
diff --git a/erpnext/projects/doctype/time_log_batch/time_log_batch.py b/erpnext/projects/doctype/time_log_batch/time_log_batch.py
index a8e9be8..9405e46 100644
--- a/erpnext/projects/doctype/time_log_batch/time_log_batch.py
+++ b/erpnext/projects/doctype/time_log_batch/time_log_batch.py
@@ -21,7 +21,7 @@
 			self.total_hours += float(tl.hours or 0.0)
 
 	def update_time_log_values(self, d, tl):
-		d.fields.update({
+		d.update({
 			"hours": tl.hours,
 			"activity_type": tl.activity_type,
 			"created_by": tl.owner
diff --git a/erpnext/selling/doctype/lead/lead.py b/erpnext/selling/doctype/lead/lead.py
index 9e4ead8..4fdb8c0 100644
--- a/erpnext/selling/doctype/lead/lead.py
+++ b/erpnext/selling/doctype/lead/lead.py
@@ -98,7 +98,7 @@
 			}
 		}}, target_doc, set_missing_values, ignore_permissions=ignore_permissions)
 		
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 	
 @frappe.whitelist()
 def make_opportunity(source_name, target_doc=None):
diff --git a/erpnext/selling/doctype/opportunity/opportunity.py b/erpnext/selling/doctype/opportunity/opportunity.py
index 5dd7b8f..0ded247 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.py
+++ b/erpnext/selling/doctype/opportunity/opportunity.py
@@ -161,4 +161,4 @@
 		}
 	}, target_doc, set_missing_values)
 		
-	return [d.fields for d in doclist]
\ No newline at end of file
+	return doclist.as_dict()
\ No newline at end of file
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index 900d764..0f64880 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -136,7 +136,7 @@
 		
 	# postprocess: fetch shipping address, set missing values
 		
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 
 def _make_customer(source_name, ignore_permissions=False):
 	quotation = frappe.db.get_value("Quotation", source_name, ["lead", "order_type"])
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 0dbb78a..6db638b 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -316,7 +316,7 @@
 		}
 	}, target_doc, set_missing_values)
 	
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 
 @frappe.whitelist()
 def make_sales_invoice(source_name, target_doc=None):
@@ -356,7 +356,7 @@
 		}
 	}, target_doc, set_missing_values)
 	
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 	
 @frappe.whitelist()
 def make_maintenance_schedule(source_name, target_doc=None):
@@ -384,7 +384,7 @@
 			}
 		}, target_doc)
 	
-		return [d.fields for d in doclist]
+		return doclist.as_dict()
 	
 @frappe.whitelist()
 def make_maintenance_visit(source_name, target_doc=None):
@@ -414,4 +414,4 @@
 			}
 		}, target_doc)
 	
-		return [d.fields for d in doclist]
+		return doclist.as_dict()
diff --git a/erpnext/setup/doctype/features_setup/features_setup.py b/erpnext/setup/doctype/features_setup/features_setup.py
index 55c1552..1009b27 100644
--- a/erpnext/setup/doctype/features_setup/features_setup.py
+++ b/erpnext/setup/doctype/features_setup/features_setup.py
@@ -14,4 +14,4 @@
 		from frappe.utils import set_default
 		for key in self.fields:
 			if key not in default_fields:
-				set_default(key, self.fields[key])
+				set_default(key, self.get(key))
diff --git a/erpnext/startup/boot.py b/erpnext/startup/boot.py
index 6624b1d..973b742 100644
--- a/erpnext/startup/boot.py
+++ b/erpnext/startup/boot.py
@@ -10,7 +10,7 @@
 	import frappe
 	
 	bootinfo['custom_css'] = frappe.db.get_value('Style Settings', None, 'custom_css') or ''
-	bootinfo['website_settings'] = frappe.model.getsingle('Website Settings')
+	bootinfo['website_settings'] = frappe.get_doc('Website Settings')
 
 	if frappe.session['user']!='Guest':
 		bootinfo['letter_heads'] = get_letter_heads()
diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py
index 4cc02ab..a5fd8ec 100644
--- a/erpnext/stock/doctype/bin/bin.py
+++ b/erpnext/stock/doctype/bin/bin.py
@@ -25,7 +25,7 @@
 	def validate_mandatory(self):
 		qf = ['actual_qty', 'reserved_qty', 'ordered_qty', 'indented_qty']
 		for f in qf:
-			if (not self.has_key(f)) or (not self.fields[f]): 
+			if (not self.has_key(f)) or (not self.get(f)): 
 				self.set(f, 0.0)
 		
 	def update_stock(self, args):
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index c030244..1489590 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -335,7 +335,7 @@
 		}
 	}, target_doc, update_accounts)
 	
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 	
 @frappe.whitelist()
 def make_installation_note(source_name, target_doc=None):
@@ -362,4 +362,4 @@
 		}
 	}, target_doc)
 
-	return [d.fields for d in doclist]
\ No newline at end of file
+	return doclist.as_dict()
\ No newline at end of file
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index ea43b16..4741bde 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -233,7 +233,7 @@
 			
 			field_list = ["stock_uom", "is_stock_item", "has_serial_no", "has_batch_no"]
 			new_properties = [cstr(d) for d in frappe.db.get_value("Item", newdn, field_list)]
-			if new_properties != [cstr(self.fields[fld]) for fld in field_list]:
+			if new_properties != [cstr(self.get(fld)) for fld in field_list]:
 				frappe.throw(_("To merge, following properties must be same for both items")
 					+ ": \n" + ", ".join([self.meta.get_label(fld) for fld in field_list]))
 
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index 42c6f23..3dd406f 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -249,7 +249,7 @@
 		}
 	}, target_doc, set_missing_values)
 
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 	
 @frappe.whitelist()
 def make_purchase_order_based_on_supplier(source_name, target_doc=None):
@@ -291,7 +291,7 @@
 			}
 		}, target_doc, postprocess)
 	
-	return [d.fields for d in target_doc]
+	return target_doc.as_dict()
 	
 def get_material_requests_based_on_supplier(supplier):
 	supplier_items = [d[0] for d in frappe.db.get_values("Item", 
@@ -329,7 +329,7 @@
 		}
 	}, target_doc, set_missing_values)
 
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
 	
 @frappe.whitelist()
 def make_stock_entry(source_name, target_doc=None):
@@ -365,4 +365,4 @@
 		}
 	}, target_doc, set_missing_values)
 
-	return [d.fields for d in doclist]
+	return doclist.as_dict()
diff --git a/erpnext/stock/doctype/price_list/price_list.py b/erpnext/stock/doctype/price_list/price_list.py
index 7f5d7e7..fa53aba 100644
--- a/erpnext/stock/doctype/price_list/price_list.py
+++ b/erpnext/stock/doctype/price_list/price_list.py
@@ -47,7 +47,7 @@
 			b = frappe.get_doc(module + " Settings")
 			price_list_fieldname = module.lower() + "_price_list"
 
-			if self.name == b.fields[price_list_fieldname]:
+			if self.name == b.get(price_list_fieldname):
 				b.set(price_list_fieldname, None)
 				b.save()
 		
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 950db93..9d363d3 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -216,7 +216,7 @@
 	def check_for_stopped_status(self, pc_obj):
 		check_list =[]
 		for d in self.get('purchase_receipt_details'):
-			if d.fields.has_key('prevdoc_docname') and d.prevdoc_docname and d.prevdoc_docname not in check_list:
+			if d.meta.has_field('prevdoc_docname') and d.prevdoc_docname and d.prevdoc_docname not in check_list:
 				check_list.append(d.prevdoc_docname)
 				pc_obj.check_for_stopped_status( d.prevdoc_doctype, d.prevdoc_docname)
 
@@ -323,4 +323,4 @@
 		}
 	}, target_doc, set_missing_values)
 
-	return [d.fields for d in doclist]
\ No newline at end of file
+	return doclist.as_dict()
\ No newline at end of file
diff --git a/erpnext/support/doctype/customer_issue/customer_issue.py b/erpnext/support/doctype/customer_issue/customer_issue.py
index 7e69382..f82488a 100644
--- a/erpnext/support/doctype/customer_issue/customer_issue.py
+++ b/erpnext/support/doctype/customer_issue/customer_issue.py
@@ -59,4 +59,4 @@
 			}
 		}, target_doc)
 	
-		return [d.fields for d in doclist]
\ No newline at end of file
+		return doclist.as_dict()
\ 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 1aa22b7..1002aba 100644
--- a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
+++ b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
@@ -295,4 +295,4 @@
 		}
 	}, target_doc)
 
-	return [d.fields for d in doclist]
\ No newline at end of file
+	return doclist.as_dict()
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/address/address.py b/erpnext/utilities/doctype/address/address.py
index 9c9316c..04d54f2 100644
--- a/erpnext/utilities/doctype/address/address.py
+++ b/erpnext/utilities/doctype/address/address.py
@@ -35,7 +35,7 @@
 				if self.get(fieldname):
 					if not frappe.db.sql("""select name from `tabAddress` where is_primary_address=1
 						and `%s`=%s and name!=%s""" % (fieldname, "%s", "%s"), 
-						(self.fields[fieldname], self.name)):
+						(self.get(fieldname), self.name)):
 							self.is_primary_address = 1
 					break
 				
@@ -48,7 +48,7 @@
 		for fieldname in ["customer", "supplier", "sales_partner", "lead"]:
 			if self.get(fieldname):
 				frappe.db.sql("""update `tabAddress` set `%s`=0 where `%s`=%s and name!=%s""" %
-					(is_address_type, fieldname, "%s", "%s"), (self.fields[fieldname], self.name))
+					(is_address_type, fieldname, "%s", "%s"), (self.get(fieldname), self.name))
 				break
 
 @frappe.whitelist()
diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py
index 57a07a7..66a1a03 100644
--- a/erpnext/utilities/transaction_base.py
+++ b/erpnext/utilities/transaction_base.py
@@ -110,8 +110,8 @@
 		if d.get(uom_field) in integer_uoms:
 			for f in qty_fields:
 				if d.get(f):
-					if cint(d.fields[f])!=d.fields[f]:
-						frappe.msgprint(_("For UOM") + " '" + d.fields[uom_field] \
+					if cint(d.get(f))!=d.get(f):
+						frappe.msgprint(_("For UOM") + " '" + d.get(uom_field) \
 							+ "': " + _("Quantity cannot be a fraction.") \
 							+ " " + _("In Row") + ": " + str(d.idx),
 							raise_exception=UOMMustBeIntegerError)
