diff --git a/app/controllers/admin/projects_controller.rb b/app/controllers/admin/projects_controller.rb
index c10fa721237c02ac657a94ce207db86de8e792c4..27dd50e4d8c3d11c23b1e1fd1f86f6823f24c9c7 100644
--- a/app/controllers/admin/projects_controller.rb
+++ b/app/controllers/admin/projects_controller.rb
@@ -42,4 +42,14 @@ class Admin::ProjectsController < AdminController
 
     redirect_to projects_url, notice: 'Project was successfully deleted.'
   end
+
+  protected
+
+  def project
+    id = params[:project_id] || params[:id]
+    id = id.split("/") if id.include?("/")
+
+    @project ||= Project.find_by_path(id)
+    @project || render_404
+  end
 end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index d7dbf5ea8203fba7e1a731851c7c236d04ca23b6..bebac0f714b632c8fca6a1fec1f871372a1188b3 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -88,7 +88,7 @@ module ApplicationHelper
       [ "Users", users.map {|u| [u.human_name, u.id]} ]
     ]
 
-    if selected == :current_user
+    if selected == :current_user && current_user.namespace
       selected = current_user.namespace.id
     end
 
diff --git a/app/observers/user_observer.rb b/app/observers/user_observer.rb
index e96ba28b7fbf6a052e63666806feb7c6a80e042f..d304b3a2894cc9f033f65d550d95476bdb6798bd 100644
--- a/app/observers/user_observer.rb
+++ b/app/observers/user_observer.rb
@@ -1,6 +1,6 @@
 class UserObserver < ActiveRecord::Observer
   def after_create(user)
-    user.create_namespace(code: user.username, name: user.name)
+    user.create_namespace(path: user.username, name: user.name)
 
     log_info("User \"#{user.name}\" (#{user.email}) was created")
 
@@ -13,7 +13,7 @@ class UserObserver < ActiveRecord::Observer
 
   def after_save user
     if user.username_changed? and user.namespace
-      user.namespace.update_attributes(code: user.username)
+      user.namespace.update_attributes(path: user.username)
     end
   end
 
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index d115632461d63b21042173b4462e7d7b137146d4..384dbcd54736a171b7e0dcf4b4e1b8805c8e2683 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -38,10 +38,7 @@ module Gitlab
       # Example Request
       #   POST /projects
       post do
