diff --git a/website/templates/pages/account.html b/website/templates/pages/account.html
index 9724651..8e8f4b4 100644
--- a/website/templates/pages/account.html
+++ b/website/templates/pages/account.html
@@ -4,62 +4,15 @@
 
 {% block content %}
 <div class="span12">
-	<p class="pull-right"><a href="profile">Change my name, password</a></p>
-	<h3>My Orders</h3>
-	<div id="order-list">
-		<div class="progress progress-striped active">
-			<div class="bar" style="width: 100%;"></div>
-		</div>
-	</div>
-	<hr>
-	<h3>My Tickets</h3>
-	<div id="ticket-list">
-		<div class="progress progress-striped active">
-			<div class="bar" style="width: 100%;"></div>
-		</div>
-	</div>
+    <ul class="breadcrumb">
+    	<li><a href="index">Home</a> <span class="divider">/</span></li>
+    	<li class="active">My Account</li>
+    </ul>
+	<h3>My Account</h3>
+	<p><a href="profile"><i class="icon-user"></i> Change my name, password</a></p>
+	<p><a href="orders"><i class="icon-list"></i> My Orders</a></p>
+	<p><a href="tickets"><i class="icon-tags"></i> My Tickets</a></p>
+	<p><a href="server.py?cmd=web_logout"><i class="icon-signout"></i> Logout</a></p>
+	</ul>
 </div>
