diff --git a/erpnext/templates/includes/projects.css b/erpnext/templates/includes/projects.css
index e080880..d3f2e17 100644
--- a/erpnext/templates/includes/projects.css
+++ b/erpnext/templates/includes/projects.css
@@ -31,19 +31,19 @@
 
 .timeline-centered {
     position: relative;
-    margin-bottom: 30px;
+    margin-bottom: 10px;
 }
 
 .timeline-centered:before {
     content: '';
     position: absolute;
     display: block;
-    width: 4px;
+    width: 3px;
     background: #f5f5f6;
     /*left: 50%;*/
-    top: 20px;
-    bottom: 20px;
-    margin-left: 30px;
+    top: 0px;
+    bottom: 0px;
+    margin-left: 10px;
 }
 
 .timeline-centered .timeline-entry {
@@ -51,37 +51,25 @@
     /*width: 50%;
 float: right;*/
     margin-top: 5px;
-    margin-left: 30px;
-    margin-bottom: 10px;
+    margin-left: 10px;
+    margin-bottom: 5px;
     clear: both;
 }
 
 
-
-.timeline-centered .timeline-entry.left-aligned .timeline-entry-inner .timeline-label:after {
-    left: auto;
-    right: 0;
-    margin-left: 0;
-    margin-right: -9px;
-    -moz-transform: rotate(180deg);
-    -o-transform: rotate(180deg);
-    -webkit-transform: rotate(180deg);
-    -ms-transform: rotate(180deg);
-    transform: rotate(180deg);
-}
-
 .timeline-centered .timeline-entry .timeline-entry-inner {
     position: relative;
-    margin-left: -20px;
+    margin-left: -3px;
 }
 
 
 .timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon {
+	margin-top:10px;
     background: #fff;
     color: #737881;
     display: block;
-    width: 40px;
-    height: 40px;
+    width: 10px;
+    height: 10px;
     -webkit-background-clip: padding-box;
     -moz-background-clip: padding;
     background-clip: padding-box;
@@ -89,17 +77,41 @@
     -moz-border-radius: 20px;
     border-radius: 20px;
     text-align: center;
-    -moz-box-shadow: 0 0 0 5px #f5f5f6;
-    -webkit-box-shadow: 0 0 0 5px #f5f5f6;
-    box-shadow: 0 0 0 5px #f5f5f6;
-    line-height: 40px;
-    font-size: 15px;
+    -moz-box-shadow: 0 0 0 2px #f5f5f6;
+    -webkit-box-shadow: 0 0 0 2px #f5f5f6;
+    box-shadow: 0 0 0 2px #f5f5f6;
+    line-height: 30px;
     float: left;
 }
 
 
+.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-primary {
+    background-color: #303641;
+    color: #fff;
+}
+
+.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-secondary {
+    background-color: #ee4749;
+    color: #fff;
+}
+
+.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-success {
+    background-color: #98d85b;
+    color: #fff;
+}
+
+.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-info {
+    background-color: #21a9e1;
+    color: #fff;
+}
+
 .timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-warning {
-    background-color: #fad839;
+    background-color: #ffa00a;
+    color: #fff;
+}
+
+.timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon.bg-danger {
+    background-color: #ff5858;
     color: #fff;
 }
 
@@ -108,7 +120,7 @@
     position: relative;
     background: #f5f5f6;
     padding: 1em;
-    margin-left: 60px;
+    margin-left: 40px;
     -webkit-background-clip: padding-box;
     -moz-background-clip: padding;
     background-clip: padding-box;
diff --git a/erpnext/templates/includes/projects/project_issues.html b/erpnext/templates/includes/projects/project_issues.html
index 14ce70f..34f6633 100644
--- a/erpnext/templates/includes/projects/project_issues.html
+++ b/erpnext/templates/includes/projects/project_issues.html
@@ -3,7 +3,7 @@
 			<div class='row project-item'>
 				<div class='col-xs-9'>
 					<a class="no-decoration" href="/issues-view?name={{ issue.name}}">
