diff --git a/bloodhound_dashboard/setup.py b/bloodhound_dashboard/setup.py
index 6accdad..ea7ba93 100644
--- a/bloodhound_dashboard/setup.py
+++ b/bloodhound_dashboard/setup.py
@@ -20,10 +20,7 @@
 
 
 import sys
-try:
-    from setuptools import setup
-except ImportError:
-    from distutils.core import setup
+from setuptools import setup
 
 DESC = """Project dashboard for Apache(TM) Bloodhound.
 
@@ -40,83 +37,76 @@
     (0, 7, 0),
     (0, 8, 0),
     (0, 9, 0),
-    ]
+]
 
 latest = '.'.join(str(x) for x in versions[-1])
 
 status = {
-            'planning' :  "Development Status :: 1 - Planning",
-            'pre-alpha' : "Development Status :: 2 - Pre-Alpha",
-            'alpha' :     "Development Status :: 3 - Alpha",
-            'beta' :      "Development Status :: 4 - Beta",
-            'stable' :    "Development Status :: 5 - Production/Stable",
-            'mature' :    "Development Status :: 6 - Mature",
-            'inactive' :  "Development Status :: 7 - Inactive"
-         }
+    'planning': "Development Status :: 1 - Planning",
+    'pre-alpha': "Development Status :: 2 - Pre-Alpha",
+    'alpha': "Development Status :: 3 - Alpha",
+    'beta': "Development Status :: 4 - Beta",
+    'stable': "Development Status :: 5 - Production/Stable",
+    'mature': "Development Status :: 6 - Mature",
+    'inactive': "Development Status :: 7 - Inactive"
+}
 dev_status = status["alpha"]
 
 cats = [
-      dev_status,
-      "Environment :: Plugins",
-      "Environment :: Web Environment",
-      "Framework :: Trac",
-      "Intended Audience :: Developers",
-      "Intended Audience :: Information Technology",
-      "Intended Audience :: Other Audience",
-      "Intended Audience :: System Administrators",
-      "License :: Unknown",
-      "Operating System :: OS Independent",
-      "Programming Language :: Python",
-      "Programming Language :: Python :: 2.5",
-      "Programming Language :: Python :: 2.6",
-      "Programming Language :: Python :: 2.7",
-      "Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries",
-      "Topic :: Internet :: WWW/HTTP :: HTTP Servers",
-      "Topic :: Internet :: WWW/HTTP :: WSGI",
-      "Topic :: Software Development :: Bug Tracking",
-      "Topic :: Software Development :: Libraries :: Application Frameworks",
-      "Topic :: Software Development :: Libraries :: Python Modules",
-      "Topic :: Software Development :: User Interfaces",
-      "Topic :: Software Development :: Widget Sets"
-    ]
+    dev_status,
+    "Environment :: Plugins",
+    "Environment :: Web Environment",
+    "Framework :: Trac",
+    "Intended Audience :: Developers",
+    "Intended Audience :: Information Technology",
+    "Intended Audience :: Other Audience",
+    "Intended Audience :: System Administrators",
+    "License :: Unknown",
+    "Operating System :: OS Independent",
+    "Programming Language :: Python",
+    "Programming Language :: Python :: 2.5",
+    "Programming Language :: Python :: 2.6",
+    "Programming Language :: Python :: 2.7",
+    "Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries",
+    "Topic :: Internet :: WWW/HTTP :: HTTP Servers",
+    "Topic :: Internet :: WWW/HTTP :: WSGI",
+    "Topic :: Software Development :: Bug Tracking",
+    "Topic :: Software Development :: Libraries :: Application Frameworks",
+    "Topic :: Software Development :: Libraries :: Python Modules",
+    "Topic :: Software Development :: User Interfaces",
+    "Topic :: Software Development :: Widget Sets"
+]
 
 # Add the change log to the package description.
 chglog = None
 try:
     from os.path import dirname, join
+
     chglog = open(join(dirname(__file__), "CHANGES"))
-    DESC+= ('\n\n' + chglog.read())
+    DESC += ('\n\n' + chglog.read())
 finally:
     if chglog:
         chglog.close()
 
 DIST_NM = 'BloodhoundDashboardPlugin'
-PKG_INFO = {'bhdashboard' : ('bhdashboard',                     # Package dir
-                            # Package data
-                            ['../CHANGES', '../TODO', '../COPYRIGHT',
-                              '../NOTICE', '../README', '../TESTING_README',
-                              'htdocs/*.*', 'htdocs/css/*.css',
-                              'htdocs/img/*.*', 'htdocs/js/*.js',
-                              'templates/*', 'default-pages/*',
-                              'locale/*/LC_MESSAGES/*.mo'],
-                          ),
-            'bhdashboard.widgets' : ('bhdashboard/widgets',     # Package dir
-                            # Package data
-                            ['templates/*', 'htdocs/*.css'],
-                          ),
-            'bhdashboard.layouts' : ('bhdashboard/layouts',     # Package dir
-                            # Package data
-                            ['templates/*'],
-                          ),
-            'bhdashboard.tests' : ('bhdashboard/tests',     # Package dir
-                            # Package data
-                            ['data/**'],
-                         ),
-            'bhdashboard.util' : ('bhdashboard/util',     # Package dir
-                            # Package data
-                            [],
-                          ),
-            }
+PKG_INFO = {
+    'bhdashboard': ('bhdashboard',  # Package dir
+                    ['../CHANGES', '../TODO', '../COPYRIGHT',  # Package data
+                     '../NOTICE', '../README', '../TESTING_README',
+                     'htdocs/*.*', 'htdocs/css/*.css',
+                     'htdocs/img/*.*', 'htdocs/js/*.js',
+                     'templates/*', 'default-pages/*',
+                     'locale/*/LC_MESSAGES/*.mo'],
+                    ),
+    'bhdashboard.widgets': ('bhdashboard/widgets',  # Package dir
+                            ['templates/*', 'htdocs/*.css']),  # Package data
+    'bhdashboard.layouts': ('bhdashboard/layouts',  # Package dir
+                            ['templates/*']),  # Package data
+    'bhdashboard.tests': ('bhdashboard/tests',  # Package dir
+                          ['data/**']),  # Package data
+    'bhdashboard.util': ('bhdashboard/util',  # Package dir
+                         []),  # Package data
+}
 
 ENTRY_POINTS = r"""
                [trac.plugins]