-<script>
-$(document).ready(function() {
-	var order_start = 0,
-		ticket_start = 0;
-		
-	wn.call({
-		method: "website.helpers.account.get_orders",
-		args: {
-			start: order_start
-		},
-		callback: function(r) {
-			$("#order-list .progress").remove();
-			var $list = $("#order-list");
-			
-			if(!(r.message && r.message.length)) {
-				$list.html("<div class='alert'>No Orders Yet</div>");
-				return;
-			}
-			
-			$.each(r.message, function(i, order) {
-				
-				// parent
-				var $order = $(repl('<div class="row">\
-					<div class="span4"><a href="order?id=%(name)s">%(name)s</a></span3>\
-				</div>', order)).appendTo($list);
-				
-				// items
-				$.each(order.items || [], function(i, item) {
-					var $item = $(repl('<div class="span8">\
-						<div class="row">\
-							<div class="span4">%(item_name)s</div>\
-							<div class="span2">%(export_rate)s</div>\
-							<div class="span2">%(status)s</div>\
-						</div>\
-					</div>', item)).appendTo($order);
-				});
-				
-				$("<hr>").appendTo($order);
-			});
-		}
-	})
-})
-</script>
 {% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/order.html b/website/templates/pages/order.html
new file mode 100644
index 0000000..b8d9695
--- /dev/null
+++ b/website/templates/pages/order.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0">
+	<title>Print Format</title>
+	<meta name="generator" content="wnframework">	
+</head>
+<body>
+	{{ webnotes.form_dict }}
+</body>
+</html>
\ No newline at end of file
diff --git a/website/templates/pages/orders.html b/website/templates/pages/orders.html
new file mode 100644
index 0000000..1a1cc37
--- /dev/null
+++ b/website/templates/pages/orders.html
@@ -0,0 +1,62 @@
+{% extends "html/page.html" %}
+
+{% set title="My Orders" %}
+
+{% block content %}
+<div class="span12">
+    <ul class="breadcrumb">
+    	<li><a href="index">Home</a> <span class="divider">/</span></li>
+    	<li><a href="account">My Account</a> <span class="divider">/</span></li>
+    	<li class="active">My Orders</li>
+    </ul>
+	<h3><i class="icon-list"></i> My Orders</h3>
+	<hr>
+	<div id="order-list" style="font-size: 13px;">
+		<div class="progress progress-striped active">
+			<div class="bar" style="width: 100%;"></div>
+		</div>
+	</div>
+</div>
+<script>
+$(document).ready(function() {
+	var order_start = 0;
+		
+	wn.call({
+		method: "selling.doctype.sales_order.sales_order.get_orders",
+		args: {
+			start: order_start
+		},
+		callback: function(r) {
+			$("#order-list .progress").remove();
+			var $list = $("#order-list");
+			
+			if(!(r.message && r.message.length)) {
+				$list.html("<div class='alert'>No Orders Yet</div>");
+				return;
+			}
+			
+			$.each(r.message, function(i, order) {
+				
+				// parent
+				var $order = $(repl('<div class="row">\
+					<div class="span4"><a href="order?id=%(name)s">%(name)s</a></span3>\
+				</div>', order)).appendTo($list);
+				
+				// items
+				$.each(order.items || [], function(i, item) {
+					var $item = $(repl('<div class="span8">\
+						<div class="row">\
+							<div class="span4">%(item_name)s</div>\
+							<div class="span2">%(export_rate)s</div>\
+							<div class="span2">%(status)s</div>\
+						</div>\
+					</div>', item)).appendTo($order);
+				});
+				
+				$("<hr>").appendTo($list);
+			});
+		}
+	})
+})
+</script>
+{% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/print.html b/website/templates/pages/print.html
index a8decdf..fc7174d 100644
--- a/website/templates/pages/print.html
+++ b/website/templates/pages/print.html
@@ -4,7 +4,10 @@
 	<meta charset="utf-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<title>Print Format</title>
-	<meta name="generator" content="wnframework">	
+	<meta name="generator" content="wnframework">
+	<style>
+	{{ css }}
+	</style>
 </head>
 <body>
 	{{ body }}
diff --git a/website/templates/pages/profile.html b/website/templates/pages/profile.html
index d0d4059..1b9350c 100644
--- a/website/templates/pages/profile.html
+++ b/website/templates/pages/profile.html
@@ -3,8 +3,13 @@
 {% set title="My Profile" %}
 
 {% block content %}
-<div class="span9">
-	<h2>My Profile</h2>
+<div class="span12">
+    <ul class="breadcrumb">
+    	<li><a href="index">Home</a> <span class="divider">/</span></li>
+    	<li><a href="account">My Account</a> <span class="divider">/</span></li>
+    	<li class="active">My Profile</li>
+    </ul>
+	<h2><i class="icon-user"></i> My Profile</h2>
 	<hr>
 	<div class="alert" id="message" style="display: none;"></div>
 	<form class="form-horizontal">
diff --git a/website/templates/pages/tickets.html b/website/templates/pages/tickets.html
new file mode 100644
index 0000000..822cd04
--- /dev/null
+++ b/website/templates/pages/tickets.html
@@ -0,0 +1,53 @@
+{% extends "html/page.html" %}
+
+{% set title="My Orders" %}
+
+{% block content %}
+<div class="span12">
+    <ul class="breadcrumb">
+    	<li><a href="index">Home</a> <span class="divider">/</span></li>
+    	<li><a href="account">My Account</a> <span class="divider">/</span></li>
+    	<li class="active">My Tickets</li>
+    </ul>
+	<h3><i class="icon-tags"></i> My Tickets</h3>
+	<hr>
+	<div id="ticket-list" style="font-size: 13px;">
+		<div class="progress progress-striped active">
+			<div class="bar" style="width: 100%;"></div>
+		</div>
+	</div>
+</div>
+<script>
+$(document).ready(function() {
+	var order_start = 0;
+		
+	wn.call({
+		method: "support.doctype.support_ticket.support_ticket.get_tickets",
+		args: {
+			start: order_start
+		},
+		callback: function(r) {
+			$("#ticket-list .progress").remove();
+			var $list = $("#ticket-list");
+			
+			if(!(r.message && r.message.length)) {
+				$list.html("<div class='alert'>No Tickets Yet</div>");
+				return;
+			}
+			
+			$.each(r.message, function(i, ticket) {
+				
+				// parent
+				var $ticket = $(repl('<div class="row">\
+					<div class="span2"><span class="label">%(status)s</span></div>\
+					<div class="span3"><a href="ticket?id=%(name)s">%(name)s</a></div>\
+					<div class="span7">%(subject)s</div>\
+				</div>', ticket)).appendTo($list);
+				
+				$("<hr>").appendTo($list);
+			});
+		}
+	})
+})
+</script>
+{% endblock %}
\ No newline at end of file
