diff --git a/website/doctype/product_settings/__init__.py b/website/doctype/product_settings/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/website/doctype/product_settings/__init__.py
diff --git a/website/doctype/product_settings/product_settings.py b/website/doctype/product_settings/product_settings.py
new file mode 100644
index 0000000..928aa9f
--- /dev/null
+++ b/website/doctype/product_settings/product_settings.py
@@ -0,0 +1,8 @@
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import webnotes
+
+class DocType:
+	def __init__(self, d, dl):
+		self.doc, self.doclist = d, dl
\ No newline at end of file
diff --git a/website/doctype/product_settings/product_settings.txt b/website/doctype/product_settings/product_settings.txt
new file mode 100644
index 0000000..d9c67f5
--- /dev/null
+++ b/website/doctype/product_settings/product_settings.txt
@@ -0,0 +1,65 @@
+[
+ {
+  "owner": "Administrator", 
+  "docstatus": 0, 
+  "creation": "2012-12-20 14:05:00", 
+  "modified_by": "Administrator", 
+  "modified": "2012-12-20 15:46:15"
+ }, 
+ {
+  "issingle": 1, 
+  "description": "Settings for Product Catalog on the website", 
+  "doctype": "DocType", 
+  "module": "Website", 
+  "document_type": "Other", 
+  "name": "__common__"
+ }, 
+ {
+  "name": "__common__", 
+  "parent": "Product Settings", 
+  "doctype": "DocField", 
+  "parenttype": "DocType", 
+  "permlevel": 0, 
+  "parentfield": "fields"
+ }, 
+ {
+  "parent": "Product Settings", 
+  "read": 1, 
+  "name": "__common__", 
+  "create": 1, 
+  "doctype": "DocPerm", 
+  "write": 1, 
+  "parenttype": "DocType", 
+  "role": "Website Manager", 
+  "permlevel": 0, 
+  "parentfield": "permissions"
+ }, 
+ {
+  "name": "Product Settings", 
+  "doctype": "DocType"
+ }, 
+ {
+  "description": "Default: \"Product Search\"", 
+  "doctype": "DocField", 
+  "label": "Search Help", 
+  "fieldname": "search_help", 
+  "fieldtype": "Data"
+ }, 
+ {
+  "description": "List of Item Groups to be shown in \"All Products\" menu - in the sequence wanted and with number of indents (left spacing to show a tree effect).", 
+  "doctype": "DocField", 
+  "label": "Product Categories", 
+  "fieldname": "sb2", 
+  "fieldtype": "Section Break"
+ }, 
+ {
+  "doctype": "DocField", 
+  "label": "Website Product Categories", 
+  "fieldname": "website_product_categories", 
+  "fieldtype": "Table", 
+  "options": "Website Product Category"
+ }, 
+ {
+  "doctype": "DocPerm"
+ }
+]
\ No newline at end of file
diff --git a/website/doctype/website_product_category/__init__.py b/website/doctype/website_product_category/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/website/doctype/website_product_category/__init__.py
diff --git a/website/doctype/website_product_category/website_product_category.py b/website/doctype/website_product_category/website_product_category.py
new file mode 100644
index 0000000..928aa9f
--- /dev/null
+++ b/website/doctype/website_product_category/website_product_category.py
@@ -0,0 +1,8 @@
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import webnotes
+
+class DocType:
+	def __init__(self, d, dl):
+		self.doc, self.doclist = d, dl
\ No newline at end of file
diff --git a/website/doctype/website_product_category/website_product_category.txt b/website/doctype/website_product_category/website_product_category.txt
new file mode 100644
index 0000000..6625b47
--- /dev/null
+++ b/website/doctype/website_product_category/website_product_category.txt
@@ -0,0 +1,43 @@
+[
+ {
+  "owner": "Administrator", 
+  "docstatus": 0, 
+  "creation": "2012-12-20 14:21:35", 
+  "modified_by": "Administrator", 
+  "modified": "2012-12-20 15:00:25"
+ }, 
+ {
+  "istable": 1, 
+  "description": "Product Category for website", 
+  "doctype": "DocType", 
+  "module": "Website", 
+  "document_type": "Transaction", 
+  "name": "__common__"
+ }, 
+ {
+  "name": "__common__", 
+  "parent": "Website Product Category", 
+  "doctype": "DocField", 
+  "parenttype": "DocType", 
+  "permlevel": 0, 
+  "parentfield": "fields"
+ }, 
+ {
+  "name": "Website Product Category", 
+  "doctype": "DocType"
+ }, 
+ {
+  "doctype": "DocField", 
+  "label": "Item Group", 
+  "fieldname": "item_group", 
+  "fieldtype": "Link", 
+  "options": "Item Group"
+ }, 
+ {
+  "doctype": "DocField", 
+  "label": "Indent", 
+  "fieldname": "indent", 
+  "fieldtype": "Select", 
+  "options": "0\n1\n2\n3\n4\n5"
+ }
+]
\ No newline at end of file
diff --git a/website/doctype/website_settings/website_settings.txt b/website/doctype/website_settings/website_settings.txt
index b642965..b02b55e 100644
--- a/website/doctype/website_settings/website_settings.txt
+++ b/website/doctype/website_settings/website_settings.txt
@@ -4,7 +4,7 @@
   "docstatus": 0, 
   "creation": "2012-07-12 23:29:36", 
   "modified_by": "Administrator", 