@@ -135,13 +125,14 @@
 extra = {}
 try:
     from trac.util.dist import get_l10n_cmdclass
+
     cmdclass = get_l10n_cmdclass()
     if cmdclass:
         extra['cmdclass'] = cmdclass
         extractors = [
-            ('**.py',                'trac.dist:extract_python', None),
+            ('**.py', 'trac.dist:extract_python', None),
             ('**/templates/**.html', 'genshi', None),
-            ('**/templates/**.txt',  'genshi', {
+            ('**/templates/**.txt', 'genshi', {
                 'template_class': 'genshi.template:TextTemplate'
             }),
         ]
@@ -155,21 +146,21 @@
     name=DIST_NM,
     version=latest,
     description=DESC.split('\n', 1)[0],
-    author = "Apache Bloodhound",
-    license = "Apache License v2",
-    url = "https://bloodhound.apache.org/",
-    requires = ['trac'],
-    tests_require = ['dutest>=0.2.4', 'TracXMLRPC'] +
-                    ['unittest2'] if sys.version_info < (2, 7) else [],
-    package_dir = dict([p, i[0]] for p, i in PKG_INFO.iteritems()),
-    packages = PKG_INFO.keys(),
-    package_data = dict([p, i[1]] for p, i in PKG_INFO.iteritems()),
+    author="Apache Bloodhound",
+    license="Apache License v2",
+    url="https://bloodhound.apache.org/",
+    requires=['trac'],
+    tests_require=['dutest>=0.2.4', 'TracXMLRPC'] +
+                  ['unittest2'] if sys.version_info < (2, 7) else [],
+    package_dir=dict([p, i[0]] for p, i in PKG_INFO.iteritems()),
+    packages=PKG_INFO.keys(),
+    package_data=dict([p, i[1]] for p, i in PKG_INFO.iteritems()),
     include_package_data=True,
-    provides = ['%s (%s)' % (p, latest) for p in PKG_INFO.keys()],
-    obsoletes = ['%s (>=%s.0.0, <%s)' % (p, versions[-1][0], latest) \
-                  for p in PKG_INFO.keys()],
-    entry_points = ENTRY_POINTS,
-    classifiers = cats,
-    long_description= DESC,
+    provides=['%s (%s)' % (p, latest) for p in PKG_INFO.keys()],
+    obsoletes=['%s (>=%s.0.0, <%s)' % (p, versions[-1][0], latest)
+               for p in PKG_INFO.keys()],
+    entry_points=ENTRY_POINTS,
+    classifiers=cats,
+    long_description=DESC,
     **extra
-    )
+)
diff --git a/bloodhound_multiproduct/setup.py b/bloodhound_multiproduct/setup.py
index d2905ba..c6bc9ec 100644
--- a/bloodhound_multiproduct/setup.py
+++ b/bloodhound_multiproduct/setup.py
@@ -18,16 +18,16 @@
 #  specific language governing permissions and limitations
 #  under the License.
 
