diff --git a/accounts/doctype/budget_distribution/budget_distribution.js b/accounts/doctype/budget_distribution/budget_distribution.js
index c8bfe11..5abd525 100644
--- a/accounts/doctype/budget_distribution/budget_distribution.js
+++ b/accounts/doctype/budget_distribution/budget_distribution.js
@@ -21,7 +21,7 @@
     }
     
     $c('runserverobj',args={'method' : 'get_months', 'docs' : 
-		compress_doclist(make_doclist(doc.doctype, doc.name))},callback1);
+		wn.model.compress(make_doclist(doc.doctype, doc.name))},callback1);
   }
 }
 
diff --git a/accounts/doctype/journal_voucher/journal_voucher.js b/accounts/doctype/journal_voucher/journal_voucher.js
index 784a134..8c60838 100644
--- a/accounts/doctype/journal_voucher/journal_voucher.js
+++ b/accounts/doctype/journal_voucher/journal_voucher.js
@@ -33,14 +33,14 @@
 	if(!cur_frm.doc.__islocal || !cur_frm.doc.company) { return; }
 
 	doc = locals[doc.doctype][doc.name];
-	var fields_to_refresh = LocalDB.set_default_values(doc);
+	var fields_to_refresh = wn.model.set_default_values(doc);
 	if(fields_to_refresh) { refresh_many(fields_to_refresh); }
 
 	fields_to_refresh = null;
 	var children = getchildren('Journal Voucher Detail', doc.name, 'entries');
 	if(!children) { return; }
 	for(var i=0; i<children.length; i++) {
-		LocalDB.set_default_values(children[i]);
+		wn.model.set_default_values(children[i]);
 	}
 	refresh_field('entries');
 }