-						<span class="indicator {{ "green" if issue.status=="Open" else "darkgrey" }}">
+						<span class="indicator {{ "red" if issue.status=="Open" else "green" }}">
 							{% if issue.status == "Closed" %} 
 							{{ issue.subject }} resolved {{ frappe.utils.pretty_date(issue.resolution_date) }}
 							{% else %}
diff --git a/erpnext/templates/includes/projects/project_tasks.html b/erpnext/templates/includes/projects/project_tasks.html
index 84de0e8..b2be27b 100644
--- a/erpnext/templates/includes/projects/project_tasks.html
+++ b/erpnext/templates/includes/projects/project_tasks.html
@@ -3,7 +3,7 @@
 		<div class='row project-item'>
 			<div class='col-xs-9'>
 				<a class="no-decoration" href="/tasks-view?name={{ task.name}}">
-					<span class="indicator {{ "green" if task.status=="Open" else "darkgrey" }}">
+					<span class="indicator {{ "orange" if task.status=="Open" else "green" }}">
 						{% if task.status == "Closed" %}
 						{{ task.subject }} completed on {{ task.closing_date }}
 						{% else %}
diff --git a/erpnext/templates/includes/projects/timeline.html b/erpnext/templates/includes/projects/timeline.html
index 77b0c76..605404b 100644
--- a/erpnext/templates/includes/projects/timeline.html
+++ b/erpnext/templates/includes/projects/timeline.html
@@ -1,44 +1,17 @@
 {% for timeline in doc.timelines %}
-<div class='timeline'>
-	<div class="row project-item">
-		<div class="col-xs-12">
-			<span class="avatar avatar-small" title="{{ timeline.modified_by }}"> <img src="{{ timeline.user_image }}"></span>
-		<span class='indicator'>
-		{{timeline.reference_name}} {{timeline.subject }}
-		</span>
-		<span class='indicator pull-right'>
-		{{ frappe.utils.pretty_date(timeline.creation) }}
-		</span>
+	<article class="timeline-entry">
+		<div class="timeline-entry-inner">
+			<div class="timeline-icon {{ "bg-danger" if ((timeline.reference_name).startswith('ISS') and (timeline.subject).startswith('Open')) else "bg-warning" if ((timeline.reference_name).startswith('TASK') and (timeline.subject).startswith('Open')) else "bg-success" if (timeline.subject).startswith('Closed') else "bg-info"}}">		
+			</div>
+			<div class="timeline-label">
+				<span class="avatar avatar-small" title="{{ timeline.modified_by }}"> <img src="{{ timeline.user_image }}"></span>
+				<span class='indicator'>
+				{{timeline.reference_name}} {{timeline.subject }}
+				</span>
+				<span class='indicator pull-right'>
+				{{ frappe.utils.pretty_date(timeline.creation) }}
+				</span>
+			</div>
 		</div>
-	</div>
-</div>
-{% endfor %}
-<!-- <div class="timeline-centered">
-{% for timeline in doc.timelines %}
-
-
-
-                        <article class="timeline-entry">
-
-                            <div class="timeline-entry-inner">
-
-                                <div class="timeline-icon bg-warning">
-                                    <i class="entypo-camera"></i>
-                                </div>
-
-                                <div class="timeline-label">
-						   			<span class="avatar avatar-small" title="{{ timeline.modified_by }}"> <img src="{{ timeline.user_image }}"></span>
-						   		<span class='indicator'>
-						   		{{timeline.reference_name}} {{timeline.subject }}
-						   		</span>
-						   		<span class='indicator pull-right'>
-						   		{{ frappe.utils.pretty_date(timeline.creation) }}
-						   		</span>
-                                </div>
-                            </div>
-
-                        </article>
-
-
-{% endfor %}
-</div> -->
\ No newline at end of file
+	</article>
+{% endfor %}
\ No newline at end of file
diff --git a/erpnext/templates/pages/projects.html b/erpnext/templates/pages/projects.html
index bbc5c6e..c71cf2e 100644
--- a/erpnext/templates/pages/projects.html
+++ b/erpnext/templates/pages/projects.html
@@ -2,6 +2,17 @@
 
 {% block title %}{{ doc.project_name }}{% endblock %}
 