-import sys, codecs
-from pkg_resources import parse_version
-from setuptools import setup
+import codecs
+import sys
 
+from setuptools import setup
 
 # Force UTF-8 for stdout/err if --utf8 option is specified.
 # For some reason python doesn't obey LANG/LC_CTYPE settings
 # if output is not a terminal (e.g. pipes don't work).
 if __name__ == '__main__':
-    for ac,av in enumerate(sys.argv):
+    for ac, av in enumerate(sys.argv):
         if av == '--utf8':
             sys.stdout = codecs.getwriter('utf8')(sys.stdout)
             sys.stderr = codecs.getwriter('utf8')(sys.stderr)
@@ -37,42 +37,45 @@
 extra = {}
 try:
     from trac.util.dist import get_l10n_cmdclass
+except ImportError:
+    pass
+else:
     cmdclass = get_l10n_cmdclass()
     if cmdclass:
         extra['cmdclass'] = cmdclass
         extractors = [
-            ('**.py',                'trac.dist:extract_python', None),
+            ('**.py', 'trac.dist:extract_python', None),
             ('**/templates/**.html', 'genshi', None),
-            ('**/templates/**.txt',  'genshi', {
+            ('**/templates/**.txt', 'genshi', {
                 'template_class': 'genshi.template:TextTemplate'
             }),
         ]
         extra['message_extractors'] = {
             'multiproduct': extractors,
         }
-except ImportError:
-    pass
+
 
 setup(
-    name = 'BloodhoundMultiProduct',
-    version = '0.9.0',
-    description = "Multiproduct support for Apache(TM) Bloodhound.",
-    author = "Apache Bloodhound",
-    license = "Apache License v2",
-    url = "https://bloodhound.apache.org/",
-    packages = ['multiproduct', 'multiproduct.ticket', 'multiproduct.util',
-                'tests',],
-    package_data = {'multiproduct' : ['templates/*.html','locale/*/LC_MESSAGES/*.mo']},
-    install_requires = ['sqlparse'],
-    entry_points = {'trac.plugins': [
-            'multiproduct.model = multiproduct.model',
-            'multiproduct.perm = multiproduct.perm',
-            'multiproduct.product_admin = multiproduct.product_admin',
-            'multiproduct.ticket.batch = multiproduct.ticket.batch',
-            'multiproduct.ticket.query = multiproduct.ticket.query',
-            'multiproduct.ticket.web_ui = multiproduct.ticket.web_ui',
-            'multiproduct.web_ui = multiproduct.web_ui',
-        ],},
+    name='BloodhoundMultiProduct',
+    version='0.9.0',
+    description="Multiproduct support for Apache(TM) Bloodhound.",
+    author="Apache Bloodhound",
+    license="Apache License v2",
+    url="https://bloodhound.apache.org/",
+    packages=['multiproduct', 'multiproduct.ticket', 'multiproduct.util',
+              'tests', ],
+    package_data={
+        'multiproduct': ['templates/*.html', 'locale/*/LC_MESSAGES/*.mo']},
+    install_requires=['sqlparse'],
+    entry_points={'trac.plugins': [
+        'multiproduct.model = multiproduct.model',
+        'multiproduct.perm = multiproduct.perm',
+        'multiproduct.product_admin = multiproduct.product_admin',
+        'multiproduct.ticket.batch = multiproduct.ticket.batch',
+        'multiproduct.ticket.query = multiproduct.ticket.query',
+        'multiproduct.ticket.web_ui = multiproduct.ticket.web_ui',
+        'multiproduct.web_ui = multiproduct.web_ui',
+    ], },
     test_suite='tests.test_suite',
     tests_require=['unittest2'] if sys.version_info < (2, 7) else [],
     **extra
diff --git a/bloodhound_relations/setup.py b/bloodhound_relations/setup.py
index 96000a6..78ca185 100644
--- a/bloodhound_relations/setup.py
+++ b/bloodhound_relations/setup.py
@@ -19,11 +19,7 @@
 #  under the License.
 
 import sys
-from pkg_resources import parse_version
-try:
-    from setuptools import setup
-except ImportError:
-    from distutils.core import setup
+from setuptools import setup
 
 DESC = """Ticket relations plugin for Apache(TM) Bloodhound.
 
@@ -37,65 +33,66 @@
     (0, 7, 0),
     (0, 8, 0),
     (0, 9, 0),
-    ]
+]
 
 latest = '.'.join(str(x) for x in versions[-1])
 
 status = {
-    'planning' :  "Development Status :: 1 - Planning",
-    'pre-alpha' : "Development Status :: 2 - Pre-Alpha",
-    'alpha' :     "Development Status :: 3 - Alpha",
-    'beta' :      "Development Status :: 4 - Beta",
-    'stable' :    "Development Status :: 5 - Production/Stable",
-    'mature' :    "Development Status :: 6 - Mature",
-    'inactive' :  "Development Status :: 7 - Inactive"
-    }
+    'planning': "Development Status :: 1 - Planning",
+    'pre-alpha': "Development Status :: 2 - Pre-Alpha",
+    'alpha': "Development Status :: 3 - Alpha",
+    'beta': "Development Status :: 4 - Beta",
+    'stable': "Development Status :: 5 - Production/Stable",
+    'mature': "Development Status :: 6 - Mature",
+    'inactive': "Development Status :: 7 - Inactive"
+}
 dev_status = status["alpha"]
 
 cats = [
-      dev_status,
-      "Environment :: Plugins",
-      "Environment :: Web Environment",
-      "Framework :: Trac",
-      "Intended Audience :: Developers",
-      "Intended Audience :: Information Technology",
-      "Intended Audience :: Other Audience",
-      "Intended Audience :: System Administrators",
-      "License :: Unknown",
-      "Operating System :: OS Independent",
-      "Programming Language :: Python",
-      "Programming Language :: Python :: 2.5",
-      "Programming Language :: Python :: 2.6",
-      "Programming Language :: Python :: 2.7",
-      "Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries",
-      "Topic :: Internet :: WWW/HTTP :: HTTP Servers",
-      "Topic :: Internet :: WWW/HTTP :: WSGI",
-      "Topic :: Software Development :: Bug Tracking",
-      "Topic :: Software Development :: Libraries :: Application Frameworks",
-      "Topic :: Software Development :: Libraries :: Python Modules",
-      "Topic :: Software Development :: User Interfaces",
-    ]
+    dev_status,
+    "Environment :: Plugins",
+    "Environment :: Web Environment",
+    "Framework :: Trac",
+    "Intended Audience :: Developers",
+    "Intended Audience :: Information Technology",
+    "Intended Audience :: Other Audience",
+    "Intended Audience :: System Administrators",
+    "License :: Unknown",
+    "Operating System :: OS Independent",
+    "Programming Language :: Python",
+    "Programming Language :: Python :: 2.5",
+    "Programming Language :: Python :: 2.6",
+    "Programming Language :: Python :: 2.7",
+    "Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries",
+    "Topic :: Internet :: WWW/HTTP :: HTTP Servers",
+    "Topic :: Internet :: WWW/HTTP :: WSGI",
+    "Topic :: Software Development :: Bug Tracking",
+    "Topic :: Software Development :: Libraries :: Application Frameworks",
+    "Topic :: Software Development :: Libraries :: Python Modules",
+    "Topic :: Software Development :: User Interfaces",
+]
 
 # Add the change log to the package description.
 chglog = None
 try:
     from os.path import dirname, join
+
     chglog = open(join(dirname(__file__), "CHANGES"))
-    DESC+= ('\n\n' + chglog.read())
+    DESC += ('\n\n' + chglog.read())
 finally:
     if chglog:
         chglog.close()
 
 DIST_NM = 'BloodhoundRelationsPlugin'
-PKG_INFO = {'bhrelations': ('bhrelations',                     # Package dir
+PKG_INFO = {'bhrelations': ('bhrelations',  # Package dir
                             # Package data
                             ['../CHANGES', '../TODO', '../COPYRIGHT',
-                              '../NOTICE', '../README', '../TESTING_README',
-                              'htdocs/*.*', 'htdocs/css/*.css',
-                              'htdocs/img/*.*', 'htdocs/js/*.js',
-                              'templates/*', 'default-pages/*',
-                              'locale/*/LC_MESSAGES/*.mo'],
-                          ),
+                             '../NOTICE', '../README', '../TESTING_README',
+                             'htdocs/*.*', 'htdocs/css/*.css',
+                             'htdocs/img/*.*', 'htdocs/js/*.js',
+                             'templates/*', 'default-pages/*',
+                             'locale/*/LC_MESSAGES/*.mo'],
+                            ),
             'bhrelations.widgets': (
                 'bhrelations/widgets', ['templates/*.html']),
             'bhrelations.tests': (
@@ -117,13 +114,14 @@
 extra = {}
 try:
     from trac.util.dist import get_l10n_cmdclass
+
     cmdclass = get_l10n_cmdclass()
     if cmdclass:
         extra['cmdclass'] = cmdclass
         extractors = [
-            ('**.py',                'trac.dist:extract_python', None),
+            ('**.py', 'trac.dist:extract_python', None),
             ('**/templates/**.html', 'genshi', None),
-            ('**/templates/**.txt',  'genshi', {
+            ('**/templates/**.txt', 'genshi', {
                 'template_class': 'genshi.template:TextTemplate'
             }),
         ]
@@ -137,21 +135,21 @@
     name=DIST_NM,
     version=latest,
     description=DESC.split('\n', 1)[0],
-    author = "Apache Bloodhound",
-    license = "Apache License v2",
-    url = "https://bloodhound.apache.org/",
-    requires = ['trac'],
-    package_dir = dict([p, i[0]] for p, i in PKG_INFO.iteritems()),
-    packages = PKG_INFO.keys(),
-    package_data = dict([p, i[1]] for p, i in PKG_INFO.iteritems()),
+    author="Apache Bloodhound",
+    license="Apache License v2",
+    url="https://bloodhound.apache.org/",
+    requires=['trac'],
+    package_dir=dict([p, i[0]] for p, i in PKG_INFO.iteritems()),
+    packages=PKG_INFO.keys(),
+    package_data=dict([p, i[1]] for p, i in PKG_INFO.iteritems()),
     include_package_data=True,
-    provides = ['%s (%s)' % (p, latest) for p in PKG_INFO.keys()],
-    obsoletes = ['%s (>=%s.0.0, <%s)' % (p, versions[-1][0], latest) \
-                  for p in PKG_INFO.keys()],
-    entry_points = ENTRY_POINTS,
-    classifiers = cats,
-    long_description= DESC,
+    provides=['%s (%s)' % (p, latest) for p in PKG_INFO.keys()],
+    obsoletes=['%s (>=%s.0.0, <%s)' % (p, versions[-1][0], latest) \
+               for p in PKG_INFO.keys()],
+    entry_points=ENTRY_POINTS,
+    classifiers=cats,
+    long_description=DESC,
     test_suite='bhrelations.tests.test_suite',
     tests_require=['unittest2'] if sys.version_info < (2, 7) else [],
     **extra
-    )
+)
diff --git a/bloodhound_search/setup.py b/bloodhound_search/setup.py
index e0645e7..84f07cd 100644
--- a/bloodhound_search/setup.py
+++ b/bloodhound_search/setup.py
@@ -19,11 +19,7 @@
 
 
 import sys
-from pkg_resources import parse_version
-try:
-    from setuptools import setup
-except ImportError:
-    from distutils.core import setup
+from setuptools import setup
 
 DESC = """Search plugin for Apache(TM) Bloodhound.
 
@@ -37,90 +33,91 @@
     (0, 7, 0),
     (0, 8, 0),
     (0, 9, 0),
-    ]
+]
 
 latest = '.'.join(str(x) for x in versions[-1])
 
 status = {
-            'planning' :  "Development Status :: 1 - Planning",
-            'pre-alpha' : "Development Status :: 2 - Pre-Alpha",
-            'alpha' :     "Development Status :: 3 - Alpha",
-            'beta' :      "Development Status :: 4 - Beta",
-            'stable' :    "Development Status :: 5 - Production/Stable",
-            'mature' :    "Development Status :: 6 - Mature",
-            'inactive' :  "Development Status :: 7 - Inactive"
-         }
+    'planning': "Development Status :: 1 - Planning",
+    'pre-alpha': "Development Status :: 2 - Pre-Alpha",
+    'alpha': "Development Status :: 3 - Alpha",
+    'beta': "Development Status :: 4 - Beta",
+    'stable': "Development Status :: 5 - Production/Stable",
+    'mature': "Development Status :: 6 - Mature",
+    'inactive': "Development Status :: 7 - Inactive"
+}
 dev_status = status["alpha"]
 
 cats = [
-      dev_status,
-      "Environment :: Plugins",
-      "Environment :: Web Environment",
-      "Framework :: Trac",
-      "Intended Audience :: Developers",
-      "Intended Audience :: Information Technology",
-      "Intended Audience :: Other Audience",
-      "Intended Audience :: System Administrators",
-      "License :: Unknown",
-      "Operating System :: OS Independent",
-      "Programming Language :: Python",
-      "Programming Language :: Python :: 2.5",
-      "Programming Language :: Python :: 2.6",
-      "Programming Language :: Python :: 2.7",
-      "Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries",
-      "Topic :: Internet :: WWW/HTTP :: HTTP Servers",
-      "Topic :: Internet :: WWW/HTTP :: WSGI",
-      "Topic :: Software Development :: Bug Tracking",
-      "Topic :: Software Development :: Libraries :: Application Frameworks",
-      "Topic :: Software Development :: Libraries :: Python Modules",
-      "Topic :: Software Development :: User Interfaces",
-    ]
+    dev_status,
+    "Environment :: Plugins",
+    "Environment :: Web Environment",
+    "Framework :: Trac",
+    "Intended Audience :: Developers",
+    "Intended Audience :: Information Technology",
+    "Intended Audience :: Other Audience",
+    "Intended Audience :: System Administrators",
+    "License :: Unknown",
+    "Operating System :: OS Independent",
+    "Programming Language :: Python",
+    "Programming Language :: Python :: 2.5",
+    "Programming Language :: Python :: 2.6",
+    "Programming Language :: Python :: 2.7",
+    "Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries",
+    "Topic :: Internet :: WWW/HTTP :: HTTP Servers",
+    "Topic :: Internet :: WWW/HTTP :: WSGI",
+    "Topic :: Software Development :: Bug Tracking",
+    "Topic :: Software Development :: Libraries :: Application Frameworks",
+    "Topic :: Software Development :: Libraries :: Python Modules",
+    "Topic :: Software Development :: User Interfaces",
+]
 
 # Add the change log to the package description.
 chglog = None
 try:
     from os.path import dirname, join
