diff --git a/config/conf.py b/config/conf.py
deleted file mode 100644
index 1cf35e2..0000000
--- a/config/conf.py
+++ /dev/null
@@ -1,7 +0,0 @@
-index_path = '/'
-
-include_paths = [
-	'erpnext',
-	'lib/py',
-	'lib/py/legacy'
-]
\ No newline at end of file
diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.js b/erpnext/accounts/page/accounts_browser/accounts_browser.js
index e5fca9f..13416e6 100644
--- a/erpnext/accounts/page/accounts_browser/accounts_browser.js
+++ b/erpnext/accounts/page/accounts_browser/accounts_browser.js
@@ -125,7 +125,7 @@
           var imgsrc=null;
           var has_children = true;
           if(cl[i].group_or_ledger=='Ledger') {
-            var imgsrc = 'lib/images/icons/page.gif';
+            var imgsrc = 'lib/images/icons/page.png';
             has_children = false;
           }
           var t = tree.addNode(n, cl[i].account_name, imgsrc,tree.std_onclick, has_children ? tree.std_onexp : null);
@@ -138,7 +138,7 @@
           var imgsrc=null;
           var has_children = true;
           if(cl[i].group_or_ledger=='Ledger') {
-            var imgsrc = 'lib/images/icons/page.gif';
+            var imgsrc = 'lib/images/icons/page.png';
             has_children = false;
           }
           var t = tree.addNode(n, cl[i].cost_center_name, imgsrc,tree.std_onclick, has_children ? tree.std_onexp : null);
diff --git a/erpnext/home/__init__.py b/erpnext/home/__init__.py
index 7059cec..5ebf7c0 100644
--- a/erpnext/home/__init__.py
+++ b/erpnext/home/__init__.py
@@ -34,23 +34,33 @@
 	'Support Ticket':       ['[%(status)s] %(subject)s', '#000080']	
 }
 
-def make_feed(doc, subject, color):
+def make_feed(feedtype, doctype, name, owner, subject, color):
 	"makes a new Feed record"
 	#msgprint(subject)
 	from webnotes.model.doc import Document
-	webnotes.conn.sql("delete from tabFeed where doc_type=%s and doc_name=%s", (doc.doctype, doc.name))
+
+	if feedtype in ('Login', 'Comment'):
+		# delete old login, comment feed
+		webnotes.conn.sql("""delete from tabFeed where 
+			datediff(curdate(), creation) > 7 and doc_type in ('Comment', 'Login')""")
+	else:
+		# one feed per item
+		webnotes.conn.sql("""delete from tabFeed
+			where doc_type=%s and doc_name=%s 
+			and ifnull(feed_type,'') != 'Comment'""", (doctype, name))
+
 	f = Document('Feed')
-	f.doc_type = doc.doctype
-	f.doc_name = doc.name
+	f.owner = owner
+	f.feed_type = feedtype
+	f.doc_type = doctype
+	f.doc_name = name
 	f.subject = subject
 	f.color = color
-	f.save(1)
+	f.save()
 
 def update_feed(doc, method=None):   
 	"adds a new feed"
 	if method=='on_update':
 		subject, color = feed_dict.get(doc.doctype, [None, None])
-		if subject:
-			subject = subject % doc.fields
-			
-			make_feed(doc, subject, color)
+		if subject:			
+			make_feed('', doc.doctype, doc.name, doc.owner, subject % doc.fields, color)
diff --git a/erpnext/home/doctype/feed/feed.txt b/erpnext/home/doctype/feed/feed.txt
index 5aa4f91..f239f7c 100644
--- a/erpnext/home/doctype/feed/feed.txt
+++ b/erpnext/home/doctype/feed/feed.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2011-04-08 10:50:41',
+		'creation': '2011-04-06 18:11:38',
 		'docstatus': 0,
-		'modified': '2011-04-05 09:16:57',
+		'modified': '2012-02-03 11:28:16',
 		'modified_by': 'Administrator',
 		'owner': 'Administrator'
 	},
