diff --git a/features/steps/dashboard/dashboard_issues.rb b/features/steps/dashboard/dashboard_issues.rb
index a458acdae07158acd18da4712907ae5a07e3805e..1344edfa80ba7580e00ff024bde1a8c0aec11711 100644
--- a/features/steps/dashboard/dashboard_issues.rb
+++ b/features/steps/dashboard/dashboard_issues.rb
@@ -66,7 +66,7 @@ class DashboardIssues < Spinach::FeatureSteps
 
   def project
     @project ||= begin
-                   project =create :project_with_code
+                   project =create :project
                    project.team << [current_user, :master]
                    project
                  end
diff --git a/features/steps/dashboard/dashboard_merge_requests.rb b/features/steps/dashboard/dashboard_merge_requests.rb
index 73286532b936a6d7438c9caad5867f1ac04f5edf..62d84506c496e7fca52a250752c02eed3afdb12a 100644
--- a/features/steps/dashboard/dashboard_merge_requests.rb
+++ b/features/steps/dashboard/dashboard_merge_requests.rb
@@ -66,7 +66,7 @@ class DashboardMergeRequests < Spinach::FeatureSteps
 
   def project
     @project ||= begin
-                   project =create :project_with_code
+                   project =create :project
                    project.team << [current_user, :master]
                    project
                  end
diff --git a/features/steps/project/project_fork.rb b/features/steps/project/project_fork.rb
index 858c7d11b32ff1fe0f3e80ea0393015bcfb40527..b00903b3394fedd67dcaa8e2c1a3c96b376542d2 100644
--- a/features/steps/project/project_fork.rb
+++ b/features/steps/project/project_fork.rb
@@ -12,7 +12,7 @@ class ForkProject < Spinach::FeatureSteps
 
   step 'I am a member of project "Shop"' do
     @project = Project.find_by_name "Shop"
-    @project ||= create(:project_with_code, name: "Shop", group: create(:group))
+    @project ||= create(:project, name: "Shop", group: create(:group))
     @project.team << [@user, :reporter]
   end
 
@@ -26,7 +26,7 @@ class ForkProject < Spinach::FeatureSteps
     current_user.namespace ||= create(:namespace)
     current_user.namespace.should_not be_nil
     current_user.namespace.path.should_not be_nil
-    @my_project = create(:project_with_code, name: "Shop", namespace: current_user.namespace)
+    @my_project = create(:project, name: "Shop", namespace: current_user.namespace)
   end
 
   step 'I should see a "Name has already been taken" warning' do
diff --git a/features/steps/project/project_forked_merge_requests.rb b/features/steps/project/project_forked_merge_requests.rb
index d34aeac30bb2889415085022f1fe86ed78c6f3ab..57ab64395647e10adff0635d77b27594ebfd46f8 100644
--- a/features/steps/project/project_forked_merge_requests.rb
+++ b/features/steps/project/project_forked_merge_requests.rb
@@ -7,7 +7,7 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
 
   step 'I am a member of project "Shop"' do
     @project = Project.find_by_name "Shop"
-    @project ||= create(:project_with_code, name: "Shop")
+    @project ||= create(:project, name: "Shop")
     @project.team << [@user, :reporter]
   end
 
@@ -15,7 +15,7 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
     @forking_user = @user
     forked_project_link = build(:forked_project_link)
     @forked_project = Project.find_by_name "Forked Shop"
-    @forked_project ||= create(:source_project_with_code, name: "Forked Shop", forked_project_link: forked_project_link, creator_id: @forking_user.id , namespace: @forking_user.namespace)
+    @forked_project ||= create(:source_project, name: "Forked Shop", forked_project_link: forked_project_link, creator_id: @forking_user.id , namespace: @forking_user.namespace)
 
     forked_project_link.forked_from_project = @project
     forked_project_link.forked_to_project = @forked_project
diff --git a/features/steps/project/project_issue_tracker.rb b/features/steps/project/project_issue_tracker.rb
index a05d7a0bc3708e5e85e4c01a7aa5c21960d7d6e1..65e7e4de9df97639f74d6cb17010aff467bf3a69 100644
--- a/features/steps/project/project_issue_tracker.rb
+++ b/features/steps/project/project_issue_tracker.rb
@@ -5,7 +5,7 @@ class ProjectIssueTracker < Spinach::FeatureSteps
 
   step 'project "Shop" has issues enabled' do
     @project = Project.find_by_name "Shop"
-    @project ||= create(:project_with_code, name: "Shop", namespace: @user.namespace)
+    @project ||= create(:project, name: "Shop", namespace: @user.namespace)
     @project.issues_enabled = true
   end
 
diff --git a/features/steps/project/project_markdown_render.rb b/features/steps/project/project_markdown_render.rb
index da044e46ebd2320ff0b9853efc5dabf7563114a6..bef62c61bc4a7a867fc61e9a4d1d80d39e740085 100644
--- a/features/steps/project/project_markdown_render.rb
+++ b/features/steps/project/project_markdown_render.rb
@@ -4,7 +4,7 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
 
   And 'I own project "Delta"' do
     @project = Project.find_by_name "Delta"
-    @project ||= create(:project_with_code, name: "Delta", namespace: @user.namespace)
+    @project ||= create(:project, name: "Delta", namespace: @user.namespace)
     @project.team << [@user, :master]
   end
 