+
     chglog = open(join(dirname(__file__), "CHANGES"))
-    DESC+= ('\n\n' + chglog.read())
+    DESC += ('\n\n' + chglog.read())
 finally:
     if chglog:
         chglog.close()
 
 DIST_NM = 'BloodhoundSearchPlugin'
-PKG_INFO = {'bhsearch' : ('bhsearch',                     # Package dir
-                            # Package data
-                            ['../CHANGES', '../TODO', '../COPYRIGHT',
-                              '../NOTICE', '../README', '../TESTING_README',
-                              'htdocs/*.*', 'htdocs/css/*.css',
-                              'htdocs/img/*.*', 'htdocs/js/*.js',
-                              'templates/*', 'default-pages/*',
-                              'locale/*/LC_MESSAGES/*.mo'],
-                          ),
-            'bhsearch.search_resources' : (
-                'bhsearch/search_resources', # Package dir
+PKG_INFO = {'bhsearch': ('bhsearch',  # Package dir
+                         # Package data
+                         ['../CHANGES', '../TODO', '../COPYRIGHT',
+                          '../NOTICE', '../README', '../TESTING_README',
+                          'htdocs/*.*', 'htdocs/css/*.css',
+                          'htdocs/img/*.*', 'htdocs/js/*.js',
+                          'templates/*', 'default-pages/*',
+                          'locale/*/LC_MESSAGES/*.mo'],
+                         ),
+            'bhsearch.search_resources': (
+                'bhsearch/search_resources',  # Package dir
                 []
-                ),
-#            'search.widgets' : ('bhsearch/widgets',     # Package dir
-#                            # Package data
-#                            ['templates/*', 'htdocs/*.css'],
-#                          ),
-#            'search.layouts' : ('bhsearch/layouts',     # Package dir
-#                            # Package data
-#                            ['templates/*'],
-#                          ),
-            'bhsearch.tests' : ('bhsearch/tests',     # Package dir
-                            # Package data
-                            ['data/*.*'],
-                          ),
-            'bhsearch.tests.search_resources' : (
-                'bhsearch/tests/search_resources',     # Package dir
-                            # Package data
-                            ['data/*.*'],
-                          ),
-            'bhsearch.utils' : ('bhsearch/utils',     # Package dir
-                            # Package data
-                            [],
-                          ),
+            ),
+            #            'search.widgets' : ('bhsearch/widgets',     # Package dir
+            #                            # Package data
+            #                            ['templates/*', 'htdocs/*.css'],
+            #                          ),
+            #            'search.layouts' : ('bhsearch/layouts',     # Package dir
+            #                            # Package data
+            #                            ['templates/*'],
+            #                          ),
+            'bhsearch.tests': ('bhsearch/tests',  # Package dir
+                               # Package data
+                               ['data/*.*'],
+                               ),
+            'bhsearch.tests.search_resources': (
+                'bhsearch/tests/search_resources',  # Package dir
+                # Package data
+                ['data/*.*'],
+            ),
+            'bhsearch.utils': ('bhsearch/utils',  # Package dir
+                               # Package data
+                               [],
+                               ),
             }
 
 ENTRY_POINTS = {
@@ -141,18 +138,19 @@
         'bhsearch.security = bhsearch.security',
         'bhsearch.whoosh_backend = bhsearch.whoosh_backend',
     ],
-    }
+}
 
 extra = {}
 try:
     from trac.util.dist import get_l10n_cmdclass