@@ -14,18 +14,18 @@
 	{
 		'autoname': '_FEED.#####',
 		'colour': 'White:FFF',
+		'default_print_format': 'Standard',
 		'doctype': 'DocType',
 		'module': 'Home',
 		'name': '__common__',
 		'section_style': 'Simple',
 		'show_in_menu': 0,
-		'version': 1
+		'version': 2
 	},
 
 	# These values are common for all DocField
 	{
 		'doctype': 'DocField',
-		'fieldtype': 'Data',
 		'name': '__common__',
 		'parent': 'Feed',
 		'parentfield': 'fields',
@@ -42,8 +42,16 @@
 	# DocField
 	{
 		'doctype': 'DocField',
+		'fieldname': 'feed_type',
+		'fieldtype': 'Select',
+		'label': 'Feed Type'
+	},
+
+	# DocField
+	{
+		'doctype': 'DocField',
 		'fieldname': 'doc_type',
-		'idx': 1,
+		'fieldtype': 'Data',
 		'label': 'Doc Type'
 	},
 
@@ -51,7 +59,7 @@
 	{
 		'doctype': 'DocField',
 		'fieldname': 'doc_name',
-		'idx': 2,
+		'fieldtype': 'Data',
 		'label': 'Doc Name'
 	},
 
@@ -59,7 +67,7 @@
 	{
 		'doctype': 'DocField',
 		'fieldname': 'subject',
-		'idx': 3,
+		'fieldtype': 'Data',
 		'label': 'Subject'
 	},
 
@@ -67,7 +75,7 @@
 	{
 		'doctype': 'DocField',
 		'fieldname': 'color',
-		'idx': 4,
+		'fieldtype': 'Data',
 		'label': 'Color'
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/home/page/event_updates/event_updates.js b/erpnext/home/page/event_updates/event_updates.js
index 784577a..90aef9e 100644
--- a/erpnext/home/page/event_updates/event_updates.js
+++ b/erpnext/home/page/event_updates/event_updates.js
@@ -456,7 +456,7 @@
 	this.list = new wn.widgets.Listing({
 		parent: this.list_area,
 		query: repl('select \
-			distinct t1.name, t1.doc_type, t1.doc_name, t1.subject, t1.modified_by, \
+			distinct t1.name, t1.feed_type, t1.doc_type, t1.doc_name, t1.subject, t1.modified_by, \
 			concat(ifnull(t2.first_name,""), " ", ifnull(t2.last_name,"")) as full_name, \
 			t1.modified, t1.color \
 			from tabFeed t1, tabProfile t2, tabUserRole t3, tabDocPerm t4 \
@@ -495,13 +495,11 @@
 	this.tab = make_table(this.wrapper, 1, 2, '100%', [(100/7)+'%', (600/7)+'%']);
 	$y(this.tab,{tableLayout:'fixed'})
 
-	// image
 	$y($td(this.tab,0,0),{textAlign:'right',paddingRight:'4px'});
 	
 	// text
 	this.text_area = $a($td(this.tab,0,1), 'div');
-	this.render_references(this.text_area, det);
-	
+	this.render_references(this.text_area, det);	
 	this.render_tag(det);
 	
 	// add day separator
@@ -537,13 +535,21 @@
 // -------------------------------------------------
 
 FeedItem.prototype.render_tag = function(det) {
+	// type is the name
 	tag = $a($td(this.tab,0,0), 'div', '', 
-		{color:'#FFF', padding:'3px', textAlign:'right', fontSize:'11px', whiteSpace:'nowrap', overflow:'hidden', cursor:'pointer'});
+		{color:'#FFF', padding:'3px', textAlign:'right', fontSize:'11px', 
+			whiteSpace:'nowrap', overflow:'hidden', cursor:'pointer'});
 	$br(tag,'3px');
 	$y(tag, {backgroundColor:(det.color || '#273')});
-	tag.innerHTML = get_doctype_label(det.doc_type);
-	tag.dt = det.doc_type;
-	tag.onclick = function() { loaddocbrowser(this.dt); }
+	
+	// tag label
+	tag.innerHTML = det.feed_type || get_doctype_label(det.doc_type);
+	
+	// not comment / label
+	if(!det.feed_type) {
+		tag.dt = det.doc_type;
+		tag.onclick = function() { loaddocbrowser(this.dt); }		
+	}
 }
 
 FeedItem.prototype.render_references = function(div, det) {
@@ -552,10 +558,15 @@
 	var dt = det.doc_type; var dn = det.doc_name
 	
 	// link
-	var allow = in_list(profile.can_read, dt);
-	var span = $a($td(div.tab,0,0), 'span', (allow ? 'link_type': ''), null, det.doc_name);
-	span.dt = dt; span.dn = dn;
-	if(allow) span.onclick = function() { loaddoc(this.dt, this.dn); }
+	if(det.feed_type=='Login') {
+		// nothing - no link		
+	} else {
+		var allow = in_list(profile.can_read, dt);
+		var span = $a($td(div.tab,0,0), 'span', (allow ? 'link_type': ''), null, 
+			det.doc_name);
+		span.dt = dt; span.dn = dn;
+		if(allow) span.onclick = function() { loaddoc(this.dt, this.dn); }		
+	}
 	
 	// subject
 	if(det.subject) {
diff --git a/erpnext/home/page/my_company/my_company.js b/erpnext/home/page/my_company/my_company.js
index e85623f..298b313 100644
--- a/erpnext/home/page/my_company/my_company.js
+++ b/erpnext/home/page/my_company/my_company.js
@@ -858,7 +858,7 @@
 	
 	var t = make_table($td(tbl, ridx, cidx),1,2,null,['16px', null],{marginRight:'5px'});
 	var ic = $a($td(t,0,0), 'img','',{cursor:'pointer', marginRight:'5px'});
-	ic.src= 'lib/images/icons/help.gif';
+	ic.src= 'lib/images/icons/help.png';
 	ic.role = role;
 		
 	ic.onclick = function(){
diff --git a/erpnext/patches/jan_mar_2012/latest/__init__.py b/erpnext/patches/jan_mar_2012/latest/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/patches/jan_mar_2012/latest/__init__.py
diff --git a/erpnext/patches/jan_mar_2012/latest/cleanups.py b/erpnext/patches/jan_mar_2012/latest/cleanups.py
new file mode 100644
index 0000000..9a78a70
--- /dev/null
+++ b/erpnext/patches/jan_mar_2012/latest/cleanups.py
@@ -0,0 +1,35 @@
+import webnotes
+
+def execute():
+	from webnotes.model import delete_doc
+	from webnotes.modules import reload_doc
+	delete_doc("DocType", "SSO Control")
+	delete_doc("DocType", "WN ERP Client Control")
+	delete_doc("DocType", "Production Tips Common")
+	delete_doc("DocType", "DocTrigger")
+	delete_doc("Page", "Setup Wizard")
+	
+	# cleanup control panel
+	delete_doc("DocType", "Control Panel")
+	reload_doc("core", "doctype", "control_panel")
+
+	# cleanup page
+	delete_doc("DocType", "Page")
+	reload_doc("core", "doctype", "page")
+	
+	webnotes.conn.sql("""delete from tabSingles
+		where field like 'startup_%' and doctype='Control Panel'""")
+	webnotes.conn.sql("""delete from __SessionCache""")
+
+	webnotes.conn.commit()
+
+	# DDLs
+	# -------------------
+	
+	webnotes.conn.sql("drop table if exists tabDocTrigger")	
+
+	try: webnotes.conn.sql("""alter table `tabFile Data` drop column blob_content""")
+	except: pass
+		
+	webnotes.conn.sql("""alter table __PatchLog engine=InnoDB""")
+	
diff --git a/erpnext/patches/jan_mar_2012/latest/feed.py b/erpnext/patches/jan_mar_2012/latest/feed.py
new file mode 100644
index 0000000..c913c49
--- /dev/null
+++ b/erpnext/patches/jan_mar_2012/latest/feed.py
@@ -0,0 +1,6 @@
+import webnotes
+from webnotes.model.doc import Document
+from webnotes.modules import reload_doc
+
+def execute():
+	reload_doc('home', 'doctype', 'feed')
\ No newline at end of file
diff --git a/erpnext/patches/jan_mar_2012/latest/login.py b/erpnext/patches/jan_mar_2012/latest/login.py
new file mode 100644
index 0000000..97cd323
--- /dev/null
+++ b/erpnext/patches/jan_mar_2012/latest/login.py
@@ -0,0 +1,19 @@
+import webnotes
+from webnotes.model.doc import Document
+from webnotes.modules import reload_doc
+
+def execute():
+	add_default_home_page()
+	reload_doc('setup','doctype','manage_account')
+
+	
+def add_default_home_page():
+	if not webnotes.conn.sql("""select name from `tabDefault Home Page`
+		where role='Guest' and home_page='Login Page'"""):
+		d = Document('Default Home Page')
+		d.parent = 'Control Panel'
+		d.parenttype = 'Control Panel'
+		d.parentfield = 'default_home_pages'
+		d.role = 'Guest'
+		d.home_page = 'Login Page'
+		d.save(1)
diff --git a/erpnext/patches/jan_mar_2012/latest/website.py b/erpnext/patches/jan_mar_2012/latest/website.py
new file mode 100644
index 0000000..9c930e2
--- /dev/null
+++ b/erpnext/patches/jan_mar_2012/latest/website.py
@@ -0,0 +1,67 @@
+# website patch
+
+import webnotes
+from webnotes.model.doc import Document
+
+def execute():	
+	add_website_manager()
+	from webnotes.modules import reload_doc
+	from webnotes.model import delete_doc
+
+	reload_doc('setup', 'doctype', 'item_group')
+	delete_doc('Website', 'Module Def', 'Website')
+	reload_doc('website', 'Module Def', 'Website')
+	reload_doc('website', 'Role', 'Website Manager')
+
+	webnotes.conn.sql("""delete from `tabModule Def Role` where parent='Website'""")
+	d = Document('Module Def Role')
+	d.parent = 'Website'
+	d.role = 'Website Manager'
+	d.save()
+	
+	reload_doc('website', 'doctype', 'about_us_settings')
+	reload_doc('website', 'doctype', 'about_us_team')
+	reload_doc('website', 'doctype', 'blog')
+	reload_doc('website', 'doctype', 'blog_subscriber')
+	reload_doc('website', 'doctype', 'contact_us_settings')
+	reload_doc('website', 'doctype', 'product')
+	reload_doc('website', 'doctype', 'product_group')
+	reload_doc('website', 'doctype', 'products_settings')
+	reload_doc('website', 'doctype', 'related_page')
+	reload_doc('website', 'doctype', 'style_settings')
+	reload_doc('website', 'doctype', 'top_bar_item')
+	reload_doc('website', 'doctype', 'web_page')
+	reload_doc('website', 'doctype', 'website_settings')
+
+	reload_doc('website', 'page', 'about')
+	reload_doc('website', 'page', 'blog')
+	reload_doc('website', 'page', 'contact')
+	reload_doc('website', 'page', 'products')
+	reload_doc('website', 'page', 'unsubscribe')
+		
+	create_home_page()
+
+def create_home_page():
+	"""create a dummy home page"""
+	from webnotes.model.code import get_obj
+	if not webnotes.conn.sql("""select name from `tabWeb Page` where name='home'"""):
+		d = Document('Web Page')
+		d.title = 'Home'
+		d.head_section = "<h1>Your Headline</h1>"
+		d.main_section = "<p>Some introduction about your company</p>"
+		d.side_section = "<p>Links to other pages</p>"
+		d.save()
+		obj = get_obj(doc = d)
+		obj.validate()
+		obj.doc.save()
+
+def add_website_manager():
+	"""add website manager to system manager"""
+	for i in webnotes.conn.sql("""select distinct parent from tabUserRole 
+		where role='System Manager'"""):
+		if not webnotes.conn.sql("""select parent from tabUserRole 
+			where role='Website Manager' and parent=%s""", i[0]):
+			d = Document('UserRole')
+			d.parent = i[0]
+			d.role = 'Website Manager'
+			d.save(1)
diff --git a/erpnext/patches/jan_mar_2012/subdomain_login_patch.py b/erpnext/patches/jan_mar_2012/subdomain_login_patch.py
deleted file mode 100644
index fcf72dc..0000000
--- a/erpnext/patches/jan_mar_2012/subdomain_login_patch.py
+++ /dev/null
@@ -1,40 +0,0 @@
-import webnotes
-from webnotes.model.doc import Document
-from webnotes.modules import reload_doc
-
-def execute():
-	add_default_home_page()
-	reload_doc('setup','doctype','manage_account')
-	webnotes.conn.commit()
-	webnotes.conn.sql("drop table if exists tabDocTrigger")
-	cleanup()
-	
-def cleanup():
-	webnotes.conn.begin()
-	from webnotes.model import delete_doc
-	delete_doc("DocType", "SSO Control")
-	delete_doc("DocType", "WN ERP Client Control")
-	delete_doc("DocType", "Production Tips Common")
-	delete_doc("DocType", "DocTrigger")
-
-	# cleanup control panel
-	delete_doc("DocType", "Control Panel")
-	reload_doc("core", "doctype", "control_panel")
-
-	# cleanup page
-	delete_doc("DocType", "Page")
-	reload_doc("core", "doctype", "page")
-	
-	webnotes.conn.sql("""delete from tabSingles
-		where field like 'startup_%' and doctype='Control Panel'""")
-	
-def add_default_home_page():
-	if not webnotes.conn.sql("""select name from `tabDefault Home Page`
-		where role='Guest' and home_page='Login Page'"""):
-		d = Document('Default Home Page')
-		d.parent = 'Control Panel'
-		d.parenttype = 'Control Panel'
-		d.parentfield = 'default_home_pages'
-		d.role = 'Guest'
-		d.home_page = 'Login Page'
-		d.save(1)
diff --git a/erpnext/patches/jan_mar_2012/website.py b/erpnext/patches/jan_mar_2012/website.py
deleted file mode 100644
index 2d25e1f..0000000
--- a/erpnext/patches/jan_mar_2012/website.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# website patch
-
-import webnotes
-from webnotes.model.doc import Document
-
-def execute():	
-	add_website_manager()
-	cleanup_file_data()
-	update_patch_log()
-	from webnotes.modules import reload_doc
-	reload_doc('website', 'Role', 'Website Manager')
-	reload_doc('website', 'Module Def', 'Website')
-	reload_doc('website', 'doctype', 'website_settings')
-	reload_doc('website', 'doctype', 'style_settings')
-	reload_doc('website', 'doctype', 'top_bar_item')
-	reload_doc('website', 'doctype', 'contact_us_settings')
-	reload_doc('website', 'doctype', 'about_us_settings')
-	reload_doc('website', 'doctype', 'products_settings')
-	reload_doc('website', 'doctype', 'blog')
-	reload_doc('website', 'doctype', 'blog_subscriber')
-	reload_doc('website', 'doctype', 'product')
-	reload_doc('website', 'doctype', 'web_page')
-
-	reload_doc('website', 'page', 'contact')
-	reload_doc('website', 'page', 'about')
-	reload_doc('website', 'page', 'blog')
-	reload_doc('website', 'page', 'unsubscribe')
-	reload_doc('website', 'page', 'products')
-		
-def add_website_manager():
-	"""add website manager to system manager"""
-	for i in webnotes.conn.sql("""select distinct parent from tabUserRole 
-		where role='System Manager'"""):
-		if not webnotes.conn.sql("""select parent from tabUserRole 
-			where role='Website Manager' and parent=%s""", i[0]):
-			d = Document('UserRole')
-			d.parent = i[0]
-			d.role = 'Website Manager'
-			d.save(1)
-
-def cleanup_file_data():
-	webnotes.conn.commit()
-	webnotes.conn.sql("""alter table `tabFile Data` drop column blob_content""")
-	webnotes.conn.begin()
-
-def update_patch_log():
-	webnotes.conn.commit()
-	webnotes.conn.sql("""alter table __PatchLog engine=InnoDB""")
-	webnotes.conn.begin()
diff --git a/erpnext/selling/page/sales_browser/sales_browser.js b/erpnext/selling/page/sales_browser/sales_browser.js
index d2ba627..c7e400e 100644
--- a/erpnext/selling/page/sales_browser/sales_browser.js
+++ b/erpnext/selling/page/sales_browser/sales_browser.js
@@ -140,7 +140,7 @@
         var has_children = true;
 
         if(cl[i].is_group=='No') {
-          var imgsrc = 'lib/images/icons/page.gif';
+          var imgsrc = 'lib/images/icons/page.png';
           has_children = false;
         }
         var t = me.tree.addNode(n, cl[i].name, imgsrc,me.tree.std_onclick, has_children ? me.tree.std_onexp : null);
@@ -220,7 +220,7 @@
       var has_children = true;
 
       if(cl[i].is_group=='No') {
-        var imgsrc = 'lib/images/icons/page.gif';
+        var imgsrc = 'lib/images/icons/page.png';
         has_children = false;
       }
      me.tree_area.innerHTML = ''; 
diff --git a/erpnext/setup/doctype/item_group/item_group.txt b/erpnext/setup/doctype/item_group/item_group.txt
index 2e0731c..7c3e928 100644
--- a/erpnext/setup/doctype/item_group/item_group.txt
+++ b/erpnext/setup/doctype/item_group/item_group.txt
@@ -5,54 +5,54 @@
 	{
 		'creation': '2010-08-08 17:09:06',
 		'docstatus': 0,
-		'modified': '2012-01-30 12:14:30',
-		'modified_by': 'Administrator',
-		'owner': 'Administrator'
+		'modified': '2012-02-06 17:38:00',
+		'modified_by': u'Administrator',
+		'owner': u'Administrator'
 	},
 
 	# These values are common for all DocType
 	{
-		'_last_update': '1322549700',
+		'_last_update': u'1322549700',
 		'allow_trash': 1,
-		'autoname': 'field:item_group_name',
-		'colour': 'White:FFF',
-		'default_print_format': 'Standard',
+		'autoname': u'field:item_group_name',
+		'colour': u'White:FFF',
+		'default_print_format': u'Standard',
 		'doctype': 'DocType',
-		'document_type': 'Master',
+		'document_type': u'Master',
 		'in_create': 1,
 		'issingle': 0,
-		'module': 'Setup',
+		'module': u'Setup',
 		'name': '__common__',
-		'search_fields': 'parent_item_group',
-		'section_style': 'Simple',
-		'server_code_error': ' ',
+		'search_fields': u'parent_item_group',
+		'section_style': u'Simple',
+		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 57
+		'version': 58
 	},
 
 	# These values are common for all DocField
 	{
-		'doctype': 'DocField',
+		'doctype': u'DocField',
 		'name': '__common__',
-		'parent': 'Item Group',
-		'parentfield': 'fields',
-		'parenttype': 'DocType'
+		'parent': u'Item Group',
+		'parentfield': u'fields',
+		'parenttype': u'DocType'
 	},
 
 	# These values are common for all DocPerm
 	{
-		'doctype': 'DocPerm',
+		'doctype': u'DocPerm',
 		'name': '__common__',
-		'parent': 'Item Group',
-		'parentfield': 'permissions',
-		'parenttype': 'DocType',
+		'parent': u'Item Group',
+		'parentfield': u'permissions',
+		'parenttype': u'DocType',
 		'read': 1
 	},
 
 	# DocType, Item Group
 	{
 		'doctype': 'DocType',
-		'name': 'Item Group'
+		'name': u'Item Group'
 	},
 
 	# DocPerm
@@ -60,9 +60,9 @@
 		'amend': 0,
 		'cancel': 0,
 		'create': 0,
-		'doctype': 'DocPerm',
+		'doctype': u'DocPerm',
 		'permlevel': 1,
-		'role': 'Material Manager',
+		'role': u'Material Manager',
 		'submit': 0,
 		'write': 0
 	},
@@ -72,9 +72,9 @@
 		'amend': 0,
 		'cancel': 0,
 		'create': 0,
-		'doctype': 'DocPerm',
+		'doctype': u'DocPerm',
 		'permlevel': 0,
-		'role': 'Material Manager',
+		'role': u'Material Manager',
 		'submit': 0,
 		'write': 0
 	},
@@ -84,9 +84,9 @@
 		'amend': 0,
 		'cancel': 0,
 		'create': 0,
-		'doctype': 'DocPerm',
+		'doctype': u'DocPerm',
 		'permlevel': 1,
-		'role': 'Material User',
+		'role': u'Material User',
 		'submit': 0,
 		'write': 0
 	},
@@ -96,9 +96,9 @@
 		'amend': 0,
 		'cancel': 0,
 		'create': 0,
-		'doctype': 'DocPerm',
+		'doctype': u'DocPerm',
 		'permlevel': 0,
-		'role': 'Material User',
+		'role': u'Material User',
 		'submit': 0,
 		'write': 0
 	},
@@ -107,9 +107,9 @@
 	{
 		'cancel': 1,
 		'create': 1,
-		'doctype': 'DocPerm',
+		'doctype': u'DocPerm',
 		'permlevel': 0,
-		'role': 'System Manager',
+		'role': u'System Manager',
 		'write': 1
 	},
 
@@ -117,87 +117,98 @@
 	{
 		'cancel': 1,
 		'create': 1,
-		'doctype': 'DocPerm',
+		'doctype': u'DocPerm',
 		'permlevel': 0,
-		'role': 'Material Master Manager',
+		'role': u'Material Master Manager',
 		'write': 1
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'item_group_name',
-		'fieldtype': 'Data',
-		'label': 'Item Group Name',
-		'oldfieldname': 'item_group_name',
-		'oldfieldtype': 'Data',
+		'doctype': u'DocField',
+		'fieldname': u'item_group_name',
+		'fieldtype': u'Data',
+		'label': u'Item Group Name',
+		'oldfieldname': u'item_group_name',
+		'oldfieldtype': u'Data',
 		'permlevel': 0,
 		'reqd': 1
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'description',
-		'fieldtype': 'Text',
-		'label': 'Description',
-		'oldfieldname': 'description',
-		'oldfieldtype': 'Text',
+		'doctype': u'DocField',
+		'fieldname': u'description',
+		'fieldtype': u'Text',
+		'label': u'Description',
+		'oldfieldname': u'description',
+		'oldfieldtype': u'Text',
 		'permlevel': 0,
-		'width': '300px'
+		'width': u'300px'
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'parent_item_group',
-		'fieldtype': 'Link',
-		'label': 'Parent Item Group',
-		'oldfieldname': 'parent_item_group',
-		'oldfieldtype': 'Link',
-		'options': 'Item Group',
+		'colour': u'White:FFF',
+		'description': u'Check this if you want to show in website',
+		'doctype': u'DocField',
+		'fieldname': u'show_in_website',
+		'fieldtype': u'Check',
+		'label': u'Show in Website',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'doctype': u'DocField',
+		'fieldname': u'parent_item_group',
+		'fieldtype': u'Link',
+		'label': u'Parent Item Group',
+		'oldfieldname': u'parent_item_group',
+		'oldfieldtype': u'Link',
+		'options': u'Item Group',
 		'permlevel': 0,
 		'reqd': 1,
-		'trigger': 'Client'
+		'trigger': u'Client'
 	},
 
 	# DocField
 	{
-		'colour': 'White:FFF',
-		'description': 'Only leaf nodes are allowed in transaction',
-		'doctype': 'DocField',
-		'fieldname': 'is_group',
-		'fieldtype': 'Select',
-		'label': 'Has Child Node',
-		'oldfieldname': 'is_group',
-		'oldfieldtype': 'Select',
-		'options': '\nYes\nNo',
+		'colour': u'White:FFF',
+		'description': u'Only leaf nodes are allowed in transaction',
+		'doctype': u'DocField',
+		'fieldname': u'is_group',
+		'fieldtype': u'Select',
+		'label': u'Has Child Node',
+		'oldfieldname': u'is_group',
+		'oldfieldtype': u'Select',
+		'options': u'\nYes\nNo',
 		'permlevel': 0,
 		'reqd': 1
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'trash_reason',
-		'fieldtype': 'Small Text',
-		'label': 'Trash Reason',
-		'oldfieldname': 'trash_reason',
-		'oldfieldtype': 'Small Text',
+		'doctype': u'DocField',
+		'fieldname': u'trash_reason',
+		'fieldtype': u'Small Text',
+		'label': u'Trash Reason',
+		'oldfieldname': u'trash_reason',
+		'oldfieldtype': u'Small Text',
 		'permlevel': 1
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'lft',
-		'fieldtype': 'Int',
+		'doctype': u'DocField',
+		'fieldname': u'lft',
+		'fieldtype': u'Int',
 		'hidden': 1,
 		'in_filter': 1,
-		'label': 'lft',
+		'label': u'lft',
 		'no_copy': 1,
-		'oldfieldname': 'lft',
-		'oldfieldtype': 'Int',
+		'oldfieldname': u'lft',
+		'oldfieldtype': u'Int',
 		'permlevel': 0,
 		'print_hide': 1,
 		'report_hide': 0,
@@ -206,15 +217,15 @@
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'rgt',
-		'fieldtype': 'Int',
+		'doctype': u'DocField',
+		'fieldname': u'rgt',
+		'fieldtype': u'Int',
 		'hidden': 1,
 		'in_filter': 1,
-		'label': 'rgt',
+		'label': u'rgt',
 		'no_copy': 1,
-		'oldfieldname': 'rgt',
-		'oldfieldtype': 'Int',
+		'oldfieldname': u'rgt',
+		'oldfieldtype': u'Int',
 		'permlevel': 0,
 		'print_hide': 1,
 		'report_hide': 0,
@@ -223,17 +234,17 @@
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'old_parent',
-		'fieldtype': 'Link',
+		'doctype': u'DocField',
+		'fieldname': u'old_parent',
+		'fieldtype': u'Link',
 		'hidden': 1,
-		'label': 'old_parent',
+		'label': u'old_parent',
 		'no_copy': 1,
-		'oldfieldname': 'old_parent',
-		'oldfieldtype': 'Data',
-		'options': 'Item Group',
+		'oldfieldname': u'old_parent',
+		'oldfieldtype': u'Data',
+		'options': u'Item Group',
 		'permlevel': 0,
 		'print_hide': 1,
 		'report_hide': 1
 	}
-]
\ No newline at end of file
+]
diff --git a/erpnext/startup/event_handlers.py b/erpnext/startup/event_handlers.py
index d9fb451..3c6281f 100644
--- a/erpnext/startup/event_handlers.py
+++ b/erpnext/startup/event_handlers.py
@@ -1,18 +1,18 @@
 import webnotes
 import webnotes.defs
 from webnotes.utils import cint
+import home
 
 def on_login(login_manager):
 	"""
 		called from login manager, before login
 	"""
-	try:
-		if login_manager.user not in ('Guest', None, ''):
+	if login_manager.user not in ('Guest', None, ''):
+		try:
 			import server_tools.gateway_utils
 			server_tools.gateway_utils.check_login(login_manager.user)
-	except ImportError:
-		pass
-
+		except ImportError:
+			pass
 		
 def on_login_post_session(login_manager):
 	"""
@@ -29,9 +29,21 @@
 				sid!=%s""", \
 			(webnotes.session['user'], webnotes.session['sid']), as_list=1)
 