+{% block breadcrumbs %}
+   <div class="page-breadcrumbs" data-html-block="breadcrumbs">	                    
+   	<ul class="breadcrumb">
+   		<li>
+   			<span class="icon icon-angle-left"></span>
+   			<a href="/project">Projects</a>
+   		</li>	
+   	</ul>
+   </div>
+{% endblock %}
+
 {% block header %}
 <h1 class= "title">
 {{ doc.project_name }}
@@ -24,7 +35,7 @@
 	Filtered by "{{ frappe.form_dict.q }}" Clear</a></p>
 {% else %}
 	<h3>{{ _("Activity Feed") }}</h3>
-	<div class='project-timeline'>
+	<div class='project-timelines timeline-centered'>
 	{% include "erpnext/templates/includes/projects/timeline.html" %}
 	</div>
 		{% if doc.timelines|length > 9 %}
@@ -40,7 +51,7 @@
 			<h3>{{ _("Tasks") }}</h3>
 		</div>
 		<div class="btn-group btn-toggle"> 	
-			<button class="btn btn-xs btn-open-tasks btn-primary active" style="float:left;">Open</button>
+			<button class="btn btn-xs btn-open-tasks" style="float:left;">Open</button>
 			<button class="btn btn-xs btn-closed-tasks">Close</button>	
 		</div>
 		<div class='project-tasks'>
