diff --git a/erpnext/startup/js/modules.js b/erpnext/startup/js/modules.js
index 2e0e701..2799fa1 100644
--- a/erpnext/startup/js/modules.js
+++ b/erpnext/startup/js/modules.js
@@ -61,22 +61,40 @@
 
 erpnext.module_page.make_list = function(module, wrapper) {
 	// make project listing
-	wrapper.list = new wn.ui.Listing({
-		parent: $(wrapper).find('.reports-list').get(0),
-		method: 'utilities.get_report_list',
+	var $w = $(wrapper).find('.reports-list');
+	var $parent1 = $('<div style="width: 45%; float: left; margin-right: 4.5%"></div>').appendTo($w);
+	var $parent2 = $('<div style="width: 45%; float: left;"></div>').appendTo($w);
+
+	wrapper.list1 = new wn.ui.Listing({
+		parent: $parent1,
+		method: 'utilities.get_sc_list',
 		render_row: function(row, data) {
 			if(!data.parent_doc_type) data.parent_doc_type = data.doc_type;
 			$(row).html(repl('<a href="#!Report/%(doc_type)s/%(criteria_name)s" \
 				data-doctype="%(parent_doc_type)s">\
 				%(criteria_name)s</a>', data))
 		},
-		args: {
-			module: module
-		},
+		args: { module: module },
 		no_refresh: true,
 		callback: function(r) {
-			erpnext.module_page.hide_links(wrapper)
+			erpnext.module_page.hide_links($parent1)
 		}
 	});
-	wrapper.list.run();	
+	wrapper.list1.run();	
+
+	wrapper.list2 = new wn.ui.Listing({
+		parent: $parent2,
+		method: 'utilities.get_report_list',
+		render_row: function(row, data) {
+			$(row).html(repl('<a href="#!Report2/%(ref_doctype)s/%(name)s" \
+				data-doctype="%(ref_doctype)s">\
+				%(name)s</a>', data))
+		},
+		args: { module: module },
+		no_refresh: true,
+		callback: function(r) {
+			erpnext.module_page.hide_links($parent2)
+		}
+	});
+	wrapper.list2.run();
 }
\ No newline at end of file
diff --git a/erpnext/utilities/__init__.py b/erpnext/utilities/__init__.py
index d57f0de..f6f3859 100644
--- a/erpnext/utilities/__init__.py
+++ b/erpnext/utilities/__init__.py
@@ -17,7 +17,7 @@
 import webnotes
 
 @webnotes.whitelist()
-def get_report_list(arg=None):
+def get_sc_list(arg=None):
 	"""return list of reports for the given module module"""	
 	webnotes.response['values'] = webnotes.conn.sql("""select 
 		distinct criteria_name, doc_type, parent_doc_type
@@ -26,4 +26,16 @@
 		and docstatus in (0, NULL)
 		and ifnull(disabled, 0) = 0 
 		order by criteria_name 
+		limit %(limit_start)s, %(limit_page_length)s""" % webnotes.form_dict, as_dict=True)
+
+@webnotes.whitelist()
+def get_report_list():
+	"""return list on new style reports for modules"""
+	webnotes.response['values'] = webnotes.conn.sql("""select 
+		distinct tabReport.name, tabReport.ref_doctype
+		from `tabReport`, `tabDocType`
+		where tabDocType.module='%(module)s' 
+		and tabDocType.name = tabReport.ref_doctype
+		and tabReport.docstatus in (0, NULL)
+		order by tabReport.name 
 		limit %(limit_start)s, %(limit_page_length)s""" % webnotes.form_dict, as_dict=True)
\ No newline at end of file
