diff --git a/app/views/snippets/_blob.html.haml b/app/views/snippets/_blob.html.haml
index 017a33b34f343fdba99596bf6cdecaff8e8a2ca6..56e62f0d6b31975f01031cc689da96bbc38bf658 100644
--- a/app/views/snippets/_blob.html.haml
+++ b/app/views/snippets/_blob.html.haml
@@ -3,7 +3,7 @@
     %i.icon-file
     %strong= @snippet.file_name
     %span.options
-      = link_to "raw", raw_project_snippet_path(@project, @snippet), class: "btn btn-tiny", target: "_blank"
+      = link_to "raw", raw_snippet_path(@snippet), class: "btn btn-tiny", target: "_blank"
   .file_content.code
     - unless @snippet.content.empty?
       %div{class: user_color_scheme_class}
diff --git a/app/views/snippets/_form.html.haml b/app/views/snippets/_form.html.haml
index 77162cdcde338beb2c54be39ac765e6961b31a15..d9514890b202c54141671cfa0118048bee50e105 100644
--- a/app/views/snippets/_form.html.haml
+++ b/app/views/snippets/_form.html.haml
@@ -2,7 +2,7 @@
   = @snippet.new_record? ? "New Snippet" : "Edit Snippet ##{@snippet.id}"
 %hr
 .snippet-form-holder
-  = form_for [@project, @snippet] do |f|
+  = form_for @snippet, as: :personal_snippet, url: url do |f|
     -if @snippet.errors.any?
       .alert.alert-error
         %ul
@@ -12,6 +12,9 @@
     .clearfix
       = f.label :title
       .input= f.text_field :title, placeholder: "Example Snippet", class: 'input-xlarge', required: true
+    .clearfix
+      = f.label "Private?"
+      .input= f.check_box :private, {class: ''}
     .clearfix
       = f.label "Lifetime"
       .input= f.select :expires_at, lifetime_select_options, {}, {class: 'chosen span2'}
@@ -28,9 +31,9 @@
 
     .form-actions
       = f.submit 'Save', class: "btn-save btn"
-      = link_to "Cancel", project_snippets_path(@project), class: " btn"
+      = link_to "Cancel", snippets_path(@project), class: " btn"
       - unless @snippet.new_record?
-        .pull-right= link_to 'Destroy', [@project, @snippet], confirm: 'Are you sure?', method: :delete, class: "btn pull-right danger delete-snippet", id: "destroy_snippet_#{@snippet.id}"
+        .pull-right= link_to 'Destroy', snippet_path(@snippet), confirm: 'Are you sure?', method: :delete, class: "btn pull-right danger delete-snippet", id: "destroy_snippet_#{@snippet.id}"
 
 
 :javascript
diff --git a/app/views/snippets/_snippet.html.haml b/app/views/snippets/_snippet.html.haml
index a576500c15dd2f6676862d6432d2da0d50a0f71d..77d9d211d8d891430bb170d522f69e8a38e5fda1 100644
--- a/app/views/snippets/_snippet.html.haml
+++ b/app/views/snippets/_snippet.html.haml
@@ -1,8 +1,16 @@
 %tr
   %td
+    - if snippet.private?
+      %i.icon-lock
+    - else
+      %i.icon-globe
     = image_tag gravatar_icon(snippet.author_email), class: "avatar s24"
-    %a{href: project_snippet_path(snippet.project, snippet)}
-      %strong= truncate(snippet.title, length: 60)
+    - if snippet.project_id?
+      %a{href: project_snippet_path(snippet.project, snippet)}
+        %strong= truncate(snippet.title, length: 60)
+    - else
+      %a{href: snippet_path(snippet)}
+        %strong= truncate(snippet.title, length: 60)
   %td
     = snippet.file_name
   %td
@@ -11,3 +19,6 @@
         = snippet.expires_at.to_date.to_s(:short)
       - else
         Never