diff --git a/features/steps/project/redirects.rb b/features/steps/project/redirects.rb
index 4ac53075704281407fa200f82a351d8449a6e0ef..8015ae833df3b6b508c99cb9eb7bd92c9261291b 100644
--- a/features/steps/project/redirects.rb
+++ b/features/steps/project/redirects.rb
@@ -4,7 +4,7 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps
   include SharedProject
 
   step 'public project "Community"' do
-    create :project_with_code, name: 'Community', visibility_level: Gitlab::VisibilityLevel::PUBLIC
+    create :project, name: 'Community', visibility_level: Gitlab::VisibilityLevel::PUBLIC
   end
 
   step 'private project "Enterprise"' do
diff --git a/features/steps/public/projects_feature.rb b/features/steps/public/projects_feature.rb
index 47e52f47d07b6d7de0c9aa2140c636dcb7fc0a80..2292fdad6fb756af33bcc088e935b170472feb45 100644
--- a/features/steps/public/projects_feature.rb
+++ b/features/steps/public/projects_feature.rb
@@ -25,7 +25,7 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
   end
 
   step 'public project "Community"' do
-    create :project_with_code, name: 'Community', visibility_level: Gitlab::VisibilityLevel::PUBLIC
+    create :project, name: 'Community', visibility_level: Gitlab::VisibilityLevel::PUBLIC
   end
 
   step 'public empty project "Empty Public Project"' do
@@ -76,7 +76,7 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
   end
 
   step 'internal project "Internal"' do
-    create :project_with_code, name: 'Internal', visibility_level: Gitlab::VisibilityLevel::INTERNAL
+    create :project, name: 'Internal', visibility_level: Gitlab::VisibilityLevel::INTERNAL
   end
 
   step 'I should see project "Internal"' do
diff --git a/features/steps/shared/project.rb b/features/steps/shared/project.rb
index 3dc4932a09a496c105d3a86d6cd73dac2d1ad741..97b036ae7438a2660e492fc5470779575df332d7 100644
--- a/features/steps/shared/project.rb
+++ b/features/steps/shared/project.rb
@@ -3,21 +3,21 @@ module SharedProject
 
   # Create a project without caring about what it's called
   And "I own a project" do
-    @project = create(:project_with_code, namespace: @user.namespace)
+    @project = create(:project, namespace: @user.namespace)
     @project.team << [@user, :master]
   end
 
   # Create a specific project called "Shop"
   And 'I own project "Shop"' do
     @project = Project.find_by_name "Shop"
-    @project ||= create(:project_with_code, name: "Shop", namespace: @user.namespace)
+    @project ||= create(:project, name: "Shop", namespace: @user.namespace)
     @project.team << [@user, :master]
   end
 
   # Create another specific project called "Forum"
   And 'I own project "Forum"' do
     @project = Project.find_by_name "Forum"
-    @project ||= create(:project_with_code, name: "Forum", namespace: @user.namespace, path: 'forum_project')
+    @project ||= create(:project, name: "Forum", namespace: @user.namespace, path: 'forum_project')
     @project.team << [@user, :master]
   end
 
diff --git a/spec/controllers/blob_controller_spec.rb b/spec/controllers/blob_controller_spec.rb
index 479d8fc1a1de0faf75cb76766a9443469f92ec4e..cea6922e1c3df66ace929748d42e2acd0a17cef6 100644
--- a/spec/controllers/blob_controller_spec.rb
+++ b/spec/controllers/blob_controller_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe Projects::BlobController do
-  let(:project) { create(:project_with_code) }
+  let(:project) { create(:project) }
   let(:user)    { create(:user) }
 
   before do
diff --git a/spec/controllers/commit_controller_spec.rb b/spec/controllers/commit_controller_spec.rb
index fdf0884f4e260c3053fbc880d340c28aa1b412e6..f5822157ea4152f4af914e2edf165c8ffbcb0212 100644
--- a/spec/controllers/commit_controller_spec.rb
+++ b/spec/controllers/commit_controller_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe Projects::CommitController do
-  let(:project) { create(:project_with_code) }
+  let(:project) { create(:project) }
   let(:user)    { create(:user) }
   let(:commit)  { project.repository.commit("master") }
 
diff --git a/spec/controllers/commits_controller_spec.rb b/spec/controllers/commits_controller_spec.rb
index 8263afc97a2f988e32ecfcafefcffeaeb17fd90d..fbf4f29acfd693000cf4537bc8b19f5b610ec1d3 100644
--- a/spec/controllers/commits_controller_spec.rb
+++ b/spec/controllers/commits_controller_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe Projects::CommitsController do
-  let(:project) { create(:project_with_code) }
+  let(:project) { create(:project) }
   let(:user) { create(:user) }
 
   before do
diff --git a/spec/controllers/merge_requests_controller_spec.rb b/spec/controllers/merge_requests_controller_spec.rb
index f237f358452b8a9bcdc4ecf11d2017c435efd2f2..1502bded97f4490c4a36992b5e5cc7e7c14bf041 100644
--- a/spec/controllers/merge_requests_controller_spec.rb
+++ b/spec/controllers/merge_requests_controller_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe Projects::MergeRequestsController do
-  let(:project) { create(:project_with_code) }
+  let(:project) { create(:project) }
   let(:user)    { create(:user) }
   let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project, target_branch: "stable", source_branch: "master") }
 
diff --git a/spec/controllers/tree_controller_spec.rb b/spec/controllers/tree_controller_spec.rb
index bb1232e6264b9f46445f854d02883868d938944b..479118a346527a5803d8817551838ba4af951111 100644
--- a/spec/controllers/tree_controller_spec.rb
+++ b/spec/controllers/tree_controller_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe Projects::TreeController do
-  let(:project) { create(:project_with_code) }
+  let(:project) { create(:project) }
   let(:user)    { create(:user) }
 
   before do
