diff --git a/setup.py b/setup.py
index 54015c3..953023d 100755
--- a/setup.py
+++ b/setup.py
@@ -609,15 +609,56 @@
 			for g, mans in groups.items():
 				yield [os.path.join('$mandir', topdir, 'man%s' % g), mans]
 
+# initialize the list here
+# it can then be modified by the select_plugins()
+PACKAGES = list(find_packages())
+
+# the USE flag selectable list of modules
+SELECTABLE = {
+	'cvs': 'cvs',
+	'git': 'git',
+	'subversion': 'svn',
+	}
+
+# get the USE from the environment
+# split them so we don't get substring matches
+USE = os.environ.get("USE", "").split()
+
+
+class select_plugins(Command):
+	""" Removes the plugin modules not selected from the packages list
+	so they won't be installed."""
+
+	user_options = [
+	]
+
+	global PACKAGES
+
+	def initialize_options(self):
+		self.build_base = None
+
+	def finalize_options(self):
+		self.set_undefined_options('build',
+			('build_base', 'build_base'))
+
+	def run(self):
+		for plugin in sorted(SELECTABLE):
+			if plugin not in USE:
+				module = os.path.join('portage', 'sync', 'modules',
+					SELECTABLE[plugin])
+				PACKAGES.remove(module)
+				remove_tree(os.path.join('pym', module))
+
+
 setup(
 	name = 'portage',
-	version = '2.2.16',
+	version = '2.2.17',
 	url = 'https://wiki.gentoo.org/wiki/Project:Portage',
 	author = 'Gentoo Portage Development Team',
 	author_email = 'dev-portage@gentoo.org',
 
 	package_dir = {'': 'pym'},
-	packages = list(find_packages()),
+	packages = PACKAGES,
 	# something to cheat build & install commands
 	scripts = list(find_scripts()),
 
@@ -653,6 +694,7 @@
 		'install_scripts_portagebin': x_install_scripts_portagebin,
 		'install_scripts_sbin': x_install_scripts_sbin,
 		'sdist': x_sdist,
+		'select_plugins': select_plugins,
 		'test': test,
 	},
 
