diff --git a/erpnext/templates/includes/product_in_grid.html b/erpnext/templates/includes/product_in_grid.html
index 4c4be71..27cc321 100644
--- a/erpnext/templates/includes/product_in_grid.html
+++ b/erpnext/templates/includes/product_in_grid.html
@@ -1,14 +1,8 @@
-<div class="col-sm-3">
-	<div style="height: 120px; overflow: hidden;">
-		<a href="{{ route or page_name }}">
-		{%- if website_image -%}
-		<img class="product-image" style="width: 80%; margin: auto;" src="{{ website_image }}">
-		{%- else -%}
-		{% include 'templates/includes/product_missing_image.html' %}
-		{%- endif -%}
-		</a>
+<a class="product-link" href="{{ route or page_name }}">
+	<div class="col-sm-2 product-image-wrapper">
+		<div class="product-image {% if not website_image -%}missing-image{%- endif %}"
+			{% if website_image -%} style="background-image: url({{ website_image }});" {%- endif %}>
+		</div>
+		<div class="product-text small">{{ item_name }}</div>
 	</div>
-	<div style="height: 100px; overflow: hidden; font-size: 80%;">
-		<div style="margin-bottom: 2px;"><a href="{{ route or page_name }}">{{ item_name }}</a></div>
-	</div>
-</div>
+</a>
diff --git a/erpnext/templates/includes/sale.html b/erpnext/templates/includes/sale.html
deleted file mode 100644
index 6323995..0000000
--- a/erpnext/templates/includes/sale.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<div class="sale-content">
-    <ul class="breadcrumb">
-    	<li><a href="index">Home</a></li>
-    	<li><a href="{{ parent_link }}">{{ parent_title }}</a></li>
-    	<li class="active"><i class="icon-file icon-fixed-width"></i> {{ doc.name }}</li>
-    </ul>
-	<h3><i class="icon-file icon-fixed-width"></i> {{ doc.name }}</h3>
-	{% if doc.name == _("Not Allowed") -%}
-		<script>ask_to_login();</script>
-	{% else %}
-	<hr>
-	<div>
-	<div class="row">
-		<div class="col-xs-6">
-			{% if doc.status -%}{{ doc.status }}{%- endif %}
-		</div>
-		<div class="col-xs-6">
-			<span class="pull-right">{{ frappe.utils.formatdate(doc.posting_date or doc.transaction_date) }}</span>
-		</div>
-	</div>
-	<br>
-	<div class="row">
-		<div class="col-md-12">
-		<table class="table table-bordered">
-			<tbody>
-				<tr>
-					<th>Sr</th>
-					<th>Item Name</th>
-					<th>Description</th>
-					<th>Qty</th>
-					<th>UoM</th>
-					<th>Basic Rate</th>
-					<th>Amount</th>
-				</tr>
-				{%- for row in doc.get({"doctype": doc.doctype + " Item"}) %}
-				<tr>
-					<td style="width: 3%;">{{ row.idx }}</td>
-					<td style="width: 20%;">{{ row.item_name }}</td>
-					<td style="width: 37%;">{{ row.description }}</td>
-					<td style="width: 5%; text-align: right;">{{ row.qty }}</td>
-					<td style="width: 5%;">{{ row.stock_uom }}</td>
-					<td style="width: 15%; text-align: right;">{{ frappe.utils.fmt_money(row.rate, currency=doc.currency) }}</td>
-					<td style="width: 15%; text-align: right;">{{ frappe.utils.fmt_money(row.amount, currency=doc.currency) }}</td>
-				</tr>
-				{% endfor -%}
-			</tbody>
-		</table>
-		</div>
-	</div>
-	<div class="row">
-		<div class="col-md-6"></div>
-		<div class="col-md-6">
-		<table cellspacing=0 width=100%>
-		<tbody>
-			<tr>
-				<td>Net Total</td>
-				<td width=40% style="text-align: right;">{{
-					frappe.utils.fmt_money(doc.base_net_total/doc.conversion_rate, currency=doc.currency)
-				}}</td>
-			</tr>
-			{%- for charge in doc.get({"doctype":"Sales Taxes and Charges"}) -%}
-			{%- if not charge.included_in_print_rate -%}
-			<tr>
-				<td>{{ charge.description }}</td>
-				<td style="text-align: right;">{{ frappe.utils.fmt_money(charge.tax_amount / doc.conversion_rate, currency=doc.currency) }}</td>
-			</tr>
-			{%- endif -%}
-			{%- endfor -%}
-			<tr>
-				<td>Grand Total</td>
-				<td style="text-align: right;">{{ frappe.utils.fmt_money(doc.grand_total, currency=doc.currency) }}</td>
-			</tr>
-			<tr style='font-weight: bold'>
-				<td>Rounded Total</td>
-				<td style="text-align: right;">{{ frappe.utils.fmt_money(doc.rounded_total, currency=doc.currency) }}</td>
-			</tr>
-		</tbody>
-		</table>
-		</div>
-	</div>
-	</div>
-	{%- endif %}
-</div>
-
-<!-- no-sidebar -->
diff --git a/erpnext/templates/includes/sales_transactions.html b/erpnext/templates/includes/sales_transactions.html
deleted file mode 100644
index 465f5ed..0000000
--- a/erpnext/templates/includes/sales_transactions.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<script>
-$(document).ready(function() {
-	global_number_format = "{{ global_number_format }}";
-	currency = "{{ currency }}";
-	frappe.currency_symbols = {{ currency_symbols }};
-});
-</script>
-
-{% include "templates/includes/transactions.html" %}
-
-<script>
-	var render = function(doc) {
-		doc.grand_total = format_currency(doc.grand_total, doc.currency);
-		if(!doc.status) doc.status = "";
-
-		$(repl('<a href="{{ page }}?name=%(name)s" class="list-group-item">\
-				<div class="row">\
-					<div class="col-md-6">\
-						<div class="row col-md-12">%(name)s</div>\
-						<div class="row col-md-12 text-muted">%(items)s</div>\
-						<div class="row col-md-12">%(status)s</div>\
-					</div>\
-					<div class="col-md-3 text-right">%(grand_total)s</div>\
-					<div class="col-md-3 text-right text-muted">%(creation)s</div>\
-				</div>\
-			</a>', doc)).appendTo($list);
-	};
-</script>
-
-<!-- no-sidebar -->
diff --git a/erpnext/templates/includes/transaction_row.html b/erpnext/templates/includes/transaction_row.html
new file mode 100644
index 0000000..ca03bd3
--- /dev/null
+++ b/erpnext/templates/includes/transaction_row.html
@@ -0,0 +1,30 @@
+{% set doc = frappe.get_doc(doc) %}
+<a class="website-list-row" href="/{{ pathname }}/{{ doc.name }}" no-pjax>
+<div class="row">
+	<div class="col-sm-6 col-xs-7">
+		<div class="row">
+			<div class="col-sm-9">{{ doc.customer or doc.supplier }}</div>
+			<div class="col-sm-3">
+				{%- if doc.status_percent > 0 -%}
+					{%- if doc.status_percent % 100 == 0 -%}
+					<span class="indicator green">{{ doc.status_display }}</span>
+					{%- else -%}
+					<span class="indicator orange">{{ doc.status_display }}</span>
+					{%- endif -%}
+				{%- elif doc.status -%}
+					<span class="indicator">{{ doc.status }}</span>
+				{%- endif -%}
+			</div>
+		</div>
+	</div>
+	<div class="col-sm-2 col-xs-5 text-right">
+		{{ doc.get_formatted("grand_total") }}
+	</div>
+	<div class="col-sm-2 text-muted text-right">
+		{{ doc.name }}
+	</div>
+	<div class="col-sm-2 small text-muted text-right" title="{{ frappe.utils.format_datetime(doc.creation, "medium") }}">
+		{{ frappe.utils.pretty_date(doc.creation) }}</div>
+</div>
+</a>
+
diff --git a/erpnext/templates/includes/transactions.html b/erpnext/templates/includes/transactions.html
deleted file mode 100644
index fb570cd..0000000
--- a/erpnext/templates/includes/transactions.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<div class="transactions-content">
-    <ul class="breadcrumb">
-    	<li><a href="index">Home</a></li>
-    	<li class="active"><i class="{{ icon }} icon-fixed-width"></i> {{ title }}</li>
-    </ul>
-	<p id="msgprint-alert" class="alert alert-danger"
-		style="display: none;">&nbsp;</p>
-	<div class="list-group transaction-list">
-		<div class="text-muted progress">{{ _("Loading") }}...</div>
-	</div>
-	<div class="text-center">
-		<button class="btn btn-default btn-show-more hide">More</button>
-	</div>
-</div>
-<script>
-var get_transactions = function(btn) {
-	frappe.call({
-		method: "{{ method }}",
-		args: { start: start },
-		btn: btn,
-		callback: function(r) {
-			$list.find(".progress").remove();
-			$show_more.toggleClass("hide", !(r.message && r.message.length===20));
-			if(!(r.message && r.message.length)) {
-				if(!$list.html().trim()) {
-					$list.html("<div class='text-muted'>\
-						{{ empty_list_message }}</div>");
-				}
-				return;
-			}
-
-			start += r.message.length;
-
-			$.each(r.message, function(i, doc) {
-				render(doc);
-			});
-		}
-	})
-};
-
-$(document).ready(function() {
-	window.start = 0;
-	window.$list = $(".transaction-list");
-	window.$list.find(".list-group-item").remove();
-	window.$show_more = $(".btn-show-more").on("click", function() { get_transactions(this); })
-
-	get_transactions();
-});
-</script>
-
-<!-- no-sidebar -->