diff --git a/spec/factories.rb b/spec/factories.rb
index daf841736484377933a78c7f88c518fc1a02f924..bf74063a30dbb3ed40c641d88e35587fe016b554 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -27,43 +27,16 @@ FactoryGirl.define do
     factory :admin, traits: [:admin]
   end
 
-  factory :project do
+  factory :empty_project, class: 'Project' do
     sequence(:name) { |n| "project#{n}" }
     path { name.downcase.gsub(/\s/, '_') }
     namespace
     creator
-
-    trait :source do
-      sequence(:name) { |n| "source project#{n}" }
-    end
-    trait :target do
-      sequence(:name) { |n| "target project#{n}" }
-    end
-
-    factory :source_project, traits: [:source]
-    factory :target_project, traits: [:target]
   end
 
-
-  factory :redmine_project, parent: :project do
-    issues_tracker { "redmine" }
-    issues_tracker_id { "project_name_in_redmine" }
-  end
-
-  factory :project_with_code, parent: :project do
+  factory :project, parent: :empty_project do
     path { 'gitlabhq' }
 
-    trait :source_path do
-      path { 'source_gitlabhq' }
-    end
-
-    trait :target_path do
-      path { 'target_gitlabhq' }
-    end
-
-    factory :source_project_with_code, traits: [:source, :source_path]
-    factory :target_project_with_code, traits: [:target, :target_path]
-
     after :create do |project|
       TestEnv.clear_repo_dir(project.namespace, project.path)
       TestEnv.reset_satellite_dir
@@ -71,6 +44,11 @@ FactoryGirl.define do
     end
   end
 
+  factory :redmine_project, parent: :project do
+    issues_tracker { "redmine" }
+    issues_tracker_id { "project_name_in_redmine" }
+  end
+
   factory :group do
     sequence(:name) { |n| "group#{n}" }
     path { name.downcase.gsub(/\s/, '_') }
@@ -109,25 +87,12 @@ FactoryGirl.define do
   factory :merge_request do
     title
     author
-    source_project factory: :source_project_with_code
-    target_project factory: :target_project_with_code
+    source_project factory: :project
+    target_project { source_project }
     source_branch "master"
     target_branch "stable"
 
-    # pick 3 commits "at random" (from bcf03b5d~3 to bcf03b5d)
     trait :with_diffs do
-      target_branch "master" # pretend bcf03b5d~3
-      source_branch "stable" # pretend bcf03b5d
-      st_commits do
-        [
-          source_project.repository.commit('bcf03b5d').to_hash,
-          source_project.repository.commit('bcf03b5d~1').to_hash,
-          source_project.repository.commit('bcf03b5d~2').to_hash
-        ]
-      end
-      st_diffs do
-        source_project.repo.diff("bcf03b5d~3", "bcf03b5d")
-      end
     end
 
     trait :closed do
@@ -156,7 +121,7 @@ FactoryGirl.define do
     factory :note_on_merge_request_with_attachment, traits: [:on_merge_request, :with_attachment]
 
     trait :on_commit do
-      project factory: :project_with_code
+      project factory: :project
       commit_id "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a"
       noteable_type "Commit"
     end
@@ -166,7 +131,7 @@ FactoryGirl.define do
     end
 
     trait :on_merge_request do
-      project factory: :project_with_code
+      project factory: :project
       noteable_id 1
       noteable_type "MergeRequest"
     end
diff --git a/spec/features/gitlab_flavored_markdown_spec.rb b/spec/features/gitlab_flavored_markdown_spec.rb
index 2ea569a6208cbd0cc3a64eccfbaaec1cc29bd5d0..a507f0314c6bb2492efe395179007de0e08f9180 100644
--- a/spec/features/gitlab_flavored_markdown_spec.rb
+++ b/spec/features/gitlab_flavored_markdown_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe "GitLab Flavored Markdown" do
-  let(:project) { create(:project_with_code) }
+  let(:project) { create(:project) }
   let(:issue) { create(:issue, project: project) }
   let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
   let(:fred) do
diff --git a/spec/features/notes_on_merge_requests_spec.rb b/spec/features/notes_on_merge_requests_spec.rb
index b534548a1229263221f1648f53c8c9fce497e9df..7b91853b13c06f844ddae17929acdf4322fae884 100644
--- a/spec/features/notes_on_merge_requests_spec.rb
+++ b/spec/features/notes_on_merge_requests_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe "On a merge request", js: true do
-  let!(:project) { create(:project_with_code) }
+  let!(:project) { create(:project) }
   let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
   let!(:note) { create(:note_on_merge_request_with_attachment,  project: project) }
 
@@ -135,7 +135,7 @@ describe "On a merge request", js: true do
 end
 
 describe "On a merge request diff", js: true, focus: true do
-  let!(:project) { create(:source_project_with_code) }
+  let!(:project) { create(:source_project) }
   let!(:merge_request) { create(:merge_request_with_diffs, source_project: project, target_project: project) }
 
   before do
@@ -185,7 +185,7 @@ describe "On a merge request diff", js: true, focus: true do
   end
 
   describe "with muliple note forms" do
-    let!(:project) { create(:source_project_with_code) }
+    let!(:project) { create(:source_project) }
     let!(:merge_request) { create(:merge_request_with_diffs, source_project: project, target_project: project) }
 
     before do