+
     cmdclass = get_l10n_cmdclass()
     if cmdclass:
         extra['cmdclass'] = cmdclass
         extractors = [
-            ('**.py',                'trac.dist:extract_python', None),
+            ('**.py', 'trac.dist:extract_python', None),
             ('**/templates/**.html', 'genshi', None),
-            ('**/templates/**.txt',  'genshi', {
+            ('**/templates/**.txt', 'genshi', {
                 'template_class': 'genshi.template:TextTemplate'
             }),
         ]
@@ -166,22 +164,22 @@
     name=DIST_NM,
     version=latest,
     description=DESC.split('\n', 1)[0],
-    author = "Apache Bloodhound",
-    license = "Apache License v2",
-    url = "https://bloodhound.apache.org/",
-    requires = ['trac'],
-    install_requires = ['whoosh>=2.5.1'],
-    package_dir = dict([p, i[0]] for p, i in PKG_INFO.iteritems()),
-    packages = PKG_INFO.keys(),
-    package_data = dict([p, i[1]] for p, i in PKG_INFO.iteritems()),
+    author="Apache Bloodhound",
+    license="Apache License v2",
+    url="https://bloodhound.apache.org/",
+    requires=['trac'],
+    install_requires=['whoosh>=2.5.1'],
+    package_dir=dict([p, i[0]] for p, i in PKG_INFO.iteritems()),
+    packages=PKG_INFO.keys(),
+    package_data=dict([p, i[1]] for p, i in PKG_INFO.iteritems()),
     include_package_data=True,
-    provides = ['%s (%s)' % (p, latest) for p in PKG_INFO.keys()],
-    obsoletes = ['%s (>=%s.0.0, <%s)' % (p, versions[-1][0], latest) \
-                  for p in PKG_INFO.keys()],
-    entry_points = ENTRY_POINTS,
-    classifiers = cats,
-    long_description= DESC,
+    provides=['%s (%s)' % (p, latest) for p in PKG_INFO.keys()],
+    obsoletes=['%s (>=%s.0.0, <%s)' % (p, versions[-1][0], latest) \
+               for p in PKG_INFO.keys()],
+    entry_points=ENTRY_POINTS,
+    classifiers=cats,
+    long_description=DESC,
     test_suite='bhsearch.tests.test_suite',
     tests_require=['unittest2'] if sys.version_info < (2, 7) else [],
     **extra
-    )
+)
diff --git a/bloodhound_theme/setup.py b/bloodhound_theme/setup.py
index 465ed68..6794fb1 100644
--- a/bloodhound_theme/setup.py
+++ b/bloodhound_theme/setup.py
@@ -18,19 +18,21 @@
 #  specific language governing permissions and limitations
 #  under the License.
 