@@ -193,7 +193,7 @@
 		if(!children || children.length==0) {
 			$c('accounts.get_default_bank_account', {company: doc.company }, function(r, rt) {
 				if(!r.exc) {
-					var jvd = LocalDB.add_child(doc, 'Journal Voucher Detail', 'entries');
+					var jvd = wn.model.add_child(doc, 'Journal Voucher Detail', 'entries');
 					jvd.account = cstr(r.message);
 					refresh_field('entries');
 				}
diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.js b/accounts/doctype/purchase_invoice/purchase_invoice.js
index 25b2601..1ab1bce 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -266,7 +266,7 @@
 }
 
 cur_frm.cscript.make_jv = function(doc, dt, dn, bank_account) {
-	var jv = LocalDB.create('Journal Voucher');
+	var jv = wn.model.make_new_doc_and_get_name('Journal Voucher');
 	jv = locals['Journal Voucher'][jv];
 	jv.voucher_type = 'Bank Voucher';
 	jv.remark = repl('Payment against voucher %(vn)s for %(rem)s', {vn:doc.name, rem:doc.remarks});
@@ -276,13 +276,13 @@
 	jv.company = doc.company;
 	
 	// debit to creditor
-	var d1 = LocalDB.add_child(jv, 'Journal Voucher Detail', 'entries');
+	var d1 = wn.model.add_child(jv, 'Journal Voucher Detail', 'entries');
 	d1.account = doc.credit_to;
 	d1.debit = doc.outstanding_amount;
 	d1.against_voucher = doc.name;
 	
 	// credit to bank
-	var d1 = LocalDB.add_child(jv, 'Journal Voucher Detail', 'entries');
+	var d1 = wn.model.add_child(jv, 'Journal Voucher Detail', 'entries');
 	d1.account = bank_account;
 	d1.credit = doc.outstanding_amount;
 	
diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js
index a15d1d0..7c9b477 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/accounts/doctype/sales_invoice/sales_invoice.js
@@ -29,7 +29,7 @@
 // On Load
 // -------
 cur_frm.cscript.onload = function(doc,dt,dn) {
-	if(!doc.customer && doc.debit_to) Meta.get_field(dt, 'debit_to', dn).print_hide = 0;
+	if(!doc.customer && doc.debit_to) wn.meta.get_docfield(dt, 'debit_to', dn).print_hide = 0;
 	if (doc.__islocal) {
 		//if(!doc.voucher_date) set_multiple(dt,dn,{voucher_date:get_today()});
 		if(!doc.due_date) set_multiple(dt,dn,{due_date:get_today()});
@@ -322,9 +322,9 @@
 cur_frm.cscript['Make Delivery Note'] = function() {
 
 	var doc = cur_frm.doc
-	n = createLocal('Delivery Note');
+	n = wn.model.make_new_doc_and_get_name('Delivery Note');
 	$c('dt_map', args={
-		'docs':compress_doclist([locals['Delivery Note'][n]]),
+		'docs':wn.model.compress([locals['Delivery Note'][n]]),
 		'from_doctype':doc.doctype,
 		'to_doctype':'Delivery Note',
 		'from_docname':doc.name,
@@ -484,7 +484,7 @@
 // Make Journal Voucher
 // --------------------
 cur_frm.cscript.make_jv = function(doc, dt, dn, bank_account) {
-	var jv = LocalDB.create('Journal Voucher');
+	var jv = wn.model.make_new_doc_and_get_name('Journal Voucher');
 	jv = locals['Journal Voucher'][jv];
 	jv.voucher_type = 'Bank Voucher';
 
@@ -493,14 +493,14 @@
 	jv.fiscal_year = doc.fiscal_year;
 
 	// debit to creditor
-	var d1 = LocalDB.add_child(jv, 'Journal Voucher Detail', 'entries');
+	var d1 = wn.model.add_child(jv, 'Journal Voucher Detail', 'entries');
 	d1.account = doc.debit_to;
 	d1.credit = doc.outstanding_amount;
 	d1.against_invoice = doc.name;
 
 
 	// credit to bank
-	var d1 = LocalDB.add_child(jv, 'Journal Voucher Detail', 'entries');
+	var d1 = wn.model.add_child(jv, 'Journal Voucher Detail', 'entries');
 	d1.account = bank_account;
 	d1.debit = doc.outstanding_amount;
 
diff --git a/buying/doctype/purchase_common/purchase_common.js b/buying/doctype/purchase_common/purchase_common.js
index 4905006..f4cfc29 100644
--- a/buying/doctype/purchase_common/purchase_common.js
+++ b/buying/doctype/purchase_common/purchase_common.js
@@ -51,14 +51,14 @@
 	if(!cur_frm.doc.__islocal) { return; }
 
 	doc = locals[doc.doctype][doc.name];
-	var fields_to_refresh = LocalDB.set_default_values(doc);
+	var fields_to_refresh = wn.model.set_default_values(doc);
 	if(fields_to_refresh) { refresh_many(fields_to_refresh); }
 
 	fields_to_refresh = null;
 	var children = getchildren(cur_frm.cscript.tname, doc.name, cur_frm.cscript.fname);
 	if(!children) { return; }
 	for(var i=0; i<children.length; i++) {
-		LocalDB.set_default_values(children[i]);
+		wn.model.set_default_values(children[i]);
 	}
 	refresh_field(cur_frm.cscript.fname);
 	cur_frm.cscript.load_taxes(doc, dt, dn, callback);
diff --git a/buying/doctype/purchase_order/purchase_order.js b/buying/doctype/purchase_order/purchase_order.js
index b3f4dd7..b5a7405 100644
--- a/buying/doctype/purchase_order/purchase_order.js
+++ b/buying/doctype/purchase_order/purchase_order.js
@@ -122,9 +122,9 @@
 
 //========================= Make Purchase Receipt =======================================================
 cur_frm.cscript['Make Purchase Receipt'] = function() {
-	n = createLocal('Purchase Receipt');
+	n = wn.model.make_new_doc_and_get_name('Purchase Receipt');
 	$c('dt_map', args={
-		'docs':compress_doclist([locals['Purchase Receipt'][n]]),
+		'docs':wn.model.compress([locals['Purchase Receipt'][n]]),
 		'from_doctype': cur_frm.doc.doctype,
 		'to_doctype':'Purchase Receipt',
 		'from_docname':cur_frm.doc.name,
@@ -137,9 +137,9 @@
 
 //========================== Make Purchase Invoice =====================================================
 cur_frm.cscript['Make Purchase Invoice'] = function() {
-	n = createLocal('Purchase Invoice');
+	n = wn.model.make_new_doc_and_get_name('Purchase Invoice');
 	$c('dt_map', {
-		'docs':compress_doclist([locals['Purchase Invoice'][n]]),
+		'docs':wn.model.compress([locals['Purchase Invoice'][n]]),
 		'from_doctype':cur_frm.doc.doctype,
 		'to_doctype':'Purchase Invoice',
 		'from_docname': cur_frm.doc.name,
@@ -158,7 +158,7 @@
 	var check = confirm("Do you really want to STOP " + doc.name);
 
 	if (check) {
-		$c('runserverobj', args={'method':'update_status', 'arg': 'Stopped', 'docs': compress_doclist(make_doclist(doc.doctype, doc.name))}, function(r,rt) {
+		$c('runserverobj', args={'method':'update_status', 'arg': 'Stopped', 'docs': wn.model.compress(make_doclist(doc.doctype, doc.name))}, function(r,rt) {
 			cur_frm.refresh();
 		});	
 	}
@@ -171,7 +171,7 @@
 	var check = confirm("Do you really want to UNSTOP " + doc.name);
 
 	if (check) {
-		$c('runserverobj', args={'method':'update_status', 'arg': 'Submitted', 'docs': compress_doclist(make_doclist(doc.doctype, doc.name))}, function(r,rt) {
+		$c('runserverobj', args={'method':'update_status', 'arg': 'Submitted', 'docs': wn.model.compress(make_doclist(doc.doctype, doc.name))}, function(r,rt) {
 			cur_frm.refresh();
 		});	
 	}
diff --git a/buying/doctype/purchase_request/purchase_request.js b/buying/doctype/purchase_request/purchase_request.js
index 7a397b5..510762a 100644
--- a/buying/doctype/purchase_request/purchase_request.js
+++ b/buying/doctype/purchase_request/purchase_request.js
@@ -86,9 +86,9 @@
 // Make Purchase Order
 cur_frm.cscript['Make Purchase Order'] = function() {
 	var doc = cur_frm.doc;
-	n = createLocal('Purchase Order');
+	n = wn.model.make_new_doc_and_get_name('Purchase Order');
 	$c('dt_map', args={
-		'docs':compress_doclist([locals['Purchase Order'][n]]),
+		'docs':wn.model.compress([locals['Purchase Order'][n]]),
 		'from_doctype':doc.doctype,
 		'to_doctype':'Purchase Order',
 		'from_docname':doc.name,
@@ -106,7 +106,7 @@
 	var check = confirm("Do you really want to STOP this Purchase Request?");
 
 	if (check) {
-		$c('runserverobj', args={'method':'update_status', 'arg': 'Stopped', 'docs': compress_doclist(make_doclist(doc.doctype, doc.name))}, function(r,rt) {
+		$c('runserverobj', args={'method':'update_status', 'arg': 'Stopped', 'docs': wn.model.compress(make_doclist(doc.doctype, doc.name))}, function(r,rt) {
 			cur_frm.refresh();
 		});
 	}
@@ -119,7 +119,7 @@
 	var check = confirm("Do you really want to UNSTOP this Purchase Request?");
 	
 	if (check) {
-		$c('runserverobj', args={'method':'update_status', 'arg': 'Submitted','docs': compress_doclist(make_doclist(doc.doctype, doc.name))}, function(r,rt) {
+		$c('runserverobj', args={'method':'update_status', 'arg': 'Submitted','docs': wn.model.compress(make_doclist(doc.doctype, doc.name))}, function(r,rt) {
 			cur_frm.refresh();
 			
 		});
@@ -127,9 +127,9 @@
 }
 
 cur_frm.cscript.make_supplier_quotation = function() {
-	var new_sq_name = createLocal("Supplier Quotation");
+	var new_sq_name = wn.model.make_new_doc_and_get_name("Supplier Quotation");
 	$c("dt_map", {
-		"docs": compress_doclist([locals['Supplier Quotation'][new_sq_name]]),
+		"docs": wn.model.compress([locals['Supplier Quotation'][new_sq_name]]),
 		"from_doctype": cur_frm.doc.doctype,
 		"to_doctype": "Supplier Quotation",
 		"from_docname": cur_frm.doc.name,
diff --git a/buying/doctype/supplier/supplier.js b/buying/doctype/supplier/supplier.js
index 1b7f369..e527dbe 100644
--- a/buying/doctype/supplier/supplier.js
+++ b/buying/doctype/supplier/supplier.js
@@ -79,7 +79,7 @@
 			page_length: 2,
 			new_doctype: "Contact",
 			custom_new_doc: function(doctype) {
-				var contact = LocalDB.create('Contact');
+				var contact = wn.model.make_new_doc_and_get_name('Contact');
 				contact = locals['Contact'][contact];
 				contact.supplier = cur_frm.doc.name;
 				contact.supplier_name = cur_frm.doc.supplier_name;
diff --git a/buying/doctype/supplier_quotation/supplier_quotation.js b/buying/doctype/supplier_quotation/supplier_quotation.js
index 99ee20c..37bb625 100644
--- a/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -49,9 +49,9 @@
 }
 
 cur_frm.cscript.make_purchase_order = function() {
-	var new_po_name = createLocal("Purchase Order");
+	var new_po_name = wn.model.make_new_doc_and_get_name("Purchase Order");
 	$c("dt_map", {
-		"docs": compress_doclist([locals['Purchase Order'][new_po_name]]),
+		"docs": wn.model.compress([locals['Purchase Order'][new_po_name]]),
 		"from_doctype": cur_frm.doc.doctype,
 		"to_doctype": "Purchase Order",
 		"from_docname": cur_frm.doc.name,
diff --git a/home/page/activity/activity.js b/home/page/activity/activity.js
index 90977be..6746919 100644
--- a/home/page/activity/activity.js
+++ b/home/page/activity/activity.js
@@ -36,7 +36,7 @@
 		
 		// feedtype
 		if(!data.feed_type) {
-			data.feed_type = get_doctype_label(data.doc_type);
+			data.feed_type = wn._(data.doc_type);
 			data.add_class = "label-info";
 			data.onclick = repl('onclick="window.location.href=\'#!List/%(feed_type)s\';"', data)
 		}
diff --git a/hr/doctype/employee/employee.js b/hr/doctype/employee/employee.js
index eab90cb..07cb9c1 100644
--- a/hr/doctype/employee/employee.js
+++ b/hr/doctype/employee/employee.js
@@ -53,7 +53,7 @@
 }
 
 cur_frm.cscript.make_salary_structure = function(doc,dt,dn,det){
-	var st = LocalDB.create('Salary Structure');
+	var st = wn.model.make_new_doc_and_get_name('Salary Structure');
 	st = locals['Salary Structure'][st];
 	st.employee = doc.name;
 	st.employee_name = doc.employee_name;
diff --git a/hr/doctype/leave_control_panel/leave_control_panel.js b/hr/doctype/leave_control_panel/leave_control_panel.js
index 67fe9b5..f3a635c 100644
--- a/hr/doctype/leave_control_panel/leave_control_panel.js
+++ b/hr/doctype/leave_control_panel/leave_control_panel.js
@@ -24,7 +24,7 @@
 // Validation For To Date
 // ================================================================================================
 cur_frm.cscript.to_date = function(doc, cdt, cdn) {
-  $c('runserverobj', args={'method':'to_date_validation','docs':compress_doclist(make_doclist(doc.doctype, doc.name))},
+  $c('runserverobj', args={'method':'to_date_validation','docs':wn.model.compress(make_doclist(doc.doctype, doc.name))},
     function(r, rt) {
     var doc = locals[cdt][cdn];
     if (r.message) {
diff --git a/hr/doctype/salary_manager/salary_manager.js b/hr/doctype/salary_manager/salary_manager.js
index afe7e70..d6dcc5c 100644
--- a/hr/doctype/salary_manager/salary_manager.js
+++ b/hr/doctype/salary_manager/salary_manager.js
@@ -28,7 +28,7 @@
 		if (r.message)
 			display_activity_log(r.message);
 	}
-	$c('runserverobj', args={'method':'create_sal_slip','docs':compress_doclist(make_doclist (cdt, cdn))},callback);
+	$c('runserverobj', args={'method':'create_sal_slip','docs':wn.model.compress(make_doclist (cdt, cdn))},callback);
 }
 
 
@@ -42,7 +42,7 @@
 			if (r.message)
 				display_activity_log(r.message);
 		}
-		$c('runserverobj', args={'method':'submit_salary_slip','docs':compress_doclist(make_doclist (cdt, cdn))},callback);
+		$c('runserverobj', args={'method':'submit_salary_slip','docs':wn.model.compress(make_doclist (cdt, cdn))},callback);
 	}
 }
 
@@ -59,7 +59,7 @@
 //-----------------------
 cur_frm.cscript.make_jv = function(doc, dt, dn) {
 	var call_back = function(r,rt){
-		var jv = LocalDB.create('Journal Voucher');
+		var jv = wn.model.make_new_doc_and_get_name('Journal Voucher');
 		jv = locals['Journal Voucher'][jv];
 		jv.voucher_type = 'Bank Voucher';
 		jv.user_remark = 'Payment of salary for the month: ' + doc.month + 'and fiscal year: ' + doc.fiscal_year;
@@ -68,12 +68,12 @@
 		jv.posting_date = dateutil.obj_to_str(new Date());
 
 		// credit to bank
-		var d1 = LocalDB.add_child(jv, 'Journal Voucher Detail', 'entries');
+		var d1 = wn.model.add_child(jv, 'Journal Voucher Detail', 'entries');
 		d1.account = r.message['default_bank_account'];
 		d1.credit = r.message['amount']
 
 		// debit to salary account
-		var d2 = LocalDB.add_child(jv, 'Journal Voucher Detail', 'entries');
+		var d2 = wn.model.add_child(jv, 'Journal Voucher Detail', 'entries');
 		d2.account = r.message['default_salary_account'];
 		d2.debit = r.message['amount']
 
diff --git a/hr/doctype/salary_structure/salary_structure.js b/hr/doctype/salary_structure/salary_structure.js
index 3692fe8..873ba17 100644
--- a/hr/doctype/salary_structure/salary_structure.js
+++ b/hr/doctype/salary_structure/salary_structure.js
@@ -42,9 +42,9 @@
   var doc = cur_frm.doc;  
   var callback = function(r,rt){
     ret = r.message;
-    n = createLocal("Salary Slip");
+    n = wn.model.make_new_doc_and_get_name("Salary Slip");
     $c('dt_map', args={
-      'docs':compress_doclist([locals["Salary Slip"][n]]),
+      'docs':wn.model.compress([locals["Salary Slip"][n]]),
       'from_doctype':'Salary Structure',
       'to_doctype':'Salary Slip',
       'from_docname':doc.name,
diff --git a/production/doctype/production_order/production_order.js b/production/doctype/production_order/production_order.js
index 7949757..4a1600d 100644
--- a/production/doctype/production_order/production_order.js
+++ b/production/doctype/production_order/production_order.js
@@ -70,7 +70,7 @@
 }
 
 cur_frm.cscript.make_se = function(doc, process) {
-  var se = LocalDB.create('Stock Entry');
+  var se = wn.model.make_new_doc_and_get_name('Stock Entry');
   se = locals['Stock Entry'][se];
   se.purpose = 'Production Order';
   se.process = process;
diff --git a/public/js/gantt_task.js b/public/js/gantt_task.js
index 066ad34..6b679cf 100644
--- a/public/js/gantt_task.js
+++ b/public/js/gantt_task.js
@@ -79,7 +79,7 @@
 			$('<button class="btn"><i class="icon icon-plus"></i>\
 				Create a new Task</button>').click(function() {
 				wn.model.with_doctype('Task', function() {
-					var new_name = LocalDB.create('Task');
+					var new_name = wn.model.make_new_doc_and_get_name('Task');
 					if(project)
 						locals.Task[new_name].project = project;
 					wn.set_route('Form', 'Task', new_name);
diff --git a/public/js/modules.js b/public/js/modules.js
index 9fa7f30..7dc8038 100644
--- a/public/js/modules.js
+++ b/public/js/modules.js
@@ -111,7 +111,7 @@
 	$(wrapper).find('[href*="List/"]').each(function() {
 		var href = $(this).attr('href');
 		var dt = href.split('/')[1];
-		if(wn.boot.profile.all_read.indexOf(get_label_doctype(dt))==-1) {
+		if(wn.boot.profile.all_read.indexOf(dt)==-1) {
 			replace_link(this);
 		}
 	});
@@ -128,7 +128,7 @@
 	$(wrapper).find('[href*="Form/"]').each(function() {
 		var href = $(this).attr('href');
 		var dt = href.split('/')[1];
-		if(wn.boot.profile.all_read.indexOf(get_label_doctype(dt))==-1) {
+		if(wn.boot.profile.all_read.indexOf(dt)==-1) {
 			replace_link(this);
 		}
 	});
diff --git a/selling/doctype/customer/customer.js b/selling/doctype/customer/customer.js
index d20b0c9..845f543 100644
--- a/selling/doctype/customer/customer.js
+++ b/selling/doctype/customer/customer.js
@@ -35,7 +35,7 @@
 	doc = locals[doc.doctype][doc.name];
 	if(!(doc.__islocal && doc.lead_name)) { return; }
 
-	var fields_to_refresh = LocalDB.set_default_values(doc);
+	var fields_to_refresh = wn.model.set_default_values(doc);
 	if(fields_to_refresh) { refresh_many(fields_to_refresh); }
 }
 
@@ -89,7 +89,7 @@
 			parent: cur_frm.fields_dict['contact_html'].wrapper,
 			page_length: 2,
 			custom_new_doc: function(doctype) {
-				var contact = LocalDB.create('Contact');
+				var contact = wn.model.make_new_doc_and_get_name('Contact');
 				contact = locals['Contact'][contact];
 				contact.customer = cur_frm.doc.name;
 				contact.customer_name = cur_frm.doc.customer_name;
diff --git a/selling/doctype/lead/lead.js b/selling/doctype/lead/lead.js
index e4b3a7d..9dd64de 100644
--- a/selling/doctype/lead/lead.js
+++ b/selling/doctype/lead/lead.js
@@ -83,15 +83,15 @@
 
 cur_frm.cscript['Create Customer'] = function(){
 	var doc = cur_frm.doc;
-	$c('runserverobj',args={ 'method':'check_status', 'docs':compress_doclist(make_doclist(doc.doctype, doc.name))},
+	$c('runserverobj',args={ 'method':'check_status', 'docs':wn.model.compress(make_doclist(doc.doctype, doc.name))},
 		function(r,rt){
 			if(r.message == 'Converted'){
 				msgprint("This lead is already converted to customer");
 			}
 			else{
-				n = createLocal("Customer");
+				n = wn.model.make_new_doc_and_get_name("Customer");
 				$c('dt_map', args={
-					'docs':compress_doclist([locals["Customer"][n]]),
+					'docs':wn.model.compress([locals["Customer"][n]]),
 					'from_doctype':'Lead',
 					'to_doctype':'Customer',
 					'from_docname':doc.name,
@@ -110,15 +110,15 @@
 // ===============================================================
 cur_frm.cscript['Create Opportunity'] = function(){
 	var doc = cur_frm.doc;
-	$c('runserverobj',args={ 'method':'check_status', 'docs':compress_doclist(make_doclist(doc.doctype, doc.name))},
+	$c('runserverobj',args={ 'method':'check_status', 'docs':wn.model.compress(make_doclist(doc.doctype, doc.name))},
 		function(r,rt){
 			if(r.message == 'Converted'){
 				msgprint("This lead is now converted to customer. Please create enquiry on behalf of customer");
 			}
 			else{
-				n = createLocal("Opportunity");
+				n = wn.model.make_new_doc_and_get_name("Opportunity");
 				$c('dt_map', args={
-					'docs':compress_doclist([locals["Opportunity"][n]]),
+					'docs':wn.model.compress([locals["Opportunity"][n]]),
 					'from_doctype':'Lead',
 					'to_doctype':'Opportunity',
 					'from_docname':doc.name,
diff --git a/selling/doctype/opportunity/opportunity.js b/selling/doctype/opportunity/opportunity.js
index 2b530ff..7092483 100644
--- a/selling/doctype/opportunity/opportunity.js
+++ b/selling/doctype/opportunity/opportunity.js
@@ -156,9 +156,9 @@
 
 // Create New Quotation
 cur_frm.cscript['Create Quotation'] = function(){
-	n = createLocal("Quotation");
+	n = wn.model.make_new_doc_and_get_name("Quotation");
 	$c('dt_map', args={
-		'docs':compress_doclist([locals["Quotation"][n]]),
+		'docs':wn.model.compress([locals["Quotation"][n]]),
 		'from_doctype':'Opportunity',
 		'to_doctype':'Quotation',
 		'from_docname':cur_frm.docname,
diff --git a/selling/doctype/quotation/quotation.js b/selling/doctype/quotation/quotation.js
index 7199132..40e1518 100644
--- a/selling/doctype/quotation/quotation.js
+++ b/selling/doctype/quotation/quotation.js
@@ -180,9 +180,9 @@
 	var doc = cur_frm.doc;
 
 	if (doc.docstatus == 1) {
-		var n = createLocal("Sales Order");
+		var n = wn.model.make_new_doc_and_get_name("Sales Order");
 		$c('dt_map', args={
-			'docs':compress_doclist([locals["Sales Order"][n]]),
+			'docs':wn.model.compress([locals["Sales Order"][n]]),
 			'from_doctype':'Quotation',
 			'to_doctype':'Sales Order',
 			'from_docname':doc.name,
diff --git a/selling/doctype/sales_common/sales_common.js b/selling/doctype/sales_common/sales_common.js
index c5eed98..de56a6c 100644
--- a/selling/doctype/sales_common/sales_common.js
+++ b/selling/doctype/sales_common/sales_common.js
@@ -46,14 +46,14 @@
 	if(!cur_frm.doc.__islocal) { return; }
 
 	doc = locals[doc.doctype][doc.name];
-	var fields_to_refresh = LocalDB.set_default_values(doc);
+	var fields_to_refresh = wn.model.set_default_values(doc);
 	if(fields_to_refresh) { refresh_many(fields_to_refresh); }
 
 	fields_to_refresh = null;
 	var children = getchildren(cur_frm.cscript.tname, doc.name, cur_frm.cscript.fname);
 	if(!children) { return; }
 	for(var i=0; i<children.length; i++) {
-		LocalDB.set_default_values(children[i]);
+		wn.model.set_default_values(children[i]);
 	}
 	refresh_field(cur_frm.cscript.fname);
 	cur_frm.cscript.load_taxes(doc, dt, dn, callback);
diff --git a/selling/doctype/sales_order/sales_order.js b/selling/doctype/sales_order/sales_order.js
index 8950a55..f232a37 100644
--- a/selling/doctype/sales_order/sales_order.js
+++ b/selling/doctype/sales_order/sales_order.js
@@ -77,7 +77,7 @@
 
 			// indent
 			if(!doc.order_type || (doc.order_type == 'Sales'))
-				cur_frm.add_custom_button('Make ' + get_doctype_label('Purchase Request'), cur_frm.cscript['Make Purchase Request']);
+				cur_frm.add_custom_button('Make ' + wn._('Purchase Request'), cur_frm.cscript['Make Purchase Request']);
 			
 			// sales invoice
 			if(flt(doc.per_billed, 2) < 100)
@@ -163,7 +163,7 @@
 
 //================ create new contact ============================================================================
 cur_frm.cscript.new_contact = function(){
-	tn = createLocal('Contact');
+	tn = wn.model.make_new_doc_and_get_name('Contact');
 	locals['Contact'][tn].is_customer = 1;
 	if(doc.customer) locals['Contact'][tn].customer = doc.customer;
 	loaddoc('Contact', tn);
@@ -222,9 +222,9 @@
 		$c_obj(make_doclist(doc.doctype, doc.name),'check_maintenance_schedule','',
 			function(r,rt){
 				if(r.message == 'No'){
-					n = createLocal("Maintenance Schedule");
+					n = wn.model.make_new_doc_and_get_name("Maintenance Schedule");
 					$c('dt_map', args={
-									'docs':compress_doclist([locals["Maintenance Schedule"][n]]),
+									'docs':wn.model.compress([locals["Maintenance Schedule"][n]]),
 									'from_doctype':'Sales Order',
 									'to_doctype':'Maintenance Schedule',
 									'from_docname':doc.name,
@@ -251,9 +251,9 @@
 		$c_obj(make_doclist(doc.doctype, doc.name),'check_maintenance_visit','',
 			function(r,rt){
 				if(r.message == 'No'){
-					n = createLocal("Maintenance Visit");
+					n = wn.model.make_new_doc_and_get_name("Maintenance Visit");
 					$c('dt_map', args={
-									'docs':compress_doclist([locals["Maintenance Visit"][n]]),
+									'docs':wn.model.compress([locals["Maintenance Visit"][n]]),
 									'from_doctype':'Sales Order',
 									'to_doctype':'Maintenance Visit',
 									'from_docname':doc.name,
@@ -277,9 +277,9 @@
 cur_frm.cscript['Make Purchase Request'] = function() {
 	var doc = cur_frm.doc;
 	if (doc.docstatus == 1) { 
-	n = createLocal("Purchase Request");
+	n = wn.model.make_new_doc_and_get_name("Purchase Request");
 	$c('dt_map', args={
-					'docs':compress_doclist([locals["Purchase Request"][n]]),
+					'docs':wn.model.compress([locals["Purchase Request"][n]]),
 					'from_doctype':'Sales Order',
 					'to_doctype':'Purchase Request',
 					'from_docname':doc.name,
@@ -298,9 +298,9 @@
 cur_frm.cscript['Make Delivery Note'] = function() {
 	var doc = cur_frm.doc;
 	if (doc.docstatus == 1) { 
-	n = createLocal("Delivery Note");
+	n = wn.model.make_new_doc_and_get_name("Delivery Note");
 	$c('dt_map', args={
-					'docs':compress_doclist([locals["Delivery Note"][n]]),
+					'docs':wn.model.compress([locals["Delivery Note"][n]]),
 					'from_doctype':'Sales Order',
 					'to_doctype':'Delivery Note',
 					'from_docname':doc.name,
@@ -319,9 +319,9 @@
 cur_frm.cscript['Make Sales Invoice'] = function() {
 	var doc = cur_frm.doc;
 
-	n = createLocal('Sales Invoice');
+	n = wn.model.make_new_doc_and_get_name('Sales Invoice');
 	$c('dt_map', args={
-		'docs':compress_doclist([locals['Sales Invoice'][n]]),
+		'docs':wn.model.compress([locals['Sales Invoice'][n]]),
 		'from_doctype':doc.doctype,
 		'to_doctype':'Sales Invoice',
 		'from_docname':doc.name,
@@ -341,7 +341,7 @@
 	var check = confirm("Are you sure you want to STOP " + doc.name);
 
 	if (check) {
-		$c('runserverobj', args={'method':'stop_sales_order', 'docs': compress_doclist(make_doclist(doc.doctype, doc.name))}, function(r,rt) {
+		$c('runserverobj', args={'method':'stop_sales_order', 'docs': wn.model.compress(make_doclist(doc.doctype, doc.name))}, function(r,rt) {
 			cur_frm.refresh();
 		});
 	}
@@ -355,7 +355,7 @@
 	var check = confirm("Are you sure you want to UNSTOP " + doc.name);
 
 	if (check) {
-		$c('runserverobj', args={'method':'unstop_sales_order', 'docs': compress_doclist(make_doclist(doc.doctype, doc.name))}, function(r,rt) {
+		$c('runserverobj', args={'method':'unstop_sales_order', 'docs': wn.model.compress(make_doclist(doc.doctype, doc.name))}, function(r,rt) {
 			cur_frm.refresh();
 		});
 	}
diff --git a/setup/doctype/contact_control/contact_control.js b/setup/doctype/contact_control/contact_control.js
index faadc6a..fe3c041 100755
--- a/setup/doctype/contact_control/contact_control.js
+++ b/setup/doctype/contact_control/contact_control.js
@@ -55,7 +55,7 @@
 // get sates on country trigger
 // -----------------------------
 cur_frm.cscript.get_states=function(doc,dt,dn){
-   $c('runserverobj', args={'method':'check_state', 'docs':compress_doclist(make_doclist(doc.doctype, doc.name))},
+   $c('runserverobj', args={'method':'check_state', 'docs':wn.model.compress(make_doclist(doc.doctype, doc.name))},
     function(r,rt){
       if(r.message) {
         set_field_options('state', r.message);
diff --git a/setup/doctype/sales_partner/sales_partner.js b/setup/doctype/sales_partner/sales_partner.js
index f5c084d..a0f138c 100644
--- a/setup/doctype/sales_partner/sales_partner.js
+++ b/setup/doctype/sales_partner/sales_partner.js
@@ -77,7 +77,7 @@
 			page_length: 2,
 			new_doctype: "Contact",
 			custom_new_doc: function(doctype) {
-				var contact = LocalDB.create('Contact');
+				var contact = wn.model.make_new_doc_and_get_name('Contact');
 				contact = locals['Contact'][contact];
 				contact.sales_partner = cur_frm.doc.name;
 				wn.set_route("Form", "Contact", contact.name);
diff --git a/setup/doctype/workflow_rule/workflow_rule.js b/setup/doctype/workflow_rule/workflow_rule.js
index 9fb2013..a506101 100644
--- a/setup/doctype/workflow_rule/workflow_rule.js
+++ b/setup/doctype/workflow_rule/workflow_rule.js
@@ -32,7 +32,7 @@
   var mydoc = doc
   
   var call_back_action = function(mydoc){
-    $c('runserverobj', args={'method':'field_label_list', 'docs':compress_doclist (make_doclist (mydoc.doctype,mydoc.name))},
+    $c('runserverobj', args={'method':'field_label_list', 'docs':wn.model.compress (make_doclist (mydoc.doctype,mydoc.name))},
     function(r, rt) {
       var doc = locals[mydoc.doctype][mydoc.name];
       cur_frm.fields_dict.workflow_action_details.grid.get_field("action_field").df.options = r.message;
@@ -41,7 +41,7 @@
   }
   
   var call_back_rule = function(mydoc){
-    $c('runserverobj', args={'method':'compare_field', 'docs':compress_doclist (make_doclist (mydoc.doctype,mydoc.name))},
+    $c('runserverobj', args={'method':'compare_field', 'docs':wn.model.compress (make_doclist (mydoc.doctype,mydoc.name))},
     function(r, rt) {
       var doc = locals[mydoc.doctype][mydoc.name];
       cur_frm.fields_dict.workflow_rule_details.grid.get_field("comparing_field").df.options = r.message;
@@ -50,7 +50,7 @@
     );
   }
   
-  $c('runserverobj', args={'method':'maindoc_field', 'docs':compress_doclist (make_doclist (doc.doctype,doc.name))},
+  $c('runserverobj', args={'method':'maindoc_field', 'docs':wn.model.compress (make_doclist (doc.doctype,doc.name))},
     function(r, rt) {
      var doc = locals[mydoc.doctype][mydoc.name];
      cur_frm.fields_dict.workflow_rule_details.grid.get_field("rule_field").df.options = r.message;
diff --git a/stock/doctype/delivery_note/delivery_note.js b/stock/doctype/delivery_note/delivery_note.js
index 837d52c..a80966a 100644
--- a/stock/doctype/delivery_note/delivery_note.js
+++ b/stock/doctype/delivery_note/delivery_note.js
@@ -128,7 +128,7 @@
 
 //================ create new contact ============================================================================
 cur_frm.cscript.new_contact = function(){
-	tn = createLocal('Contact');
+	tn = wn.model.make_new_doc_and_get_name('Contact');
 	locals['Contact'][tn].is_customer = 1;
 	if(doc.customer) locals['Contact'][tn].customer = doc.customer;
 	loaddoc('Contact', tn);
@@ -192,9 +192,9 @@
 //-----------------------------------Make Sales Invoice----------------------------------------------
 cur_frm.cscript['Make Sales Invoice'] = function() {
 	var doc = cur_frm.doc
-	n = createLocal('Sales Invoice');
+	n = wn.model.make_new_doc_and_get_name('Sales Invoice');
 	$c('dt_map', args={
-		'docs':compress_doclist([locals['Sales Invoice'][n]]),
+		'docs':wn.model.compress([locals['Sales Invoice'][n]]),
 		'from_doctype':doc.doctype,
 		'to_doctype':'Sales Invoice',
 		'from_docname':doc.name,
@@ -209,9 +209,9 @@
 cur_frm.cscript['Make Installation Note'] = function() {
 	var doc = cur_frm.doc;
 	if(doc.per_installed < 99.99){
-		n = createLocal('Installation Note');
+		n = wn.model.make_new_doc_and_get_name('Installation Note');
 		$c('dt_map', args={
-			'docs':compress_doclist([locals['Installation Note'][n]]),
+			'docs':wn.model.compress([locals['Installation Note'][n]]),
 			'from_doctype':doc.doctype,
 			'to_doctype':'Installation Note',
 			'from_docname':doc.name,
@@ -228,9 +228,9 @@
 //-----------------------------------Make Sales Invoice----------------------------------------------
 cur_frm.cscript['Make Packing Slip'] = function() {
 	var doc = cur_frm.doc
-	n = createLocal('Packing Slip');
+	n = wn.model.make_new_doc_and_get_name('Packing Slip');
 	$c('dt_map', args={
-		'docs':compress_doclist([locals['Packing Slip'][n]]),
+		'docs':wn.model.compress([locals['Packing Slip'][n]]),
 		'from_doctype':doc.doctype,
 		'to_doctype':'Packing Slip',
 		'from_docname':doc.name,
diff --git a/stock/doctype/purchase_receipt/purchase_receipt.js b/stock/doctype/purchase_receipt/purchase_receipt.js
index 9ed587b..b3efb14 100644
--- a/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -24,7 +24,7 @@
 
 //========================== On Load ================================================================
 cur_frm.cscript.onload = function(doc, cdt, cdn) {
-	if(!doc.fiscal_year && doc.__islocal){ set_default_values(doc);}
+	if(!doc.fiscal_year && doc.__islocal){ wn.model.set_default_values(doc);}
 	if (!doc.posting_date) doc.posting_date = dateutil.obj_to_str(new Date());
 	if (!doc.transaction_date) doc.transaction_date = dateutil.obj_to_str(new Date());
 	if (!doc.status) doc.status = 'Draft';
@@ -107,7 +107,7 @@
 
 //================ create new contact ============================================================================
 cur_frm.cscript.new_contact = function(){
-	tn = createLocal('Contact');
+	tn = wn.model.make_new_doc_and_get_name('Contact');
 	locals['Contact'][tn].is_supplier = 1;
 	if(doc.supplier) locals['Contact'][tn].supplier = doc.supplier;
 	loaddoc('Contact', tn);
@@ -240,9 +240,9 @@
 
 // ================================ Make Purchase Invoice ==========================================
 cur_frm.cscript['Make Purchase Invoice'] = function() {
-	n = createLocal('Purchase Invoice');
+	n = wn.model.make_new_doc_and_get_name('Purchase Invoice');
 	$c('dt_map', args={
-		'docs':compress_doclist([locals['Purchase Invoice'][n]]),
+		'docs':wn.model.compress([locals['Purchase Invoice'][n]]),
 		'from_doctype': cur_frm.doc.doctype,
 		'to_doctype':'Purchase Invoice',
 		'from_docname': cur_frm.doc.name,
diff --git a/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.js b/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.js
index d57ff5d..7547b6a 100644
--- a/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.js
+++ b/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.js
@@ -120,7 +120,7 @@
 // map parent fields of stock entry
 //----------------------------------
 cur_frm.cscript.map_parent_fields = function(doc, cdt, cdn) {
-	var se = LocalDB.create('Stock Entry');
+	var se = wn.model.make_new_doc_and_get_name('Stock Entry');
 	se = locals['Stock Entry'][se];
 	se.posting_date = dateutil.obj_to_str(new Date());
 	se.transfer_date = dateutil.obj_to_str(new Date());
@@ -148,7 +148,7 @@
 cur_frm.cscript.map_child_fields = function(cl, se) {
 	for(var i = 0; i<cl.length; i++){
 		if (cl[i].returned_qty) {
-			var d1 = LocalDB.add_child(se, 'Stock Entry Detail', 'mtn_details');
+			var d1 = wn.model.add_child(se, 'Stock Entry Detail', 'mtn_details');
 			d1.detail_name = cl[i].detail_name;
 			d1.item_code = cl[i].item_code;
 			d1.description = cl[i].description;
@@ -167,7 +167,7 @@
 // Make excise voucher
 //-------------------------------
 cur_frm.cscript.make_excise_invoice = function(doc) {
-	var excise = LocalDB.create('Journal Voucher');
+	var excise = wn.model.make_new_doc_and_get_name('Journal Voucher');
 	excise = locals['Journal Voucher'][excise];
 	excise.voucher_type = 'Excise Voucher';
 	loaddoc('Journal Voucher',excise.name);
@@ -203,7 +203,7 @@
 // Make JV
 //--------------------------------
 cur_frm.cscript.make_jv = function(doc, dr_or_cr, children) {
-	var jv = LocalDB.create('Journal Voucher');
+	var jv = wn.model.make_new_doc_and_get_name('Journal Voucher');
 	jv = locals['Journal Voucher'][jv];
 	
 	jv.voucher_type = dr_or_cr;
@@ -216,7 +216,7 @@
 	// Add children
 	if(children) {
 		for(var i=0; i<children.length; i++) {
-			var ch = LocalDB.add_child(jv, 'Journal Voucher Detail', 'entries');
+			var ch = wn.model.add_child(jv, 'Journal Voucher Detail', 'entries');
 			$.extend(ch, children[i]);
 			ch.balance = fmt_money(ch.balance);
 		}
diff --git a/support/doctype/customer_issue/customer_issue.js b/support/doctype/customer_issue/customer_issue.js
index 81c10d4..835509f 100644
--- a/support/doctype/customer_issue/customer_issue.js
+++ b/support/doctype/customer_issue/customer_issue.js
@@ -71,9 +71,9 @@
 		$c_obj(make_doclist(doc.doctype, doc.name),'check_maintenance_visit','',
 			function(r,rt){
 				if(r.message == 'No'){
-					n = createLocal("Maintenance Visit");
+					n = wn.model.make_new_doc_and_get_name("Maintenance Visit");
 					$c('dt_map', args={
-						'docs':compress_doclist([locals["Maintenance Visit"][n]]),
+						'docs':wn.model.compress([locals["Maintenance Visit"][n]]),
 						'from_doctype':'Customer Issue',
 						'to_doctype':'Maintenance Visit',
 						'from_docname':doc.name,
diff --git a/support/doctype/maintenance_schedule/maintenance_schedule.js b/support/doctype/maintenance_schedule/maintenance_schedule.js
index 21d2e62..a931327 100644
--- a/support/doctype/maintenance_schedule/maintenance_schedule.js
+++ b/support/doctype/maintenance_schedule/maintenance_schedule.js
@@ -116,7 +116,7 @@
 
 cur_frm.cscript.generate_schedule = function(doc, cdt, cdn) {
   if (!doc.__islocal) {
-    $c('runserverobj', args={'method':'generate_schedule', 'docs':compress_doclist(make_doclist(cdt,cdn))},
+    $c('runserverobj', args={'method':'generate_schedule', 'docs':wn.model.compress(make_doclist(cdt,cdn))},
       function(r,rt){
         refresh_field('maintenance_schedule_detail');
       }
diff --git a/support/doctype/support_ticket/support_ticket.js b/support/doctype/support_ticket/support_ticket.js
index fdfbc1a..3e607fb 100644
--- a/support/doctype/support_ticket/support_ticket.js
+++ b/support/doctype/support_ticket/support_ticket.js
@@ -18,7 +18,6 @@
 
 $.extend(cur_frm.cscript, {
 	onload: function(doc, dt, dn) {
-		cur_frm.last_reload = new Date();
 		if(in_list(user_roles,'System Manager')) {
 			cur_frm.page_layout.footer.help_area.innerHTML = '<hr>\
 				<p><a href="#Form/Email Settings/Email Settings">Email Settings</a><br>\
@@ -27,11 +26,6 @@
 	},
 	
 	refresh: function(doc) {
-		if(new Date() - cur_frm.last_reload > 20000) {
-			cur_frm.last_reload = new Date();
-			cur_frm.reload_doc();
-			return;
-		}
 		erpnext.hide_naming_series();
 		cur_frm.cscript.make_listing(doc);
 		if(!doc.__islocal) {											
diff --git a/utilities/page/calendar/calendar.js b/utilities/page/calendar/calendar.js
index e7abbab..d62dc68 100644
--- a/utilities/page/calendar/calendar.js
+++ b/utilities/page/calendar/calendar.js
@@ -85,7 +85,7 @@
 			,['Text','Description']
 			,['HTML', 'Ref Link']
 			,['Check', 'Public Event']
-			,['Check', 'Cancel Event']
+			,['Check', 'Cancelled Event']
 			,['HTML', 'Event Link']
 			,['Button', 'Save']
 		])
@@ -106,7 +106,7 @@
 			this.widgets['Description'].value = cstr(this.ev.description);
 			
 			this.widgets['Public Event'].checked = false;
-			this.widgets['Cancel Event'].checked = false;
+			this.widgets['Cancelled Event'].checked = false;
 
 			if(this.ev.event_type=='Public')
 				this.widgets['Public Event'].checked = true;
@@ -134,7 +134,7 @@
 			
 			// save values
 			d.ev.description = d.widgets['Description'].value;
-			if(d.widgets['Cancel Event'].checked) 
+			if(d.widgets['Cancelled Event'].checked) 
 				d.ev.event_type='Cancel';
 			else if(d.widgets['Public Event'].checked) 
 				d.ev.event_type='Public';
@@ -154,7 +154,8 @@
 
 Calendar.prototype.save_event = function(doc) {
 	var me = this;
-	save_doclist('Event', doc.name, 'Save', function(r) { 
+	var doclist = new wn.model.DocList("Event", doc.name);
+	doclist.save("Save", function(r) {
 		var doc = locals['Event'][r.docname];
 		var cal = erpnext.calendar;
 		cal.cur_view.refresh();
@@ -162,15 +163,15 @@
 		// if cancelled, hide
 		if(doc.event_type=='Cancel') {
 			$(cal.events_by_name[doc.name].body).toggle(false);
-		}
-	});
+		}		
+	})
 }
 
 //------------------------------------------------------
 
 Calendar.prototype.add_event = function() {
 		
-	var ev = LocalDB.create('Event');
+	var ev = wn.model.make_new_doc_and_get_name('Event');
 	ev = locals['Event'][ev];
 	
 	ev.event_date = dateutil.obj_to_str(this.selected_date);
