diff --git a/Changes b/Changes
index ff8a4202d293341f11a4c1017f63866e9ee71fd1..b23bf5e541dbb4c6e302bd5d031bfde2f4abbcef 100644
--- a/Changes
+++ b/Changes
@@ -1,4 +1,4 @@
-Revision history for Perl extension Redminer (initially RedMiner::API).
+Revision history for Perl extension WebService::Redmine (initially RedMiner::API).
 
 Please see full revision history at https://github.com/igelhaus/redminer/releases
 
diff --git a/MANIFEST b/MANIFEST
index 81188d91bb1c6b90acf3e56fe3a7bba79a9c1923..82d44b28c2180d30957fad6c15e9174cee0875a2 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -8,4 +8,4 @@ t/02-realworld.t
 t/03-realworld-no-wrapping.t
 t/04-pod.t
 t/05-pod-coverage.t
-lib/Redminer.pm
+lib/WebService/Redmine.pm
diff --git a/Makefile.PL b/Makefile.PL
index b6097c7982377ec34e3072bdb930724ee552423e..af2e053f17651e7a8edcb30cd853c522fd14e44e 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -2,8 +2,8 @@ use 5.010;
 use ExtUtils::MakeMaker;
 
 WriteMakefile(
-	NAME           => 'Redminer',
-	VERSION_FROM   => 'lib/Redminer.pm',
+	NAME           => 'WebService::Redmine',
+	VERSION_FROM   => 'lib/WebService/Redmine.pm',
 	BUILD_REQUIRES => {
 		'ExtUtils::MakeMaker' => 0,
 		'Test::More'          => 0,
@@ -17,7 +17,7 @@ WriteMakefile(
 		'JSON::XS'        => 0,
 	},
 	($] >= 5.005 ? ( ## Add these new keywords supported since 5.005
-		ABSTRACT_FROM => 'lib/Redminer.pm',
+		ABSTRACT_FROM => 'lib/WebService/Redmine.pm',
 		AUTHOR        => 'Anton Soldatov <igelhaus@gmail.com>')
 	: ()),
 );
diff --git a/README.md b/README.md
index e4002042f697fbcef775855a713c000b747dfc1d..419279e9a54139d9a7e80be6234370a3da4aace2 100644
--- a/README.md
+++ b/README.md
@@ -6,8 +6,8 @@ Currently the project consists of two parts:
 
 1. `redminer` script itself. For now it supports only creating projects with subprojects
 from a given layout, but in the future it's aimed for various RedMine automation tasks
