diff --git a/app/assets/stylesheets/generic/common.scss b/app/assets/stylesheets/generic/common.scss
index 7c3021989a87628d6e502c366077c20216f2aee4..1e569978cc811daf6e6c762197989d43e7d8ef64 100644
--- a/app/assets/stylesheets/generic/common.scss
+++ b/app/assets/stylesheets/generic/common.scss
@@ -333,17 +333,8 @@ table {
 }
 
 .search_box {
-  position: relative;
-  padding: 30px;
+  @extend .well;
   text-align: center;
-  background-color: #F9F9F9;
-  border: 1px solid #DDDDDD;
-  border-radius: 0px;
-}
-
-.search_glyph {
-  color: #555;
-  font-size: 42px;
 }
 
 .task-status {
diff --git a/app/views/layouts/_head_panel.html.haml b/app/views/layouts/_head_panel.html.haml
index fc4656be079e5a10695efc946e317dca3f82c04a..a7ec19cb692c11c8cdc017ef0994ffce718e923a 100644
--- a/app/views/layouts/_head_panel.html.haml
+++ b/app/views/layouts/_head_panel.html.haml
@@ -13,8 +13,9 @@
 
       .navbar-collapse.collapse
         %ul.nav.navbar-nav
-          %li.hidden-sm.hidden-xs
-            = render 'layouts/search'
+          - unless current_controller?(:search)
+            %li.hidden-sm.hidden-xs
+              = render 'layouts/search'
           %li.visible-sm.visible-xs
             = link_to search_path, title: 'Search', data: {toggle: 'tooltip', placement: 'bottom'} do
               = icon('search')
diff --git a/app/views/layouts/_search.html.haml b/app/views/layouts/_search.html.haml
index 58e6bd3158f9838df7c7b98883df60a1d8b52d2d..04f79846858dbe2c3b5094f57285e9db24b3ecb8 100644
--- a/app/views/layouts/_search.html.haml
+++ b/app/views/layouts/_search.html.haml
@@ -1,6 +1,6 @@
 .search
   = form_tag search_path, method: :get, class: 'navbar-form pull-left' do |f|
-    = search_field_tag "search", @search_term, placeholder: search_placeholder, class: "search-input"
+    = search_field_tag "search", nil, placeholder: search_placeholder, class: "search-input"
     = hidden_field_tag :group_id, @group.try(:id)
     - if @project && @project.persisted?
       = hidden_field_tag :project_id, @project.id
diff --git a/app/views/layouts/nav/_search.html.haml b/app/views/layouts/nav/_search.html.haml
index 35806c2d0fbf2ed2480e856fb580cbf917b14ded..f95f6acb28dfeca8b67bd506271455fbde231b2a 100644
--- a/app/views/layouts/nav/_search.html.haml
+++ b/app/views/layouts/nav/_search.html.haml
@@ -1,30 +1,30 @@
-%ul.nav.nav-sidebar.search-filter
-  - if @project
-    = render 'layouts/nav/search/project'
+- if @search_term
+  %ul.nav.nav-sidebar.search-filter
+    - if @project
+      = render 'layouts/nav/search/project'
 
-  - elsif @show_snippets
-    = render 'layouts/nav/search/snippet'
-
-  - else
-    %li{class: ("active" if @scope == 'projects')}
-      = link_to search_filter_path(scope: 'projects') do
-        = icon('bookmark fw')
-        %span
-          Projects
-          %span.count
-            = @search_results.projects_count
-    %li{class: ("active" if @scope == 'issues')}
-      = link_to search_filter_path(scope: 'issues') do
-        = icon('exclamation-circle fw')
-        %span
-          Issues
-          %span.count
-            = @search_results.issues_count
-    %li{class: ("active" if @scope == 'merge_requests')}
-      = link_to search_filter_path(scope: 'merge_requests') do
-        = icon('tasks fw')
-        %span
-          Merge requests
-          %span.count
-            = @search_results.merge_requests_count
+    - elsif @show_snippets
+      = render 'layouts/nav/search/snippet'
 
+    - else
+      %li{class: ("active" if @scope == 'projects')}
+        = link_to search_filter_path(scope: 'projects') do
+          = icon('bookmark fw')
+          %span
+            Projects
+            %span.count
+              = @search_results.projects_count
+      %li{class: ("active" if @scope == 'issues')}
+        = link_to search_filter_path(scope: 'issues') do
+          = icon('exclamation-circle fw')
+          %span
+            Issues
+            %span.count
+              = @search_results.issues_count
+      %li{class: ("active" if @scope == 'merge_requests')}
+        = link_to search_filter_path(scope: 'merge_requests') do
+          = icon('tasks fw')
+          %span
+            Merge requests
+            %span.count
+              = @search_results.merge_requests_count
diff --git a/app/views/search/_filter.html.haml b/app/views/search/_filter.html.haml
index ffc145497abe08dbd90335d997b3cc7272d7a0d8..e2d0cab9e79bfe18132054e8aa9ae538ba00c53a 100644
--- a/app/views/search/_filter.html.haml
+++ b/app/views/search/_filter.html.haml
@@ -1,5 +1,5 @@
 .dropdown.inline
-  %button.dropdown-toggle.btn.btn-sm{type: 'button', 'data-toggle' => 'dropdown'}
+  %button.dropdown-toggle.btn.btn{type: 'button', 'data-toggle' => 'dropdown'}
     %i.fa.fa-tags
     %span.light Group:
     - if @group.present?
@@ -17,7 +17,7 @@
           = group.name
 
 .dropdown.inline.prepend-left-10.project-filter
-  %button.dropdown-toggle.btn.btn-sm{type: 'button', 'data-toggle' => 'dropdown'}
+  %button.dropdown-toggle.btn.btn{type: 'button', 'data-toggle' => 'dropdown'}
     %i.fa.fa-tags
     %span.light Project:
     - if @project.present?
diff --git a/app/views/search/_form.html.haml b/app/views/search/_form.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..a9ec7df296750d9e7f5c71dbc62113b7b8241a34
--- /dev/null
+++ b/app/views/search/_form.html.haml
@@ -0,0 +1,12 @@
+= form_tag search_path, method: :get, class: 'form-inline' do |f|
+  = hidden_field_tag :project_id, params[:project_id]
+  = hidden_field_tag :group_id, params[:group_id]
+  = hidden_field_tag :snippets, params[:snippets]
+  = hidden_field_tag :scope, params[:scope]
+  .search-holder.clearfix
+    .form-group
+      = search_field_tag :search, params[:search], placeholder: "Search for projects, issues etc", class: "form-control search-text-input input-mn-300", id: "dashboard_search", autofocus: true
+      = button_tag 'Search', class: "btn btn-info"
+    - unless params[:snippets].eql? 'true'
+      .pull-right
+        = render 'filter'
diff --git a/app/views/search/_results.html.haml b/app/views/search/_results.html.haml
index f741a64cbabed5590904ced39646b905c1ae39ee..741c780ad96921da5c45bd48ed063c7c673c2a2a 100644
--- a/app/views/search/_results.html.haml
+++ b/app/views/search/_results.html.haml
@@ -1,9 +1,21 @@
-.search-results
-  - if @search_results.empty?
-    = render partial: "search/results/empty", locals: { message: "We couldn't find any matching results" }
-  - else
-    = render partial: "search/results/#{@scope.singularize}", collection: @objects
-    = paginate @objects, theme: 'gitlab'
+- if @search_results.empty?
+  = render partial: "search/results/empty"
+- else
+  .light
+    Search results for
+    %code
+      = @search_term
+    - unless @show_snippets
+      - if @project
+        in project #{link_to @project.name_with_namespace, [@project.namespace.becomes(Namespace), @project]}
+      - elsif @group
+        in group #{link_to @group.name, @group}
+
+  %br
+  .results.prepend-top-10
+    .search-results
+      = render partial: "search/results/#{@scope.singularize}", collection: @objects
+      = paginate @objects, theme: 'gitlab'
 
 :javascript
   $(".search-results .term").highlight("#{escape_javascript(params[:search])}");
diff --git a/app/views/search/results/_empty.html.haml b/app/views/search/results/_empty.html.haml
index 01fb8cd9b8ec9daaa675c2040626b416f90a520e..05a63016c09ac0d8c0f80d2629cbf27ba31fd463 100644
--- a/app/views/search/results/_empty.html.haml
+++ b/app/views/search/results/_empty.html.haml
@@ -1,4 +1,6 @@
 .search_box
   .search_glyph
-    %span.fa.fa-search
-  %h4 #{message}
+  %h4
+    = icon('search')
+    We couldn't find any results matching
+    %code #{@search_term}
diff --git a/app/views/search/show.html.haml b/app/views/search/show.html.haml
index fcdd63a764ddf9bc2d43eef501a84cdeb41ca999..8e11154279f0bde9985f2dd74dd10286c3d822f8 100644
--- a/app/views/search/show.html.haml
+++ b/app/views/search/show.html.haml
@@ -1,18 +1,4 @@
+= render 'search/form'
+%hr
 - if @search_term
-  .lead
-    Search for
-    %code
-      = @search_term
-    - unless @show_snippets
-      - if @project
-        in project #{link_to @project.name_with_namespace, [@project.namespace.becomes(Namespace), @project]}
-      - elsif @group
-        in group #{link_to @group.name, @group}
-
-    .pull-right
-      = render 'filter'
-  %hr
-  .results.prepend-top-10
-    = render 'search/results'
-- else
-  wow
+  = render 'search/results'
diff --git a/db/schema.rb b/db/schema.rb
index 8683c0446fea012c1063276c92610696eb849cc5..43faaf31682caf5dfc8f07fa173e59a121bdfbe4 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -349,10 +349,10 @@ ActiveRecord::Schema.define(version: 20150425173433) do
     t.string   "import_url"
     t.integer  "visibility_level",       default: 0,        null: false
     t.boolean  "archived",               default: false,    null: false
-    t.string   "avatar"
     t.string   "import_status"
     t.float    "repository_size",        default: 0.0
     t.integer  "star_count",             default: 0,        null: false
+    t.string   "avatar"
     t.string   "import_type"
     t.string   "import_source"
   end
@@ -472,7 +472,6 @@ ActiveRecord::Schema.define(version: 20150425173433) do
     t.integer  "notification_level",            default: 1,     null: false
     t.datetime "password_expires_at"
     t.integer  "created_by_id"
-    t.datetime "last_credential_check_at"
     t.string   "avatar"
     t.string   "confirmation_token"
     t.datetime "confirmed_at"
@@ -480,6 +479,7 @@ ActiveRecord::Schema.define(version: 20150425173433) do
     t.string   "unconfirmed_email"
     t.boolean  "hide_no_ssh_key",               default: false
     t.string   "website_url",                   default: "",    null: false
+    t.datetime "last_credential_check_at"
     t.string   "github_access_token"
     t.string   "gitlab_access_token"
     t.string   "notification_email"
@@ -501,6 +501,30 @@ ActiveRecord::Schema.define(version: 20150425173433) do
   add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
   add_index "users", ["username"], name: "index_users_on_username", using: :btree
 
+  create_table "users_groups", force: true do |t|
+    t.integer  "group_access",                   null: false
+    t.integer  "group_id",                       null: false
+    t.integer  "user_id",                        null: false
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.integer  "notification_level", default: 3, null: false
+  end
+
+  add_index "users_groups", ["user_id"], name: "index_users_groups_on_user_id", using: :btree
+
+  create_table "users_projects", force: true do |t|
+    t.integer  "user_id",                        null: false
+    t.integer  "project_id",                     null: false
+    t.datetime "created_at"
+    t.datetime "updated_at"
+    t.integer  "project_access",     default: 0, null: false
+    t.integer  "notification_level", default: 3, null: false
+  end
+
+  add_index "users_projects", ["project_access"], name: "index_users_projects_on_project_access", using: :btree
+  add_index "users_projects", ["project_id"], name: "index_users_projects_on_project_id", using: :btree
+  add_index "users_projects", ["user_id"], name: "index_users_projects_on_user_id", using: :btree
+
   create_table "users_star_projects", force: true do |t|
     t.integer  "project_id", null: false
     t.integer  "user_id",    null: false