diff --git a/support/doctype/support_ticket/support_ticket.css b/support/doctype/support_ticket/support_ticket.css
index 370d99c..dbfff3c 100644
--- a/support/doctype/support_ticket/support_ticket.css
+++ b/support/doctype/support_ticket/support_ticket.css
@@ -1,16 +1,8 @@
-.communication {
-	border: 1px solid #aaa; 
-	border-top: 0px;
-	padding: 7px; 
-	background-color: #f2f2f2
-}
 
-.communication:hover {
-	background-color: #fffff0;
-}
-
-.communication:first-child {
-	border-top: 1px solid #aaa; 
+.comm-content {
+	border-top: 1px solid #ddd; 
+	padding: 10px;
+	display: none;
 }
 
 .support-ticket-wrapper {
diff --git a/support/doctype/support_ticket/support_ticket.js b/support/doctype/support_ticket/support_ticket.js
index 689ddbf..5185b9a 100644
--- a/support/doctype/support_ticket/support_ticket.js
+++ b/support/doctype/support_ticket/support_ticket.js
@@ -14,14 +14,6 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-// threading structure
-// -------- orginal message --------
-// xoxoxoxo
-// -------- reply 1 --------
-// -------- reply 2 --------
-// xoxoxoxo
-// -------- new reply --------
-
 $.extend(cur_frm.cscript, {
 	onload: function(doc, dt, dn) {
 		//
@@ -56,9 +48,6 @@
 		refresh_field('status');
 	},
 	
-	//
-	// make thread listing
-	//
 	make_listing: function(doc) {
 		var wrapper = cur_frm.fields_dict['thread_html'].wrapper;
 		$(wrapper)
@@ -73,17 +62,12 @@
 			
 		comm_list.sort(function(a, b) { return new Date(a.modified) > new Date(b.modified) 
 			? -1 : 1 })
-				
-		$.each(comm_list, function(i, c) {
-			var comm = new erpnext.CommunicationView({
-				doc: c,
-				support_ticket: doc,
-				parent: wrapper
-			});
-			if(i==0) {
-				comm.toggle();
-			}
-		});
+		
+		new erpnext.CommunicationView({
+			list: comm_list,
+			parent: wrapper
+		})
+
 	},
 	
 	send: function(doc, dt, dn) {
@@ -131,36 +115,47 @@
 
 erpnext.CommunicationView = Class.extend({
 	init: function(opts) {
+		this.comm_list = [];
 		$.extend(this, opts);
-		this.prepare();
 		this.make();
-		this.toggle();
-	},
-	prepare: function() {
-		//this.doc.when = comment_when(this.doc.modified);
-		this.doc.when = this.doc.modified;
-		if(this.doc.content.indexOf("<br>")== -1 && this.doc.content.indexOf("<p>")== -1) {
-			this.doc.content = this.doc.content.replace(/\n/g, "<br>");
-		}
-		this.doc.content = this.doc.content.split("=== In response to ===")[0];
-		this.doc.content = this.doc.content.split("-----Original Message-----")[0];
 	},
 	make: function() {
 		var me = this;
-		this.body = $(repl('<div class="communication" title="Click to Expand / Collapse">\
+		this.make_body();
+		$.each(this.list, function(i, d) {
+			me.prepare(d);
+			me.make_line(d);
+		});
+		// show first
+		this.comm_list[0].find('.comm-content').toggle(true);
+	},
+	make_body: function() {
+		this.body = $("<table class='table table-bordered table-hover table-striped'>").appendTo(this.parent);
+	},
+	prepare: function(doc) {
+		//doc.when = comment_when(this.doc.modified);
+		doc.when = doc.modified;
+		if(doc.content.indexOf("<br>")== -1 && doc.content.indexOf("<p>")== -1) {
+			doc.content = doc.content.replace(/\n/g, "<br>");
+		}
+		doc.email_address = doc.email_address.replace(/</, "&lt;").replace(/>/, "&gt;");
+		doc.content = doc.content.split("=== In response to ===")[0];
+		doc.content = doc.content.split("-----Original Message-----")[0];
+	},
+	make_line: function(doc) {
+		var me = this;
+		var comm = $(repl('<tr><td title="Click to Expand / Collapse">\
 				<p><b>%(email_address)s on %(when)s</b></p>\
-				<div class="comm-content" style="border-top: 1px solid #ddd; padding: 10px"></div>\
-			</div>', this.doc))
-			.appendTo(this.parent)
+				<div class="comm-content"></div>\
+			</td></tr>', doc))
+			.appendTo(this.body)
 			.css({"cursor":"pointer"})
 			.click(function() {
 				$(this).find(".comm-content").toggle();
 			});
-			
-		this.body.find(".comm-content").html(this.doc.content);
-	},
-	toggle: function() {
-		this.body.find(".comm-content").toggle();
+		
+		this.comm_list.push(comm);
+		comm.find(".comm-content").html(doc.content);
 	}
 })
 