-2. `Redminer` module, a Perl binding to [RedMine REST API](http://www.redmine.org/projects/redmine/wiki/Rest_api).
-Please refer to [built-in POD documentation](../master/lib/Redminer.pm) for more details
+2. `WebService::Redmine` module, a Perl binding to [RedMine REST API](http://www.redmine.org/projects/redmine/wiki/Rest_api).
+Please refer to [built-in POD documentation](../master/lib/WebService/Redmine.pm) for more details
 
 ## Installation
 
diff --git a/lib/Redminer.pm b/lib/WebService/Redmine.pm
similarity index 95%
rename from lib/Redminer.pm
rename to lib/WebService/Redmine.pm
index e4e249427be7f08190c9d8187d2635326651f8ab..06b67d03e440698397f3c75dda7b56c676d9b1a2 100644
--- a/lib/Redminer.pm
+++ b/lib/WebService/Redmine.pm
@@ -1,4 +1,4 @@
-package Redminer;
+package WebService::Redmine;
 
 use 5.010;
 use strict;
@@ -18,17 +18,17 @@ use Encode   qw/decode/;
 
 =head1 NAME
 
-Redminer - Wrapper for RedMine REST API (http://www.redmine.org/projects/redmine/wiki/Rest_api).
+WebService::Redmine - Wrapper for RedMine REST API (http://www.redmine.org/projects/redmine/wiki/Rest_api).
 
 =head1 SYNOPSIS
 
-	use Redminer;
-	my $redminer = Redminer->new(
+	use WebService::Redmine;
+	my $redminer = WebService::Redmine->new(
 		host => 'example.com/redmine',
 		key  => 'xxx',
 	);
 	# password-based auth is also supported:
-	#my $redminer = Redminer->new(
+	#my $redminer = WebService::Redmine->new(
 	#	host => 'example.com/redmine',
 	#	user => 'redminer',
 	#	pass => 'p@s$w0rD',
@@ -37,7 +37,7 @@ Redminer - Wrapper for RedMine REST API (http://www.redmine.org/projects/redmine
 	my $project = $redminer->createProject({ project => {
 		identifier  => 'my-project',
 		name        => 'My Project',
-		description => 'My project, created with *Redminer*',
+		description => 'My project, created with *WebService::Redmine*',
 	}});
 	if (!$project) {
 		say STDERR 'Error(s) creating project: ', join("\n", map { $_ } @{ $redminer->errorDetails->{errors} });
@@ -52,7 +52,7 @@ Redminer - Wrapper for RedMine REST API (http://www.redmine.org/projects/redmine
 	
 	my $issue = $redminer->createIssue({ issue => {
 		project_id  => $project_id,
-		subject     => 'Test issue for Redminer',
+		subject     => 'Test issue for WebService::Redmine',
 		description => 'Issue description',
 	}});
 
@@ -145,7 +145,7 @@ be retrieved using C<errorDetails> method:
 
 =head2 new
 
-	my $redminer = Redminer->new(%options);
+	my $redminer = WebService::Redmine->new(%options);
 
 Following options are recognized:
 
@@ -189,7 +189,7 @@ By default RedMine API requires you to wrap you object data:
 By default this module follows this convention. However, if you turn on
 the C<no_wrapper_object> flag
 
-	my $redminer = Redminer->new(
+	my $redminer = WebService::Redmine->new(
 		host => 'example.com/redmine',
 		key => 'xxx',
 		no_wrapper_object => 1,
@@ -516,13 +516,13 @@ between this module and Redmine::API are:
 =item *
 
 B<Dependencies>. Redmine::API depends on Moo and REST::Client which in turn depends on
-LWP::UserAgent, URI and possibly others. Redminer uses pure Perl OOP and
+LWP::UserAgent, URI and possibly others. WebService::Redmine uses pure Perl OOP and
 depends directly on LWP::UserAgent and URI.
 
 =item *
 
 B<Call conventions>. Although both modules use dynamic dispatching for building actual HTTP
-requests, they do it in a different manner. In particular, Redminer tries to
+requests, they do it in a different manner. In particular, WebService::Redmine tries to
 dispatch a single method name without using chains of interrim objects as Redmine::API does.
 
 =back
diff --git a/redminer b/redminer
index d7d8592bfb4096933be763ef3e3c08f9c50ddf6e..c459fcda56ef52005cede269c9719098ed383f62 100755
--- a/redminer
+++ b/redminer
@@ -11,7 +11,7 @@ use Encode qw/encode/;
 use Getopt::Long;
 use Config::IniFiles;
 
-use Redminer;
+use WebService::Redmine;
 
 my $conf_fname   = $ENV{HOME} . '/.redminer/redminer.conf';
 my $layout_fname = $ENV{HOME} . '/.redminer/default-layout.conf';
@@ -44,7 +44,7 @@ if (!$layout) {
 	warn 'Unable to access layout config';
 }
 
-my $redminer = Redminer->new(
+my $redminer = WebService::Redmine->new(
 	host              => $conf->val('redmine', 'host') // '',
 	user              => $conf->val('redmine', 'user') // '',
 	pass              => $conf->val('redmine', 'pass') // '',
diff --git a/t/00-use.t b/t/00-use.t
index 6648bec1b8dc32c7d8b27b757a3c8e8e13e8aff9..f29a3ae637694807a7d0caba01cb042d097f17dc 100644
--- a/t/00-use.t
+++ b/t/00-use.t
@@ -3,6 +3,6 @@ use warnings;
 
 use Test::More tests => 1;
 
-BEGIN { use_ok('Redminer') };
+BEGIN { use_ok('WebService::Redmine') };
 
 exit;
diff --git a/t/01-dispatching.t b/t/01-dispatching.t
index aa8f32a92b9a6f12fddda0f157430112903ae5d3..1446dfac475a00b1b116763a7fbf188186fecc1c 100644
--- a/t/01-dispatching.t
+++ b/t/01-dispatching.t
@@ -3,12 +3,12 @@ use warnings;
 
 use Test::More tests => 29;
 
-eval 'use Redminer';
+eval 'use WebService::Redmine';
 
 #
 # Testing internal name dispatching with a dummy object
 #
-my $redminer = Redminer->new(
+my $redminer = WebService::Redmine->new(
 	host => '', 
 	key  => '',
 );
diff --git a/t/02-realworld.t b/t/02-realworld.t
index f8290f6f7859fa132f405d6ff348cadfb0af2dfc..3d8f8b526527cba4c65ec46f1c6285e1824310ae 100644
--- a/t/02-realworld.t
+++ b/t/02-realworld.t
@@ -10,7 +10,7 @@ if ($ENV{REDMINER_DEVEL}) {
 	plan skip_all => 'Development tests (REDMINER_DEVEL not set)';
 }
 
-eval 'use Redminer';
+eval 'use WebService::Redmine';
 
 #
 # Read API key from a simple config file in the format 'host;key'
@@ -29,7 +29,7 @@ my $key_data  = <$FH_key>;
 chomp $key_data;
 close $FH_key;
 
-my $redminer = Redminer->new(
+my $redminer = WebService::Redmine->new(
 	host => $host,
 	key  => $key,
 );
@@ -50,7 +50,7 @@ ok($redminer->updateProject($project_id, { project => { inherit_members => 1 } }
 
 my $issue = $redminer->createIssue({ issue => {
 	project_id  => $project_id,
-	subject     => 'Test issue for Redminer',
+	subject     => 'Test issue for WebService::Redmine',
 	description => 'Test description',
 }});
 ok(defined $issue->{issue}{id}, 'Issue created with ID #' . $issue->{issue}{id});
diff --git a/t/03-realworld-no-wrapping.t b/t/03-realworld-no-wrapping.t
index c18d8f46efcbf9d563ae1e9a24161581fff8401a..4f58a620101a29074d544c40ad4fa9a3013e6160 100644
--- a/t/03-realworld-no-wrapping.t
+++ b/t/03-realworld-no-wrapping.t
@@ -10,7 +10,7 @@ if ($ENV{REDMINER_DEVEL}) {
 	plan skip_all => 'Development tests (REDMINER_DEVEL not set)';
 }
 
-eval 'use Redminer';
+eval 'use WebService::Redmine';
 
 #
 # Read API key from a simple config file in the format 'host;key'
@@ -29,7 +29,7 @@ my $key_data  = <$FH_key>;
 chomp $key_data;
 close $FH_key;
 
-my $redminer = Redminer->new(
+my $redminer = WebService::Redmine->new(
 	host => $host,
 	key  => $key,
 	no_wrapper_object => 1,
@@ -51,7 +51,7 @@ ok($redminer->updateProject($project_id, { inherit_members => 1 }), 'Project upd
 
 my $issue = $redminer->createIssue({
 	project_id  => $project_id,
-	subject     => 'Test issue for Redminer',
+	subject     => 'Test issue for WebService::Redmine',
 	description => 'Test description',
 });
 ok(defined $issue->{id}, 'Issue created with ID #' . $issue->{id});
diff --git a/t/05-pod-coverage.t b/t/05-pod-coverage.t
index 61f6bd1a26cdb5f5ce994753bb1b020ee4400686..58e823e2d16f8d1373b75dacdbe9962f2a06f677 100644
--- a/t/05-pod-coverage.t
+++ b/t/05-pod-coverage.t
@@ -8,4 +8,4 @@ plan skip_all => 'Test::Pod::Coverage required for testing pod coverage' if $@;
  
 plan tests => 1;
 
-pod_coverage_ok('Redminer', 'Redminer POD ok');
+pod_coverage_ok('WebService::Redmine', 'WebService::Redmine POD ok');