+	if webnotes.session['user'] not in ('Guest'):
+		# create feed
+		from webnotes.utils import nowtime
+		home.make_feed('Login', 'Profile', login_manager.user, login_manager.user,
+			'%s logged in at %s' % (login_manager.user_fullname, nowtime()), 
+			login_manager.user=='Administrator' and '#8CA2B3' or '#1B750D')		
+
+def comment_added(doc):
+	"""add comment to feed"""
+	import json
+	home.make_feed('Comment', doc.comment_doctype, doc.comment_docname, doc.comment_by,
+		'<i>"' + doc.comment + '"</i>', '#6B24B3')
+
 def doclist_all(doc, method):
 	"""doclist trigger called from webnotes.model.doclist on any event"""
-	import home
 	home.update_feed(doc, method)
 	
 def boot_session(bootinfo):
@@ -41,7 +53,7 @@
 	
 	if webnotes.session['user']=='Guest':
 		bootinfo['website_settings'] = webnotes.model.doc.getsingle('Website Settings')
-		bootinfo['website_menus'] = webnotes.conn.sql("""select label, std_page, custom_page, 
+		bootinfo['website_menus'] = webnotes.conn.sql("""select label, url, custom_page, 
 			parent_label, parentfield
 			from `tabTop Bar Item` where parent='Website Settings' order by idx asc""", as_dict=1)
 		bootinfo['custom_css'] = webnotes.conn.get_value('Style Settings', None, 'custom_css') or ''
@@ -51,5 +63,6 @@
 def get_letter_heads():
 	"""load letter heads with startup"""
 	import webnotes
-	ret = webnotes.conn.sql("select name, content from `tabLetter Head` where ifnull(disabled,0)=0")
+	ret = webnotes.conn.sql("""select name, content from `tabLetter Head` 
+		where ifnull(disabled,0)=0""")
 	return dict(ret)
diff --git a/erpnext/website/Role/Website Manager/Website Manager.txt b/erpnext/website/Role/Website Manager/Website Manager.txt
new file mode 100644
index 0000000..ad1ad9a
--- /dev/null
+++ b/erpnext/website/Role/Website Manager/Website Manager.txt
@@ -0,0 +1,26 @@
+# Role, Website Manager
+[
+
+	# These values are common in all dictionaries
+	{
+		'creation': '2012-01-24 10:18:47',
+		'docstatus': 0,
+		'modified': '2012-02-06 15:22:27',
+		'modified_by': u'Administrator',
+		'owner': u'Administrator'
+	},
+
+	# These values are common for all Role
+	{
+		'doctype': 'Role',
+		'module': u'Website',
+		'name': '__common__',
+		'role_name': u'Website Manager'
+	},
+
+	# Role, Website Manager
+	{
+		'doctype': 'Role',
+		'name': u'Website Manager'
+	}
+]
\ No newline at end of file
diff --git a/erpnext/website/doctype/about_us_settings/about_us_settings.py b/erpnext/website/doctype/about_us_settings/about_us_settings.py
index 8a31ff0..770f1d2 100644
--- a/erpnext/website/doctype/about_us_settings/about_us_settings.py
+++ b/erpnext/website/doctype/about_us_settings/about_us_settings.py
@@ -14,11 +14,11 @@
 		path = os.path.join(os.path.dirname(__file__), 'template.html')
 		
 		self.doc.about_team = webnotes.conn.sql("""select * from `tabAbout Us Team` 
-			where parent='About Us Settings'""", as_dict=1)
+			where parent='About Us Settings' order by idx""", as_dict=1)
 		
 		import markdown2
 		for t in self.doc.about_team:
-			t['bio'] = markdown2.markdown(t['bio'])
+			t['bio'] = markdown2.markdown(t.get('bio') or '')
 		
 		webnotes.conn.set_value('Page', 'about', 'title', self.doc.headline)
 		webnotes.conn.set_value('Page', 'about', 'content', make_template(self.doc, path))
diff --git a/erpnext/website/doctype/product/product.py b/erpnext/website/doctype/product/product.py
index 935d762..5880d34 100644
--- a/erpnext/website/doctype/product/product.py
+++ b/erpnext/website/doctype/product/product.py
@@ -1,3 +1,5 @@
+import webnotes
+
 class DocType:
 	def __init__(self, d, dl):
 		self.doc, self.doclist = d, dl
@@ -24,4 +26,14 @@
 		
 		website.utils.add_guest_access_to_page(p.name)
 		self.doc.page_name = p.name
-		del self.doc.fields['long_description_html']
\ No newline at end of file
+		del self.doc.fields['long_description_html']
+		self.make_item_group_active()
+
+
+	def make_item_group_active(self):
+		"""show item group in website"""
+		if self.doc.published:
+			from webnotes.model.doc import Document
+			ig = Document('Item Group', webnotes.conn.get_value('Item', self.doc.item, 'item_group'))
+			ig.show_in_website = 1
+			ig.save()
diff --git a/erpnext/website/doctype/product/product.txt b/erpnext/website/doctype/product/product.txt
index fac4cfb..6258691 100644
--- a/erpnext/website/doctype/product/product.txt
+++ b/erpnext/website/doctype/product/product.txt
@@ -5,245 +5,245 @@
 	{
 		'creation': '2012-01-30 16:21:29',
 		'docstatus': 0,
-		'modified': '2012-01-31 13:46:23',
-		'modified_by': 'Administrator',
-		'owner': 'Administrator'
+		'modified': '2012-02-06 16:15:29',
+		'modified_by': u'Administrator',
+		'owner': u'Administrator'
 	},
 
 	# These values are common for all DocType
 	{
-		'_last_update': '1327995660',
+		'_last_update': u'1327997783',
 		'allow_attach': 1,
-		'autoname': 'field:item',
-		'colour': 'White:FFF',
-		'description': 'A Product is shown on the website and is linked to an item.',
+		'autoname': u'field:item',
+		'colour': u'White:FFF',
+		'description': u'A Product is shown on the website and is linked to an item.',
 		'doctype': 'DocType',
 		'max_attachments': 5,
-		'module': 'Website',
+		'module': u'Website',
 		'name': '__common__',
-		'section_style': 'Simple',
+		'section_style': u'Simple',
 		'show_in_menu': 0,
-		'version': 10
+		'version': 11
 	},
 
 	# These values are common for all DocField
 	{
-		'doctype': 'DocField',
+		'doctype': u'DocField',
 		'name': '__common__',
-		'parent': 'Product',
-		'parentfield': 'fields',
-		'parenttype': 'DocType'
+		'parent': u'Product',
+		'parentfield': u'fields',
+		'parenttype': u'DocType'
 	},
 
 	# These values are common for all DocPerm
 	{
-		'doctype': 'DocPerm',
+		'doctype': u'DocPerm',
 		'name': '__common__',
-		'parent': 'Product',
-		'parentfield': 'permissions',
-		'parenttype': 'DocType',
+		'parent': u'Product',
+		'parentfield': u'permissions',
+		'parenttype': u'DocType',
 		'read': 1,
-		'role': 'Website Manager'
+		'role': u'Website Manager'
 	},
 
 	# DocType, Product
 	{
 		'doctype': 'DocType',
-		'name': 'Product'
+		'name': u'Product'
 	},
 
 	# DocPerm
 	{
 		'create': 1,
-		'doctype': 'DocPerm',
+		'doctype': u'DocPerm',
 		'permlevel': 0,
 		'write': 1
 	},
 
 	# DocPerm
 	{
-		'doctype': 'DocPerm',
+		'doctype': u'DocPerm',
 		'permlevel': 1
 	},
 
 	# DocField
 	{
-		'colour': 'White:FFF',
-		'doctype': 'DocField',
-		'fieldname': 'item',
-		'fieldtype': 'Link',
-		'label': 'Item',
-		'options': 'Item',
+		'colour': u'White:FFF',
+		'doctype': u'DocField',
+		'fieldname': u'item',
+		'fieldtype': u'Link',
+		'label': u'Item',
+		'options': u'Item',
 		'permlevel': 0,
 		'reqd': 1
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'title',
-		'fieldtype': 'Link',
-		'label': 'Title',
+		'doctype': u'DocField',
+		'fieldname': u'title',
+		'fieldtype': u'Data',
+		'label': u'Title',
 		'permlevel': 0
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'published',
-		'fieldtype': 'Check',
-		'label': 'Published',
+		'doctype': u'DocField',
+		'fieldname': u'published',
+		'fieldtype': u'Check',
+		'label': u'Published',
 		'permlevel': 0
 	},
 
 	# DocField
 	{
-		'colour': 'White:FFF',
-		'description': 'Select Price List for the web. Leave blank to hide price.',
-		'doctype': 'DocField',
-		'fieldname': 'price_list',
-		'fieldtype': 'Link',
-		'label': 'Price List',
-		'options': 'Price List',
+		'colour': u'White:FFF',
+		'description': u'Select Price List for the web. Leave blank to hide price.',
+		'doctype': u'DocField',
+		'fieldname': u'price_list',
+		'fieldtype': u'Link',
+		'label': u'Price List',
+		'options': u'Price List',
 		'permlevel': 0
 	},
 
 	# DocField
 	{
-		'colour': 'White:FFF',
-		'description': 'Select shipping warehouse to show "In Stock" or "Out of Stock". To hide, leave blank',
-		'doctype': 'DocField',
-		'fieldname': 'warehouse',
-		'fieldtype': 'Link',
-		'label': 'Warehouse',
-		'options': 'Warehouse',
+		'colour': u'White:FFF',
+		'description': u'Select shipping warehouse to show "In Stock" or "Out of Stock". To hide, leave blank',
+		'doctype': u'DocField',
+		'fieldname': u'warehouse',
+		'fieldtype': u'Link',
+		'label': u'Warehouse',
+		'options': u'Warehouse',
 		'permlevel': 0
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldtype': 'Column Break',
+		'doctype': u'DocField',
+		'fieldtype': u'Column Break',
 		'permlevel': 0
 	},
 
 	# DocField
 	{
-		'colour': 'White:FFF',
-		'description': 'Image for listing (Width: 100px) (Attach First)',
-		'doctype': 'DocField',
-		'fieldname': 'thumbnail_image',
-		'fieldtype': 'Select',
-		'label': 'Thumbnail Image',
-		'options': 'attach_files:',
+		'colour': u'White:FFF',
+		'description': u'Image for listing (Width: 100px) (Attach First)',
+		'doctype': u'DocField',
+		'fieldname': u'thumbnail_image',
+		'fieldtype': u'Select',
+		'label': u'Thumbnail Image',
+		'options': u'attach_files:',
 		'permlevel': 0
 	},
 
 	# DocField
 	{
-		'colour': 'White:FFF',
-		'description': 'Image for listing (Width: 300px) (Attach First)',
-		'doctype': 'DocField',
-		'fieldname': 'full_image',
-		'fieldtype': 'Select',
-		'label': 'Full Image',
-		'options': 'attach_files:',
+		'colour': u'White:FFF',
+		'description': u'Image for listing (Width: 300px) (Attach First)',
+		'doctype': u'DocField',
+		'fieldname': u'full_image',
+		'fieldtype': u'Select',
+		'label': u'Full Image',
+		'options': u'attach_files:',
 		'permlevel': 0
 	},
 
 	# DocField
 	{
-		'colour': 'White:FFF',
-		'doctype': 'DocField',
-		'fieldname': 'short_description',
-		'fieldtype': 'Text',
-		'label': 'Short Description',
+		'colour': u'White:FFF',
+		'doctype': u'DocField',
+		'fieldname': u'short_description',
+		'fieldtype': u'Text',
+		'label': u'Short Description',
 		'permlevel': 0,
 		'reqd': 1
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldtype': 'Section Break',
+		'doctype': u'DocField',
+		'fieldtype': u'Section Break',
 		'permlevel': 0
 	},
 
 	# DocField
 	{
-		'colour': 'White:FFF',
-		'description': 'Full description (formatted as markdown)',
-		'doctype': 'DocField',
-		'fieldname': 'long_description',
-		'fieldtype': 'Code',
-		'label': 'Long Description',
+		'colour': u'White:FFF',
+		'description': u'Full description (formatted as markdown)',
+		'doctype': u'DocField',
+		'fieldname': u'long_description',
+		'fieldtype': u'Code',
+		'label': u'Long Description',
 		'permlevel': 0,
 		'reqd': 0
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldtype': 'Section Break',
+		'doctype': u'DocField',
+		'fieldtype': u'Section Break',
 		'permlevel': 0
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'page_name',
-		'fieldtype': 'Data',
-		'label': 'Page Name',
+		'doctype': u'DocField',
+		'fieldname': u'page_name',
+		'fieldtype': u'Data',
+		'label': u'Page Name',
 		'permlevel': 1
 	},
 
 	# DocField
 	{
-		'colour': 'White:FFF',
-		'doctype': 'DocField',
-		'fieldname': 'price',
-		'fieldtype': 'Currency',
+		'colour': u'White:FFF',
+		'doctype': u'DocField',
+		'fieldname': u'price',
+		'fieldtype': u'Currency',
 		'hidden': 0,
-		'label': 'Price',
+		'label': u'Price',
 		'permlevel': 1
 	},
 
 	# DocField
 	{
-		'colour': 'White:FFF',
-		'doctype': 'DocField',
-		'fieldname': 'sales',
-		'fieldtype': 'Currency',
-		'label': 'Sales',
+		'colour': u'White:FFF',
+		'doctype': u'DocField',
+		'fieldname': u'sales',
+		'fieldtype': u'Currency',
+		'label': u'Sales',
 		'permlevel': 1
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'stock',
-		'fieldtype': 'Currency',
-		'label': 'Stock',
+		'doctype': u'DocField',
+		'fieldname': u'stock',
+		'fieldtype': u'Currency',
+		'label': u'Stock',
 		'permlevel': 1
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'currency',
-		'fieldtype': 'Link',
-		'label': 'Currency',
-		'options': 'Currency',
+		'doctype': u'DocField',
+		'fieldname': u'currency',
+		'fieldtype': u'Link',
+		'label': u'Currency',
+		'options': u'Currency',
 		'permlevel': 1
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'file_list',
-		'fieldtype': 'Text',
+		'doctype': u'DocField',
+		'fieldname': u'file_list',
+		'fieldtype': u'Text',
 		'hidden': 1,
-		'label': 'File List',
+		'label': u'File List',
 		'no_copy': 1,
 		'permlevel': 0,
 		'print_hide': 1
diff --git a/erpnext/website/doctype/related_page/related_page.txt b/erpnext/website/doctype/related_page/related_page.txt
index 3cb674f..67a30b7 100644
--- a/erpnext/website/doctype/related_page/related_page.txt
+++ b/erpnext/website/doctype/related_page/related_page.txt
@@ -5,45 +5,45 @@
 	{
 		'creation': '2012-02-01 16:16:47',
 		'docstatus': 0,
-		'modified': '2012-02-01 16:16:48',
-		'modified_by': 'Administrator',
-		'owner': 'Administrator'
+		'modified': '2012-02-06 12:24:29',
+		'modified_by': u'Administrator',
+		'owner': u'Administrator'
 	},
 
 	# These values are common for all DocType
 	{
-		'colour': 'White:FFF',
+		'colour': u'White:FFF',
 		'doctype': 'DocType',
 		'istable': 1,
-		'module': 'Website',
+		'module': u'Website',
 		'name': '__common__',
-		'section_style': 'Simple',
+		'section_style': u'Simple',
 		'show_in_menu': 0,
-		'version': 1
+		'version': 3
 	},
 
 	# These values are common for all DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'page',
-		'fieldtype': 'Link',
-		'label': 'Page',
+		'doctype': u'DocField',
+		'fieldname': u'page',
+		'fieldtype': u'Link',
+		'label': u'Page',
 		'name': '__common__',
-		'options': 'Page',
-		'parent': 'Related Page',
-		'parentfield': 'fields',
-		'parenttype': 'DocType',
+		'options': u'Page',
+		'parent': u'Related Page',
+		'parentfield': u'fields',
+		'parenttype': u'DocType',
 		'permlevel': 0
 	},
 
 	# DocType, Related Page
 	{
 		'doctype': 'DocType',
-		'name': 'Related Page'
+		'name': u'Related Page'
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField'
+		'doctype': u'DocField'
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/website/doctype/top_bar_item/top_bar_item.txt b/erpnext/website/doctype/top_bar_item/top_bar_item.txt
index 410352c..3ff23b3 100644
--- a/erpnext/website/doctype/top_bar_item/top_bar_item.txt
+++ b/erpnext/website/doctype/top_bar_item/top_bar_item.txt
@@ -5,70 +5,69 @@
 	{
 		'creation': '2012-01-24 10:24:19',
 		'docstatus': 0,
-		'modified': '2012-01-30 14:14:48',
-		'modified_by': 'Administrator',
-		'owner': 'Administrator'
+		'modified': '2012-02-07 10:35:19',
+		'modified_by': u'Administrator',
+		'owner': u'Administrator'
 	},
 
 	# These values are common for all DocType
 	{
-		'colour': 'White:FFF',
+		'colour': u'White:FFF',
 		'doctype': 'DocType',
 		'istable': 1,
-		'module': 'Website',
+		'module': u'Website',
 		'name': '__common__',
-		'section_style': 'Simple',
+		'section_style': u'Simple',
 		'show_in_menu': 0,
-		'version': 2
+		'version': 4
 	},
 
 	# These values are common for all DocField
 	{
-		'doctype': 'DocField',
+		'doctype': u'DocField',
 		'name': '__common__',
-		'parent': 'Top Bar Item',
-		'parentfield': 'fields',
-		'parenttype': 'DocType',
+		'parent': u'Top Bar Item',
+		'parentfield': u'fields',
+		'parenttype': u'DocType',
 		'permlevel': 0
 	},
 
 	# DocType, Top Bar Item
 	{
 		'doctype': 'DocType',
-		'name': 'Top Bar Item'
+		'name': u'Top Bar Item'
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'label',
-		'fieldtype': 'Data',
-		'label': 'Label'
+		'doctype': u'DocField',
+		'fieldname': u'label',
+		'fieldtype': u'Data',
+		'label': u'Label'
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'std_page',
-		'fieldtype': 'Select',
-		'label': 'Std Page',
-		'options': 'Home\nAbout\nContact\nProducts\nBlog\nCustom'
+		'doctype': u'DocField',
+		'fieldname': u'custom_page',
+		'fieldtype': u'Link',
+		'label': u'Page',
+		'options': u'Page'
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'custom_page',
-		'fieldtype': 'Link',
-		'label': 'Custom Page',
-		'options': 'Web Page'
+		'doctype': u'DocField',
+		'fieldname': u'url',
+		'fieldtype': u'Data',
+		'label': u'URL'
 	},
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldname': 'parent_label',
-		'fieldtype': 'Select',
-		'label': 'Parent Label'
+		'doctype': u'DocField',
+		'fieldname': u'parent_label',
+		'fieldtype': u'Select',
+		'label': u'Parent Label'
 	}
 ]