-from setuptools import setup
 import sys
 
+from setuptools import setup
+
 extra = {}
 try:
     from trac.util.dist import get_l10n_js_cmdclass
+
     cmdclass = get_l10n_js_cmdclass()
     if cmdclass:
         extra['cmdclass'] = cmdclass
         extractors = [
-            ('**.py',                'trac.dist:extract_python', None),
+            ('**.py', 'trac.dist:extract_python', None),
             ('**/templates/**.html', 'genshi', None),
-            ('**/templates/**.txt',  'genshi', {
+            ('**/templates/**.txt', 'genshi', {
                 'template_class': 'genshi.template:TextTemplate'
             }),
         ]
@@ -41,26 +43,25 @@
     pass
 
 setup(
-  name = 'BloodhoundTheme',
-  version = '0.9.0',
-  description = "Theme for Apache(TM) Bloodhound.",
-  author = "Apache Bloodhound",
-  license = "Apache License v2",
-  url = "https://bloodhound.apache.org/",
-  keywords = "trac plugin theme bloodhound",
-  packages = ['bhtheme'],
-  package_data = {'bhtheme': ['htdocs/*.*', 'htdocs/img/*.*',
+    name='BloodhoundTheme',
+    version='0.9.0',
+    description="Theme for Apache(TM) Bloodhound.",
+    author="Apache Bloodhound",
+    license="Apache License v2",
+    url="https://bloodhound.apache.org/",
+    keywords="trac plugin theme bloodhound",
+    packages=['bhtheme'],
+    package_data={'bhtheme': ['htdocs/*.*', 'htdocs/img/*.*',
                               'htdocs/js/*.js', 'htdocs/css/*.css',
-                              'templates/*.*',  'locale/*/LC_MESSAGES/*.mo']},
-  classifiers = [
-      'Framework :: Trac',
+                              'templates/*.*', 'locale/*/LC_MESSAGES/*.mo']},
+    classifiers=[
+        'Framework :: Trac',
     ],
-  install_requires = ['BloodhoundDashboardPlugin', 'TracThemeEngine'],
-  test_suite = 'bhtheme.tests.suite',
-  tests_require = ['unittest2'] if sys.version_info < (2, 7) else [],
-  entry_points = {
-      'trac.plugins': [
-            'bhtheme.theme = bhtheme.theme',
-        ]},
+    install_requires=['BloodhoundDashboardPlugin', 'TracThemeEngine'],
+    test_suite='bhtheme.tests.suite',
+    tests_require=['unittest2'] if sys.version_info < (2, 7) else [],
+    entry_points={
+        'trac.plugins': ['bhtheme.theme = bhtheme.theme']
+    },
     **extra
 )
diff --git a/installer/setup.py b/installer/setup.py
index 5de7503..aec20b9 100644
--- a/installer/setup.py
+++ b/installer/setup.py
@@ -17,17 +17,13 @@
 #  specific language governing permissions and limitations
 #  under the License.
 
-try:
-    from setuptools import setup
-except ImportError:
-    from ditutils.core import setup
+from setuptools import setup
 
 DESC = """Installer for Apache Bloodhound
 
 Adds the bloodhound_setup cli command.
 """
 
-
 versions = [
     (0, 8, 0),
     (0, 9, 0),