-  "modified": "2012-12-18 16:15:43"
+  "modified": "2012-12-20 14:28:46"
  }, 
  {
   "issingle": 1, 
@@ -66,15 +66,6 @@
   "permlevel": 0
  }, 
  {
-  "description": "Only Items / Groups under this Groups will be shown on the website. This will also represent the \"Products\" Home Page.", 
-  "doctype": "DocField", 
-  "label": "Default Product Category", 
-  "options": "Item Group", 
-  "fieldname": "default_product_category", 
-  "fieldtype": "Link", 
-  "permlevel": 0
- }, 
- {
   "description": "If checked, the Home page will be the default Item Group for the website.", 
   "doctype": "DocField", 
   "label": "Home Page is Products", 
diff --git a/website/helpers/product.py b/website/helpers/product.py
index 60d54e6..398049d 100644
--- a/website/helpers/product.py
+++ b/website/helpers/product.py
@@ -4,6 +4,7 @@
 from __future__ import unicode_literals
 import webnotes
 
+
 @webnotes.whitelist(allow_guest=True)
 def get_product_info(item_code):
 	"""get product price / stock info"""
@@ -24,40 +25,37 @@
 	}
 
 @webnotes.whitelist(allow_guest=True)
-def get_product_list(args=None):
+def get_product_list(search=None, product_group=None, start=0):
 	import webnotes
 	from webnotes.utils import cstr
-	
-	if not args: args = webnotes.form_dict
-	if not args.search: args.search = ""
-	
+		
 	# base query
 	query = """\
 		select name, item_name, page_name, website_image, item_group, 
-			if(ifnull(web_short_description,'')='', web_long_description, 
-			web_short_description) as web_short_description
+			web_long_description as website_description
 		from `tabItem`
 		where docstatus = 0
 		and show_in_website = 1 """
 	
 	# search term condition
-	if args.search:
+	if search:
 		query += """
 			and (
-				web_short_description like %(search)s or
 				web_long_description like %(search)s or
-				description like %(search)s or
 				item_name like %(search)s or
 				name like %(search)s
 			)"""
-		args['search'] = "%" + cstr(args.get('search')) + "%"
+		search = "%" + cstr(search) + "%"
 	
 	# product group condition
-	if args.get('product_group') and args.get('product_group') != 'All Products':
+	if product_group:
 		query += """
 			and item_group = %(product_group)s """
 	
 	# order by
-	query += """order by item_name asc, name asc limit %s, 10""" % args.start
+	query += """order by item_name asc, name asc limit %s, 10""" % start
 
-	return webnotes.conn.sql(query, args, as_dict=1)
\ No newline at end of file
+	return webnotes.conn.sql(query, {
+		"search": search,
+		"product_group": product_group
+	}, as_dict=1)
\ No newline at end of file
diff --git a/website/page/website_home/website_home.html b/website/page/website_home/website_home.html
index 16850e6..a8d2bb1 100644
--- a/website/page/website_home/website_home.html
+++ b/website/page/website_home/website_home.html
@@ -9,11 +9,14 @@
 			<p class="help">Weblog (blog) entry</p>
 		</div>
 		<div style="width: 48%; float: right;">
-			<h5><a href="#Form/Website Settings/Website Settings">Website Settings</a></h5>
+			<h5><a href="#Form/Website Settings">Website Settings</a></h5>
 			<p class="help">Setup of top navigation bar, footer and logo</p>
 			<br>
-			<h5><a href="#Form/Style Settings/Style Settings">Style Settings</a></h5>
+			<h5><a href="#Form/Style Settings">Style Settings</a></h5>
 			<p class="help">Setup of fonts and background</p>
+			<br>
+			<h5><a href="#Form/Product Settings">Product Settings</a></h5>
+			<p class="help">Settings for Product Catalog on the website.</p>
 		</div>
 		<div style="clear: both"></div>
 		<hr>