\ No newline at end of file
diff --git a/erpnext/website/doctype/web_page/web_page.py b/erpnext/website/doctype/web_page/web_page.py
index 14a082b..8f7c38f 100644
--- a/erpnext/website/doctype/web_page/web_page.py
+++ b/erpnext/website/doctype/web_page/web_page.py
@@ -37,10 +37,13 @@
 						"title": webnotes.conn.get_value("Page", self.doc.next_page, "title")}
 
 		self.doc.see_also = ''
-		for l in webnotes.conn.sql("""select distinct t1.page, t2.title from
-			`tabRelated Page` t1, tabPage t2 where
-			t1.page = t2.name order by t2.title""", as_dict=1):
-			self.doc.see_also += """<p><a href="#!%(page)s">%(title)s</a></p>""" % l
+		for d in self.doclist:
+			if d.doctype=='Related Page':
+				tmp = {"page":d.page, "title":webnotes.conn.get_value('Page', d.page, 'title')}
+				self.doc.see_also += """<li><a href="#!%(page)s">%(title)s</a></li>""" % tmp
+		
+		if self.doc.see_also:
+			self.doc.see_also = '<ul>%s</ul>' % self.doc.see_also
 		
 	def cleanup_temp(self):
 		"""cleanup temp fields"""
diff --git a/erpnext/website/js/topbar.js b/erpnext/website/js/topbar.js
index 8a7870c..cffc825 100644
--- a/erpnext/website/js/topbar.js
+++ b/erpnext/website/js/topbar.js
@@ -37,7 +37,7 @@
 		for(var i=0;i<items.length;i++) {
 			var item = items[i];
 			if(!item.parent_label && item.parentfield=='top_bar_items') {
-				item.route = item.std_page ? item.std_page.toLowerCase() : item.custom_page;
+				item.route = item.url || item.custom_page;
 				$('header .nav:first').append(repl('<li><a href="#!%(route)s" \
 					data-label="%(label)s">%(label)s</a></li>', item))
 			}
@@ -64,7 +64,7 @@
 		for(var i=0;i<items.length;i++) {
 			var item = items[i];
 			if(!item.parent_label && item.parentfield=='footer_items') {
-				item.route = item.std_page ? item.std_page.toLowerCase() : item.custom_page;
+				item.route = item.url || item.custom_page;
 				$('.web-footer-menu ul').append(repl('<li><a href="#!%(route)s" \
 					data-label="%(label)s">%(label)s</a></li>', item))
 			}
@@ -72,4 +72,4 @@
 	}
 });
 
