diff --git a/erpnext/patches/june_2012/cms2.py b/erpnext/patches/june_2012/cms2.py
new file mode 100644
index 0000000..fb9c72c
--- /dev/null
+++ b/erpnext/patches/june_2012/cms2.py
@@ -0,0 +1,11 @@
+def execute():
+	import webnotes
+	from webnotes.model.doclist import DocList
+	import webnotes.model.sync
+	
+	# sync web page doctype
+	webnotes.model.sync.sync('website', 'web_page')
+	
+	# save all web pages to create content
+	for p in webnotes.conn.sql("""select name from `tabWeb Page` where docstatus=0"""):
+		DocList('Web Page', p[0]).save()
\ No newline at end of file
diff --git a/erpnext/website/templates/blog.html b/erpnext/website/templates/blog.html
index 30dbd3b..d0b9a13 100644
--- a/erpnext/website/templates/blog.html
+++ b/erpnext/website/templates/blog.html
@@ -1,4 +1,7 @@
-{% extends "index.html" %}
+{% extends "outer.html" %}
+
+{% block title %}{{ title }}{% endblock %}
+
 
 {% block content %}
 <div class="layout-wrapper layout-wrapper-background">
@@ -28,7 +31,9 @@
 </div>
 
 <script>
-wrapper.blog_list = new wn.ui.Listing({
+
+// if not a specific blog, show listing
+erpnext.blog_list = new wn.ui.Listing({
 	parent: $(wrapper).find('#blog-list').get(0),
 	query: 'select tabBlog.name, title, left(content, 1000) as content, tabBlog.creation, \
 		ifnull(first_name, "") as first_name, ifnull(last_name, "") as last_name \
@@ -49,5 +54,5 @@
 	},
 	page_length: 10
 });
-wrapper.blog_list.run();
+erpnext.blog_list.run();
 </script>
\ No newline at end of file
diff --git a/public/web.py b/public/web.py
index 8909bf2..c7c1df2 100755
--- a/public/web.py
+++ b/public/web.py
@@ -17,6 +17,9 @@
 
 def get_outer_env():
 	"""env for outer (cache this)"""
+	
+	# TODO: Cache this in cache item
+	
 	import webnotes
 	return {
 		'top_bar_items': webnotes.conn.sql("""select * from `tabTop Bar Item`
@@ -31,7 +34,7 @@
 		'copyright': webnotes.conn.get_value('Website Settings', None, 'copyright'),
 	}
 	
-def get_page_by_short_name(page_name):
+def get_web_page_name(page_name):
 	"""get page by shortname"""
 	import webnotes
 	return webnotes.conn.sql("""select name from `tabWeb Page` where page_name=%s""", page_name)[0][0]
@@ -47,21 +50,31 @@
 	for key in webnotes.form.keys():
 		webnotes.form_dict[key] = webnotes.form.getvalue(key)
 	webnotes.connect()
-
-	if 'page' in webnotes.form_dict:
-		page_name = webnotes.form_dict['page']
-		if page_name.endswith('.html'):
-			page_name = page_name[:-5]
+	
+	# Get web page
+	try:
+		if 'page' in webnotes.form_dict:
+			page_name = webnotes.form_dict['page']
+			if page_name.endswith('.html'):
+				page_name = page_name[:-5]
+				
+			if page_name.startswith('blog'):
+				pass
+				# page_name = 
+			else:
+				page_name = get_web_page_name(page_name)		
+		else:
+			from webnotes.cms import get_home_page
+			page_name = get_home_page('Guest')
 		
-		#try:
-		page_name = get_page_by_short_name(page_name)
 		page = Document('Web Page', page_name)
 		page.fields.update(get_outer_env())
-		return jenv.get_template('page.html').render(page.fields)
-		#except Exception, e:
-		#	return jenv.get_template('404.html').render(get_outer_env())
-	else:
-		return jenv.get_template('404.html').render(get_outer_env())
+		return jenv.get_template('page.html').render(page.fields) + \
+			('\n<!-- page: %s -->' % page_name)
+		
+	except Exception, e:
+		return jenv.get_template('404.html').render(get_outer_env()) + \
+			('\n<!-- error: %s -->' % webnotes.getTraceback())
 		
 if __name__=="__main__":
 	print "Content-Type: text/html"
