diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css
index 8fc87d0d653dca3b4e40e632d57d4cf8c56633d0..47ec5f5a91fb169ad6e65cc327e414d4b4d1adfc 100644
--- a/app/assets/stylesheets/application.css
+++ b/app/assets/stylesheets/application.css
@@ -49,10 +49,3 @@
 .no-padding { 
   padding:0 !important;
 }
-
-
-/** COMMIT BLOCK **/
-.commit-title{display: block;}
-.commit-title{margin-bottom: 10px}
-.commit-author{color: #999; font-weight: normal; font-style: italic;}
-.commit-author strong{font-weight: bold; font-style: normal;}
diff --git a/app/assets/stylesheets/commits.css.scss b/app/assets/stylesheets/commits.css.scss
index 23a8add96c8a4a9caca1b2b8d787d040be5938ad..e88c56c5519ee4d80344ab5f6d56e44188560a8d 100644
--- a/app/assets/stylesheets/commits.css.scss
+++ b/app/assets/stylesheets/commits.css.scss
@@ -27,14 +27,44 @@
 }
 
 .diff_file_content{
+  table { 
+    border:none;
+    margin:0px;
+    padding:0px;
+  }
   .old_line, .new_line {
-    background:#ECECEC;
-    color:#777;
-    width:35px;
-    float:left;
+    margin:0px;
+    padding:0px;
+    border:none;
+    background:#F7F7F7;
+    color:#333;
     padding: 0px 5px;
     border-right: 1px solid #ccc;
     text-align:right;
+    min-width:35px;
+    max-width:35px;
+    width:35px;
+    a { 
+      float:left;
+      width:35px;
+      font-weight:normal;
+      &:hover { 
+        text-decoration:underline;
+      }
+    }
+  }
+  .line_content { 
+    white-space:pre; 
+    height:14px;
+    margin:0px;
+    padding:0px;
+    border:none;
+    &.new { 
+      background: #DFD;
+    }
+    &.old { 
+      background: #FDD;
+    }
   }
 }
 
@@ -45,3 +75,24 @@ pre.commit_message {
   font-weight:bold;
   font-size:15px;
 }
+
+/** COMMIT BLOCK **/
+.commit-title{display: block;}
+.commit-title{margin-bottom: 10px}
+.commit-author{color: #999; font-weight: normal; font-style: italic;}
+.commit-author strong{font-weight: bold; font-style: normal;}
+
+/** bordered list **/
+ul.bordered-list { 
+  margin:5px 0px;
+  padding:0px;
+  li { 
+    padding: 5px;
+    border-bottom: 1px solid #EEE;
+    overflow: hidden;
+    display: block;
+    margin:0px;
+  }
+}
+
+ul.bordered-list li:last-child { border:none } 
diff --git a/app/assets/stylesheets/projects.css.scss b/app/assets/stylesheets/projects.css.scss
index 8cfe58b21001b1754adaff0ebb90bc7854e98dbf..344190e63188247a8c22f2d434ab5b3de7bda6e0 100644
--- a/app/assets/stylesheets/projects.css.scss
+++ b/app/assets/stylesheets/projects.css.scss
@@ -66,11 +66,8 @@ a {
   }
 }
 
-.view_file {
-  border:1px solid #CCC;
-  margin-bottom:1em;
-
-  .view_file_header {
+.view_file .view_file_header, 
+.diff_file .diff_file_header { 
     background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8));
     background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8);
     background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8);