-erpnext.footer = new erpnext.Footer();
\ No newline at end of file
+erpnext.footer = new erpnext.Footer();
diff --git a/erpnext/website/utils.py b/erpnext/website/utils.py
index 330f7a3..66be4d2 100644
--- a/erpnext/website/utils.py
+++ b/erpnext/website/utils.py
@@ -25,7 +25,8 @@
 def page_name(title):
 	"""make page name from title, and check that there is no duplicate"""
 	import re
-	name = re.sub('[~!@#$%^&*()<>,."\']', '', title.lower())
+	name = title.lower()
+	name = re.sub('[~!@#$%^&*()<>,."\']', '', name)
 	return '-'.join(name.split()[:4])
 	
 def add_page(title):
@@ -50,4 +51,4 @@
 		d = Document('Page Role')
 		d.parent = page
 		d.role = 'Guest'
-		d.save()
\ No newline at end of file
+		d.save()
diff --git a/index.cgi b/index.cgi
index a119dae..bc1de92 100755
--- a/index.cgi
+++ b/index.cgi
@@ -19,7 +19,13 @@
 		webnotes.form_dict[key] = webnotes.form.getvalue(key)
 
 	# init request
-	webnotes.http_request = webnotes.auth.HTTPRequest()
+	try:
+		webnotes.http_request = webnotes.auth.HTTPRequest()
+	except Exception, e:
+		if webnotes.response['message']=='Authentication Failed':
+			pass
+		else:
+			raise e
 
 def respond():
 	import webnotes
