diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index 5967305..ba4681f 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1,2 +1,2 @@
 from __future__ import unicode_literals
-__version__ = '6.23.0'
+__version__ = '6.23.1'
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 5645981..203b91d 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -7,7 +7,7 @@
 app_description = """ERP made simple"""
 app_icon = "icon-th"
 app_color = "#e74c3c"
-app_version = "6.23.0"
+app_version = "6.23.1"
 app_email = "info@erpnext.com"
 app_license = "GNU General Public License (v3)"
 source_link = "https://github.com/frappe/erpnext"
diff --git a/erpnext/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py b/erpnext/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py
index 302513f..d4d5329 100644
--- a/erpnext/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py
+++ b/erpnext/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py
@@ -23,6 +23,10 @@
 	def validate_bom(self):
 		if cstr(self.current_bom) == cstr(self.new_bom):
 			frappe.throw(_("Current BOM and New BOM can not be same"))
+			
+		if frappe.db.get_value("BOM", self.current_bom, "item") \
+			!= frappe.db.get_value("BOM", self.new_bom, "item"):
+				frappe.throw(_("The selected BOMs are not for the same item"))
 
 	def update_new_bom(self):
 		current_bom_unitcost = frappe.db.sql("""select total_cost/quantity
diff --git a/erpnext/public/js/setup_wizard.js b/erpnext/public/js/setup_wizard.js
index 9c6cd03..b2693b9 100644
--- a/erpnext/public/js/setup_wizard.js
+++ b/erpnext/public/js/setup_wizard.js
@@ -9,43 +9,8 @@
 
 function load_erpnext_slides() {
 	$.extend(erpnext.wiz, {
-		user: {
-			title: __("The First User: You"),
-			icon: "icon-user",
-			fields: [
-				{"fieldname": "first_name", "label": __("First Name"), "fieldtype": "Data",
-					reqd:1},
-				{"fieldname": "last_name", "label": __("Last Name"), "fieldtype": "Data"},
-				{"fieldname": "email", "label": __("Email Address"), "fieldtype": "Data",
-					reqd:1, "description": __("You will use it to Login"), "options":"Email"},
-				{"fieldname": "password", "label": __("Password"), "fieldtype": "Password",
-					reqd:1},
-				{fieldtype:"Attach Image", fieldname:"attach_user",
-					label: __("Attach Your Picture"), is_private: 0},
-			],
-			help: __('The first user will become the System Manager (you can change this later).'),
-			onload: function(slide) {
-				if(user!=="Administrator") {
-					slide.form.fields_dict.password.$wrapper.toggle(false);
-					slide.form.fields_dict.email.$wrapper.toggle(false);
-					slide.form.fields_dict.first_name.set_input(frappe.boot.user.first_name);
-					slide.form.fields_dict.last_name.set_input(frappe.boot.user.last_name);
-
-					var user_image = frappe.get_cookie("user_image");
-					if(user_image) {
-						var $attach_user = slide.form.fields_dict.attach_user.$wrapper;
-						$attach_user.find(".missing-image").toggle(false);
-						$attach_user.find("img").attr("src", decodeURIComponent(user_image)).toggle(true);
-					}
-
-					delete slide.form.fields_dict.email;
-					delete slide.form.fields_dict.password;
-				}
-			},
-			css_class: "single-column"
-		},
-
 		org: {
+			app_name: "erpnext",
 			title: __("The Organization"),
 			icon: "icon-building",
 			fields: [
@@ -160,6 +125,7 @@
 		},
 
 		branding: {
+			app_name: "erpnext",
 			icon: "icon-bookmark",
 			title: __("The Brand"),
 			help: __('Upload your letter head and logo. (you can edit them later).'),
@@ -181,10 +147,11 @@
 		},
 
 		users: {
+			app_name: "erpnext",
 			icon: "icon-money",
-			"title": __("Add Users"),
-			"help": __("Add users to your organization, other than yourself"),
-			"fields": [],
+			title: __("Add Users"),
+			help: __("Add users to your organization, other than yourself"),
+			fields: [],
 			before_load: function(slide) {
 				slide.fields = [];
 				for(var i=1; i<5; i++) {
@@ -209,9 +176,10 @@
 		},
 
 		taxes: {
+			app_name: "erpnext",
 			icon: "icon-money",
-			"title": __("Add Taxes"),
-			"help": __("List your tax heads (e.g. VAT, Customs etc; they should have unique names) and their standard rates. This will create a standard template, which you can edit and add more later."),
+			title: __("Add Taxes"),
+			help: __("List your tax heads (e.g. VAT, Customs etc; they should have unique names) and their standard rates. This will create a standard template, which you can edit and add more later."),
 			"fields": [],
 			before_load: function(slide) {
 				slide.fields = [];
@@ -229,10 +197,11 @@
 		},
 
 		customers: {
+			app_name: "erpnext",
 			icon: "icon-group",
-			"title": __("Your Customers"),
-			"help": __("List a few of your customers. They could be organizations or individuals."),
-			"fields": [],
+			title: __("Your Customers"),
+			help: __("List a few of your customers. They could be organizations or individuals."),
+			fields: [],
 			before_load: function(slide) {
 				slide.fields = [];
 				for(var i=1; i<6; i++) {
@@ -251,10 +220,11 @@
 		},
 
 		suppliers: {
+			app_name: "erpnext",
 			icon: "icon-group",
-			"title": __("Your Suppliers"),
-			"help": __("List a few of your suppliers. They could be organizations or individuals."),
-			"fields": [],
+			title: __("Your Suppliers"),
+			help: __("List a few of your suppliers. They could be organizations or individuals."),
+			fields: [],
 			before_load: function(slide) {
 				slide.fields = [];
 				for(var i=1; i<6; i++) {
@@ -273,10 +243,11 @@
 		},
 
 		items: {
+			app_name: "erpnext",
 			icon: "icon-barcode",
-			"title": __("Your Products or Services"),
-			"help": __("List your products or services that you buy or sell. Make sure to check the Item Group, Unit of Measure and other properties when you start."),
-			"fields": [],
+			title: __("Your Products or Services"),
+			help: __("List your products or services that you buy or sell. Make sure to check the Item Group, Unit of Measure and other properties when you start."),
+			fields: [],
 			before_load: function(slide) {
 				slide.fields = [];
 				for(var i=1; i<6; i++) {
@@ -336,7 +307,6 @@
 
 frappe.wiz.on("before_load", function() {
 	load_erpnext_slides();
-	frappe.wiz.add_slide(erpnext.wiz.user);
 	frappe.wiz.add_slide(erpnext.wiz.org);
 	frappe.wiz.add_slide(erpnext.wiz.branding);
 	frappe.wiz.add_slide(erpnext.wiz.users);
diff --git a/erpnext/selling/page/sales_funnel/sales_funnel.py b/erpnext/selling/page/sales_funnel/sales_funnel.py
index eb3b996..4d12efd 100644
--- a/erpnext/selling/page/sales_funnel/sales_funnel.py
+++ b/erpnext/selling/page/sales_funnel/sales_funnel.py
@@ -17,7 +17,7 @@
 		and status != "Passive" """, (from_date, to_date))[0][0]
 
 	opportunities = frappe.db.sql("""select count(*) from `tabOpportunity`
-		where docstatus = 1 and (date(`creation`) between %s and %s)
+		where (date(`creation`) between %s and %s)
 		and status != "Lost" """, (from_date, to_date))[0][0]
 
 	quotations = frappe.db.sql("""select count(*) from `tabQuotation`
diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py
index ed7da9c..7669bff 100644
--- a/erpnext/setup/doctype/item_group/item_group.py
+++ b/erpnext/setup/doctype/item_group/item_group.py
@@ -16,7 +16,8 @@
 	website = frappe._dict(
 		condition_field = "show_in_website",
 		template = "templates/generators/item_group.html",
-		parent_website_route_field = "parent_item_group"
+		parent_website_route_field = "parent_item_group",
+		no_cache = 1
 	)
 
 	def autoname(self):
@@ -52,8 +53,11 @@
 			frappe.throw(frappe._("An item exists with same name ({0}), please change the item group name or rename the item").format(self.name))
 
 	def get_context(self, context):
+		start = int(frappe.form_dict.start or 0)
+		if start < 0:
+			start = 0
 		context.update({
-			"items": get_product_list_for_group(product_group = self.name, limit=100),
+			"items": get_product_list_for_group(product_group = self.name, start=start, limit=24),
 			"parent_groups": get_parent_item_groups(self.name),
 			"title": self.name
 		})
@@ -63,6 +67,7 @@
 
 		return context
 
+@frappe.whitelist(allow_guest=True)
 def get_product_list_for_group(product_group=None, start=0, limit=10):
 	child_groups = ", ".join(['"' + i[0] + '"' for i in get_child_groups(product_group)])
 
@@ -122,4 +127,4 @@
 		d = frappe.get_doc("Item Group", d.name)
 		route = d.get_route()
 		if route:
-			clear_cache(route)
+			clear_cache(route)
\ No newline at end of file
diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py
index b4e19da..d218793 100644
--- a/erpnext/setup/install.py
+++ b/erpnext/setup/install.py
@@ -12,7 +12,7 @@
 	frappe.get_doc({'doctype': "Role", "role_name": "Analytics"}).insert()
 	set_single_defaults()
 	feature_setup()
-	from erpnext.setup.setup_wizard.setup_wizard import add_all_roles_to
+	from frappe.desk.page.setup_wizard.setup_wizard import add_all_roles_to
 	add_all_roles_to("Administrator")
 	add_web_forms()
 	frappe.db.commit()
diff --git a/erpnext/setup/setup_wizard/setup_wizard.py b/erpnext/setup/setup_wizard/setup_wizard.py
index 890f317..5a04682 100644
--- a/erpnext/setup/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/setup_wizard/setup_wizard.py
@@ -19,8 +19,7 @@
 		frappe.throw(_("Setup Already Complete!!"))
 
 	install_fixtures.install(args.get("country"))
-
-	update_user_name(args)
+	
 	create_fiscal_year_and_company(args)
 	create_users(args)
 	set_defaults(args)
@@ -54,67 +53,32 @@
 
 			pass
 
-
-def update_user_name(args):
-	if args.get("email"):
-		args['name'] = args.get("email")
-
-		_mute_emails, frappe.flags.mute_emails = frappe.flags.mute_emails, True
-		doc = frappe.get_doc({
-			"doctype":"User",
-			"email": args.get("email"),
-			"first_name": args.get("first_name"),
-			"last_name": args.get("last_name")
-		})
-		doc.flags.no_welcome_mail = True
-		doc.insert()
-		frappe.flags.mute_emails = _mute_emails
-		from frappe.auth import _update_password
-		_update_password(args.get("email"), args.get("password"))
-
-	else:
-		args['name'] = frappe.session.user
-
-		# Update User
-		if not args.get('last_name') or args.get('last_name')=='None':
-				args['last_name'] = None
-		frappe.db.sql("""update `tabUser` SET first_name=%(first_name)s,
-			last_name=%(last_name)s WHERE name=%(name)s""", args)
-
-	if args.get("attach_user"):
-		attach_user = args.get("attach_user").split(",")
-		if len(attach_user)==3:
-			filename, filetype, content = attach_user
-			fileurl = save_file(filename, content, "User", args.get("name"), decode=True).file_url
-			frappe.db.set_value("User", args.get("name"), "user_image", fileurl)
-
-	add_all_roles_to(args.get("name"))
-
 def create_fiscal_year_and_company(args):
-	curr_fiscal_year = get_fy_details(args.get('fy_start_date'), args.get('fy_end_date'))
-	frappe.get_doc({
+	if (args.get('fy_start_date')):
+		curr_fiscal_year = get_fy_details(args.get('fy_start_date'), args.get('fy_end_date'))
+		frappe.get_doc({
 		"doctype":"Fiscal Year",
 		'year': curr_fiscal_year,
 		'year_start_date': args.get('fy_start_date'),
 		'year_end_date': args.get('fy_end_date'),
-	}).insert()
-
+		}).insert()
+		args["curr_fiscal_year"] = curr_fiscal_year
+		
 	# Company
-	frappe.get_doc({
-		"doctype":"Company",
-		'domain': args.get("industry"),
-		'company_name':args.get('company_name').strip(),
-		'abbr':args.get('company_abbr'),
-		'default_currency':args.get('currency'),
-		'country': args.get('country'),
-		'chart_of_accounts': args.get(('chart_of_accounts')),
-	}).insert()
+	if (args.get('company_name')):	
+		frappe.get_doc({
+			"doctype":"Company",
+			'domain': args.get("industry"),
+			'company_name':args.get('company_name').strip(),
+			'abbr':args.get('company_abbr'),
+			'default_currency':args.get('currency'),
+			'country': args.get('country'),
+			'chart_of_accounts': args.get(('chart_of_accounts')),
+		}).insert()
 
-	# Bank Account
-	create_bank_account(args)
-
-	args["curr_fiscal_year"] = curr_fiscal_year
-
+		# Bank Account
+		create_bank_account(args)
+	
 def create_bank_account(args):
 	if args.get("bank_account"):
 		company_name = args.get('company_name').strip()
@@ -440,14 +404,6 @@
 			frappe.db.set_value("Website Settings", "Website Settings", "brand_html",
 				"<img src='{0}' style='max-width: 40px; max-height: 25px;'> {1}".format(fileurl, args.get("company_name").strip()))
 
-def add_all_roles_to(name):
-	user = frappe.get_doc("User", name)
-	for role in frappe.db.sql("""select name from tabRole"""):
-		if role[0] not in ["Administrator", "Guest", "All", "Customer", "Supplier", "Partner", "Employee"]:
-			d = user.append("user_roles")
-			d.role = role[0]
-	user.save()
-
 def create_territories():
 	"""create two default territories, one for home country and one named Rest of the World"""
 	from frappe.utils.nestedset import get_root_of
diff --git a/erpnext/templates/generators/item_group.html b/erpnext/templates/generators/item_group.html
index eb1278c..7e68bc7 100644
--- a/erpnext/templates/generators/item_group.html
+++ b/erpnext/templates/generators/item_group.html
@@ -25,9 +25,14 @@
 				{{ item }}
 			{% endfor %}
 		</div>
-			{% if (items|length)==100 %}
-				<div class="text-muted info">Showing top 100 items.</div>
-			{% endif %}
+			<div class="text-center">
+				{% if frappe.form_dict.start|int > 0 %}
+				<a class="btn btn-default" href="{{ pathname }}?start={{ frappe.form_dict.start|int - 24 }}">Prev</a>
+				{% endif %}
+				{% if items|length == 24 %}
+				<a class="btn btn-default" href="{{ pathname }}?start={{ frappe.form_dict.start|int + 24 }}">Next</a>
+				{% endif %}
+			</div>
 		{% else %}
 			<div class="text-muted">No items listed.</div>
 		{% endif %}
diff --git a/setup.py b/setup.py
index cfbc311..b519e5b 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
 from setuptools import setup, find_packages
 from pip.req import parse_requirements
 
-version = "6.23.0"
+version = "6.23.1"
 requirements = parse_requirements("requirements.txt", session="")
 
 setup(
