diff --git a/src/lib/Hydra/Controller/Project.pm b/src/lib/Hydra/Controller/Project.pm
index bf9f4451..6dba60ac 100644
--- a/src/lib/Hydra/Controller/Project.pm
+++ b/src/lib/Hydra/Controller/Project.pm
@@ -1,5 +1,6 @@
 package Hydra::Controller::Project;
 
+use utf8;
 use strict;
 use warnings;
 use base 'Hydra::Base::Controller::ListBuilds';
@@ -9,8 +10,9 @@ use Hydra::Helper::CatalystUtils;
 
 sub projectChain :Chained('/') :PathPart('project') :CaptureArgs(1) {
     my ($self, $c, $projectName) = @_;
+    $c->stash->{params}->{name} //= $projectName;
 
-    my $project = $c->model('DB::Projects')->find($projectName, { columns => [
+    $c->stash->{project} = $c->model('DB::Projects')->find($projectName, { columns => [
       "me.name",
       "me.displayname",
       "me.description",
@@ -19,25 +21,15 @@ sub projectChain :Chained('/') :PathPart('project') :CaptureArgs(1) {
       "me.homepage",
       "owner.username",
       "owner.fullname",
-      "views.name",
       "releases.name",
       "releases.timestamp",
       "jobsets.name",
       "jobsets.enabled",
-    ], join => [ 'owner', 'views', 'releases', 'jobsets' ], order_by => { -desc => "releases.timestamp" }, collapse => 1 });
+    ], join => [ 'owner', 'releases', 'jobsets' ], order_by => { -desc => "releases.timestamp" }, collapse => 1 });
 
-    if ($project) {
-        $c->stash->{project} = $project;
-    } else {
-        if ($c->action->name eq "project" and $c->request->method eq "PUT") {
-            $c->stash->{projectName} = $projectName;
-        } else {
-            $self->status_not_found(
-                $c,
-                message => "Project $projectName doesn't exist."
-            );
-            $c->detach;
-        }
+    if (!$c->stash->{project} && !($c->action->name eq "project" and $c->request->method eq "PUT")) {
+        $self->status_not_found($c, message => "Project ‘$projectName’ doesn't exist.");
+        $c->detach;
     }
 }
 
@@ -54,17 +46,13 @@ sub project_GET {
     $c->stash->{releases} = [$c->stash->{project}->releases->search({},
         {order_by => ["timestamp DESC"]})];
 
-    $self->status_ok(
-        $c,
-        entity => $c->stash->{project}
-    );
+    $self->status_ok($c, entity => $c->stash->{project});
 }
 
 sub project_PUT {
     my ($self, $c) = @_;
 
     if (defined $c->stash->{project}) {
-        error($c, "Cannot rename project `$c->stash->{params}->{oldName}' over existing project `$c->stash->{project}->name") if defined $c->stash->{params}->{oldName};
         requireProjectOwner($c, $c->stash->{project});
         txn_do($c->model('DB')->schema, sub {
             updateProject($c, $c->stash->{project});
@@ -75,34 +63,10 @@ sub project_PUT {
         } else {
             $self->status_no_content($c);
         }
-    } elsif (defined $c->stash->{params}->{oldName}) {
-        my $project = $c->model('DB::Projects')->find($c->stash->{params}->{oldName});
-        if (defined $project) {
-            requireProjectOwner($c, $project);
-            txn_do($c->model('DB')->schema, sub {
-                updateProject($c, $project);
-            });
+    }
 
-            my $uri = $c->uri_for($self->action_for("project"), [$project->name]);
-
-            if ($c->req->looks_like_browser) {
-                $c->res->redirect($uri . "#tabs-configuration");
-            } else {
-                $self->status_created(
-                    $c,
-                    location => "$uri",
-                    entity => { name => $project->name, uri => "$uri", type => "project" }
-                );
-            }
-        } else {
-            $self->status_not_found(
-                $c,
-                message => "Project $c->stash->{params}->{oldName} doesn't exist."
-            );
-        }
-    } else {
+    else {
         requireMayCreateProjects($c);
-        error($c, "Invalid project name: ‘$c->stash->{projectName}’") if $c->stash->{projectName} !~ /^$projectNameRE$/;
 
         my $project;
         txn_do($c->model('DB')->schema, sub {
@@ -111,7 +75,7 @@ sub project_PUT {
             # valid.  Idem for the owner.
             my $owner = $c->user->username;
             $project = $c->model('DB::Projects')->create(
-                {name => $c->stash->{projectName}, displayname => "", owner => $owner});
+                { name => ".tmp.$$." . int(rand(100000)), displayname => "", owner => $owner });
             updateProject($c, $project);
         });
 
@@ -154,13 +118,6 @@ sub submit : Chained('projectChain') PathPart Args(0) {
         return $c->res->redirect($c->uri_for("/"));
     }
 
-    my $newName = trim $c->stash->{params}->{name};
-    my $oldName = trim $c->stash->{project}->name;
-    unless ($oldName eq $newName) {
-        $c->stash->{params}->{oldName} = $oldName;
-        $c->stash->{projectName} = $newName;
-        undef $c->stash->{project};
-    }
     project_PUT($self, $c);
 }
 
@@ -188,9 +145,6 @@ sub create : Path('/create-project') {
 
 sub create_submit : Path('/create-project/submit') {
     my ($self, $c) = @_;
-
-    $c->stash->{projectName} = trim $c->stash->{params}->{name};
-
     project_PUT($self, $c);
 }
 
@@ -222,15 +176,18 @@ sub updateProject {
     my $owner = $project->owner;
     if ($c->check_user_roles('admin') and defined $c->stash->{params}->{owner}) {
         $owner = trim $c->stash->{params}->{owner};
-        error($c, "Invalid owner: $owner")
-            unless defined $c->model('DB::Users')->find({username => $owner});
+        error($c, "The user name ‘$owner’ does not exist.")
+            unless defined $c->model('DB::Users')->find($owner);
     }
 
-    my $projectName = $c->stash->{projectName} or $project->name;
-    error($c, "Invalid project name: ‘$projectName’") if $projectName !~ /^$projectNameRE$/;
+    my $projectName = $c->stash->{params}->{name};
+    error($c, "Invalid project name ‘$projectName’.") if $projectName !~ /^$projectNameRE$/;
+
+    error($c, "Cannot rename project to ‘$projectName’ since that name is already taken.")
+        if $projectName ne $project->name && defined $c->model('DB::Projects')->find($projectName);
 
     my $displayName = trim $c->stash->{params}->{displayname};
-    error($c, "Invalid display name: $displayName") if $displayName eq "";
+    error($c, "You must specify a display name.") if $displayName eq "";
 
     $project->update(
         { name => $projectName