@@ -34,4 +40,4 @@
 
 if __name__=="__main__":
 	init()
-	respond()
\ No newline at end of file
+	respond()
diff --git a/version.num b/version.num
index 6fa50e7..cf7ff50 100644
--- a/version.num
+++ b/version.num
@@ -1 +1 @@
-353
+359
diff --git a/wnf.py b/wnf.py
new file mode 100755
index 0000000..355474f
--- /dev/null
+++ b/wnf.py
@@ -0,0 +1,134 @@
+#!/usr/bin/env python
+
+import os, sys
+
+def replace_code(start, txt1, txt2, extn):
+	"""replace all txt1 by txt2 in files with extension (extn)"""
+	import os, re
+	for wt in os.walk(start, followlinks=1):
+		for fn in wt[2]:
+			if fn.split('.')[-1]==extn:
+				fpath = os.path.join(wt[0], fn)
+				with open(fpath, 'r') as f:
+					content = f.read()
+				
+				if re.search(txt1, content):
+					a = raw_input('Change in %s [y/n]?' % fpath)
+					if a=='y':
+						with open(fpath, 'w') as f:
+							f.write(re.sub(txt1, txt2, content))
+				
+						print 'updated in %s' % fpath
+
+def setup_options():
+	from optparse import OptionParser
+	parser = OptionParser()
+	parser.add_option("-b", "--build", default=False, action="store_true",
+						help="minify + concat js files")
+	parser.add_option("-c", "--clear", default=False, action="store_true",
+						help="increment version")
+	parser.add_option("--replace", nargs=3, default=False, 
+						metavar = "search replace_by extension",
+						help="file search-replace")
+	parser.add_option("--status", default=False, action="store_true",
+						help="git status")
+	parser.add_option("--pull", nargs=2, default=False,
+						metavar = "remote branch",
+						help="git pull (both repos)")
+	parser.add_option("--push", nargs=3, default=False, 
+						metavar = "remote branch comment",
+						help="git commit + push (both repos) [remote] [branch] [comment]")
+	parser.add_option("-l", "--latest",
+						action="store_true", dest="run_latest", default=False,
+						help="Apply the latest patches")
+	parser.add_option("-p", "--patch", nargs=1, dest="patch_list", metavar='patch_module',
+						action="append",
+						help="Apply patch")
+	parser.add_option("-f", "--force",
+						action="store_true", dest="force", default=False,
+						help="Force Apply all patches specified using option -p or --patch")
+	parser.add_option("-d", "--db",
+						dest="db_name",
+						help="Apply the patches on given db")
+	parser.add_option('--reload_doc', nargs=3, metavar = "module doctype docname",
+						help="reload doc")
+	
+	return parser.parse_args()
+	
+def run():
+	sys.path.append('lib')
+	sys.path.append('lib/py')
+	import webnotes
+	import webnotes.defs
+	sys.path.append(webnotes.defs.modules_path)
+
+	(options, args) = setup_options()
+
+
+	from webnotes.db import Database
+	import webnotes.modules.patch_handler
+
+	# connect
+	if options.db_name is not None:
+		webnotes.connect(options.db_name)
+
+	# build
+	if options.build:
+		import build.project
+		build.project.build()		
+
+	elif options.clear:
+		from build.project import increment_version
+		print "Version:" + str(increment_version())
+	
+	# code replace
+	elif options.replace:
+		replace_code('.', options.replace[0], options.replace[1], options.replace[2])
+	
+	# git
+	elif options.status:
+		os.system('git status')
+		os.chdir('lib')
+		os.system('git status')
+	
+	elif options.pull:
+		os.system('git pull %s %s' % (options.pull[0], options.pull[1]))
+		os.chdir('lib')
+		os.system('git pull %s %s' % (options.pull[0], options.pull[1]))
+
+	elif options.push:
+		os.system('git commit -a -m "%s"' % options.push[2])
+		os.system('git push %s %s' % (options.push[0], options.push[1]))
+		os.chdir('lib')
+		os.system('git commit -a -m "%s"' % options.push[2])
+		os.system('git push %s %s' % (options.push[0], options.push[1]))
+	
+	# patch
+	elif options.patch_list:
+		# clear log
+		webnotes.modules.patch_handler.log_list = []
+		
+		# run individual patches
+		for patch in options.patch_list:
+			webnotes.modules.patch_handler.run_single(\
+				patchmodule = patch, force = options.force)
+		
+		print '\n'.join(webnotes.modules.patch_handler.log_list)
+	
+		# reload
+	elif options.reload_doc:
+		webnotes.modules.patch_handler.reload_doc(\
+			{"module":options.reload_doc[0], "dt":options.reload_doc[1], "dn":options.reload_doc[2]})		
+		print '\n'.join(webnotes.modules.patch_handler.log_list)
+
+	# run all pending
+	elif options.run_latest:
+		webnotes.modules.patch_handler.run_all()
+		print '\n'.join(webnotes.modules.patch_handler.log_list)
+	
+	# print messages
+	if webnotes.message_log:
+		print '\n'.join(webnotes.message_log)
+
+if __name__=='__main__':
+	run()