+  %td
+    - if snippet.project_id?
+      = link_to snippet.project.name, project_path(snippet.project)
diff --git a/app/views/snippets/_snippets.html.haml b/app/views/snippets/_snippets.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..8162c546ea7595b241c797b554b40d0980bc315a
--- /dev/null
+++ b/app/views/snippets/_snippets.html.haml
@@ -0,0 +1,13 @@
+%table
+  %thead
+    %tr
+      %th Title
+      %th File Name
+      %th Expires At
+      %th Project
+
+  = render partial: 'snippet', collection: @snippets
+  - if @snippets.empty?
+    %tr
+      %td{colspan: 4}
+        %h3.nothing_here_message Nothing here.
diff --git a/app/views/snippets/edit.html.haml b/app/views/snippets/edit.html.haml
index f81c0b8bc647a76eda32278b880a9ce6f7890469..1b88a85faf1e4add09fdeb94acd3ca1d14d3029b 100644
--- a/app/views/snippets/edit.html.haml
+++ b/app/views/snippets/edit.html.haml
@@ -1 +1 @@
-= render "snippets/form"
+= render "snippets/form", url: snippet_path(@snippet)
diff --git a/app/views/snippets/index.html.haml b/app/views/snippets/index.html.haml
index bacf23d8f8de33de5858ba58cb32e6c74903919a..2c00dd465db5cba90c71576a794b05e41648463a 100644
--- a/app/views/snippets/index.html.haml
+++ b/app/views/snippets/index.html.haml
@@ -1,19 +1,17 @@
 %h3.page_title
   Snippets
   %small share code pastes with others out of git repository
+  = link_to new_snippet_path, class: "btn btn-small add_new pull-right", title: "New Snippet" do
+    Add new snippet
 
-  - if can? current_user, :write_snippet, @project
-    = link_to new_project_snippet_path(@project), class: "btn btn-small add_new pull-right", title: "New Snippet" do
-      Add new snippet
-%br
-%table
-  %thead
-    %tr
-      %th Title
-      %th File Name
-      %th Expires At
-  = render @snippets
-  - if @snippets.empty?
-    %tr
-      %td{colspan: 3}
-        %h3.nothing_here_message Nothing here.
+%hr
+.row
+  .span3
+    %ul.nav.nav-pills.nav-stacked
+      = nav_tab :scope, nil do
+        = link_to "All", snippets_path
+      = nav_tab :scope, 'projects' do
+        = link_to "Projects", snippets_path(scope: 'projects')
+
+  .span9
+    = render 'snippets'
diff --git a/app/views/snippets/new.html.haml b/app/views/snippets/new.html.haml
index f81c0b8bc647a76eda32278b880a9ce6f7890469..90e0a1f79dac2414e41861f156fa58f772ca49e6 100644
--- a/app/views/snippets/new.html.haml
+++ b/app/views/snippets/new.html.haml
@@ -1 +1 @@
-= render "snippets/form"
+= render "snippets/form", url: snippets_path(@snippet)
diff --git a/app/views/snippets/show.html.haml b/app/views/snippets/show.html.haml
index 12534edf8ba5b5b556d2b9b8f6e951f88f03aa6c..18348fb10679ecbe87ee24684c001ea68a9dc975 100644
--- a/app/views/snippets/show.html.haml
+++ b/app/views/snippets/show.html.haml
@@ -1,9 +1,13 @@
 %h3.page_title
+  - if @snippet.private?
+    %i.icon-lock
+  - else
+    %i.icon-globe
+
   = @snippet.title
   %small= @snippet.file_name
-  - if can?(current_user, :admin_snippet, @project) || @snippet.author == current_user
-    = link_to "Edit", edit_project_snippet_path(@project, @snippet), class: "btn btn-small pull-right", title: 'Edit Snippet'
+  - if @snippet.author == current_user
+    = link_to "Edit", edit_snippet_path(@snippet), class: "btn btn-small pull-right", title: 'Edit Snippet'
 
 %br
 %div= render 'blob'
-%div#notes= render "notes/notes_with_form"
diff --git a/app/views/snippets/user_index.html.haml b/app/views/snippets/user_index.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..2f2cce26af43bf8296eab9b462bbd1a01284cffc
--- /dev/null
+++ b/app/views/snippets/user_index.html.haml
@@ -0,0 +1,20 @@
+%h3.page_title
+  Snippets by
+  = @user.name
+  %small share code pastes with others out of git repository
+  = link_to new_snippet_path, class: "btn btn-small add_new pull-right", title: "New Snippet" do
+    Add new snippet
+
+%hr
+.row
+  .span3
+    %ul.nav.nav-pills.nav-stacked
+      = nav_tab :scope, nil do
+        = link_to "All", user_snippets_path(@user)
+      = nav_tab :scope, 'private' do
+        = link_to "Private", user_snippets_path(@user, scope: 'private')
+      = nav_tab :scope, 'public' do
+        = link_to "Public", user_snippets_path(@user, scope: 'public')
+
+  .span9
+    = render 'snippets'