@@ -81,8 +78,13 @@ a {
     text-align: left;
     color: #666;
     border-bottom: 1px solid #DEE2E3;
-    padding: .9em 1em;
-  }
+    padding: 7px 10px;
+}
+
+.view_file {
+  border:1px solid #CCC;
+  margin-bottom:1em;
+
   .view_file_content {
     background:#fff;
     color:#514721;
diff --git a/app/helpers/commits_helper.rb b/app/helpers/commits_helper.rb
index 585564aa4f83fcb3b207866ac94fc72777bcf96e..ae7826712a545d26573b9596efeae6b97393ed19 100644
--- a/app/helpers/commits_helper.rb
+++ b/app/helpers/commits_helper.rb
@@ -1,19 +1,22 @@
 module CommitsHelper
   include Utils::CharEncode
-  def diff_line(line, line_new = 0, line_old = 0)
-    full_line = html_escape(line.gsub(/\n/, ''))
-    color = if line[0] == "+"
-              full_line = "<span class=\"old_line\">&nbsp;</span><span class=\"new_line\">#{line_new}</span> " + full_line
-              "#DFD"
-            elsif line[0] == "-"
-              full_line = "<span class=\"old_line\">#{line_old}</span><span class=\"new_line\">&nbsp;</span> " + full_line
-              "#FDD"
-            else
-              full_line = "<span class=\"old_line\">#{line_old}</span><span class=\"new_line\">#{line_new}</span> " + full_line
-              "none"
-            end
 
-    raw "<div style=\"white-space:pre;background:#{color};\">#{full_line}</div>"
+  def old_line_number(line, i)
+
+  end
+
+  def new_line_number(line, i)
+
+  end
+
+  def diff_line_class(line)
+    if line[0] == "+"
+      "new"
+    elsif line[0] == "-"
+      "old"
+    else
+      nil
+    end
   end
 
   def more_commits_link
diff --git a/app/views/commits/_diff.html.haml b/app/views/commits/_diff.html.haml
index fd929f30b39e65d4202b31b27940371d0fbe7429..190c95dd745cb200ed73367e475ecfc4a025805c 100644
--- a/app/views/commits/_diff.html.haml
+++ b/app/views/commits/_diff.html.haml
@@ -1,7 +1,7 @@
 .file_stats
   = render "commits/diff_head"
 
-- @commit.diffs.each do |diff|
+- @commit.diffs.each_with_index do |diff, i|
   - next if diff.diff.empty?
   - file = (@commit.tree / diff.b_path)
   - next unless file
@@ -15,7 +15,7 @@
       %br/
     .diff_file_content
       - if file.text?
-        = render :partial => "commits/text_file", :locals => { :diff => diff }
+        = render :partial => "commits/text_file", :locals => { :diff => diff, :index => i }
       - elsif file.image?
         .diff_file_content_image
           %img{:src => "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"}
diff --git a/app/views/commits/_diff_head.html.haml b/app/views/commits/_diff_head.html.haml
index 26105261dc9e1a39e85e562488dd2b1d792af9ad..6e32fca068f2636e212464ac68f6cf3e5260d3f0 100644
--- a/app/views/commits/_diff_head.html.haml
+++ b/app/views/commits/_diff_head.html.haml
@@ -1,29 +1,26 @@
-%table 
-  %thead 
-    %th Files
+%ul.bordered-list
   - @commit.diffs.each do |diff|
-    %tr
-      %td
-        - if diff.deleted_file
-          %span.removed_file
-            %a{:href => "##{diff.a_path}"}
-              = diff.a_path
-              = image_tag "blueprint_delete.png"
-        - elsif diff.renamed_file
-          %span.moved_file
-            %a{:href => "##{diff.b_path}"}
-              = diff.a_path
-              = "->"
-              = diff.b_path
-              = image_tag "blueprint_notice.png"
-        - elsif diff.new_file
-          %span.new_file
-            %a{:href => "##{diff.b_path}"}
-              = diff.b_path
-              = image_tag "blueprint_add.png"
-        - else
-          %span.edit_file
-            %a{:href => "##{diff.b_path}"}
-              = diff.b_path
-              = image_tag "blueprint_info.png"
+    %li
+      - if diff.deleted_file
+        %span.removed_file
+          %a{:href => "##{diff.a_path}"}
+            = diff.a_path
+            = image_tag "blueprint_delete.png"
+      - elsif diff.renamed_file
+        %span.moved_file
+          %a{:href => "##{diff.b_path}"}
+            = diff.a_path
+            = "->"
+            = diff.b_path
+            = image_tag "blueprint_notice.png"
+      - elsif diff.new_file
+        %span.new_file
+          %a{:href => "##{diff.b_path}"}
+            = diff.b_path
+            = image_tag "blueprint_add.png"
+      - else
+        %span.edit_file
+          %a{:href => "##{diff.b_path}"}
+            = diff.b_path
+            = image_tag "blueprint_info.png"
 
diff --git a/app/views/commits/_text_file.html.haml b/app/views/commits/_text_file.html.haml
index 635391239e9efa041b16d91a2f4b3b34c98e6e18..e39cf11700efc7e56df47c40758a1fa4d4502a59 100644
--- a/app/views/commits/_text_file.html.haml
+++ b/app/views/commits/_text_file.html.haml
@@ -1,21 +1,28 @@
-- line_old = 0
-- line_new = 0
-- lines_arr = diff.diff.lines.to_a
-- lines_arr.each do |line|
-  - line = encode(line)
-  - next if line.match(/^--- \/dev\/null/)
-  - next if line.match(/^--- a/)
-  - next if line.match(/^\+\+\+ b/)
-  - if line.match(/^@@ -/)
-    - line_old = line.match(/\-[0-9]*/)[0].to_i.abs rescue 0
-    - line_new = line.match(/\+[0-9]*/)[0].to_i.abs rescue 0
-    - next
+%table
+  - line_old = 0
+  - line_new = 0
+  - lines_arr = diff.diff.lines.to_a
+  - lines_arr.each do |line|
+    - line = encode(line)
+    - next if line.match(/^--- \/dev\/null/)
+    - next if line.match(/^--- a/)
+    - next if line.match(/^\+\+\+ b/)
+    - if line.match(/^@@ -/)
+      - line_old = line.match(/\-[0-9]*/)[0].to_i.abs rescue 0
+      - line_new = line.match(/\+[0-9]*/)[0].to_i.abs rescue 0
+      - next
 
-  = diff_line(line, line_new, line_old)
-  - if line[0] == "+"
-    - line_new += 1
-  - elsif line[0] == "-"
-    - line_old += 1
-  - else
-    - line_new += 1
-    - line_old += 1
+    - full_line = html_escape(line.gsub(/\n/, ''))
+    %tr.line_holder
+      %td.old_line
+        = link_to raw(diff_line_class(line) == "new" ? "&nbsp;" : line_old), "#OLD#{index}-#{line_old}", :id => "OLD#{index}-#{line_old}"
+      %td.new_line
+        = link_to raw(diff_line_class(line) == "old" ? "&nbsp;" : line_new) , "#NEW#{index}-#{line_new}", :id => "NEW#{index}-#{line_new}"
+      %td.line_content{:class => diff_line_class(full_line)}= raw "#{full_line} &nbsp;"  
+    - if line[0] == "+"
+      - line_new += 1
+    - elsif line[0] == "-"
+      - line_old += 1
+    - else
+      - line_new += 1
+      - line_old += 1