diff --git a/erpnext/templates/pages/projects.js b/erpnext/templates/pages/projects.js
index 87a1ab7..b1468eb 100644
--- a/erpnext/templates/pages/projects.js
+++ b/erpnext/templates/pages/projects.js
@@ -1,172 +1,110 @@
 frappe.ready(function() {
-	var reload_tasks = function(taskstatus) {
-		$.ajax({
-			method: "GET",
-			url: "/",
-			dataType: "json",
-			data: {
-				cmd: "erpnext.templates.pages.projects.get_tasks_html",
-				project: '{{ doc.name }}',
-				taskstatus: taskstatus,
-			},
-			dataType: "json",
-			success: function(data) {
-				$('.project-tasks').html(data.message);
-				
-				$('.project-tasks-section .btn-group .btn-primary').removeClass('btn-primary');
-				$('.btn-'+ taskstatus +'-tasks').addClass( "btn-primary" );
-			}
-		});	
-		
-	}
+	$( window ).load(function() {
+		$(".btn-open-tasks").click();
+		$(".btn-open-issues").click();
+	});
 	
 	$('.btn-closed-tasks').click(function() {
-		reload_tasks('closed');
+		reload_items('closed','tasks');
 	});	
-	$('.btn-open-tasks').click(function() {
-		reload_tasks('open');
-	});
 	
-	var reload_issues = function(issuestatus) {
+	$('.btn-open-tasks').click(function() {
+		reload_items('open','tasks');
+	});
+
+	$('.btn-closed-issues').click(function() {
+		reload_items('closed','issues');
+	});	
+	
+	$('.btn-open-issues').click(function() {
+		reload_items('open','issues');
+	});
+
+	var start = 10;
+	$(".more-tasks").click(function() {
+		more_items('tasks', true);
+	});	
+	
+	$(".more-issues").click(function() {
+		more_items('issues', true);
+	});	
+	
+	$(".more-timelogs").click(function() {
+		more_items('timelogs', false);
+	});	
+	
+	$(".more-timelines").click(function() {
+		more_items('timelines', false);
+	});	
+	
+	$( ".project-tasks" ).on('click', '.task-x', function() {
+		var item_name = $(this).attr('id');
+		close_item('task', item_name);
+	});	
+	
+	$( ".project-issues" ).on('click', '.issue-x', function() {
+		var item_name = $(this).attr('id');
+		close_item('issue', item_name);
+	});	
+		
+	var reload_items = function(item_status, item) {
 		$.ajax({
 			method: "GET",
 			url: "/",
 			dataType: "json",
 			data: {
-				cmd: "erpnext.templates.pages.projects.get_issues_html",
+				cmd: "erpnext.templates.pages.projects.get_"+ item +"_html",
 				project: '{{ doc.name }}',
-				issuestatus: issuestatus,
+				item_status: item_status,
 			},
 			dataType: "json",
 			success: function(data) {
-				$('.project-issues').html(data.message);
+				$('.project-'+ item).html(data.message);
 				
-				$('.project-issues-section .btn-group .btn-primary').removeClass('btn-primary');
-				$('.btn-'+ issuestatus +'-issues').addClass( "btn-primary" );
+				$('.project-'+ item +'-section .btn-group .btn-primary').removeClass('btn-primary');
+				$('.btn-'+ item_status +'-'+ item).addClass( "btn-primary" );
+				$(".more-"+ item).toggle(true);
 			}
 		});	
 		
 	}
 	
-	$('.btn-closed-issues').click(function() {
-		reload_issues('closed');
-	});	
-	$('.btn-open-issues').click(function() {
-		reload_issues('open');
-	});
-
-	var taskstart = 5;
-	$(".more-tasks").click(function() {
-		var task_status = $('.project-tasks-section .btn-group .btn-primary').hasClass('btn-closed-tasks') 
-			? 'closed' : 'open';
-
+	var more_items = function(item, item_status){
+		if(item_status)
+		{
+			var item_status = $('.project-'+ item +'-section .btn-group .btn-primary').hasClass('btn-closed-'+ item) 
+				? 'closed' : 'open';
+		}
 		$.ajax({
 			method: "GET",
 			url: "/",
 			dataType: "json",
 			data: {
-				cmd: "erpnext.templates.pages.projects.get_tasks_html",
+				cmd: "erpnext.templates.pages.projects.get_"+ item +"_html",
 				project: '{{ doc.name }}',
-				start: taskstart,
-				taskstatus: task_status,
+				start: start,
+				item_status: item_status,
 			},
 			dataType: "json",
 			success: function(data) {
-				$(data.message).appendTo('.project-tasks');
+				$(data.message).appendTo('.project-'+ item);
 				if(typeof data.message == 'undefined') {	
-					$(".more-tasks").toggle(false);	
+					$(".more-"+ item).toggle(false);	
 				}
-			taskstart = taskstart+5;
+			start = start+10;
 			}
-		});	
-			
-	});
+		});				
+	}
 	
-	var issuestart = 2;
-	$(".more-issues").click(function() {
-		var issue_status = $('.project-issues-section .btn-group .btn-primary').hasClass('btn-closed-issues') 
-			? 'closed' : 'open';
-		
-		$.ajax({
-			method: "GET",
-			url: "/",
-			dataType: "json",
-			data: {
-				cmd: "erpnext.templates.pages.projects.get_issues_html",
-				project: '{{ doc.name }}',
-				start: issuestart,
-				issuestatus: issue_status,
-			},
-			dataType: "json",
-			success: function(data) {
-				$(data.message).appendTo('.project-issues');
-				if(typeof data.message == 'undefined')
-				{	
-					$(".more-issues").toggle(false);
-				}
-				issuestart = issuestart+5;
-			}
-		});	
-	});
-	
-	var timelogstart = 2;
-	$(".more-timelogs").click(function() {
-		$.ajax({
-			method: "GET",
-			url: "/",
-			dataType: "json",
-			data: {
-				cmd: "erpnext.templates.pages.projects.get_timelogs_html",
-				project: '{{ doc.name }}',
-				start: timelogstart,
-			},
-			dataType: "json",
-			success: function(data) {
-				$(data.message).appendTo('.project-timelogs');
-				if(typeof data.message == 'undefined')
-				{	
-					$(".more-timelogs").toggle(false);	
-				}
-				timelogstart = timelogstart+2;
-				
-			}
-		});	
-			
-	});
-	
-	var timelinestart = 10;
-	$(".more-timelines").click(function() {
-		$.ajax({
-			method: "GET",
-			url: "/",
-			dataType: "json",
-			data: {
-				cmd: "erpnext.templates.pages.projects.get_timeline_html",
-				project: '{{ doc.name }}',
-				start: timelinestart,
-				
-			},
-			dataType: "json",
-			success: function(data) {
-				$(data.message).appendTo('.project-timeline');
-				if(typeof data.message == 'undefined')
-				{	
-					$(".more-timelines").toggle(false);
-				}
-				timelinestart = timelinestart+10;
-			}
-		});	
-	});	
-		
-	$( ".project-tasks" ).on('click', '.task-x', function() {
+	var close_item = function(item, item_name){
 		var args = {
 			project: '{{ doc.name }}',
-			task_name: $(this).attr('id'),
-		}
+			item_name: item_name,
+		}		
 		frappe.call({
 			btn: this,
 			type: "POST",
-			method: "erpnext.templates.pages.projects.set_task_status",
+			method: "erpnext.templates.pages.projects.set_"+ item +"_status",
 			args: args,
 			callback: function(r) {
 				if(r.exc) {
@@ -178,27 +116,5 @@
 			}
 		})
 		return false;
-	});	
-		
-	$( ".project-issues" ).on('click', '.issue-x', function() {
-		var args = {
-			project: '{{ doc.name }}',
-			issue_name: $(this).attr('id'),
-		}
-		frappe.call({
-			btn: this,
-			type: "POST",
-			method: "erpnext.templates.pages.projects.set_issue_status",
-			args: args,
-			callback: function(r) {
-				if(r.exc) {
-					if(r._server_messages)
-						frappe.msgprint(r._server_messages);
-				} else {
-					$(this).remove();
-				}
-			}
-		})
-		return false;
-	});		
+	}
 });