-        params[:code] ||= params[:name]
-        params[:path] ||= params[:name]
-        attrs = attributes_for_keys [:path,
-                                    :name,
+        attrs = attributes_for_keys [:name,
                                     :description,
                                     :default_branch,
                                     :issues_enabled,
diff --git a/spec/controllers/commits_controller_spec.rb b/spec/controllers/commits_controller_spec.rb
index bf335634da97788ed88e7bd3853272680f84a4ac..da33fd8a2b5f4fa1b588e557666260537d3930bd 100644
--- a/spec/controllers/commits_controller_spec.rb
+++ b/spec/controllers/commits_controller_spec.rb
@@ -13,7 +13,7 @@ describe CommitsController do
   describe "GET show" do
     context "as atom feed" do
       it "should render as atom" do
-        get :show, project_id: project.code, id: "master.atom"
+        get :show, project_id: project.path, id: "master.atom"
         response.should be_success
         response.content_type.should == 'application/atom+xml'
       end
diff --git a/spec/factories.rb b/spec/factories.rb
index 7a496fcbe26178ebad4fae3728427d7fd32040ad..c673606b9842f0906ae7100e19d13d9cbd0cb96c 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -12,7 +12,7 @@ FactoryGirl.define do
   factory :user, aliases: [:author, :assignee, :owner] do
     email { Faker::Internet.email }
     name
-    username 'john'
+    username { Faker::Internet.user_name }
     password "123456"
     password_confirmation { password }
 
diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb
index b6b1769fc80a930dae4916cbe9ebeafc0c1e8ce5..58698eec9f432a8e2edf0da2cfe76307ccda5f1a 100644
--- a/spec/mailers/notify_spec.rb
+++ b/spec/mailers/notify_spec.rb
@@ -169,9 +169,7 @@ describe Notify do
     end
 
     describe 'project access changed' do
-      let(:project) { create(:project,
-                             path: "Fuu",
-                             code: "Fuu") }
+      let(:project) { create(:project) }
       let(:user) { create(:user) }
       let(:users_project) { create(:users_project,
                                    project: project,
diff --git a/spec/observers/user_observer_spec.rb b/spec/observers/user_observer_spec.rb
index ea5cf7975b1f537ff9fb34c4168c5795ba62a2ec..4ba0f05df5da4ccf15aff679055e78769863a15a 100644
--- a/spec/observers/user_observer_spec.rb
+++ b/spec/observers/user_observer_spec.rb
@@ -13,7 +13,12 @@ describe UserObserver do
   end
 
   context 'when a new user is created' do
-    let(:user) { double(:user, id: 42, password: 'P@ssword!', name: 'John', email: 'u@mail.local', username: 'root') }
+    let(:user) { double(:user, id: 42,
+                        password: 'P@ssword!',
+                        name: 'John',
+                        email: 'u@mail.local',
+                        username: 'root',
+                        create_namespace: true) }
     let(:notification) { double :notification }
 
     it 'sends an email' do
diff --git a/spec/observers/users_project_observer_spec.rb b/spec/observers/users_project_observer_spec.rb
index cbe4224803371ffe451c918c1f1e5dfa4ff5db55..548f18938482d0a643a37503c7cd3b56d72f7018 100644
--- a/spec/observers/users_project_observer_spec.rb
+++ b/spec/observers/users_project_observer_spec.rb
@@ -2,9 +2,7 @@ require 'spec_helper'
 
 describe UsersProjectObserver do
   let(:user) { create(:user) }
-  let(:project) { create(:project,
-                         code: "Fuu",
-                         path: "Fuu" ) }
+  let(:project) { create(:project) }
   let(:users_project) { create(:users_project,
                                project: project,
                                user: user )}
diff --git a/spec/requests/admin/admin_hooks_spec.rb b/spec/requests/admin/admin_hooks_spec.rb
index 3f35b2fd37d58d8ebe9cb95207b080ac28686970..bc0586b2712ce4a0c2a3495357b52d8c038e2df4 100644
--- a/spec/requests/admin/admin_hooks_spec.rb
+++ b/spec/requests/admin/admin_hooks_spec.rb
@@ -2,9 +2,7 @@ require 'spec_helper'
 
 describe "Admin::Hooks" do
   before do
-    @project = create(:project,
-                      name: "LeGiT",
-                      code: "LGT")
+    @project = create(:project)
     login_as :admin
 
     @system_hook = create(:system_hook)
diff --git a/spec/requests/admin/admin_projects_spec.rb b/spec/requests/admin/admin_projects_spec.rb
index ad42f675b3c95a6e9d8f346e6a1ef0c6be736a00..c9ddf1f45346fb23f83c9939d1c334cec12f0684 100644
--- a/spec/requests/admin/admin_projects_spec.rb
+++ b/spec/requests/admin/admin_projects_spec.rb
@@ -39,8 +39,8 @@ describe "Admin::Projects" do
     end
 
     it "should have project edit page" do
-      page.should have_content("Project name")
-      page.should have_content("URL")
+      page.should have_content("Edit project")
+      page.should have_button("Save Project")
     end
 
     describe "Update project" do
@@ -60,39 +60,6 @@ describe "Admin::Projects" do
     end
   end
 
-  describe "GET /admin/projects/new" do
-    before do
-      visit admin_projects_path
-      click_link "New Project"
-    end
-
-    it "should be correct path" do
-      current_path.should == new_admin_project_path
-    end
-
-    it "should have labels for new project" do
-      page.should have_content("Project name is")
-    end
-  end
-
-  describe "POST /admin/projects" do
-    before do
-      visit new_admin_project_path
-      fill_in 'project_name', with: 'NewProject'
-      expect { click_button "Create project" }.to change { Project.count }.by(1)
-      @project = Project.last
-    end
-
-    it "should be correct path" do
-      current_path.should == admin_project_path(@project)
-    end
-
-    it "should show project" do
-      page.should have_content(@project.name)
-      page.should have_content(@project.path)
-    end
-  end
-
   describe "Add new team member" do
     before do
       @new_user = create(:user)
diff --git a/spec/requests/admin/admin_users_spec.rb b/spec/requests/admin/admin_users_spec.rb
index 9f43f07a476db7f73d1d79a0e45b3b970d57fee8..ca134c2d4f741b671cd165be67b4a76529043aae 100644
--- a/spec/requests/admin/admin_users_spec.rb
+++ b/spec/requests/admin/admin_users_spec.rb
@@ -23,6 +23,7 @@ describe "Admin::Users" do
       @password = "123ABC"
       visit new_admin_user_path
       fill_in "user_name", with: "Big Bang"
+      fill_in "user_username", with: "bang"
       fill_in "user_email", with: "bigbang@mail.com"
       fill_in "user_password", with: @password
       fill_in "user_password_confirmation", with: @password
diff --git a/spec/requests/api/milestones_spec.rb b/spec/requests/api/milestones_spec.rb
index 860825ab2dbf96ae2c2a187b990828a2b60ef616..dc96d46d89428f66462049c1ddaff1e01043cdf2 100644
--- a/spec/requests/api/milestones_spec.rb
+++ b/spec/requests/api/milestones_spec.rb
@@ -11,7 +11,7 @@ describe Gitlab::API do
 
   describe "GET /projects/:id/milestones" do
     it "should return project milestones" do
-      get api("/projects/#{project.code}/milestones", user)
+      get api("/projects/#{project.path}/milestones", user)
       response.status.should == 200
       json_response.should be_an Array
       json_response.first['title'].should == milestone.title
@@ -20,7 +20,7 @@ describe Gitlab::API do
 
   describe "GET /projects/:id/milestones/:milestone_id" do
     it "should return a project milestone by id" do
-      get api("/projects/#{project.code}/milestones/#{milestone.id}", user)
+      get api("/projects/#{project.path}/milestones/#{milestone.id}", user)
       response.status.should == 200
       json_response['title'].should == milestone.title
     end
@@ -28,7 +28,7 @@ describe Gitlab::API do
 
   describe "POST /projects/:id/milestones" do
     it "should create a new project milestone" do
-      post api("/projects/#{project.code}/milestones", user),
+      post api("/projects/#{project.path}/milestones", user),
         title: 'new milestone'
       response.status.should == 201
       json_response['title'].should == 'new milestone'
@@ -38,7 +38,7 @@ describe Gitlab::API do
 
   describe "PUT /projects/:id/milestones/:milestone_id" do
     it "should update a project milestone" do
-      put api("/projects/#{project.code}/milestones/#{milestone.id}", user),
+      put api("/projects/#{project.path}/milestones/#{milestone.id}", user),
         title: 'updated title'
       response.status.should == 200
       json_response['title'].should == 'updated title'
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb
index b0a023660518cccfa2a61e9f69836f0f60ec33c1..b4e2fbbdab8d6ea148911ead7f2729c3c6de926b 100644
--- a/spec/requests/api/projects_spec.rb
+++ b/spec/requests/api/projects_spec.rb
@@ -53,7 +53,6 @@ describe Gitlab::API do
 
     it "should assign attributes to project" do
       project = attributes_for(:project, {
-        path: project.name.parameterize,
         description: Faker::Lorem.sentence,
         default_branch: 'stable',
         issues_enabled: false,
@@ -257,7 +256,7 @@ describe Gitlab::API do
   describe "POST /projects/:id/snippets" do
     it "should create a new project snippet" do
       post api("/projects/#{project.path}/snippets", user),
-        title: 'api test', file_name: 'sample.rb', path: 'test'
+        title: 'api test', file_name: 'sample.rb', code: 'test'
       response.status.should == 201
       json_response['title'].should == 'api test'
     end
@@ -266,10 +265,10 @@ describe Gitlab::API do
   describe "PUT /projects/:id/snippets/:shippet_id" do
     it "should update an existing project snippet" do
       put api("/projects/#{project.path}/snippets/#{snippet.id}", user),
-        path: 'updated path'
+        code: 'updated code'
       response.status.should == 200
       json_response['title'].should == 'example'
-      snippet.reload.content.should == 'updated path'
+      snippet.reload.content.should == 'updated code'
     end
   end