diff --git a/spec/features/security/project/internal_access_spec.rb b/spec/features/security/project/internal_access_spec.rb
index 5abccd259d424c2a4d401034a7ae429956d3c729..8bb1e259efa07a29ec680b0ef6be3ef0c9b4e301 100644
--- a/spec/features/security/project/internal_access_spec.rb
+++ b/spec/features/security/project/internal_access_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe "Internal Project Access" do
-  let(:project) { create(:project_with_code) }
+  let(:project) { create(:project) }
 
   let(:master) { create(:user) }
   let(:guest) { create(:user) }
diff --git a/spec/features/security/project/private_access_spec.rb b/spec/features/security/project/private_access_spec.rb
index 481d8cec41698e4e9a0cd121d1bfa7b03333544c..0402ff3973528b433f6384b7b0e995872eec07e3 100644
--- a/spec/features/security/project/private_access_spec.rb
+++ b/spec/features/security/project/private_access_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe "Private Project Access" do
-  let(:project) { create(:project_with_code) }
+  let(:project) { create(:project) }
 
   let(:master)   { create(:user) }
   let(:guest)    { create(:user) }
diff --git a/spec/features/security/project/public_access_spec.rb b/spec/features/security/project/public_access_spec.rb
index 3f1016473f5c41f7ea96edc412c8b94e2d9e8363..7e6a39fad69faa0c640ce3993f5330b0985ac7e9 100644
--- a/spec/features/security/project/public_access_spec.rb
+++ b/spec/features/security/project/public_access_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe "Public Project Access" do
-  let(:project) { create(:project_with_code) }
+  let(:project) { create(:project) }
 
   let(:master) { create(:user) }
   let(:guest) { create(:user) }
diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb
index 33e69d4326c47acdb62ca354293b8ac02bc4fe24..088a6a09bc8793c40349572361d21467dfcc1615 100644
--- a/spec/helpers/gitlab_markdown_helper_spec.rb
+++ b/spec/helpers/gitlab_markdown_helper_spec.rb
@@ -4,7 +4,7 @@ describe GitlabMarkdownHelper do
   include ApplicationHelper
   include IssuesHelper
 
-  let!(:project) { create(:project_with_code) }
+  let!(:project) { create(:project) }
 
   let(:user)          { create(:user, username: 'gfm') }
   let(:commit)        { project.repository.commit }
diff --git a/spec/helpers/search_helper_spec.rb b/spec/helpers/search_helper_spec.rb
index d04945dfe35535669912e934aaedb5c2636e6da1..733f2754727329d401f795036c0bd3f2559b3840 100644
--- a/spec/helpers/search_helper_spec.rb
+++ b/spec/helpers/search_helper_spec.rb
@@ -43,7 +43,7 @@ describe SearchHelper do
       end
 
       context "with a current project" do
-        before { @project = create(:project_with_code) }
+        before { @project = create(:project) }
 
         it "includes project-specific sections" do
           search_autocomplete_opts("Files").size.should == 1
diff --git a/spec/lib/gitlab/reference_extractor_spec.rb b/spec/lib/gitlab/reference_extractor_spec.rb
index 7d805f8c72a7e5973328008bfa05c38e78eb9c52..19259a8b79c712c7927063d0cef0f43b3de985e6 100644
--- a/spec/lib/gitlab/reference_extractor_spec.rb
+++ b/spec/lib/gitlab/reference_extractor_spec.rb
@@ -43,7 +43,7 @@ describe Gitlab::ReferenceExtractor do
   end
 
   context 'with a project' do
-    let(:project) { create(:project_with_code) }
+    let(:project) { create(:project) }
 
     it 'accesses valid user objects on the project team' do
       @u_foo = create(:user, username: 'foo')
diff --git a/spec/lib/gitlab/satellite/action_spec.rb b/spec/lib/gitlab/satellite/action_spec.rb
index 5e0a825c3c362983fac9b1e3e4603af3ea9596c5..d65e7c42b7e8a6433a9e99c485b20e992af6587c 100644
--- a/spec/lib/gitlab/satellite/action_spec.rb
+++ b/spec/lib/gitlab/satellite/action_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe 'Gitlab::Satellite::Action' do
-  let(:project) { create(:project_with_code) }
+  let(:project) { create(:project) }
   let(:user) { create(:user) }
 
   describe '#prepare_satellite!' do
diff --git a/spec/lib/gitlab/satellite/merge_action_spec.rb b/spec/lib/gitlab/satellite/merge_action_spec.rb
index d2f026f96e88590267a1736495b9de376ea054a7..1808935728d91938a6c759254bc7e4ce277feba9 100644
--- a/spec/lib/gitlab/satellite/merge_action_spec.rb
+++ b/spec/lib/gitlab/satellite/merge_action_spec.rb
@@ -12,7 +12,7 @@ describe 'Gitlab::Satellite::MergeAction' do
     @close_commit2 = ['scss_refactoring', 'f0f14c8eaba69ebddd766498a9d0b0e79becd633']
   end
 
-  let(:project) { create(:project_with_code) }
+  let(:project) { create(:project) }
   let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
   let(:merge_request_fork) { create(:merge_request) }
 
diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb
index b1e5348681686452639f0bb1e9a3d9947631872d..d53dc17d9774d2bbacd8326b8572c0ca865ebe72 100644
--- a/spec/mailers/notify_spec.rb
+++ b/spec/mailers/notify_spec.rb
@@ -5,7 +5,7 @@ describe Notify do
   include EmailSpec::Matchers
 
   let(:recipient) { create(:user, email: 'recipient@example.com') }
