Index: themeengine/api.py
===================================================================
--- themeengine/api.py	(revision 10984)
+++ themeengine/api.py	(working copy)
@@ -46,8 +46,6 @@
     theme_name = Option('theme', 'theme', default='default',
                    doc='The theme to use to style this Trac.')
     
-    implements(IThemeProvider)
-                   
     def theme(self):
         if self.theme_name.lower() == 'default' or self.theme_name == '':
             return None
@@ -70,45 +68,6 @@
                 theme['name'] = name
                 self.info[name.lower()] = theme
                 
-    # IThemeProvider methods
-    def get_theme_names(self):
-        yield 'default'
-        
-    def get_theme_info(self, name):
-        return {
-            'description': 'The default Trac theme.',
-            'screenshot': 'htdocs/default_screenshot.png',
-            'colors': [
-                ('text', 'color', 'body, .milestone .info h2 *:link, .milestone .info h2 *:visited'),
-                ('background', 'background-color', 'body'),
-                ('link', 'color', '*:link, *:visited, #tabs *:link, #tabs *:visited, .milestone .info h2 em'),
-                ('link_hover', 'color', '*:link:hover, *:visited:hover, #tabs *:link:hover, #tabs *:visited:hover'),
-                ('mainnav', 'background-color', '#mainnav'),
-                ('mainnav_active', 'background-color', '#mainnav .active *:link, #mainnav .active *:visited'),
-                ('mainnav_hover', 'background-color', '#mainnav *:link:hover, #mainnav *:visited:hover'),
-            ],
-            'schemes': [
-                ('default', {
-                    'text': '#000000',
-                    'background': '#ffffff',
-                    'link': '#bb0000',
-                    'link_hover': '#555555',
-                    'mainnav': '#ffffff',
-                    'mainnav_active': '#000000',
-                    'mainnav_hover': '#cccccc',
-                }),
-                ('omgponies', {
-                    'text': '#A42D8D',
-                    'background': '#FECDE3',
-                    'link': '#E600BC',
-                    'link_hover': '#8C366C',
-                    'mainnav': '#FB88C3',
-                    'mainnav_active': '#EB009B',
-                    'mainnav_hover': '#c15c9f',
-                }),
-            ],
-        }
-
 class ThemeBase(Component):
     """A base class for themes."""
     
@@ -154,3 +113,44 @@
                 info[attr] = val
            
 
+class DefaultTheme(ThemeBase):
+    """The default theme."""
+    # IThemeProvider methods
+    def get_theme_names(self):
+        yield 'default'
+        
+    def get_theme_info(self, name):
+        return {
+            'description': 'The default Trac theme.',
+            'screenshot': 'htdocs/default_screenshot.png',
+            'colors': [
+                ('text', 'color', 'body, .milestone .info h2 *:link, .milestone .info h2 *:visited'),
+                ('background', 'background-color', 'body'),
+                ('link', 'color', '*:link, *:visited, #tabs *:link, #tabs *:visited, .milestone .info h2 em'),
+                ('link_hover', 'color', '*:link:hover, *:visited:hover, #tabs *:link:hover, #tabs *:visited:hover'),
+                ('mainnav', 'background-color', '#mainnav'),
+                ('mainnav_active', 'background-color', '#mainnav .active *:link, #mainnav .active *:visited'),
+                ('mainnav_hover', 'background-color', '#mainnav *:link:hover, #mainnav *:visited:hover'),
+            ],
+            'schemes': [
+                ('default', {
+                    'text': '#000000',
+                    'background': '#ffffff',
+                    'link': '#bb0000',
+                    'link_hover': '#555555',
+                    'mainnav': '#ffffff',
+                    'mainnav_active': '#000000',
+                    'mainnav_hover': '#cccccc',
+                }),
+                ('omgponies', {
+                    'text': '#A42D8D',
+                    'background': '#FECDE3',
+                    'link': '#E600BC',
+                    'link_hover': '#8C366C',
+                    'mainnav': '#FB88C3',
+                    'mainnav_active': '#EB009B',
+                    'mainnav_hover': '#c15c9f',
+                }),
+            ],
+        }
+