diff --git a/website/templates/css/login.css b/website/templates/css/login.css
index b7b7fca..3d64009 100644
--- a/website/templates/css/login.css
+++ b/website/templates/css/login.css
@@ -23,6 +23,9 @@
 		.login-box td {
 			padding: 8px;
 		}
+		.login-box td input {
+			margin-bottom: 0px;
+		}
 		.login-footer {
 			text-align: center;
 			padding: 15px;
diff --git a/website/templates/html/outer.html b/website/templates/html/outer.html
index 9741451..fcd65f9 100644
--- a/website/templates/html/outer.html
+++ b/website/templates/html/outer.html
@@ -35,7 +35,11 @@
 								<ul class="dropdown-menu">
 								{% for child in page.child_items %}
 									<li data-label="{{ child.label }}">
-										<a href="{{ child.url }}" {{ child.target or '' }}>
+										<a {% if child.indent %}
+											style="padding-left: 
+												{{(int(child.indent)+1)*15 }}px"
+										{% endif %}
+										href="{{ child.url }}" {{ child.target or '' }}>
 											{{ child.label }}
 										</a>
 									</li>
diff --git a/website/templates/html/product_group.html b/website/templates/html/product_group.html
index 91d79b5..06335a5 100644
--- a/website/templates/html/product_group.html
+++ b/website/templates/html/product_group.html
@@ -1,7 +1,19 @@
 {% extends "html/page.html" %}
 
+{% block javascript %}
+{% include "js/product_list.js" %}
+{% endblock %}
+
 {% block content %}
 
+<script>
+$(document).ready(function() {
+	window.start = 0;
+	window.product_group = "{{ name }}";
+	window.get_product_list();
+});
+</script>
+
 <div class="layout-wrapper layout-wrapper-background">
 	<div class="web-content" id="content-product_group">
 		<div class="layout-main" style="padding: 30px;">
@@ -22,12 +34,17 @@
 				</div>
 			</div>
 			{% endif %}
-			{% if obj.doclist.get({"doctype":"Featured Item"}) %}
 			<hr>
-			<h3>Featured Products</h3>
-			
-			{% endif %}
-			
+			<h3>Products</h3>
+			<div id="search-list">
+				
+			</div>
+			<div style="text-align: center;">
+				<div class="more-btn" 
+					style="display: none; text-align: center;">
+					<button class="btn">More...</button>
+				</div>
+			</div>
 		</div>
 	</div>
 </div>
diff --git a/website/templates/html/product_search_box.html b/website/templates/html/product_search_box.html
index 125f0ba..5f69b34 100644
--- a/website/templates/html/product_search_box.html
+++ b/website/templates/html/product_search_box.html
@@ -10,6 +10,7 @@
 	<script>
 		// redirect to product search page
 		$(document).ready(function() {
+			$('.dropdown-toggle').dropdown()
 			$("#btn-product-search").click(function() {
 				var txt = $("#product-search").val();
 				if(txt) {
diff --git a/website/templates/js/product_list.js b/website/templates/js/product_list.js
new file mode 100644
index 0000000..04f92df
--- /dev/null
+++ b/website/templates/js/product_list.js
@@ -0,0 +1,69 @@
+window.get_product_list = function() {
+	$(".more-btn .btn").click(function() {
+		window.get_product_list()
+	});
+	
+	if(window.start==undefined) {
+		throw "product list not initialized (no start)"
+	}
+	
+	$.ajax({
+		method: "GET",
+		url: "server.py",
+		dataType: "json",
+		data: {
+			cmd: "website.helpers.product.get_product_list",
+			start: window.start,
+			search: window.search,
+			product_group: window.product_group
+		},
+		dataType: "json",
+		success: function(data) {
+			window.render_product_list(data.message);
+		}
+	})
+}
+
+window.render_product_list = function(data) {
+	if(data.length) {
+		var table = $("#search-list .table");
+		if(!table.length)
+			var table = $("<table class='table'>").appendTo("#search-list");
+			
+		$.each(data, function(i, d) {
+			if(!d.web_short_description)
+				d.web_short_description = "No description given."
+			var $tr = $(repl('<tr>\
+				<td style="width: 30%;">\
+					<img class="product-image" \
+						style="width: 80%;" src="files/%(website_image)s">\
+				</td>\
+				<td>\
+					<h4><a href="%(page_name)s">%(item_name)s</a></h4>\
+					<p class="help">Item Code: %(name)s</p>\
+					<p>%(website_description)s</p>\
+				</td>\
+			</tr>', d)).appendTo(table);
+			
+			if(!d.website_image) {
+				$tr.find(".product-image").replaceWith("<div\
+					style='background-color: #eee; padding: 40px; \
+						width: 32px; font-size: 32px; color: #888;'>\
+					<i class='icon-camera'></i></div>");
+			}
+		});
+		
+	}
+	if(data.length < 10) {
+		if(!table) {
+			$(".more-btn")
+				.replaceWith("<div class='alert'>No products found.</div>");
+		} else {
+			$(".more-btn")
+				.replaceWith("<div class='alert'>Nothing more to show.</div>");
+		}
+	} else {
+		$(".more-btn").toggle(true)
+	}
+	window.start += (data.length || 0);
+}
diff --git a/website/templates/pages/product_search.html b/website/templates/pages/product_search.html
index f8a1144..e573f7e 100644
--- a/website/templates/pages/product_search.html
+++ b/website/templates/pages/product_search.html
@@ -2,77 +2,18 @@
 
 {% block title %}Product Search{% endblock %}
 
+{% block javascript %}
+{% include "js/product_list.js" %}
+{% endblock %}
+
 {% block content %}
 <script>
 $(document).ready(function() {
 	var txt = get_url_arg("q");
 	$(".search-results").html("Search results for: " + txt);
-
+	window.search = txt;
 	window.start = 0;
-	var get_list = function() {
-		$.ajax({
-			method: "GET",
-			url: "server.py",
-			dataType: "json",
-			data: {
-				cmd: "website.helpers.product.get_product_list",
-				start: window.start,
-				search: txt
-			},
-			dataType: "json",
-			success: function(data) {
-				render(data.message);
-			}
-		})
-	}
-	
-	var render = function(data) {
-		if(data.length) {
-			var table = $("#search-list .table");
-			if(!table.length)
-				var table = $("<table class='table'>").appendTo("#search-list");
-				
-			$.each(data, function(i, d) {
-				if(!d.web_short_description)
-					d.web_short_description = "No description given."
-				var $tr = $(repl('<tr>\
-					<td style="width: 30%;">\
-						<img class="product-image" style="width: 80%;" src="files/%(website_image)s">\
-					</td>\
-					<td>\
-						<h4><a href="%(page_name)s">%(item_name)s</a></h4>\
-						<p class="help">Item Code: %(name)s</p>\
-						<p>%(web_short_description)s</p>\
-					</td>\
-				</tr>', d)).appendTo(table);
-				
-				if(!d.website_image) {
-					$tr.find(".product-image").replaceWith("<div\
-						style='background-color: #eee; padding: 40px; \
-							width: 32px; font-size: 32px; color: #888;'>\
-						<i class='icon-camera'></i></div>");
-				}
-			});
-			
-		}
-		if(data.length < 10) {
-			if(!table) {
-				$(".more-btn")
-					.replaceWith("<div class='alert'>No results found for your search.</div>");
-			} else {
-				$(".more-btn")
-					.replaceWith("<div class='alert'>Nothing more to show.</div>");
-			}
-		} else {
-			$(".more-btn").toggle(true)
-		}
-		window.start += (data.length || 0);
-	}
-	
-	get_list();
-	$(".more-btn .btn").click(function() {
-		get_list()
-	});
+	window.get_product_list();
 });
 </script>
 
diff --git a/website/utils.py b/website/utils.py
index be8f5e1..3498f67 100644
--- a/website/utils.py
+++ b/website/utils.py
@@ -169,6 +169,7 @@
 	args = obj.doc.fields
 	args['template'] = page_map[doc_type].template
 	args['obj'] = obj
+	args['int'] = int
 	
 	return args
 
@@ -201,9 +202,19 @@
 					t['child_items'].append(d)
 					break
 	
+	if "products" in [d.url.split(".")[0] for d in top_items]:
+		# product categories
+		products = webnotes.conn.sql("""select t1.item_group as label, 
+			concat(t2.page_name, ".html") as url,
+			ifnull(t1.indent,0) as indent
+			from `tabWebsite Product Category` t1, `tabItem Group` t2 
+			where t1.item_group = t2.name
+			and ifnull(t2.show_in_website,0)=1 order by t1.idx""", as_dict=1)
+		products_item = filter(lambda d: d.url.split(".")[0]=="products", top_items)[0]			
+		products_item.child_items = products
+		
 	return {
 		'top_bar_items': top_items,
-	
 		'footer_items': webnotes.conn.sql("""\
 			select * from `tabTop Bar Item`
 			where parent='Website Settings' and parentfield='footer_items'
@@ -211,7 +222,8 @@
 			
 		'brand': webnotes.conn.get_value('Website Settings', None, 'brand_html') or 'ERPNext',
 		'copyright': webnotes.conn.get_value('Website Settings', None, 'copyright'),
-		'favicon': webnotes.conn.get_value('Website Settings', None, 'favicon')
+		'favicon': webnotes.conn.get_value('Website Settings', None, 'favicon'),
+		'int':int
 	}
 
 def get_home_page():