-  let(:project) { create(:project_with_code) }
+  let(:project) { create(:project) }
 
   shared_examples 'a multiple recipients email' do
     it 'is sent to the given recipient' do
diff --git a/spec/models/assembla_service_spec.rb b/spec/models/assembla_service_spec.rb
index 0b961c81ac115d84e5a39bdc3c3cd701370c4018..ded6d87c33ef2c41706fa9faf52ab40b7c8b523c 100644
--- a/spec/models/assembla_service_spec.rb
+++ b/spec/models/assembla_service_spec.rb
@@ -25,7 +25,7 @@ describe AssemblaService do
 
   describe "Execute" do
     let(:user)    { create(:user) }
-    let(:project) { create(:project_with_code) }
+    let(:project) { create(:project) }
 
     before do
       @assembla_service = AssemblaService.new
diff --git a/spec/models/commit_spec.rb b/spec/models/commit_spec.rb
index fa556f94a1d70834e627754dc37fdc9b54c1d18c..d8ab171d3eea09e95b27439ce513928f81997edb 100644
--- a/spec/models/commit_spec.rb
+++ b/spec/models/commit_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe Commit do
-  let(:project) { create :project_with_code }
+  let(:project) { create :project }
   let(:commit) { project.repository.commit }
 
   describe '#title' do
diff --git a/spec/models/flowdock_service_spec.rb b/spec/models/flowdock_service_spec.rb
index 636aba2f0124ecbe3211da2e2651a4e5f82f44cf..cd553b33ad71f95fd4ede3127bfd6b8f5549bfe2 100644
--- a/spec/models/flowdock_service_spec.rb
+++ b/spec/models/flowdock_service_spec.rb
@@ -25,7 +25,7 @@ describe FlowdockService do
 
   describe "Execute" do
     let(:user)    { create(:user) }
-    let(:project) { create(:project_with_code) }
+    let(:project) { create(:project) }
 
     before do
       @flowdock_service = FlowdockService.new
diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb
index b86603dd4ac822027f88988fb1817e6cf875e5f2..7a00ee83ba4575fb8522d52cf84143e15a18b0ab 100644
--- a/spec/models/note_spec.rb
+++ b/spec/models/note_spec.rb
@@ -206,7 +206,7 @@ describe Note do
   end
 
   describe '#create_cross_reference_note' do
-    let(:project)    { create(:project_with_code) }
+    let(:project)    { create(:project) }
     let(:author)     { create(:user) }
     let(:issue)      { create(:issue, project: project) }
     let(:mergereq)   { create(:merge_request, target_project: project) }
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 373accfe4120f0a96a73a847024adb112549bf90..9449782425fcc7d9ef36b52b3c56768332ec11a6 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -128,7 +128,7 @@ describe Project do
   end
 
   describe :update_merge_requests do
-    let(:project) { create(:project_with_code) }
+    let(:project) { create(:project) }
 
     before do
       @merge_request = create(:merge_request, source_project: project, target_project: project)
@@ -237,7 +237,7 @@ describe Project do
   end
 
   describe :open_branches do
-    let(:project) { create(:project_with_code) }
+    let(:project) { create(:project) }
 
     before do
       project.protected_branches.create(name: 'master')
diff --git a/spec/models/service_spec.rb b/spec/models/service_spec.rb
index 667c80bcf19e9d6f31ed8db868f47883efa3ced2..b1b837c2263005ae9f9a14857f09cdd916725723 100644
--- a/spec/models/service_spec.rb
+++ b/spec/models/service_spec.rb
@@ -49,7 +49,7 @@ describe Service do
     end
 
     describe "With commits" do