diff --git a/erpnext/templates/pages/projects.py b/erpnext/templates/pages/projects.py
index 7d0d200..758113f 100644
--- a/erpnext/templates/pages/projects.py
+++ b/erpnext/templates/pages/projects.py
@@ -32,39 +32,43 @@
 def get_timeline(project, start=10):
 	issue_names = '({0})'.format(", ".join(["'{0}'".format(i.name) for i in get_issues(project)]))
 	
-	print issue_names
 	
-	timelines = frappe.db.sql("""select sender_full_name, 
-		subject, communication_date, comment_type, name, creation, modified_by, reference_doctype, reference_name, 
-		_liked_by, comment_type, _comments 
-		from tabCommunication 
-			where (reference_doctype='Project' and reference_name=%s)
+	timelines = frappe.db.sql("""
+		select 
+			sender_full_name, 
+			subject, communication_date, comment_type, name, creation, modified_by, reference_doctype, reference_name, 
+			_liked_by, comment_type, _comments 
+		from 
+			tabCommunication 
+		where 
+			(reference_doctype='Project' and reference_name=%s)
 			or (timeline_doctype='Project' and timeline_name=%s)
 			or (reference_doctype='Issue' and reference_name IN {issue_names})
-		order by modified DESC limit {start}, {limit}""".format(
+		order by 
+			modified DESC limit {start}, {limit}""".format(
 			issue_names=issue_names, start=start, limit=10), 
-		(project, project), as_dict=True);
+			(project, project), as_dict=True);
 	for timeline in timelines:
  		timeline.user_image = frappe.db.get_value('User', timeline.modified_by, 'user_image')
 	return timelines	
 		
 @frappe.whitelist()
-def get_timeline_html(project, start=0):
+def get_timelines_html(project, start=0):
 	return frappe.render_template("erpnext/templates/includes/projects/timeline.html", 
 		{"doc": {"timelines": get_timeline(project, start)}}, is_path=True)			
 		
 def get_issue_list(project):
 	return [issue.name for issue in get_issues(project)]
 
