diff --git a/accounts/page/accounts_browser/accounts_browser.js b/accounts/page/accounts_browser/accounts_browser.js
index e5a30b0..fb011ca 100644
--- a/accounts/page/accounts_browser/accounts_browser.js
+++ b/accounts/page/accounts_browser/accounts_browser.js
@@ -135,8 +135,7 @@
 	show_ledger: function() {
 		var me = this;
 		var node = me.selected_node();
-		wn.set_route('Report', 'GL Entry', 'General Ledger', 
-			this.ctype + '=' + node.data('label'));
+		wn.set_route("general-ledger", "account=" + node.data('label'));
 	},
 	new_node: function() {
 		if(this.ctype=='Account') {
diff --git a/accounts/page/general_ledger/general_ledger.js b/accounts/page/general_ledger/general_ledger.js
index 8e70619..ecc8626 100644
--- a/accounts/page/general_ledger/general_ledger.js
+++ b/accounts/page/general_ledger/general_ledger.js
@@ -45,6 +45,9 @@
 					open_btn: true,
 					doctype: "'Account'"
 				}},
+			{id: "against_accont", name: "Against Account", field: "against_account", 
+				width: 240, hidden: this.is_default("account")},
+
 			{id: "debit", name: "Debit", field: "debit", width: 100,
 				formatter: this.currency_formatter},
 			{id: "credit", name: "Credit", field: "credit", width: 100,
@@ -139,9 +142,11 @@
 		var data = wn.report_dump.data["GL Entry"];
 		var out = [];
 		
-		if(!this.account_by_name)
+		if(!this.account_by_name) {
 			this.account_by_name = this.make_name_map(wn.report_dump.data["Account"]);
-			
+			this.make_voucher_acconuts_map();
+		}
+		
 		var me = this;
 		
 		var from_date = dateutil.str_to_obj(this.from_date);
@@ -167,7 +172,7 @@
 				: true) && (me.voucher_no ? item.voucher_no==me.voucher_no : true)) {
 				var date = dateutil.str_to_obj(item.posting_date);
 				
-				if(date < from_date) {
+				if(date < from_date || item.is_opening=="Yes") {
 					opening.debit += item.debit;
 					opening.credit += item.credit;
 				} else if(date <= to_date) {
@@ -175,7 +180,12 @@
 					totals.credit += item.credit;
 				}
 
-				if(me.apply_filters(item)) {
+				if(me.account) {
+					item.against_account = me.voucher_accounts[item.voucher_type + ":"
+						+ item.voucher_no][(item.debit > 0 ? "credits" : "debits")].join(", ");					
+				}
+
+				if(me.apply_filters(item) && item.is_opening=="No") {
 					out.push(item);
 				}
 			}
@@ -189,6 +199,8 @@
 							
 		
 		if(!me.is_default("account")) {
+			me.appframe.set_title("General Ledger: " + me.account);
+			
 			if(me.account_by_name[me.account].debit_or_credit == "Debit") {
 				opening.debit -= opening.credit; opening.credit = 0;
 				closing.debit -= closing.credit; closing.credit = 0;
@@ -198,11 +210,34 @@
 			}
 			var out = [opening].concat(out).concat([totals, closing]);
 		} else {
+			me.appframe.set_title("General Ledger");
 			var out = out.concat([totals]);
 		}
 					
 		this.data = out;
 	},
+	
+	make_voucher_acconuts_map: function() {
+		this.voucher_accounts = {};
+		var data = wn.report_dump.data["GL Entry"];
+		for(var i=0, j=data.length; i<j; i++) {
+			var gl = data[i];
+			
+			if(!this.voucher_accounts[gl.voucher_type + ":" + gl.voucher_no])
+				this.voucher_accounts[gl.voucher_type + ":" + gl.voucher_no] = {
+					debits: [],
+					credits: []
+				}
+				
+			var va = this.voucher_accounts[gl.voucher_type + ":" + gl.voucher_no];
+			if(gl.debit > 0) {
+				va.debits.push(gl.account);
+			} else {
+				va.credits.push(gl.account);
+			}
+		}
+	},
+	
 	get_plot_data: function() {
 		var data = [];
 		var me = this;
diff --git a/public/js/toolbar.js b/public/js/toolbar.js
index 6b2ef9a..17f79dc 100644
--- a/public/js/toolbar.js
+++ b/public/js/toolbar.js
@@ -87,11 +87,9 @@
 
 erpnext.toolbar.set_new_comments = function(new_comments) {
 	var navbar_nc = $('.navbar-new-comments');
-	if(wn.container.page && wn.container.page.page_name=="messages") 
-		return;
-	if(new_comments) {
-		navbar_nc.text(new_comments);
+	if(cint(new_comments)) {
 		navbar_nc.addClass('navbar-new-comments-true')
+		navbar_nc.text(new_comments);
 	} else {
 		navbar_nc.removeClass('navbar-new-comments-true');
 		navbar_nc.text(0);