-      let (:project) { create :project_with_code }
+      let (:project) { create :project }
 
       before do
         @service.stub(
diff --git a/spec/observers/merge_request_observer_spec.rb b/spec/observers/merge_request_observer_spec.rb
index a450b4d518ea2d4a99c2ab4a58c89b37a231758d..6ad7c4d81da0c9c738643d22f575240f9865410b 100644
--- a/spec/observers/merge_request_observer_spec.rb
+++ b/spec/observers/merge_request_observer_spec.rb
@@ -4,16 +4,17 @@ describe MergeRequestObserver do
   let(:some_user) { create :user }
   let(:assignee) { create :user }
   let(:author) { create :user }
+  let(:project) { create :project }
   let(:mr_mock) { double(:merge_request, id: 42, assignee: assignee, author: author).as_null_object }
-  let(:assigned_mr) { create(:merge_request, assignee: assignee, author: author, target_project: create(:project)) }
-  let(:unassigned_mr) { create(:merge_request, author: author, target_project: create(:project)) }
-  let(:closed_assigned_mr) { create(:closed_merge_request, assignee: assignee, author: author, target_project: create(:project)) }
-  let(:closed_unassigned_mr) { create(:closed_merge_request, author: author, target_project: create(:project)) }
+  let(:assigned_mr) { create(:merge_request, assignee: assignee, author: author, source_project: project) }
+  let(:unassigned_mr) { create(:merge_request, author: author, source_project: project) }
+  let(:closed_assigned_mr) { create(:closed_merge_request, assignee: assignee, author: author, source_project: project) }
+  let(:closed_unassigned_mr) { create(:closed_merge_request, author: author, source_project: project) }
 
   before { subject.stub(:current_user).and_return(some_user) }
   before { subject.stub(notification: double('NotificationService').as_null_object) }
   before { mr_mock.stub(:author_id) }
-  before { mr_mock.stub(:target_project) }
+  before { mr_mock.stub(:source_project) }
   before { mr_mock.stub(:source_project) }
   before { mr_mock.stub(:project) }
   before { mr_mock.stub(:create_cross_references!).and_return(true) }
@@ -46,7 +47,7 @@ describe MergeRequestObserver do
     end
 
     it 'is called when a merge request is changed' do
-      changed = create(:merge_request, source_project: create(:project))
+      changed = create(:merge_request, source_project: project)
       subject.should_receive(:after_update)
 
       MergeRequest.observers.enable :merge_request_observer do
@@ -81,13 +82,13 @@ describe MergeRequestObserver do
   context '#after_close' do
     context 'a status "closed"' do
       it 'note is created if the merge request is being closed' do
-        Note.should_receive(:create_status_change_note).with(assigned_mr, assigned_mr.target_project, some_user, 'closed', nil)
+        Note.should_receive(:create_status_change_note).with(assigned_mr, assigned_mr.source_project, some_user, 'closed', nil)
 
         assigned_mr.close
       end
 
       it 'notification is delivered only to author if the merge request is being closed' do
-        Note.should_receive(:create_status_change_note).with(unassigned_mr, unassigned_mr.target_project, some_user, 'closed', nil)
+        Note.should_receive(:create_status_change_note).with(unassigned_mr, unassigned_mr.source_project, some_user, 'closed', nil)
 
         unassigned_mr.close
       end
@@ -97,13 +98,13 @@ describe MergeRequestObserver do
   context '#after_reopen' do
     context 'a status "reopened"' do
       it 'note is created if the merge request is being reopened' do
-        Note.should_receive(:create_status_change_note).with(closed_assigned_mr, closed_assigned_mr.target_project, some_user, 'reopened', nil)
+        Note.should_receive(:create_status_change_note).with(closed_assigned_mr, closed_assigned_mr.source_project, some_user, 'reopened', nil)
 
         closed_assigned_mr.reopen
       end
 
       it 'notification is delivered only to author if the merge request is being reopened' do
-        Note.should_receive(:create_status_change_note).with(closed_unassigned_mr, closed_unassigned_mr.target_project, some_user, 'reopened', nil)
+        Note.should_receive(:create_status_change_note).with(closed_unassigned_mr, closed_unassigned_mr.source_project, some_user, 'reopened', nil)
 
         closed_unassigned_mr.reopen
       end
@@ -118,20 +119,13 @@ describe MergeRequestObserver do
       it { @event.project.should == project }
     end
 
-    let(:project) { create(:project) }
     before do
-      TestEnv.enable_observers
-      @merge_request = create(:merge_request, source_project: project, target_project: project)
+      @merge_request = create(:merge_request, source_project: project, source_project: project)
       @event = Event.last
     end
 
-    after do
-      TestEnv.disable_observers
-    end
-
     it_should_be_valid_event
     it { @event.action.should == Event::CREATED }
     it { @event.target.should == @merge_request }
   end
-
 end
diff --git a/spec/requests/api/files_spec.rb b/spec/requests/api/files_spec.rb
index 2d1f8df47dd98fe33946974b7db6035a80e293a1..acef7df87771d75f5d0b4a65abd7c3e261cd6db9 100644
--- a/spec/requests/api/files_spec.rb
+++ b/spec/requests/api/files_spec.rb
@@ -6,7 +6,7 @@ describe API::API do
   after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
 
   let(:user) { create(:user) }
-  let!(:project) { create(:project_with_code, namespace: user.namespace ) }
+  let!(:project) { create(:project, namespace: user.namespace ) }
   before { project.team << [user, :developer] }
 
   describe "POST /projects/:id/repository/files" do
diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb
index f31b4da90cd320f9e2273e1c7ada14eca894e72e..908f73be85422aaff558943f518f58adc0496118 100644
--- a/spec/requests/api/merge_requests_spec.rb
+++ b/spec/requests/api/merge_requests_spec.rb
@@ -5,7 +5,7 @@ describe API::API do
   before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
   after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
   let(:user) { create(:user) }
-  let!(:project) {create(:project_with_code, creator_id: user.id, namespace: user.namespace) }
+  let!(:project) {create(:project, creator_id: user.id, namespace: user.namespace) }
   let!(:merge_request) { create(:merge_request, author: user, assignee: user, source_project: project, target_project: project, title: "Test") }
   before {
     project.team << [user, :reporters]
@@ -80,8 +80,8 @@ describe API::API do
     context 'forked projects' do
       let!(:user2) {create(:user)}
       let!(:forked_project_link) { build(:forked_project_link) }
-      let!(:fork_project) {  create(:source_project_with_code, forked_project_link: forked_project_link,  namespace: user2.namespace, creator_id: user2.id)  }
-      let!(:unrelated_project) {  create(:target_project_with_code,  namespace: user2.namespace, creator_id: user2.id)  }
+      let!(:fork_project) {  create(:source_project, forked_project_link: forked_project_link,  namespace: user2.namespace, creator_id: user2.id)  }
+      let!(:unrelated_project) {  create(:target_project,  namespace: user2.namespace, creator_id: user2.id)  }
 
       before :each do |each|
         fork_project.team << [user2, :reporters]
diff --git a/spec/requests/api/project_hooks_spec.rb b/spec/requests/api/project_hooks_spec.rb
index beccd61866e8d75eb147e5088175b61e37f9d7c6..c8ace0b9462619ba25593954769c1185ca30ee9d 100644
--- a/spec/requests/api/project_hooks_spec.rb
+++ b/spec/requests/api/project_hooks_spec.rb
@@ -7,7 +7,7 @@ describe API::API, 'ProjectHooks' do
 
   let(:user) { create(:user) }
   let(:user3) { create(:user) }
-  let!(:project) { create(:project_with_code, creator_id: user.id, namespace: user.namespace) }
+  let!(:project) { create(:project, creator_id: user.id, namespace: user.namespace) }
   let!(:hook) { create(:project_hook, project: project, url: "http://example.com") }
 
   before do
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb
index 8e0b9067672f5f357220725e7a18e5e90dc39609..342587ba5d6086513ea417d482cc5c3507502a8b 100644
--- a/spec/requests/api/projects_spec.rb
+++ b/spec/requests/api/projects_spec.rb
@@ -9,14 +9,14 @@ describe API::API do
   let(:user2) { create(:user) }
   let(:user3) { create(:user) }
   let(:admin) { create(:admin) }
-  let!(:project) { create(:project_with_code, creator_id: user.id, namespace: user.namespace) }
-  let!(:snippet) { create(:project_snippet, author: user, project: project, title: 'example') }
-  let!(:users_project) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) }
-  let!(:users_project2) { create(:users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER) }
-
-  before { project.team << [user, :reporter] }
+  let(:project) { create(:project, creator_id: user.id, namespace: user.namespace) }
+  let(:snippet) { create(:project_snippet, author: user, project: project, title: 'example') }
+  let(:users_project) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) }
+  let(:users_project2) { create(:users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER) }
 
   describe "GET /projects" do