-def get_tasks(project, start=0, search=None, taskstatus=None):
+def get_tasks(project, start=0, search=None, item_status=None):
 	filters = {"project": project}
 	if search:
 		filters["subject"] = ("like", "%{0}%".format(search))
-	if taskstatus:	
-		filters = {"status": taskstatus}	
+	if item_status:	
+		filters = {"status": item_status}	
 	tasks = frappe.get_all("Task", filters=filters, 
 		fields=["name", "subject", "status", "exp_start_date", "exp_end_date", "priority"], 
-		limit_start=start, limit_page_length=5)	
+		limit_start=start, limit_page_length=10)	
 		
 	for task in tasks:
 		task.todo = frappe.get_all('ToDo',filters={'reference_name':task.name, 'reference_type':'Task'},
@@ -76,22 +80,21 @@
 	return tasks
 
 @frappe.whitelist()
-def get_tasks_html(project, start=0, taskstatus=None):
+def get_tasks_html(project, start=0, item_status=None):
 	return frappe.render_template("erpnext/templates/includes/projects/project_tasks.html", 
-		{"doc": {"tasks": get_tasks(project, start, taskstatus=taskstatus)}}, is_path=True)
+		{"doc": {"tasks": get_tasks(project, start, item_status=item_status)}}, is_path=True)
 		
 		
-def get_issues(project, start=0, search=None, issuestatus=None):
-	print issuestatus
+def get_issues(project, start=0, search=None, item_status=None):
 	filters = {"project": project}
 	if search:
 		filters["subject"] = ("like", "%{0}%".format(search))
-	if issuestatus:	
-		filters = {"status": issuestatus}	
+	if item_status:	
+		filters = {"status": item_status}	
 	issues = frappe.get_all("Issue", filters=filters, 
 		fields=["name", "subject", "status", "opening_date", "resolution_date", "resolution_details"], 
 		order_by='modified desc',
-		limit_start=start, limit_page_length=5)	
+		limit_start=start, limit_page_length=10)	
 		
 	for issue in issues:
 		issue.todo = frappe.get_all('ToDo',filters={'reference_name':issue.name, 'reference_type':'Issue'},
@@ -103,10 +106,9 @@
 	return issues
 
 @frappe.whitelist()
-def get_issues_html(project, start=0, issuestatus=None):
-	print issuestatus
+def get_issues_html(project, start=0, item_status=None):
 	return frappe.render_template("erpnext/templates/includes/projects/project_issues.html", 
-		{"doc": {"issues": get_issues(project, start, issuestatus=issuestatus)}}, is_path=True)		
+		{"doc": {"issues": get_issues(project, start, item_status=item_status)}}, is_path=True)		
 		
 def get_timelogs(project, start=0, search=None):
 	filters = {"project": project}
@@ -115,7 +117,7 @@
 	
 	timelogs = frappe.get_all('Time Log', filters=filters, 
 	fields=['name','title','task','activity_type','from_time','to_time','hours','status','modified','modified_by'],
-	limit_start=start, limit_page_length=2)	
+	limit_start=start, limit_page_length=10)	
 	for timelog in timelogs:
 		timelog.user_image = frappe.db.get_value('User', timelog.modified_by, 'user_image')	
 	return timelogs
@@ -126,14 +128,14 @@
 		{"doc": {"timelogs": get_timelogs(project, start)}}, is_path=True)		
 		
 @frappe.whitelist()	
-def set_task_status(project, task_name):
-	task = frappe.get_doc("Task", task_name)
+def set_task_status(project, item_name):
+	task = frappe.get_doc("Task", item_name)
 	task.status = 'Closed'
 	task.save(ignore_permissions=True)
 		
 @frappe.whitelist()			
-def set_issue_status(project, issue_name):
-	issue = frappe.get_doc("Issue", issue_name)
+def set_issue_status(project, item_name):
+	issue = frappe.get_doc("Issue", item_name)
 	issue.status = 'Closed'
 	issue.save(ignore_permissions=True)
 			
