#478
diff --git a/erpnext/accounts/doctype/account/account.js b/erpnext/accounts/doctype/account/account.js
index f4f2b8a..76a1e56 100644
--- a/erpnext/accounts/doctype/account/account.js
+++ b/erpnext/accounts/doctype/account/account.js
@@ -18,7 +18,7 @@
 	
 	if(doc.group_or_ledger=='Ledger') {
 		frappe.model.with_doc("Accounts Settings", "Accounts Settings", function (name) {
-			var accounts_settings = frappe.model.get_doc("Accounts Settings", name);
+			var accounts_settings = frappe.get_doc("Accounts Settings", name);
 			var display = accounts_settings["frozen_accounts_modifier"] 
 				&& in_list(user_roles, accounts_settings["frozen_accounts_modifier"]);
 			
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.js b/erpnext/accounts/doctype/journal_voucher/journal_voucher.js
index fc042ba..e8e513d 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.js
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.js
@@ -39,7 +39,7 @@
 		$.each([["against_voucher", "Purchase Invoice", "credit_to"], 
 			["against_invoice", "Sales Invoice", "debit_to"]], function(i, opts) {
 				me.frm.set_query(opts[0], "entries", function(doc, cdt, cdn) {
-					var jvd = frappe.model.get_doc(cdt, cdn);
+					var jvd = frappe.get_doc(cdt, cdn);
 					frappe.model.validate_missing(jvd, "account");
 					return {
 						filters: [
@@ -52,7 +52,7 @@
 		});
 		
 		this.frm.set_query("against_jv", "entries", function(doc, cdt, cdn) {
-			var jvd = frappe.model.get_doc(cdt, cdn);
+			var jvd = frappe.get_doc(cdt, cdn);
 			frappe.model.validate_missing(jvd, "account");
 			
 			return {
@@ -63,7 +63,7 @@
 	},
 	
 	against_voucher: function(doc, cdt, cdn) {
-		var d = frappe.model.get_doc(cdt, cdn);
+		var d = frappe.get_doc(cdt, cdn);
 		if (d.against_voucher && !flt(d.debit)) {
 			this.get_outstanding({
 				'doctype': 'Purchase Invoice', 
@@ -73,7 +73,7 @@
 	},
 	
 	against_invoice: function(doc, cdt, cdn) {
-		var d = frappe.model.get_doc(cdt, cdn);
+		var d = frappe.get_doc(cdt, cdn);
 		if (d.against_invoice && !flt(d.credit)) {
 			this.get_outstanding({
 				'doctype': 'Sales Invoice', 
@@ -83,7 +83,7 @@
 	},
 	
 	against_jv: function(doc, cdt, cdn) {
-		var d = frappe.model.get_doc(cdt, cdn);
+		var d = frappe.get_doc(cdt, cdn);
 		if (d.against_jv && !flt(d.credit) && !flt(d.debit)) {
 			this.get_outstanding({
 				'doctype': 'Journal Voucher', 
@@ -138,7 +138,7 @@
 
 cur_frm.cscript.update_totals = function(doc) {
 	var td=0.0; var tc =0.0;
-	var el = getchildren('Journal Voucher Detail', doc.name, 'entries');
+	var el = doc.entries || [];
 	for(var i in el) {
 		td += flt(el[i].debit, 2);
 		tc += flt(el[i].credit, 2);
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
index be1f3b2..a45af20 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -108,7 +108,7 @@
 	},
 	
 	entries_add: function(doc, cdt, cdn) {
-		var row = frappe.model.get_doc(cdt, cdn);
+		var row = frappe.get_doc(cdt, cdn);
 		this.frm.script_manager.copy_from_first_row("entries", row, ["expense_account", "cost_center"]);
 	}
 });
@@ -184,7 +184,7 @@
 cur_frm.cscript.expense_account = function(doc, cdt, cdn){
 	var d = locals[cdt][cdn];
 	if(d.idx == 1 && d.expense_account){
-		var cl = getchildren('Purchase Invoice Item', doc.name, 'entries', doc.doctype);
+		var cl = doc.entries || [];
 		for(var i = 0; i < cl.length; i++){
 			if(!cl[i].expense_account) cl[i].expense_account = d.expense_account;
 		}
@@ -205,7 +205,7 @@
 cur_frm.cscript.cost_center = function(doc, cdt, cdn){
 	var d = locals[cdt][cdn];
 	if(d.idx == 1 && d.cost_center){
-		var cl = getchildren('Purchase Invoice Item', doc.name, 'entries', doc.doctype);
+		var cl = doc.entries || [];
 		for(var i = 0; i < cl.length; i++){
 			if(!cl[i].cost_center) cl[i].cost_center = d.cost_center;
 		}
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
index 2027a7b..bc0a912 100644
--- a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
@@ -41,7 +41,7 @@
 		return doc_field.print_hide;
 	}
 
-	var cl = getchildren('Purchase Taxes and Charges', doc.name, 'other_charges');
+	var cl = doc.other_charges || [];
 
 	// outer table
 	var out='<div><table class="noborder" style="width:100%">\
diff --git a/erpnext/accounts/doctype/sales_invoice/pos.js b/erpnext/accounts/doctype/sales_invoice/pos.js
index fc6190a..ff996cc 100644
--- a/erpnext/accounts/doctype/sales_invoice/pos.js
+++ b/erpnext/accounts/doctype/sales_invoice/pos.js
@@ -293,8 +293,7 @@
 		
 		// check whether the item is already added
 		if (no_of_items != 0) {
-			$.each(frappe.model.get_children(this.frm.doctype + " Item", this.frm.doc.name, 
-				this.frm.cscript.fname,	this.frm.doctype), function(i, d) {
+			$.each(this.frm.doc[this.frm.cscript.fname] || [], function(i, d) {
 				if (d.item_code == item_code) {
 					caught = true;
 					if (serial_no)
@@ -335,8 +334,7 @@
 	},
 	update_qty: function(item_code, qty) {
 		var me = this;
-		$.each(frappe.model.get_children(this.frm.doctype + " Item", this.frm.doc.name, 
-			this.frm.cscript.fname, this.frm.doctype), function(i, d) {
+		$.each(this.frm.doc[this.frm.cscript.fname] || [], function(i, d) {
 			if (d.item_code == item_code) {
 				if (qty == 0) {
 					frappe.model.clear_doc(d.doctype, d.name);
@@ -387,8 +385,7 @@
 		var me = this;
 		var $items = this.wrapper.find("#cart tbody").empty();
 
-		$.each(frappe.model.get_children(this.frm.doctype + " Item", this.frm.doc.name, 
-			this.frm.cscript.fname, this.frm.doctype), function(i, d) {
+		$.each(this.frm.doc[this.frm.cscript.fname] || [], function(i, d) {
 
 			$(repl('<tr id="%(item_code)s" data-selected="false">\
 					<td>%(item_code)s%(item_name)s</td>\
@@ -422,8 +419,7 @@
 	},
 	show_taxes: function() {
 		var me = this;
-		var taxes = frappe.model.get_children(this.sales_or_purchase + " Taxes and Charges", 
-			this.frm.doc.name, this.frm.cscript.other_fname, this.frm.doctype);
+		var taxes = this.frm.doc[this.frm.cscript.other_fname] || [];
 		$(this.wrapper).find(".tax-table")
 			.toggle((taxes && taxes.length) ? true : false)
 			.find("tbody").empty();
@@ -544,8 +540,7 @@
 			}
 		}
 
-		var child = frappe.model.get_children(this.frm.doctype + " Item", this.frm.doc.name, 
-			this.frm.cscript.fname, this.frm.doctype);
+		var child = this.frm.doc[this.frm.cscript.fname] || [];
 
 		$.each(child, function(i, d) {
 			for (var i in selected_items) {
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index ebde867..077c913 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -199,7 +199,7 @@
 	},
 	
 	entries_add: function(doc, cdt, cdn) {
-		var row = frappe.model.get_doc(cdt, cdn);
+		var row = frappe.get_doc(cdt, cdn);
 		this.frm.script_manager.copy_from_first_row("entries", row, ["income_account", "cost_center"]);
 	},
 	
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js
index 6f35f4a..f4b425b 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js
@@ -54,7 +54,7 @@
 	
 	out ='';
 	if (!doc.print_without_amount) {
-		var cl = getchildren('Sales Taxes and Charges', doc.name, 'other_charges');
+		var cl = doc.other_charges || [];
 
 		// outer table	
 		var out='<div><table class="noborder" style="width:100%"><tr><td style="width: 60%"></td><td>';
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.js b/erpnext/buying/doctype/purchase_common/purchase_common.js
index 14f1843..e18b3ef 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.js
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.js
@@ -78,7 +78,7 @@
 	},
 	
 	price_list_rate: function(doc, cdt, cdn) {
-		var item = frappe.model.get_doc(cdt, cdn);
+		var item = frappe.get_doc(cdt, cdn);
 		frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]);
 		
 		item.rate = flt(item.price_list_rate * (1 - item.discount_percentage / 100.0),
@@ -92,7 +92,7 @@
 	},
 	
 	rate: function(doc, cdt, cdn) {
-		var item = frappe.model.get_doc(cdt, cdn);
+		var item = frappe.get_doc(cdt, cdn);
 		frappe.model.round_floats_in(item, ["rate", "discount_percentage"]);
 		
 		if(item.price_list_rate) {
@@ -107,7 +107,7 @@
 	
 	uom: function(doc, cdt, cdn) {
 		var me = this;
-		var item = frappe.model.get_doc(cdt, cdn);
+		var item = frappe.get_doc(cdt, cdn);
 		if(item.item_code && item.uom) {
 			return this.frm.call({
 				method: "erpnext.buying.utils.get_conversion_factor",
@@ -132,7 +132,7 @@
 	
 	conversion_factor: function(doc, cdt, cdn) {
 		if(frappe.meta.get_docfield(cdt, "stock_qty", cdn)) {
-			var item = frappe.model.get_doc(cdt, cdn);
+			var item = frappe.get_doc(cdt, cdn);
 			frappe.model.round_floats_in(item, ["qty", "conversion_factor"]);
 			item.stock_qty = flt(item.qty * item.conversion_factor, precision("stock_qty", item));
 			refresh_field("stock_qty", item.name, item.parentfield);
@@ -140,7 +140,7 @@
 	},
 	
 	warehouse: function(doc, cdt, cdn) {
-		var item = frappe.model.get_doc(cdt, cdn);
+		var item = frappe.get_doc(cdt, cdn);
 		if(item.item_code && item.warehouse) {
 			return this.frm.call({
 				method: "erpnext.buying.utils.get_projected_qty",
@@ -154,7 +154,7 @@
 	},
 	
 	project_name: function(doc, cdt, cdn) {
-		var item = frappe.model.get_doc(cdt, cdn);
+		var item = frappe.get_doc(cdt, cdn);
 		if(item.project_name) {
 			$.each(this.frm.doc[this.fname],
 				function(i, other_item) { 
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index 410deeb..1dfb78e 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -170,7 +170,7 @@
 
 	out ='';
 	
-	var cl = getchildren('Purchase Order Item',doc.name,'po_details');
+	var cl = doc.po_details || [];
 
 	// outer table	
 	var out='<div><table class="noborder" style="width:100%"><tr><td style="width: 50%"></td><td>';
diff --git a/erpnext/buying/doctype/supplier/supplier.js b/erpnext/buying/doctype/supplier/supplier.js
index cfe526f..05288c3 100644
--- a/erpnext/buying/doctype/supplier/supplier.js
+++ b/erpnext/buying/doctype/supplier/supplier.js
@@ -17,7 +17,7 @@
 		cur_frm.cscript.make_contact(doc,dt,dn);
 		
 		cur_frm.communication_view = new frappe.views.CommunicationList({
-			list: frappe.model.get("Communication", {"supplier": doc.name}),
+			list: frappe.get_list("Communication", {"supplier": doc.name}),
 			parent: cur_frm.fields_dict.communication_html.wrapper,
 			doc: doc
 		})		
diff --git a/erpnext/controllers/js/contact_address_common.js b/erpnext/controllers/js/contact_address_common.js
index 6a66469..d06f6a0 100644
--- a/erpnext/controllers/js/contact_address_common.js
+++ b/erpnext/controllers/js/contact_address_common.js
@@ -23,7 +23,7 @@
 				"Installation Note", "Opportunity", "Customer Issue", "Maintenance Visit",
 				"Maintenance Schedule"]
 				.indexOf(doctype)!==-1) {
-				var refdoc = frappe.model.get_doc(doctype, docname);
+				var refdoc = frappe.get_doc(doctype, docname);
 
 				if(refdoc.doctype == "Quotation" ? refdoc.quotation_to=="Customer" : true) {
 					cur_frm.set_value("customer", refdoc.customer || refdoc.name);
@@ -34,7 +34,7 @@
 			}
 			if(["Supplier", "Supplier Quotation", "Purchase Order", "Purchase Invoice", "Purchase Receipt"]
 				.indexOf(doctype)!==-1) {
-				var refdoc = frappe.model.get_doc(doctype, docname);
+				var refdoc = frappe.get_doc(doctype, docname);
 				cur_frm.set_value("supplier", refdoc.supplier || refdoc.name);
 				cur_frm.set_value("supplier_name", refdoc.supplier_name);
 				if(cur_frm.doc.doctype==="Address")
@@ -42,7 +42,7 @@
 			}
 			if(["Lead", "Quotation"]
 				.indexOf(doctype)!==-1) {
-				var refdoc = frappe.model.get_doc(doctype, docname);
+				var refdoc = frappe.get_doc(doctype, docname);
 				
 				if(refdoc.doctype == "Quotation" ? refdoc.quotation_to=="Lead" : true) {
 					cur_frm.set_value("lead", refdoc.lead || refdoc.name);
diff --git a/erpnext/hr/doctype/appraisal/appraisal.js b/erpnext/hr/doctype/appraisal/appraisal.js
index 5bcb96d..a87607c 100644
--- a/erpnext/hr/doctype/appraisal/appraisal.js
+++ b/erpnext/hr/doctype/appraisal/appraisal.js
@@ -32,7 +32,7 @@
 
 cur_frm.cscript.calculate_total_score = function(doc,cdt,cdn){
 	//return get_server_fields('calculate_total','','',doc,cdt,cdn,1);
-	var val = getchildren('Appraisal Goal', doc.name, 'appraisal_details', doc.doctype);
+	var val = doc.appraisal_details || [];
 	var total =0;
 	for(var i = 0; i<val.length; i++){
 		total = flt(total)+flt(val[i].score_earned)
@@ -61,7 +61,7 @@
 }
 
 cur_frm.cscript.calculate_total = function(doc,cdt,cdn){
-	var val = getchildren('Appraisal Goal', doc.name, 'appraisal_details', doc.doctype);
+	var val = doc.appraisal_details || [];
 	var total =0;
 	for(var i = 0; i<val.length; i++){
 		total = flt(total)+flt(val[i].score_earned);
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.js b/erpnext/hr/doctype/expense_claim/expense_claim.js
index 9c54fd6..a399d5f 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.js
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.js
@@ -69,8 +69,7 @@
 }
 
 cur_frm.cscript.clear_sanctioned = function(doc) {
-	var val = getchildren('Expense Claim Detail', doc.name, 
-		'expense_voucher_details', doc.doctype);
+	var val = doc.expense_voucher_details || [];
 	for(var i = 0; i<val.length; i++){
 		val[i].sanctioned_amount ='';
 	}
diff --git a/erpnext/hr/doctype/job_applicant/job_applicant.js b/erpnext/hr/doctype/job_applicant/job_applicant.js
index f0fe443..6186535 100644
--- a/erpnext/hr/doctype/job_applicant/job_applicant.js
+++ b/erpnext/hr/doctype/job_applicant/job_applicant.js
@@ -15,7 +15,7 @@
 	},
 	make_listing: function(doc) {
 		cur_frm.communication_view = new frappe.views.CommunicationList({
-			list: frappe.model.get("Communication", {"parent": doc.name, "parenttype": "Job Applicant"}),
+			list: frappe.get_list("Communication", {"parent": doc.name, "parenttype": "Job Applicant"}),
 			parent: cur_frm.fields_dict['thread_html'].wrapper,
 			doc: doc,
 			recipients: doc.email_id
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.js b/erpnext/hr/doctype/salary_slip/salary_slip.js
index e8aa638..3c11f9d 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.js
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.js
@@ -65,7 +65,7 @@
 // Calculate earning total
 // ------------------------------------------------------------------------
 var calculate_earning_total = function(doc, dt, dn) {
-	var tbl = getchildren('Salary Slip Earning', doc.name, 'earning_details', doc.doctype);
+	var tbl = doc.earning_details || [];
 
 	var total_earn = 0;
 	for(var i = 0; i < tbl.length; i++){
@@ -82,7 +82,7 @@
 // Calculate deduction total
 // ------------------------------------------------------------------------
 var calculate_ded_total = function(doc, dt, dn) {
-	var tbl = getchildren('Salary Slip Deduction', doc.name, 'deduction_details', doc.doctype);
+	var tbl = doc.deduction_details || [];
 
 	var total_ded = 0;
 	for(var i = 0; i < tbl.length; i++){
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.js b/erpnext/hr/doctype/salary_structure/salary_structure.js
index fc70455..0cfb6c4 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.js
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.js
@@ -4,8 +4,8 @@
 cur_frm.add_fetch('employee', 'company', 'company');
 
 cur_frm.cscript.onload = function(doc, dt, dn){
-  e_tbl = getchildren('Salary Structure Earning', doc.name, 'earning_details', doc.doctype);
-  d_tbl = getchildren('Salary Structure Deduction', doc.name, 'deduction_details', doc.doctype);
+  e_tbl = doc.earning_details || [];
+  d_tbl = doc.deduction_details || [];
   if (e_tbl.length == 0 && d_tbl.length == 0)
     return $c_obj(doc,'make_earn_ded_table','', function(r, rt) { refresh_many(['earning_details', 'deduction_details']);});
 }
@@ -39,8 +39,8 @@
 }
 
 var calculate_totals = function(doc, cdt, cdn) {
-  var tbl1 = getchildren('Salary Structure Earning', doc.name, 'earning_details', doc.doctype);
-  var tbl2 = getchildren('Salary Structure Deduction', doc.name, 'deduction_details', doc.doctype);
+  var tbl1 = doc.earning_details || [];
+  var tbl2 = doc.deduction_details || [];
   
   var total_earn = 0; var total_ded = 0;
   for(var i = 0; i < tbl1.length; i++){
diff --git a/erpnext/manufacturing/doctype/bom/bom.js b/erpnext/manufacturing/doctype/bom/bom.js
index 363ab75..d0e9cc7 100644
--- a/erpnext/manufacturing/doctype/bom/bom.js
+++ b/erpnext/manufacturing/doctype/bom/bom.js
@@ -34,7 +34,7 @@
 }
 
 var set_operation_no = function(doc) {
-	var op_table = getchildren('BOM Operation', doc.name, 'bom_operations');
+	var op_table = doc.bom_operations || [];
 	var operations = [];
 
 	for (var i=0, j=op_table.length; i<j; i++) {
@@ -45,7 +45,7 @@
 	frappe.meta.get_docfield("BOM Item", "operation_no", 
 		cur_frm.docname).options = operations.join("\n");
 	
-	$.each(getchildren("BOM Item", doc.name, "bom_materials"), function(i, v) {
+	$.each(doc.bom_materials || [], function(i, v) {
 		if(!inList(operations, cstr(v.operation_no))) v.operation_no = null;
 	});
 	
@@ -132,7 +132,7 @@
 }
 
 var calculate_op_cost = function(doc) {	
-	var op = getchildren('BOM Operation', doc.name, 'bom_operations');
+	var op = doc.bom_operations || [];
 	total_op_cost = 0;
 	for(var i=0;i<op.length;i++) {
 		op_cost =	flt(flt(op[i].hour_rate) * flt(op[i].time_in_mins) / 60, 2);
@@ -144,7 +144,7 @@
 }
 
 var calculate_rm_cost = function(doc) {	
-	var rm = getchildren('BOM Item', doc.name, 'bom_materials');
+	var rm = doc.bom_materials || [];
 	total_rm_cost = 0;
 	for(var i=0;i<rm.length;i++) {
 		amt =	flt(rm[i].rate) * flt(rm[i].qty);
diff --git a/erpnext/public/js/controllers/stock_controller.js b/erpnext/public/js/controllers/stock_controller.js
index 9f793e4..65b81bb 100644
--- a/erpnext/public/js/controllers/stock_controller.js
+++ b/erpnext/public/js/controllers/stock_controller.js
@@ -39,7 +39,7 @@
 	copy_account_in_all_row: function(doc, dt, dn, fieldname) {
 		var d = locals[dt][dn];
 		if(d[fieldname]){
-			var cl = getchildren(this.frm.cscript.tname, doc.name, this.frm.cscript.fname, doc.doctype);
+			var cl = doc[this.frm.cscript.fname] || [];
 			for(var i = 0; i < cl.length; i++) {
 				if(!cl[i][fieldname]) cl[i][fieldname] = d[fieldname];
 			}
diff --git a/erpnext/public/js/transaction.js b/erpnext/public/js/transaction.js
index 22c3c3a..cb868b2 100644
--- a/erpnext/public/js/transaction.js
+++ b/erpnext/public/js/transaction.js
@@ -113,7 +113,7 @@
 	
 	item_code: function(doc, cdt, cdn) {
 		var me = this;
-		var item = frappe.model.get_doc(cdt, cdn);
+		var item = frappe.get_doc(cdt, cdn);
 		if(item.item_code || item.barcode || item.serial_no) {
 			if(!this.validate_company_and_party()) {
 				cur_frm.fields_dict[me.frm.cscript.fname].grid.grid_rows[item.idx - 1].remove();
@@ -156,7 +156,7 @@
 
 	serial_no: function(doc, cdt, cdn) {
 		var me = this;
-		var item = frappe.model.get_doc(cdt, cdn);
+		var item = frappe.get_doc(cdt, cdn);
 
 		if (item.serial_no) {
 			if (!item.item_code) {
@@ -262,7 +262,7 @@
 	get_exchange_rate: function(from_currency, to_currency, callback) {
 		var exchange_name = from_currency + "-" + to_currency;
 		frappe.model.with_doc("Currency Exchange", exchange_name, function(name) {
-			var exchange_doc = frappe.model.get_doc("Currency Exchange", exchange_name);
+			var exchange_doc = frappe.get_doc("Currency Exchange", exchange_name);
 			callback(exchange_doc ? flt(exchange_doc.exchange_rate) : 0);
 		});
 	},
@@ -304,7 +304,7 @@
 	},
 
 	row_id: function(doc, cdt, cdn) {
-		var tax = frappe.model.get_doc(cdt, cdn);
+		var tax = frappe.get_doc(cdt, cdn);
 		try {
 			this.validate_on_previous_row(tax);
 			this.calculate_taxes_and_totals();
@@ -339,7 +339,7 @@
 	},
 	
 	included_in_print_rate: function(doc, cdt, cdn) {
-		var tax = frappe.model.get_doc(cdt, cdn);
+		var tax = frappe.get_doc(cdt, cdn);
 		try {
 			this.validate_on_previous_row(tax);
 			this.validate_inclusive_tax(tax);
diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js
index 9f7f278..868ea0e 100644
--- a/erpnext/public/js/utils.js
+++ b/erpnext/public/js/utils.js
@@ -7,7 +7,7 @@
 		if(!company && cur_frm)
 			company = cur_frm.doc.company;
 		if(company)
-			return frappe.model.get_doc(":Company", company).default_currency || frappe.boot.sysdefaults.currency;
+			return frappe.get_doc(":Company", company).default_currency || frappe.boot.sysdefaults.currency;
 		else
 			return frappe.boot.sysdefaults.currency;
 	},
diff --git a/erpnext/selling/doctype/lead/lead.js b/erpnext/selling/doctype/lead/lead.js
index c942be1..570a5e0 100644
--- a/erpnext/selling/doctype/lead/lead.js
+++ b/erpnext/selling/doctype/lead/lead.js
@@ -41,7 +41,7 @@
 		}
 		
 		cur_frm.communication_view = new frappe.views.CommunicationList({
-			list: frappe.model.get("Communication", {"parenttype": "Lead", "parent":this.frm.doc.name}),
+			list: frappe.get_list("Communication", {"parenttype": "Lead", "parent":this.frm.doc.name}),
 			parent: this.frm.fields_dict.communication_html.wrapper,
 			doc: this.frm.doc,
 			recipients: this.frm.doc.email_id
diff --git a/erpnext/selling/doctype/opportunity/opportunity.js b/erpnext/selling/doctype/opportunity/opportunity.js
index 06cf4b1..1dc4c1e 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.js
+++ b/erpnext/selling/doctype/opportunity/opportunity.js
@@ -30,7 +30,7 @@
 
 		if(!this.frm.doc.__islocal) {
 			cur_frm.communication_view = new frappe.views.CommunicationList({
-				list: frappe.model.get("Communication", {"opportunity": this.frm.doc.name}),
+				list: frappe.get_list("Communication", {"opportunity": this.frm.doc.name}),
 				parent: cur_frm.fields_dict.communication_html.wrapper,
 				doc: this.frm.doc,
 				recipients: this.frm.doc.contact_email
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 28a588a..ff0894a 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -55,7 +55,7 @@
 
 		if (!doc.__islocal) {
 			cur_frm.communication_view = new frappe.views.CommunicationList({
-				list: frappe.model.get("Communication", {"parent": doc.name, "parenttype": "Quotation"}),
+				list: frappe.get_list("Communication", {"parent": doc.name, "parenttype": "Quotation"}),
 				parent: cur_frm.fields_dict.communication_html.wrapper,
 				doc: doc,
 				recipients: doc.contact_email
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 727cca8..9d43065 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -86,7 +86,7 @@
 	},
 	
 	warehouse: function(doc, cdt, cdn) {
-		var item = frappe.model.get_doc(cdt, cdn);
+		var item = frappe.get_doc(cdt, cdn);
 		if(item.item_code && item.warehouse) {
 			return this.frm.call({
 				method: "erpnext.selling.utils.get_available_qty",
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index 6859567..ce2a798 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -70,7 +70,7 @@
 		
 		if(this.frm.fields_dict[this.fname].grid.get_field('batch_no')) {
 			this.frm.set_query("batch_no", this.fname, function(doc, cdt, cdn) {
-				var item = frappe.model.get_doc(cdt, cdn);
+				var item = frappe.get_doc(cdt, cdn);
 				if(!item.item_code) {
 					frappe.throw(frappe._("Please enter Item Code to get batch no"));
 				} else {
@@ -128,7 +128,7 @@
 	},
 	
 	price_list_rate: function(doc, cdt, cdn) {
-		var item = frappe.model.get_doc(cdt, cdn);
+		var item = frappe.get_doc(cdt, cdn);
 		frappe.model.round_floats_in(item, ["price_list_rate", "discount_percentage"]);
 		
 		item.rate = flt(item.price_list_rate * (1 - item.discount_percentage / 100.0),
@@ -138,7 +138,7 @@
 	},
 	
 	discount_percentage: function(doc, cdt, cdn) {
-		var item = frappe.model.get_doc(cdt, cdn);
+		var item = frappe.get_doc(cdt, cdn);
 		if(!item.price_list_rate) {
 			item.discount_percentage = 0.0;
 		} else {
@@ -147,7 +147,7 @@
 	},
 	
 	rate: function(doc, cdt, cdn) {
-		var item = frappe.model.get_doc(cdt, cdn);
+		var item = frappe.get_doc(cdt, cdn);
 		frappe.model.round_floats_in(item, ["rate", "price_list_rate"]);
 		
 		if(item.price_list_rate) {
@@ -188,7 +188,7 @@
 	},
 	
 	allocated_percentage: function(doc, cdt, cdn) {
-		var sales_person = frappe.model.get_doc(cdt, cdn);
+		var sales_person = frappe.get_doc(cdt, cdn);
 		
 		if(sales_person.allocated_percentage) {
 			sales_person.allocated_percentage = flt(sales_person.allocated_percentage,
@@ -203,7 +203,7 @@
 	},
 	
 	warehouse: function(doc, cdt, cdn) {
-		var item = frappe.model.get_doc(cdt, cdn);
+		var item = frappe.get_doc(cdt, cdn);
 		if(item.item_code && item.warehouse) {
 			return this.frm.call({
 				method: "erpnext.selling.utils.get_available_qty",
@@ -565,7 +565,7 @@
 // Help for Sales BOM items
 var set_sales_bom_help = function(doc) {
 	if(!cur_frm.fields_dict.packing_list) return;
-	if (getchildren('Packed Item', doc.name, 'packing_details').length) {
+	if ((doc.packing_details || []).length) {
 		$(cur_frm.fields_dict.packing_list.row.wrapper).toggle(true);
 		
 		if (inList(['Delivery Note', 'Sales Invoice'], doc.doctype)) {
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js
index 3a9ef8d..f94a118 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.js
@@ -166,7 +166,7 @@
 
 	out ='';
 	
-	var cl = getchildren('Delivery Note Item',doc.name,'delivery_note_details');
+	var cl = doc.delivery_note_details || [];
 
 	// outer table	
 	var out='<div><table class="noborder" style="width:100%"><tr><td style="width: 50%"></td><td>';
@@ -204,7 +204,7 @@
 	cur_frm.cscript.expense_account = function(doc, cdt, cdn){
 		var d = locals[cdt][cdn];
 		if(d.expense_account) {
-			var cl = getchildren('Delivery Note Item', doc.name, cur_frm.cscript.fname, doc.doctype);
+			var cl = doc[cur_frm.cscript.fname] || [];
 			for(var i = 0; i < cl.length; i++){
 				if(!cl[i].expense_account) cl[i].expense_account = d.expense_account;
 			}
@@ -227,7 +227,7 @@
 	cur_frm.cscript.cost_center = function(doc, cdt, cdn){
 		var d = locals[cdt][cdn];
 		if(d.cost_center) {
-			var cl = getchildren('Delivery Note Item', doc.name, cur_frm.cscript.fname, doc.doctype);
+			var cl = doc[cur_frm.cscript.fname] || [];
 			for(var i = 0; i < cl.length; i++){
 				if(!cl[i].cost_center) cl[i].cost_center = d.cost_center;
 			}
diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.js b/erpnext/stock/doctype/packing_slip/packing_slip.js
index f00fa77..ff1e1f0 100644
--- a/erpnext/stock/doctype/packing_slip/packing_slip.js
+++ b/erpnext/stock/doctype/packing_slip/packing_slip.js
@@ -59,7 +59,7 @@
 
 cur_frm.cscript.validate_calculate_item_details = function(doc) {
 	doc = locals[doc.doctype][doc.name];
-	var ps_detail = getchildren('Packing Slip Item', doc.name, 'item_details');
+	var ps_detail = doc.item_details || [];
 
 	cur_frm.cscript.validate_duplicate_items(doc, ps_detail);
 	cur_frm.cscript.calc_net_total_pkg(doc, ps_detail);
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
index f067d9c..88dff1a 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -47,7 +47,7 @@
 	},
 	
 	received_qty: function(doc, cdt, cdn) {
-		var item = frappe.model.get_doc(cdt, cdn);
+		var item = frappe.get_doc(cdt, cdn);
 		frappe.model.round_floats_in(item, ["qty", "received_qty"]);
 
 		item.qty = (item.qty < item.received_qty) ? item.qty : item.received_qty;
@@ -55,7 +55,7 @@
 	},
 	
 	qty: function(doc, cdt, cdn) {
-		var item = frappe.model.get_doc(cdt, cdn);
+		var item = frappe.get_doc(cdt, cdn);
 		frappe.model.round_floats_in(item, ["qty", "received_qty"]);
 		
 		if(!(item.received_qty || item.rejected_qty) && item.qty) {
@@ -74,7 +74,7 @@
 	},
 	
 	rejected_qty: function(doc, cdt, cdn) {
-		var item = frappe.model.get_doc(cdt, cdn);
+		var item = frappe.get_doc(cdt, cdn);
 		frappe.model.round_floats_in(item, ["received_qty", "rejected_qty"]);
 		
 		if(item.rejected_qty > item.received_qty) {
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 535fcb7..6ee3922 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -105,9 +105,9 @@
 				},
 				callback: function(r) {
 					if (!r.exc) {
-						for(d in getchildren('Stock Entry Detail', me.frm.doc.name, 'mtn_details')) {
+						$.each(doc.mtn_details || [], function(i, d) {
 							if(!d.expense_account) d.expense_account = r.message;
-						}
+						});
 					}
 				}
 			});
@@ -225,7 +225,7 @@
 	},
 
 	mtn_details_add: function(doc, cdt, cdn) {
-		var row = frappe.model.get_doc(cdt, cdn);
+		var row = frappe.get_doc(cdt, cdn);
 		this.frm.script_manager.copy_from_first_row("mtn_details", row, 
 			["expense_account", "cost_center"]);
 		
@@ -388,7 +388,7 @@
 }
 
 cur_frm.cscript.validate_items = function(doc) {
-	cl = getchildren('Stock Entry Detail', doc.name, 'mtn_details');
+	cl = doc.mtn_details || [];
 	if (!cl.length) {
 		msgprint(frappe._("Item table can not be blank"));
 		validated = false;
diff --git a/erpnext/support/doctype/support_ticket/support_ticket.js b/erpnext/support/doctype/support_ticket/support_ticket.js
index 034fa86..c186535 100644
--- a/erpnext/support/doctype/support_ticket/support_ticket.js
+++ b/erpnext/support/doctype/support_ticket/support_ticket.js
@@ -34,7 +34,7 @@
 	make_listing: function(doc) {
 		var wrapper = cur_frm.fields_dict['thread_html'].wrapper;
 		
-		var comm_list = frappe.model.get("Communication", {"parent": doc.name, "parenttype":"Support Ticket"})
+		var comm_list = frappe.get_list("Communication", {"parent": doc.name, "parenttype":"Support Ticket"})
 		
 		if(!comm_list.length) {
 			comm_list.push({
diff --git a/erpnext/utilities/doctype/contact/contact.js b/erpnext/utilities/doctype/contact/contact.js
index eb7681f..f2a2fdc 100644
--- a/erpnext/utilities/doctype/contact/contact.js
+++ b/erpnext/utilities/doctype/contact/contact.js
@@ -5,7 +5,7 @@
 
 cur_frm.cscript.refresh = function(doc) {
 	cur_frm.communication_view = new frappe.views.CommunicationList({
-		list: frappe.model.get("Communication", {"parent": doc.name, "parenttype": "Contact"}),
+		list: frappe.get_list("Communication", {"parent": doc.name, "parenttype": "Contact"}),
 		parent: cur_frm.fields_dict.communication_html.wrapper,
 		doc: doc,
 		recipients: doc.email_id