+    before { project }
+
     context "when unauthenticated" do
       it "should return authentication error" do
         get api("/projects")
@@ -36,6 +36,8 @@ describe API::API do
   end
 
   describe "GET /projects/all" do
+    before { project }
+
     context "when unauthenticated" do
       it "should return authentication error" do
         get api("/projects/all")
@@ -174,6 +176,7 @@ describe API::API do
   end
 
   describe "POST /projects/user/:id" do
+    before { project }
     before { admin }
 
     it "should create new project without path" do
@@ -255,6 +258,8 @@ describe API::API do
   end
 
   describe "GET /projects/:id" do
+    before { project }
+
     it "should return a project by id" do
       get api("/projects/#{project.id}", user)
       response.status.should == 200
@@ -282,6 +287,8 @@ describe API::API do
   end
 
   describe "GET /projects/:id/events" do
+    before { users_project }
+
     it "should return a project events" do
       get api("/projects/#{project.id}/events", user)
       response.status.should == 200
@@ -305,6 +312,9 @@ describe API::API do
   end
 
   describe "GET /projects/:id/members" do
+    before { users_project }
+    before { users_project2 }
+
     it "should return project team members" do
       get api("/projects/#{project.id}/members", user)
       response.status.should == 200
@@ -328,6 +338,8 @@ describe API::API do
   end
 
   describe "GET /projects/:id/members/:user_id" do
+    before { users_project }
+
     it "should return project team member" do
       get api("/projects/#{project.id}/members/#{user.id}", user)
       response.status.should == 200
@@ -383,6 +395,8 @@ describe API::API do
   end
 
   describe "PUT /projects/:id/members/:user_id" do
+    before { users_project2 }
+
     it "should update project team member" do
       put api("/projects/#{project.id}/members/#{user3.id}", user), access_level: UsersProject::MASTER
       response.status.should == 200
@@ -407,6 +421,9 @@ describe API::API do
   end
 
   describe "DELETE /projects/:id/members/:user_id" do
