diff --git a/erpnext/accounts/page/general_ledger/general_ledger.js b/erpnext/accounts/page/general_ledger/general_ledger.js
index d395612..3a17f5c0 100644
--- a/erpnext/accounts/page/general_ledger/general_ledger.js
+++ b/erpnext/accounts/page/general_ledger/general_ledger.js
@@ -6,60 +6,82 @@
 	});
 	
 	erpnext.general_ledger = new wn.views.GridReport({
+		title: "General Ledger",
 		parent: $(wrapper).find('.layout-main'),
 		appframe: wrapper.appframe,
 		doctypes: ["Company", "Account", "GL Entry"],
-		filters: [
-			{fieldtype:"Select", label: "Company", options:"Company",
-				filter: function(val, item) {
-					return item.company == val || val == "Select Company";
-				}},
-			{fieldtype:"Select", label: "Account", options:"Account",
-				filter: function(val, item) {
-					return item.account == val || val == "Select Account";
-				}},
-			{fieldtype:"Date", label: "From Date"},
-			{fieldtype:"Label", label: "To"},
-			{fieldtype:"Date", label: "To Date"},
-			{fieldtype:"Button", label: "Refresh"},
-		],
 		setup: function() {
 			this.setup_filters();
 			this.setup_columns();
 		},
-		setup_filters: function() {
-			var me = this;
-			// default filters
-			this.filter_inputs.company.val(sys_defaults.company);
-			this.filter_inputs.from_date.val(dateutil.str_to_user(sys_defaults.year_start_date));
-			this.filter_inputs.to_date.val(dateutil.str_to_user(sys_defaults.year_end_date));
-			this.filter_inputs.refresh.click(function() { me.refresh(); })
-		},
 		setup_columns: function() {
 			this.columns = [
 				{id: "posting_date", name: "Posting Date", field: "posting_date", width: 100,
 					formatter: this.date_formatter},
-				{id: "account", name: "Account", field: "account", width: 240},
+				{id: "account", name: "Account", field: "account", width: 240, 	
+					link_formatter: {
+						filter_input: "account",
+						open_btn: true,
+						doctype: '"Account"'
+					}},
 				{id: "debit", name: "Debit", field: "debit", width: 100,
 					formatter: this.currency_formatter},
 				{id: "credit", name: "Credit", field: "credit", width: 100,
 					formatter: this.currency_formatter},
+				{id: "voucher_type", name: "Voucher Type", field: "voucher_type", width: 120},
+				{id: "voucher_no", name: "Voucher No", field: "voucher_no", width: 160,
+					link_formatter: {
+						filter_input: "voucher_no",
+						open_btn: true,
+						doctype: "dataContext.voucher_type"
+					}},
+				{id: "remarks", name: "Remarks", field: "remarks", width: 200,
+					formatter: this.text_formatter},
+					
 			];
 		},
+		filters: [
+			{fieldtype:"Select", label: "Company", options:"Company", default_value: "Select Company...",
+				filter: function(val, item, opts) {
+					return item.company == val || val == opts.default_value;
+				}},
+			{fieldtype:"Select", label: "Account", options:"Account", default_value: "Select Account...",
+				filter: function(val, item, opts) {
+					return item.account == val || val == opts.default_value;
+				}},
+			{fieldtype:"Data", label: "Voucher No",
+				filter: function(val, item, opts) {
+					if(!val) return true;
+					return item.voucher_no.indexOf(val)!=-1;
+				}},
+			{fieldtype:"Date", label: "From Date", filter: function(val, item) {
+				return dateutil.user_to_obj(val) <= dateutil.str_to_obj(item.posting_date);
+			}},
+			{fieldtype:"Label", label: "To"},
+			{fieldtype:"Date", label: "To Date", filter: function(val, item) {
+				return dateutil.user_to_obj(val) >= dateutil.str_to_obj(item.posting_date);
+			}},
+			{fieldtype:"Button", label: "Refresh", icon:"icon-refresh icon-white", cssClass:"btn-info"},
+			{fieldtype:"Button", label: "Reset Filters"}
+		],
+		setup_filters: function() {
+			var me = this;
+			// default filters
+			this.init_filter_values();
+			this.filter_inputs.refresh.click(function() { me.set_route(); })
+			this.filter_inputs.reset_filters.click(function() { me.init_filter_values(); me.set_route(); })
+		},
+		init_filter_values: function() {
+			this.filter_inputs.company.val(sys_defaults.company);
+			this.filter_inputs.from_date.val(dateutil.str_to_user(sys_defaults.year_start_date));
+			this.filter_inputs.to_date.val(dateutil.str_to_user(sys_defaults.year_end_date));
+			this.filter_inputs.voucher_no.val("");
+			this.filter_inputs.account.get(0).selectedIndex = 0;			
+		},
 		prepare_data: function() {
 			this.prepare_data_view(wn.report_dump.data["GL Entry"]);
 		},
-		dataview_filter: function(item) {
-			var filters = wn.cur_grid_report.filter_inputs;
-			for (i in filters) {
-				var filter = filters[i].get(0);
-				if(filter.opts.filter && !filter.opts.filter($(filter).val(), item)) {
-					return false;
-				}
-			}
-			return true;
-		},
 	});
-	
+
 }
 
diff --git a/erpnext/home/page/attributions/attributions.html b/erpnext/home/page/attributions/attributions.html
index 63919d0..9952908 100644
--- a/erpnext/home/page/attributions/attributions.html
+++ b/erpnext/home/page/attributions/attributions.html
@@ -43,6 +43,7 @@
 			<li><a href="http://taitems.github.com/jQuery.Gantt/">JQuery.Gantt</a> - Gantt Chart</li>
 			<li>JSON2 - JSON builder, parser</li>
 			<li>JSColor - color picker</li>
+			<li><a href="https://github.com/dcneiner/Downloadify">Downloadify</a> - Export CSV files from the browser</li>
 		</ul>
 	</ul>
 
diff --git a/erpnext/startup/report_data_map.py b/erpnext/startup/report_data_map.py
index aa23ade..1811aaa 100644
--- a/erpnext/startup/report_data_map.py
+++ b/erpnext/startup/report_data_map.py
@@ -22,9 +22,9 @@
 	},
 	"GL Entry": {
 		"columns": ["account", "posting_date", "cost_center", "debit", "credit", "is_opening",
-			"company"],
+			"company", "voucher_type", "voucher_no", "remarks"],
 		"conditions": ["ifnull(is_cancelled, 'No')='No'"],
-		"order_by": "posting_date"
+		"order_by": "posting_date, account"
 	},
 	"Company": {
 		"columns": ["name"],
