diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 5cccf1b..fbead26 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -448,13 +448,13 @@
 @frappe.whitelist()
 def get_children():
 	args = frappe.local.form_dict
-	ctype, company = args['ctype'], args['company']
-	fieldname = frappe.db.escape(ctype.lower().replace(' ','_'))
-	doctype = frappe.db.escape(ctype)
+	doctype, company = args['doctype'], args['company']
+	fieldname = frappe.db.escape(doctype.lower().replace(' ','_'))
+	doctype = frappe.db.escape(doctype)
 
 	# root
 	if args['parent'] in ("Accounts", "Cost Centers"):
-		fields = ", root_type, report_type, account_currency" if ctype=="Account" else ""
+		fields = ", root_type, report_type, account_currency" if doctype=="Account" else ""
 		acc = frappe.db.sql(""" select
 			name as value, is_group as expandable {fields}
 			from `tab{doctype}`
@@ -467,7 +467,7 @@
 			sort_root_accounts(acc)
 	else:
 		# other
-		fields = ", account_currency" if ctype=="Account" else ""
+		fields = ", account_currency" if doctype=="Account" else ""
 		acc = frappe.db.sql("""select
 			name as value, is_group as expandable, parent_{fieldname} as parent {fields}
 			from `tab{doctype}`
@@ -476,7 +476,7 @@
 			order by name""".format(fields=fields, fieldname=fieldname, doctype=doctype),
 				args['parent'], as_dict=1)
 
-	if ctype == 'Account':
+	if doctype == 'Account':
 		company_currency = frappe.db.get_value("Company", company, "default_currency")
 		for each in acc:
 			each["company_currency"] = company_currency
diff --git a/erpnext/patches/v7_0/create_warehouse_nestedset.py b/erpnext/patches/v7_0/create_warehouse_nestedset.py
index c313f31..80dbf2e 100644
--- a/erpnext/patches/v7_0/create_warehouse_nestedset.py
+++ b/erpnext/patches/v7_0/create_warehouse_nestedset.py
@@ -12,7 +12,6 @@
 			"parent_warehouse", "is_group"]):
 			set_parent_to_warehouses(warehouse, company)
 			set_parent_to_warehouse_acounts(warehouse, company)
-			frappe.db.commit()
 
 def set_parent_to_warehouses(warehouse, company):
 	warehouse = frappe.get_doc("Warehouse", warehouse.name)
@@ -31,10 +30,6 @@
 	if account and account != "{0} - {1}".format(_("All Warehouses"), company.abbr):
 		account = frappe.get_doc("Account", account)
 		
-		if warehouse.is_group == "Yes":
-			account.is_group = 1
-			account.account_type = ""
-		
 		if warehouse.create_account_under == stock_group or not warehouse.create_account_under:
 			if not warehouse.parent_warehouse:
 				account.parent_account = "{0} - {1}".format(_("All Warehouses"), company.abbr)
diff --git a/erpnext/stock/doctype/warehouse/warehouse.js b/erpnext/stock/doctype/warehouse/warehouse.js
index debcbfd..4a84ead 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.js
+++ b/erpnext/stock/doctype/warehouse/warehouse.js
@@ -1,6 +1,8 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
+cur_frm.list_route = "Tree/Warehouse";
+
 frappe.ui.form.on("Warehouse", {
 	refresh: function(frm) {
 		frm.toggle_display('warehouse_name', frm.doc.__islocal);
diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py
index 58f7f60..f1f1e70 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.py
+++ b/erpnext/stock/doctype/warehouse/warehouse.py
@@ -176,10 +176,10 @@
 @frappe.whitelist()
 def get_children():
 	from erpnext.stock.utils import get_stock_value_on
-	ctype = frappe.local.form_dict.get('ctype')
+	doctype = frappe.local.form_dict.get('doctype')
 	company = frappe.local.form_dict.get('company')
 	
-	parent_field = 'parent_' + ctype.lower().replace(' ', '_')
+	parent_field = 'parent_' + doctype.lower().replace(' ', '_')
 	parent = frappe.form_dict.get("parent") or ""
 	
 	if parent == "Warehouses":
@@ -187,10 +187,10 @@
 
 	warehouses = frappe.db.sql("""select name as value,
 		if(is_group='Yes', 1, 0) as expandable
-		from `tab{ctype}`
+		from `tab{doctype}`
 		where docstatus < 2
 		and ifnull(`{parent_field}`,'') = %s and `company` = %s
-		order by name""".format(ctype=frappe.db.escape(ctype), parent_field=frappe.db.escape(parent_field)),
+		order by name""".format(doctype=frappe.db.escape(doctype), parent_field=frappe.db.escape(parent_field)),
 		(parent, company), as_dict=1)
 	
 	# return warehouses
@@ -200,12 +200,12 @@
 		
 @frappe.whitelist()
 def add_node():
-	ctype = frappe.form_dict.get('ctype')
+	doctype = frappe.form_dict.get('doctype')
 	company = frappe.form_dict.get('company')
-	parent_field = 'parent_' + ctype.lower().replace(' ', '_')
-	name_field = ctype.lower().replace(' ', '_') + '_name'
+	parent_field = 'parent_' + doctype.lower().replace(' ', '_')
+	name_field = doctype.lower().replace(' ', '_') + '_name'
 	
-	doc = frappe.new_doc(ctype)
+	doc = frappe.new_doc(doctype)
 	
 	parent = frappe.form_dict['parent']
 	