+    before { users_project }
+    before { users_project2 }
+
     it "should remove user from project team" do
       expect {
         delete api("/projects/#{project.id}/members/#{user3.id}", user)
@@ -425,9 +442,7 @@ describe API::API do
       delete api("/projects/#{project.id}/members/#{user3.id}", user)
       response.status.should == 200
     end
-  end
 
-  describe "DELETE /projects/:id/members/:user_id" do
     it "should return 200 OK when the user was not member" do
       expect {
         delete api("/projects/#{project.id}/members/1000000", user)
@@ -439,6 +454,8 @@ describe API::API do
   end
 
   describe "GET /projects/:id/snippets" do
+    before { snippet }
+
     it "should return an array of project snippets" do
       get api("/projects/#{project.id}/snippets", user)
       response.status.should == 200
@@ -505,6 +522,8 @@ describe API::API do
   end
 
   describe "DELETE /projects/:id/snippets/:snippet_id" do
+    before { snippet }
+
     it "should delete existing project snippet" do
       expect {
         delete api("/projects/#{project.id}/snippets/#{snippet.id}", user)
@@ -657,15 +676,15 @@ describe API::API do
 
   describe "GET /projects/search/:query" do
     let!(:query) { 'query'}
-    let!(:search) { create(:project, name: query, creator_id: user.id, namespace: user.namespace) }
-    let!(:pre) { create(:project, name: "pre_#{query}", creator_id: user.id, namespace: user.namespace) }
-    let!(:post) { create(:project, name: "#{query}_post", creator_id: user.id, namespace: user.namespace) }
-    let!(:pre_post) { create(:project, name: "pre_#{query}_post", creator_id: user.id, namespace: user.namespace) }
-    let!(:unfound) { create(:project, name: 'unfound', creator_id: user.id, namespace: user.namespace) }
-    let!(:internal) { create(:project, name: "internal #{query}", visibility_level: Gitlab::VisibilityLevel::INTERNAL) }
-    let!(:unfound_internal) { create(:project, name: 'unfound internal', visibility_level: Gitlab::VisibilityLevel::INTERNAL) }
-    let!(:public) { create(:project, name: "public #{query}", visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
-    let!(:unfound_public) { create(:project, name: 'unfound public', visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
+    let!(:search)           { create(:empty_project, name: query, creator_id: user.id, namespace: user.namespace) }
+    let!(:pre)              { create(:empty_project, name: "pre_#{query}", creator_id: user.id, namespace: user.namespace) }
+    let!(:post)             { create(:empty_project, name: "#{query}_post", creator_id: user.id, namespace: user.namespace) }
+    let!(:pre_post)         { create(:empty_project, name: "pre_#{query}_post", creator_id: user.id, namespace: user.namespace) }
+    let!(:unfound)          { create(:empty_project, name: 'unfound', creator_id: user.id, namespace: user.namespace) }
+    let!(:internal)         { create(:empty_project, name: "internal #{query}", visibility_level: Gitlab::VisibilityLevel::INTERNAL) }
+    let!(:unfound_internal) { create(:empty_project, name: 'unfound internal', visibility_level: Gitlab::VisibilityLevel::INTERNAL) }
+    let!(:public)           { create(:empty_project, name: "public #{query}", visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
+    let!(:unfound_public)   { create(:empty_project, name: 'unfound public', visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
 
     context "when unauthenticated" do
       it "should return authentication error" do
diff --git a/spec/requests/api/repositories_spec.rb b/spec/requests/api/repositories_spec.rb
index f73ac4372b29504d47caa5b282e45ab94fb6a6e7..4700872825274412a3df756fcfc5277d4162f913 100644
--- a/spec/requests/api/repositories_spec.rb
+++ b/spec/requests/api/repositories_spec.rb
@@ -8,7 +8,7 @@ describe API::API do
 
   let(:user) { create(:user) }
   let(:user2) { create(:user) }
-  let!(:project) { create(:project_with_code, creator_id: user.id) }
+  let!(:project) { create(:project, creator_id: user.id) }
   let!(:master) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) }
   let!(:guest) { create(:users_project, user: user2, project: project, project_access: UsersProject::GUEST) }
 
diff --git a/spec/requests/api/services_spec.rb b/spec/requests/api/services_spec.rb
index e2fd945bad3259aa3ad4614902004e61ef899db3..aecd18bc14a4e45d3a8051e177277b468ba1fc87 100644
--- a/spec/requests/api/services_spec.rb
+++ b/spec/requests/api/services_spec.rb
@@ -6,7 +6,7 @@ describe API::API do
   after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
 
   let(:user) { create(:user) }
-  let(:project) {create(:project_with_code, creator_id: user.id, namespace: user.namespace) }
+  let(:project) {create(:project, creator_id: user.id, namespace: user.namespace) }
 
   describe "POST /projects/:id/services/gitlab-ci" do
     it "should update gitlab-ci settings" do
diff --git a/spec/services/git_push_service_spec.rb b/spec/services/git_push_service_spec.rb
index b46022fb2da0b7d7c46943f57999a0256fc46d89..90738c681fa0a9d4328d9ad5078e6cb0712eb4ba 100644
--- a/spec/services/git_push_service_spec.rb
+++ b/spec/services/git_push_service_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 describe GitPushService do
   let (:user)          { create :user }
-  let (:project)       { create :project_with_code }
+  let (:project)       { create :project }
   let (:service) { GitPushService.new }
 
   before do
diff --git a/spec/services/test_hook_service_spec.rb b/spec/services/test_hook_service_spec.rb
index fbe9066096d228719c6c467f3800c7b0aa7b43cf..76af5bf7b88c9071e38bcad0f49d26b6bcdb40ec 100644
--- a/spec/services/test_hook_service_spec.rb
+++ b/spec/services/test_hook_service_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 describe TestHookService do
   let (:user)    { create :user }
-  let (:project) { create :project_with_code }
+  let (:project) { create :project }
   let (:hook)    { create :project_hook, project: project }
 
   describe :execute do
diff --git a/spec/support/mentionable_shared_examples.rb b/spec/support/mentionable_shared_examples.rb
index 948fff27b8990f5f4add054ed8043e90c1f08085..3802e94ecf0e26e99a6a0a93dd93462f8ec7a66c 100644
--- a/spec/support/mentionable_shared_examples.rb
+++ b/spec/support/mentionable_shared_examples.rb
@@ -11,7 +11,7 @@ def common_mentionable_setup
 
   let(:mentioned_issue) { create :issue, project: mproject }
   let(:other_issue) { create :issue, project: mproject }
-  let(:mentioned_mr) { create :merge_request, target_project: mproject, source_branch: 'different' }
+  let(:mentioned_mr) { create :merge_request, source_project: mproject, source_branch: 'different' }
   let(:mentioned_commit) { double('commit', sha: '1234567890abcdef').as_null_object }
 
   # Override to add known commits to the repository stub.
diff --git a/spec/workers/post_receive_spec.rb b/spec/workers/post_receive_spec.rb
index 46e86dbe00aee86ddc83eb3c9313153feefc18c3..a4751bd0bafc1840a4d79893140f5d2dcdf83429 100644
--- a/spec/workers/post_receive_spec.rb
+++ b/spec/workers/post_receive_spec.rb
@@ -9,7 +9,7 @@ describe PostReceive do
   end
 
   context "web hook" do
-    let(:project) { create(:project_with_code) }
+    let(:project) { create(:project) }
     let(:key) { create(:key, user: project.owner) }
     let(:key_id) { key.shell_id }