diff --git a/redminer.pl b/redminer.pl
index 1ce44179ef1ac080546f57ec1eb47c59db93f4ee..22a769c630715f8a564ee62509bbac62a7edb326 100644
--- a/redminer.pl
+++ b/redminer.pl
@@ -7,6 +7,7 @@ use warnings;
 use FindBin;
 use lib "$FindBin::Bin/lib";
 
+use Encode qw/encode/;
 use Getopt::Long;
 use Config::IniFiles;
 
@@ -51,11 +52,24 @@ my $redminer = RedMiner::API->new(
 );
 
 my $description = $layout? $layout->val('project', 'description') // '' : '';
+
+say 'Creating a new project ' . $project_name;
+
 my $project = $redminer->createProject({
 	identifier  => $project_id  ,
 	name        => $project_name,
 	description => $description ,
 });
+
+if (!$project) {
+	say STDERR 'Project was not created';
+	say STDERR render_errors($redminer->errorDetails);
+	exit 255;
+}
+
+my $pid = $project->{project}{id};
+say 'Project created with ID ' . $pid;
+
 $redminer->updateProject($project->{project}{id}, {
 	inherit_members => 1,
 });
@@ -69,18 +83,30 @@ if ($layout) {
 			name        => $project_name  . ': ' . ($layout->val($section, 'name_suffix') // 'Subproject'),
 			description => $layout->val($section, 'description') // '',
 		};
+
+		say 'Creating a new subproject ' . $subproject_data->{name};
+
 		my $subproject = $redminer->createProject($subproject_data);
+		if (!$subproject) {
+			say STDERR 'Subproject was not created';
+			say STDERR render_errors($redminer->errorDetails);
+			next;
+		}
+
+		say 'Subproject created with ID ' . $subproject->{project}{id};
 		$redminer->updateProject($subproject->{project}{id}, {
-			parent_id       => $project->{project}{id},
+			parent_id       => $pid,
 			inherit_members => 1,
 		});
 	}
 }
 
+# FIXME: handle limit/offset issue
 my $perm_source = $layout? $layout->val('project', 'perm_source') : 0;
 if ($perm_source) {
 	my $memberships = $redminer->projectMemberships($perm_source);
 	if ($memberships) {
+		say 'Copying project permissions from a template project...';
 		foreach my $membership (@{ $memberships->{memberships} }) {
 			my $type = '';
 			if (exists $membership->{group}) {
@@ -98,14 +124,24 @@ if ($perm_source) {
 				next if $role->{inherited};
 				push @{ $new_membership->{role_ids} }, $role->{id};
 			}
-
 			if ($new_membership->{user_id} && @{ $new_membership->{role_ids} }) {
-				$redminer->createProjectMembership(
-					$project->{project}{id}, $new_membership
-				);
+				$redminer->createProjectMembership($pid, $new_membership);
 			}
 		}
+		say 'Permissions copied';
 	}
 }
 
+say 'Bye';
 exit;
+
+sub render_errors
+{
+	my $errors = shift;
+	if (ref $errors ne 'HASH' && ref $errors->{errors} ne 'ARRAY') {
+		return 'Unknown server errors';
+	}
+	return join "\n", 'Following error(s) reported:', map {
+		"\t* " . Encode::encode('UTF-8', $_)
+	} @{ $errors->{errors} };
+}