← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~blr/launchpad/zcml-cleanup into lp:launchpad

 

Bayard 'kit' Randel has proposed merging lp:~blr/launchpad/zcml-cleanup into lp:launchpad.

Commit message:
Format and sort registry browser zcml attributes consistently.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~blr/launchpad/zcml-cleanup/+merge/258117

Format and sort registry browser zcml attributes consistently, with reference to zope zcml style guide (http://docs.zope.org/zopetoolkit/codingstyle/zcml-style.html).
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~blr/launchpad/zcml-cleanup into lp:launchpad.
=== modified file 'lib/lp/registry/browser/configure.zcml'
--- lib/lp/registry/browser/configure.zcml	2015-02-27 01:11:06 +0000
+++ lib/lp/registry/browser/configure.zcml	2015-05-03 08:37:35 +0000
@@ -8,395 +8,457 @@
     xmlns:i18n="http://namespaces.zope.org/i18n";
     xmlns:xmlrpc="http://namespaces.zope.org/xmlrpc";
     i18n_domain="launchpad">
-    <browser:url
+  <browser:url
       for="lp.registry.interfaces.person.IPersonSet"
       path_expression="string:people"
       parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
       />
-    <browser:url
+  <browser:url
       for="lp.registry.interfaces.distribution.IDistributionSet"
       path_expression="string:distros"
       parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
       />
-    <browser:url
+  <browser:url
       for="lp.registry.interfaces.sourcepackagename.ISourcePackageNameSet"
       path_expression="string:sourcepackagenames"
       parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
       />
-    <browser:url
+  <browser:url
       for="lp.registry.interfaces.projectgroup.IProjectGroupSet"
       path_expression="string:projectgroups"
       parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
       />
-    <browser:feeds
-        module="lp.registry.feed.announcement"
-        classes="LaunchpadAnnouncementsFeed TargetAnnouncementsFeed"
-        />
-    <browser:url
-       for="lp.app.interfaces.services.IServiceFactory"
-       path_expression="string:+services"
-       parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
-      />
-    <browser:url
-       for="lp.app.interfaces.services.IService"
-       path_expression="string:${name}"
-       parent_utility="lp.app.interfaces.services.IServiceFactory"/>
+  <browser:feeds
+      module="lp.registry.feed.announcement"
+      classes="LaunchpadAnnouncementsFeed TargetAnnouncementsFeed"
+      />
+  <browser:url
+      for="lp.app.interfaces.services.IServiceFactory"
+      path_expression="string:+services"
+      parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
+      />
+  <browser:url
+      for="lp.app.interfaces.services.IService"
+      path_expression="string:${name}"
+      parent_utility="lp.app.interfaces.services.IServiceFactory"/>
 
-<facet facet="overview">
+  <facet facet="overview">
     <browser:page
+        name="+grantee-table-view"
         for="lp.services.webapp.interfaces.IBatchNavigator"
-        name="+grantee-table-view"
+        permission="zope.Public"
         template="../templates/pillar-sharing-table.pt"
-        permission="zope.Public" />
-
+        />
     <browser:page
+        name="rdf"
         for="lp.services.webapp.interfaces.ILaunchpadRoot"
         class="lp.registry.browser.RDFIndexView"
-        name="rdf"
+        permission="zope.Public"
         template="../templates/rdf-index.pt"
-        permission="zope.Public"
         />
-
     <browser:page
-        for="lp.services.webapp.interfaces.ILaunchpadApplication"
         name="rdf-spec"
+        for="lp.services.webapp.interfaces.ILaunchpadApplication"
         class="lp.registry.browser.RDFFolder"
+        permission="zope.Public"
         attribute="__call__"
-        permission="zope.Public"
         />
-
     <browser:url
         for="lp.registry.interfaces.teammembership.ITeamMembership"
         path_expression="string:+member/${person/name}"
         rootsite="mainsite"
-        attribute_to_parent="team"/>
+        attribute_to_parent="team"
+        />
     <adapter
-        provides="lp.services.webapp.interfaces.IBreadcrumb"
-        for="lp.registry.interfaces.teammembership.ITeamMembership"
         factory="lp.registry.browser.teammembership.TeamMembershipBreadcrumb"
-        permission="zope.Public"/>
+        provides="lp.services.webapp.interfaces.IBreadcrumb"
+        for="lp.registry.interfaces.teammembership.ITeamMembership"
+        permission="zope.Public"
+        />
     <browser:defaultView
+        name="+index"
         for="lp.registry.interfaces.teammembership.ITeamMembership"
-        name="+index"/>
+        />
     <browser:page
         name="+index"
         for="lp.registry.interfaces.teammembership.ITeamMembership"
-        permission="launchpad.Edit"
         class="lp.registry.browser.teammembership.TeamMembershipEditView"
-        template="../templates/teammembership-index.pt"/>
+        permission="launchpad.Edit"
+        template="../templates/teammembership-index.pt"
+        />
     <browser:page
         name="+listing-simple"
         for="lp.registry.interfaces.teammembership.ITeamMembership"
         permission="zope.Public"
-        template="../templates/teammembership-listing-simple.pt"/>
+        template="../templates/teammembership-listing-simple.pt"
+        />
     <browser:navigation
         module="lp.registry.browser.distroseries"
         classes="
-            DistroSeriesNavigation"/>
+                 DistroSeriesNavigation"
+        />
     <browser:url
         for="lp.registry.interfaces.distroseries.IDistroSeries"
         path_expression="name"
-        attribute_to_parent="distribution"/>
+        attribute_to_parent="distribution"
+        />
     <browser:defaultView
+        name="+index"
         for="lp.registry.interfaces.distroseries.IDistroSeries"
-        name="+index"/>
+        />
     <browser:page
-        for="lp.registry.interfaces.distroseries.IDistroSeries"
         name="+macros"
+        for="lp.registry.interfaces.distroseries.IDistroSeries"
         permission="zope.Public"
-        template="../templates/packagesearch-macros.pt"/>
+        template="../templates/packagesearch-macros.pt"
+        />
     <browser:page
-        for="lp.registry.interfaces.distroseries.IDistroSeries"
-        permission="zope.Public"
         name="+search"
+        for="lp.registry.interfaces.distroseries.IDistroSeries"
         class="lp.registry.browser.distroseries.DistroSeriesPackageSearchView"
-        template="../templates/distroseries-search.pt"/>
+        permission="zope.Public"
+        template="../templates/distroseries-search.pt"
+        />
     <browser:pages
         for="lp.registry.interfaces.distroseries.IDistroSeries"
         class="lp.registry.browser.distroseries.DistroSeriesView"
         permission="zope.Public">
-        <browser:page
-            name="+table-milestones"
-            template="../templates/productseries-table-releases.pt"/>
-        <browser:page
-            name="+filebug"
-            facet="bugs"
-            attribute="redirectToDistroFileBug"/>
-        <browser:page
-            name="+index"
-            template="../templates/distroseries-index.pt"/>
-        <browser:page
-            name="+portlet-details"
-            template="../templates/distroseries-details.pt"/>
-        <browser:page
-            name="+portlet-package-summary"
-            template="../templates/distroseries-portlet-packaging.pt"/>
-        <browser:page
-            name="+portlet-derivation"
-            template="../templates/distroseries-portlet-derivation.pt"/>
-     </browser:pages>
+      <browser:page
+          name="+table-milestones"
+          template="../templates/productseries-table-releases.pt"
+          />
+      <browser:page
+          name="+filebug"
+          facet="bugs"
+          attribute="redirectToDistroFileBug"
+          />
+      <browser:page
+          name="+index"
+          template="../templates/distroseries-index.pt"
+          />
+      <browser:page
+          name="+portlet-details"
+          template="../templates/distroseries-details.pt"
+          />
+      <browser:page
+          name="+portlet-package-summary"
+          template="../templates/distroseries-portlet-packaging.pt"
+          />
+      <browser:page
+          name="+portlet-derivation"
+          template="../templates/distroseries-portlet-derivation.pt"
+          />
+    </browser:pages>
     <browser:page
+        name="+packaging"
         for="lp.registry.interfaces.distroseries.IDistroSeries"
         class="lp.registry.browser.distroseries.DistroSeriesPackagesView"
         permission="zope.Public"
-        name="+packaging"
-        template="../templates/distroseries-packaging.pt"/>
+        template="../templates/distroseries-packaging.pt"
+        />
     <browser:page
+        name="+needs-packaging"
         for="lp.registry.interfaces.distroseries.IDistroSeries"
         class="lp.registry.browser.distroseries.DistroSeriesNeedsPackagesView"
         permission="zope.Public"
-        name="+needs-packaging"
-        template="../templates/distroseries-needs-packaging.pt"/>
+        template="../templates/distroseries-needs-packaging.pt"
+        />
     <browser:page
+        name="+edit"
         for="lp.registry.interfaces.distroseries.IDistroSeries"
-        permission="launchpad.Edit"
-        name="+edit"
         class="lp.registry.browser.distroseries.DistroSeriesEditView"
-        template="../../app/templates/generic-edit.pt"/>
+        permission="launchpad.Edit"
+        template="../../app/templates/generic-edit.pt"
+        />
     <browser:page
+        name="+admin"
         for="lp.registry.interfaces.distroseries.IDistroSeries"
-        permission="launchpad.Moderate"
-        name="+admin"
         class="lp.registry.browser.distroseries.DistroSeriesAdminView"
-        template="../../app/templates/generic-edit.pt"/>
+        permission="launchpad.Moderate"
+        template="../../app/templates/generic-edit.pt"
+        />
     <browser:page
         name="+addmilestone"
         for="lp.registry.interfaces.distroseries.IDistroSeries"
         class="lp.registry.browser.milestone.MilestoneAddView"
         permission="launchpad.Edit"
-        template="../templates/milestone-add.pt"/>
+        template="../templates/milestone-add.pt"
+        />
     <browser:page
         name="+ask-a-question-button"
         for="lp.registry.interfaces.distroseries.IDistroSeries"
         class="lp.answers.browser.questiontarget.AskAQuestionButtonPortlet"
-        permission="zope.Public"/>
+        permission="zope.Public"
+        />
     <browser:page
         name="+missingpackages"
         for="lp.registry.interfaces.distroseries.IDistroSeries"
         class="lp.registry.browser.distroseries.DistroSeriesMissingPackagesView"
+        permission="zope.Public"
         template="../templates/distroseries-localdifferences.pt"
-        permission="zope.Public"/>
+        />
     <browser:page
         name="+uniquepackages"
         for="lp.registry.interfaces.distroseries.IDistroSeries"
         class="lp.registry.browser.distroseries.DistroSeriesUniquePackagesView"
+        permission="zope.Public"
         template="../templates/distroseries-localdifferences.pt"
-        permission="zope.Public"/>
-     <browser:page
+        />
+    <browser:page
         name="+localpackagediffs"
         for="lp.registry.interfaces.distroseries.IDistroSeries"
         class="lp.registry.browser.distroseries.DistroSeriesLocalDifferencesView"
+        permission="zope.Public"
         template="../templates/distroseries-localdifferences.pt"
-        permission="zope.Public"/>
+        />
     <browser:url
         for="lp.registry.interfaces.distroseriesdifference.IDistroSeriesDifference"
         path_expression="string:+source/${source_package_name/name}/+difference/${parent_series/parent/name}/${parent_series/name}"
         rootsite="mainsite"
-        attribute_to_parent="derived_series"/>
+        attribute_to_parent="derived_series"
+        />
     <browser:page
         name="+listing-distroseries-extra"
         for="lp.registry.interfaces.distroseriesdifference.IDistroSeriesDifference"
         class="lp.registry.browser.distroseriesdifference.DistroSeriesDifferenceView"
+        permission="zope.Public"
         template="../templates/distroseriesdifference-listing-extra.pt"
-        permission="zope.Public"/>
+        />
     <browser:defaultView
+        name="+listing-distroseries-extra"
         for="lp.registry.interfaces.distroseriesdifference.IDistroSeriesDifference"
-        name="+listing-distroseries-extra"/>
+        />
     <browser:navigation
         module="lp.registry.browser.distroseriesdifference"
-        classes="DistroSeriesDifferenceNavigation"/>
+        classes="DistroSeriesDifferenceNavigation"
+        />
     <browser:url
         for="..interfaces.distroseriesdifferencecomment.IDistroSeriesDifferenceComment"
         path_expression="string:comments/${id}"
         attribute_to_parent="distro_series_difference"
-        rootsite="mainsite"/>
+        rootsite="mainsite"
+        />
     <browser:page
+        name="+latest-comment-fragment"
         for="..interfaces.distroseriesdifferencecomment.IDistroSeriesDifferenceComment"
+        class="..browser.distroseriesdifferencecomment.DistroSeriesDifferenceCommentView"
+        permission="zope.Public"
         template="../templates/distroseriesdifferencecomment-latest-comment-fragment.pt"
-        class="..browser.distroseriesdifferencecomment.DistroSeriesDifferenceCommentView"
-        permission="zope.Public"
-        name="+latest-comment-fragment" />
+        />
     <adapter
-      factory="lp.registry.browser.distroseriesdifference.CommentXHTMLRepresentation"
-      name="lazr.restful.EntryResource" />
-    <browser:menus
-        classes="
-            DistroSeriesOverviewMenu
-            DistroSeriesBugsMenu
-            DistroSeriesSpecificationsMenu"
-        module="lp.registry.browser.distroseries"/>
-        <browser:menus
-            module="lp.registry.browser.codeofconduct"
-            classes="
-                CodeOfConductOverviewMenu
-                CodeOfConductSetOverviewMenu
-                SignedCodeOfConductOverviewMenu
-                SignedCodeOfConductSetOverviewMenu"/>
-        <browser:defaultView
-            for="lp.registry.interfaces.codeofconduct.ICodeOfConduct"
-            name="+index"/>
-        <browser:page
-            for="lp.registry.interfaces.codeofconduct.ICodeOfConduct"
-            class="lp.registry.browser.codeofconduct.CodeOfConductView"
-            permission="zope.Public"
-            template="../templates/codeofconduct-index.pt"
-            name="+index"/>
-        <browser:page
-            name="+download"
-            for="lp.registry.interfaces.codeofconduct.ICodeOfConduct"
-            class="lp.registry.browser.codeofconduct.CodeOfConductDownloadView"
-            permission="zope.Public"
-            attribute="__call__"/>
-        <browser:page
-            name="+sign"
-            for="lp.registry.interfaces.codeofconduct.ICodeOfConduct"
-            class="lp.registry.browser.codeofconduct.SignedCodeOfConductAddView"
-            permission="launchpad.AnyPerson"
-            template="../templates/signedcodeofconduct-add.pt"/>
-        <browser:url
-            for="lp.registry.interfaces.codeofconduct.ICodeOfConductSet"
-            path_expression="string:codeofconduct"
-            parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"/>
-        <browser:url
-            for="lp.registry.interfaces.codeofconduct.ICodeOfConduct"
-            parent_utility="lp.registry.interfaces.codeofconduct.ICodeOfConductSet"
-            path_expression="version"/>
-        <browser:defaultView
-            for="lp.registry.interfaces.codeofconduct.ICodeOfConductSet"
-            name="+index"/>
-        <browser:page
-            for="lp.registry.interfaces.codeofconduct.ICodeOfConductSet"
-            class="lp.registry.browser.codeofconduct.CodeOfConductSetView"
-            permission="zope.Public"
-            template="../templates/codeofconduct-list.pt"
-            name="+index"/>
-        <browser:defaultView
-            for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConduct"
-            name="+index"/>
-        <browser:pages
-            for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConduct"
-            class="lp.registry.browser.codeofconduct.SignedCodeOfConductView"
-            permission="launchpad.Admin">
-            <browser:page
-                template="../templates/signedcodeofconduct-index.pt"
-                name="+index"/>
-        </browser:pages>
-        <browser:page
-            name="+activate"
-            for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConduct"
-            class="lp.registry.browser.codeofconduct.SignedCodeOfConductActiveView"
-            permission="launchpad.Admin"
-            template="../../app/templates/generic-edit.pt" />
-        <browser:page
-            name="+deactivate"
-            for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConduct"
-            class="lp.registry.browser.codeofconduct.SignedCodeOfConductDeactiveView"
-            permission="launchpad.Admin"
-            template="../../app/templates/generic-edit.pt" />
-        <browser:url
-            for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConductSet"
-            path_expression="string:console"
-            parent_utility="lp.registry.interfaces.codeofconduct.ICodeOfConductSet"/>
-        <browser:url
-            for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConduct"
-            path_expression="string:${id}"
-            parent_utility="lp.registry.interfaces.codeofconduct.ISignedCodeOfConductSet"/>
-        <browser:navigation
-            module="lp.registry.browser.codeofconduct"
-            classes="
-                SignedCodeOfConductSetNavigation
-                CodeOfConductSetNavigation"/>
-        <browser:defaultView
-            for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConductSet"
-            name="+index"/>
-        <browser:page
-            for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConductSet"
-            class="lp.registry.browser.codeofconduct.SignedCodeOfConductAdminView"
-            permission="launchpad.Admin"
-            template="../templates/codeofconduct-admin.pt"
-            name="+index"/>
-        <browser:page
-            name="+new"
-            for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConductSet"
-            class="lp.registry.browser.codeofconduct.SignedCodeOfConductAckView"
-            permission="launchpad.Admin"
-            template="../../app/templates/generic-edit.pt" />
+        name="lazr.restful.EntryResource"
+        factory="lp.registry.browser.distroseriesdifference.CommentXHTMLRepresentation"
+        />
+    <browser:menus
+        module="lp.registry.browser.distroseries"
+        classes="
+                 DistroSeriesOverviewMenu
+                 DistroSeriesBugsMenu
+                 DistroSeriesSpecificationsMenu"
+        />
+    <browser:menus
+        module="lp.registry.browser.codeofconduct"
+        classes="
+                 CodeOfConductOverviewMenu
+                 CodeOfConductSetOverviewMenu
+                 SignedCodeOfConductOverviewMenu
+                 SignedCodeOfConductSetOverviewMenu"
+        />
+    <browser:defaultView
+        name="+index"
+        for="lp.registry.interfaces.codeofconduct.ICodeOfConduct"
+        />
+    <browser:page
+        name="+index"
+        for="lp.registry.interfaces.codeofconduct.ICodeOfConduct"
+        class="lp.registry.browser.codeofconduct.CodeOfConductView"
+        permission="zope.Public"
+        template="../templates/codeofconduct-index.pt"
+        />
+    <browser:page
+        name="+download"
+        for="lp.registry.interfaces.codeofconduct.ICodeOfConduct"
+        class="lp.registry.browser.codeofconduct.CodeOfConductDownloadView"
+        permission="zope.Public"
+        attribute="__call__"
+        />
+    <browser:page
+        name="+sign"
+        for="lp.registry.interfaces.codeofconduct.ICodeOfConduct"
+        class="lp.registry.browser.codeofconduct.SignedCodeOfConductAddView"
+        permission="launchpad.AnyPerson"
+        template="../templates/signedcodeofconduct-add.pt"
+        />
+    <browser:url
+        for="lp.registry.interfaces.codeofconduct.ICodeOfConductSet"
+        path_expression="string:codeofconduct"
+        parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
+        />
+    <browser:url
+        for="lp.registry.interfaces.codeofconduct.ICodeOfConduct"
+        parent_utility="lp.registry.interfaces.codeofconduct.ICodeOfConductSet"
+        path_expression="version"
+        />
+    <browser:defaultView
+        name="+index"
+        for="lp.registry.interfaces.codeofconduct.ICodeOfConductSet"
+        />
+    <browser:page
+        name="+index"
+        for="lp.registry.interfaces.codeofconduct.ICodeOfConductSet"
+        class="lp.registry.browser.codeofconduct.CodeOfConductSetView"
+        permission="zope.Public"
+        template="../templates/codeofconduct-list.pt"
+        />
+    <browser:defaultView
+        name="+index"
+        for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConduct"
+        />
+    <browser:pages
+        for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConduct"
+        class="lp.registry.browser.codeofconduct.SignedCodeOfConductView"
+        permission="launchpad.Admin">
+      <browser:page
+          name="+index"
+          template="../templates/signedcodeofconduct-index.pt"
+          />
+    </browser:pages>
+    <browser:page
+        name="+activate"
+        for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConduct"
+        class="lp.registry.browser.codeofconduct.SignedCodeOfConductActiveView"
+        permission="launchpad.Admin"
+        template="../../app/templates/generic-edit.pt"
+        />
+    <browser:page
+        name="+deactivate"
+        for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConduct"
+        class="lp.registry.browser.codeofconduct.SignedCodeOfConductDeactiveView"
+        permission="launchpad.Admin"
+        template="../../app/templates/generic-edit.pt"
+        />
+    <browser:url
+        for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConductSet"
+        path_expression="string:console"
+        parent_utility="lp.registry.interfaces.codeofconduct.ICodeOfConductSet"
+        />
+    <browser:url
+        for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConduct"
+        path_expression="string:${id}"
+        parent_utility="lp.registry.interfaces.codeofconduct.ISignedCodeOfConductSet"
+        />
+    <browser:navigation
+        module="lp.registry.browser.codeofconduct"
+        classes="
+                 SignedCodeOfConductSetNavigation
+                 CodeOfConductSetNavigation"
+        />
+    <browser:defaultView
+        name="+index"
+        for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConductSet"
+        />
+    <browser:page
+        name="+index"
+        for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConductSet"
+        class="lp.registry.browser.codeofconduct.SignedCodeOfConductAdminView"
+        permission="launchpad.Admin"
+        template="../templates/codeofconduct-admin.pt"
+        />
+    <browser:page
+        name="+new"
+        for="lp.registry.interfaces.codeofconduct.ISignedCodeOfConductSet"
+        class="lp.registry.browser.codeofconduct.SignedCodeOfConductAckView"
+        permission="launchpad.Admin"
+        template="../../app/templates/generic-edit.pt"
+        />
     <browser:url
         for="lp.registry.interfaces.irc.IIrcID"
         path_expression="string:+ircnick/${id}"
         attribute_to_parent="person"
-        rootsite="api"/>
+        rootsite="api"
+        />
     <facet
         facet="answers">
-        <browser:page
-            name="+addquestion"
-            for="lp.registry.interfaces.projectgroup.IProjectGroup"
-            class="lp.registry.browser.project.ProjectAddQuestionView"
-            permission="launchpad.AnyPerson"/>
-        <browser:renamed-page
-            name="+addticket"
-            for="lp.registry.interfaces.projectgroup.IProjectGroup"
-            new_name="+addquestion"
-            rootsite="answers"/>
-        <browser:page
-            name="+ask-a-question-button"
-            for="lp.registry.interfaces.projectgroup.IProjectGroup"
-            class="lp.answers.browser.questiontarget.AskAQuestionButtonPortlet"
-            permission="zope.Public"/>
+      <browser:page
+          name="+addquestion"
+          for="lp.registry.interfaces.projectgroup.IProjectGroup"
+          class="lp.registry.browser.project.ProjectAddQuestionView"
+          permission="launchpad.AnyPerson"
+          />
+      <browser:renamed-page
+          name="+addticket"
+          for="lp.registry.interfaces.projectgroup.IProjectGroup"
+          new_name="+addquestion"
+          rootsite="answers"
+          />
+      <browser:page
+          name="+ask-a-question-button"
+          for="lp.registry.interfaces.projectgroup.IProjectGroup"
+          class="lp.answers.browser.questiontarget.AskAQuestionButtonPortlet"
+          permission="zope.Public"
+          />
     </facet>
     <browser:navigation
         module="lp.registry.browser.project"
         classes="
-            ProjectNavigation"/>
-    <browser:defaultView
-        for="lp.registry.interfaces.projectgroup.IProjectGroup"
-        name="+index"/>
-    <browser:defaultView
-        for="lp.registry.interfaces.projectgroup.IProjectGroup"
+                 ProjectNavigation"
+        />
+    <browser:defaultView
+        name="+index"
+        for="lp.registry.interfaces.projectgroup.IProjectGroup"
+        />
+    <browser:defaultView
         name="+questions"
-        layer="lp.answers.publisher.AnswersLayer"/>
+        for="lp.registry.interfaces.projectgroup.IProjectGroup"
+        layer="lp.answers.publisher.AnswersLayer"
+        />
     <browser:pages
         for="lp.registry.interfaces.projectgroup.IProjectGroup"
         class="lp.registry.browser.project.ProjectView"
         permission="zope.Public">
-        <browser:page
-            name="+index"
-            template="../templates/project-index.pt"/>
-        <browser:page
-            name="+listing-detailed"
-            template="../templates/project-listing-detailed.pt"/>
-
-        <!-- ProjectGroups portlets -->
-
-        <browser:page
-            name="+details"
-            template="../templates/project-details.pt"/>
+      <browser:page
+          name="+index"
+          template="../templates/project-index.pt"
+          />
+      <browser:page
+          name="+listing-detailed"
+          template="../templates/project-listing-detailed.pt"
+          />
+      <!-- ProjectGroups portlets -->
+      <browser:page
+          name="+details"
+          template="../templates/project-details.pt"
+          />
     </browser:pages>
     <browser:page
+        name="+rdf"
         for="lp.registry.interfaces.projectgroup.IProjectGroup"
         class="lp.registry.browser.project.ProjectRdfView"
         permission="zope.Public"
-        name="+rdf"
-        attribute="__call__"/>
+        attribute="__call__"
+        />
     <browser:pages
         for="lp.registry.interfaces.projectgroup.IProjectGroup"
-        permission="launchpad.Edit"
-        class="lp.registry.browser.project.ProjectMaintainerReassignmentView">
-        <browser:page
-            name="+reassign"
-            template="../../app/templates/object-reassignment.pt"/>
+        class="lp.registry.browser.project.ProjectMaintainerReassignmentView"
+        permission="launchpad.Edit">
+      <browser:page
+          name="+reassign"
+          template="../../app/templates/object-reassignment.pt"
+          />
     </browser:pages>
     <browser:page
         name="+register-a-blueprint-button"
         for="lp.registry.interfaces.projectgroup.IProjectGroup"
         class="lp.blueprints.browser.specificationtarget.RegisterABlueprintButtonPortlet"
-        permission="zope.Public"/>
+        permission="zope.Public"
+        />
     <browser:page
         name="+edit"
         for="lp.registry.interfaces.projectgroup.IProjectGroup"
         class="lp.registry.browser.project.ProjectEditView"
         permission="launchpad.Edit"
-        template="../templates/project-edit.pt"/>
+        template="../templates/project-edit.pt"
+        />
     <browser:page
         name="+branding"
         for="lp.registry.interfaces.projectgroup.IProjectGroup"
@@ -408,1104 +470,1294 @@
         for="lp.registry.interfaces.projectgroup.IProjectGroup"
         class="lp.registry.browser.project.ProjectReviewView"
         permission="launchpad.Moderate"
-        template="../templates/project-edit.pt"/>
+        template="../templates/project-edit.pt"
+        />
     <browser:page
         name="+newproduct"
         for="lp.registry.interfaces.projectgroup.IProjectGroup"
         class="lp.registry.browser.project.ProjectAddProductView"
         permission="launchpad.AnyPerson"
-        template="../templates/product-new.pt"/>
+        template="../templates/product-new.pt"
+        />
     <browser:defaultView
+        name="+index"
         for="lp.registry.interfaces.projectgroup.IProjectGroupSet"
-        name="+index"/>
+        />
     <browser:navigation
         module="lp.registry.browser.project"
         classes="
-            ProjectSetNavigation"/>
+                 ProjectSetNavigation"
+        />
     <browser:url
         for="lp.registry.interfaces.projectgroup.IProjectGroup"
         path_expression="name"
-        parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"/>
+        parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
+        />
     <browser:pages
         for="lp.registry.interfaces.projectgroup.IProjectGroupSet"
-        permission="zope.Public"
-        class="lp.registry.browser.project.ProjectSetView">
-        <browser:page
-            name="+all"
-            template="../templates/projects-all.pt"/>
-        <browser:page
-            name="+index"
-            template="../templates/projects-index.pt"/>
+        class="lp.registry.browser.project.ProjectSetView"
+        permission="zope.Public">
+      <browser:page
+          name="+all"
+          template="../templates/projects-all.pt"
+          />
+      <browser:page
+          name="+index"
+          template="../templates/projects-index.pt"
+          />
     </browser:pages>
     <browser:page
         name="+new"
         for="lp.registry.interfaces.projectgroup.IProjectGroupSet"
         class="lp.registry.browser.project.ProjectAddView"
         permission="launchpad.Moderate"
-        template="../../app/templates/generic-edit.pt"/>
+        template="../../app/templates/generic-edit.pt"
+        />
     <browser:url
         for="lp.registry.interfaces.projectgroup.IProjectGroupSeries"
         path_expression="string:+series/${name}"
-        attribute_to_parent="projectgroup"/>
+        attribute_to_parent="projectgroup"
+        />
     <browser:menus
+        module="lp.registry.browser.project"
         classes="
-            ProjectActionMenu
-            ProjectAnswersMenu
-            ProjectBugsMenu
-            ProjectEditNavigationMenu
-            ProjectFacets
-            ProjectOverviewMenu
-            ProjectSeriesSpecificationsMenu
-            ProjectSetContextMenu
-            ProjectSetNavigationMenu
-            ProjectSpecificationsMenu
-            "
-        module="lp.registry.browser.project"/>
+                 ProjectActionMenu
+                 ProjectAnswersMenu
+                 ProjectBugsMenu
+                 ProjectEditNavigationMenu
+                 ProjectFacets
+                 ProjectOverviewMenu
+                 ProjectSeriesSpecificationsMenu
+                 ProjectSetContextMenu
+                 ProjectSetNavigationMenu
+                 ProjectSpecificationsMenu
+                 "
+        />
     <browser:defaultView
+        name="+index"
         for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
-        name="+index"/>
+        />
     <browser:defaultView
+        name="+questions"
         for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
         layer="lp.answers.publisher.AnswersLayer"
-        name="+questions"/>
+        />
     <browser:url
         for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
         path_expression="string:+source/${name}"
-        attribute_to_parent="distribution"/>
+        attribute_to_parent="distribution"
+        />
     <browser:navigation
         module="lp.registry.browser.distributionsourcepackage"
         classes="
-            DistributionSourcePackageNavigation"/>
+                 DistributionSourcePackageNavigation"
+        />
     <browser:page
+        name="+index"
         for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
         class="lp.registry.browser.distributionsourcepackage.DistributionSourcePackageView"
         permission="zope.Public"
-        name="+index"
-        template="../templates/distributionsourcepackage-index.pt" />
+        template="../templates/distributionsourcepackage-index.pt"
+        />
     <browser:page
+        name="+changelog"
         for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
         class="lp.registry.browser.distributionsourcepackage.DistributionSourcePackageChangelogView"
         permission="zope.Public"
-        name="+changelog"
-        template="../templates/distributionsourcepackage-changelog.pt"/>
+        template="../templates/distributionsourcepackage-changelog.pt"
+        />
     <browser:page
+        name="+edit"
         for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
+        class="lp.registry.browser.distributionsourcepackage.DistributionSourcePackageEditView"
         permission="launchpad.BugSupervisor"
-        class="lp.registry.browser.distributionsourcepackage.DistributionSourcePackageEditView"
-        name="+edit"
-        template="../../app/templates/generic-edit.pt"/>
+        template="../../app/templates/generic-edit.pt"
+        />
     <browser:page
-        for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
-        permission="zope.Public"
-        class="lp.registry.browser.distributionsourcepackage.DistributionSourcePackageHelpView"
         name="+gethelp"
+        for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
         facet="answers"
-        template="../../answers/templates/sourcepackage-gethelp.pt"/>
+        class="lp.registry.browser.distributionsourcepackage.DistributionSourcePackageHelpView"
+        permission="zope.Public"
+        template="../../answers/templates/sourcepackage-gethelp.pt"
+        />
     <browser:menus
+        module="lp.registry.browser.distributionsourcepackage"
         classes="
-            DistributionSourcePackageActionMenu
-            DistributionSourcePackageAnswersMenu
-            DistributionSourcePackageBugsMenu
-            DistributionSourcePackageFacets
-            DistributionSourcePackageOverviewMenu"
-        module="lp.registry.browser.distributionsourcepackage"/>
+                 DistributionSourcePackageActionMenu
+                 DistributionSourcePackageAnswersMenu
+                 DistributionSourcePackageBugsMenu
+                 DistributionSourcePackageFacets
+                 DistributionSourcePackageOverviewMenu"
+        />
     <adapter
-        for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
-        provides="zope.traversing.interfaces.IPathAdapter"
+        name="fmt"
         factory="lp.registry.browser.distributionsourcepackage.DistributionSourcePackageFormatterAPI"
-        name="fmt"
+        provides="zope.traversing.interfaces.IPathAdapter"
+        for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
         />
     <adapter
-        for="lp.registry.interfaces.sourcepackage.ISourcePackage"
-        provides="zope.traversing.interfaces.IPathAdapter"
+        name="fmt"
         factory="lp.registry.browser.sourcepackage.SourcePackageFormatterAPI"
-        name="fmt"
+        provides="zope.traversing.interfaces.IPathAdapter"
+        for="lp.registry.interfaces.sourcepackage.ISourcePackage"
         />
     <browser:url
         for="lp.registry.interfaces.commercialsubscription.ICommercialSubscription"
         path_expression="string:+commercialsubscription/${id}"
-        attribute_to_parent="product"/>
+        attribute_to_parent="product"
+        />
     <browser:url
         for="lp.registry.interfaces.jabber.IJabberID"
         path_expression="string:+jabberid/${jabberid}"
         attribute_to_parent="person"
-        rootsite="api"/>
+        rootsite="api"
+        />
     <browser:url
         for="lp.registry.interfaces.pillar.IPillarNameSet"
         path_expression="string:pillars"
-        parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"/>
+        parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
+        />
     <adapter
-        provides="lp.services.webapp.interfaces.INavigationMenu"
+        name="overview"
+        factory="lp.registry.browser.pillar.InvolvedMenu"
         for="lp.registry.browser.pillar.IInvolved"
-        factory="lp.registry.browser.pillar.InvolvedMenu"
-        name="overview"
-        permission="zope.Public"/>
+        provides="lp.services.webapp.interfaces.INavigationMenu"
+        permission="zope.Public"
+        />
     <browser:page
+        name="+listing-simple"
         for="lp.registry.interfaces.pillar.IPillar"
-        name="+listing-simple"
         permission="zope.Public"
-        template="../templates/pillar-listing-simple.pt"/>
+        template="../templates/pillar-listing-simple.pt"
+        />
     <browser:page
         name="+get-involved"
         for="*"
         class="lp.registry.browser.pillar.PillarInvolvementView"
         permission="zope.Public"
-        template="../templates/pillar-involvement-portlet.pt"/>
-        <browser:url
-            for="lp.registry.interfaces.karma.IKarmaAction"
-            path_expression="name"
-            parent_utility="lp.registry.interfaces.karma.IKarmaActionSet"/>
-        <browser:defaultView
-            for="lp.registry.interfaces.karma.IKarmaAction"
-            name="+index"/>
-        <browser:page
-            name="+index"
-            for="lp.registry.interfaces.karma.IKarmaAction"
-            class="lp.registry.browser.karma.KarmaActionEditView"
-            permission="launchpad.Admin"
-            template="../../app/templates/generic-edit.pt"/>
-        <browser:url
-            for="lp.registry.interfaces.karma.IKarmaActionSet"
-            path_expression="string:karmaaction"
-            parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"/>
-        <browser:defaultView
-            for="lp.registry.interfaces.karma.IKarmaActionSet"
-            name="+index"/>
-        <browser:navigation
-            module="lp.registry.browser.karma"
-            classes="
-                KarmaActionSetNavigation"/>
-        <browser:page
-            for="lp.registry.interfaces.karma.IKarmaActionSet"
-            name="+index"
-            permission="launchpad.Admin"
-            class="lp.registry.browser.karma.KarmaActionView"
-            template="../templates/karmaaction-index.pt"/>
-        <browser:pages
-            for="lp.registry.interfaces.karma.IKarmaContext"
-            class="lp.registry.browser.karma.KarmaContextTopContributorsView"
-            permission="zope.Public">
-            <browser:page
-                name="+topcontributors"
-                template="../templates/karmacontext-topcontributors.pt"/>
-            <browser:page
-                name="+portlet-top-contributors"
-                template="../templates/karmacontext-portlet-top-contributors.pt"/>
-        </browser:pages>
-        <browser:page
-            for="lp.registry.interfaces.karma.IKarmaContext"
-            permission="zope.Public"
-            name="karmacontext-macros"
-            template="../templates/karmacontext-macros.pt"/>
-        <browser:menus
-            module="lp.registry.browser.poll"
-            classes="
-                PollOverviewMenu
-                PollActionNavigationMenu
-                PollEditNavigationMenu"/>
-        <browser:defaultView
-            for="lp.registry.interfaces.poll.IPoll"
-            name="+index"/>
-        <browser:navigation
-            module="lp.registry.browser.poll"
-            classes="
-                PollNavigation"/>
-        <browser:url
-            for="lp.registry.interfaces.poll.IPoll"
-            path_expression="string:+poll/${name}"
-            attribute_to_parent="team"/>
-        <browser:pages
-            for="lp.registry.interfaces.poll.IPoll"
-            permission="zope.Public"
-            class="lp.registry.browser.poll.PollView">
-            <browser:page
-                name="+index"
-                template="../templates/poll-index.pt"/>
-        </browser:pages>
-        <browser:pages
-            for="lp.registry.interfaces.poll.IPoll"
-            permission="zope.Public"
-            class="lp.registry.browser.poll.BasePollView">
-            <browser:page
-                name="+portlet-details"
-                template="../templates/poll-portlet-details.pt"/>
-            <browser:page
-                name="+portlet-options"
-                template="../templates/poll-portlet-options.pt"/>
-        </browser:pages>
-        <browser:page
-            name="+vote"
-            for="lp.registry.interfaces.poll.IPoll"
-            permission="launchpad.AnyPerson"
-            class="lp.registry.browser.poll.PollVoteView"/>
-        <browser:page
-            name="+edit"
-            for="lp.registry.interfaces.poll.IPoll"
-            class="lp.registry.browser.poll.PollEditView"
-            permission="launchpad.Edit"
-            template="../templates/poll-edit.pt"/>
-        <browser:page
-            name="+newoption"
-            for="lp.registry.interfaces.poll.IPoll"
-            class="lp.registry.browser.poll.PollOptionAddView"
-            permission="launchpad.Edit"
-            template="../templates/poll-newoption.pt"/>
-        <browser:defaultView
-            for="lp.registry.interfaces.poll.IPollOption"
-            name="+edit"/>
-        <browser:url
-            for="lp.registry.interfaces.poll.IPollOption"
-            path_expression="string:+option/${id}"
-            attribute_to_parent="poll"/>
-        <browser:page
-            name="+edit"
-            for="lp.registry.interfaces.poll.IPollOption"
-            class="lp.registry.browser.poll.PollOptionEditView"
-            permission="launchpad.Edit"
-            template="../templates/polloption-edit.pt"/>
+        template="../templates/pillar-involvement-portlet.pt"
+        />
+    <browser:url
+        for="lp.registry.interfaces.karma.IKarmaAction"
+        path_expression="name"
+        parent_utility="lp.registry.interfaces.karma.IKarmaActionSet"
+        />
+    <browser:defaultView
+        name="+index"
+        for="lp.registry.interfaces.karma.IKarmaAction"
+        />
+    <browser:page
+        name="+index"
+        for="lp.registry.interfaces.karma.IKarmaAction"
+        class="lp.registry.browser.karma.KarmaActionEditView"
+        permission="launchpad.Admin"
+        template="../../app/templates/generic-edit.pt"
+        />
+    <browser:url
+        for="lp.registry.interfaces.karma.IKarmaActionSet"
+        path_expression="string:karmaaction"
+        parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
+        />
+    <browser:defaultView
+        name="+index"
+        for="lp.registry.interfaces.karma.IKarmaActionSet"
+        />
+    <browser:navigation
+        module="lp.registry.browser.karma"
+        classes="
+                 KarmaActionSetNavigation"
+        />
+    <browser:page
+        name="+index"
+        for="lp.registry.interfaces.karma.IKarmaActionSet"
+        class="lp.registry.browser.karma.KarmaActionView"
+        permission="launchpad.Admin"
+        template="../templates/karmaaction-index.pt"
+        />
+    <browser:pages
+        for="lp.registry.interfaces.karma.IKarmaContext"
+        class="lp.registry.browser.karma.KarmaContextTopContributorsView"
+        permission="zope.Public">
+      <browser:page
+          name="+topcontributors"
+          template="../templates/karmacontext-topcontributors.pt"
+          />
+      <browser:page
+          name="+portlet-top-contributors"
+          template="../templates/karmacontext-portlet-top-contributors.pt"
+          />
+    </browser:pages>
+    <browser:page
+        name="karmacontext-macros"
+        for="lp.registry.interfaces.karma.IKarmaContext"
+        permission="zope.Public"
+        template="../templates/karmacontext-macros.pt"
+        />
+    <browser:menus
+        module="lp.registry.browser.poll"
+        classes="
+                 PollOverviewMenu
+                 PollActionNavigationMenu
+                 PollEditNavigationMenu"
+        />
+    <browser:defaultView
+        name="+index"
+        for="lp.registry.interfaces.poll.IPoll"
+        />
+    <browser:navigation
+        module="lp.registry.browser.poll"
+        classes="
+                 PollNavigation"
+        />
+    <browser:url
+        for="lp.registry.interfaces.poll.IPoll"
+        path_expression="string:+poll/${name}"
+        attribute_to_parent="team"
+        />
+    <browser:pages
+        for="lp.registry.interfaces.poll.IPoll"
+        class="lp.registry.browser.poll.PollView"
+        permission="zope.Public">
+      <browser:page
+          name="+index"
+          template="../templates/poll-index.pt"
+          />
+    </browser:pages>
+    <browser:pages
+        for="lp.registry.interfaces.poll.IPoll"
+        class="lp.registry.browser.poll.BasePollView"
+        permission="zope.Public">
+      <browser:page
+          name="+portlet-details"
+          template="../templates/poll-portlet-details.pt"
+          />
+      <browser:page
+          name="+portlet-options"
+          template="../templates/poll-portlet-options.pt"
+          />
+    </browser:pages>
+    <browser:page
+        name="+vote"
+        for="lp.registry.interfaces.poll.IPoll"
+        class="lp.registry.browser.poll.PollVoteView"
+        permission="launchpad.AnyPerson"
+        />
+    <browser:page
+        name="+edit"
+        for="lp.registry.interfaces.poll.IPoll"
+        class="lp.registry.browser.poll.PollEditView"
+        permission="launchpad.Edit"
+        template="../templates/poll-edit.pt"
+        />
+    <browser:page
+        name="+newoption"
+        for="lp.registry.interfaces.poll.IPoll"
+        class="lp.registry.browser.poll.PollOptionAddView"
+        permission="launchpad.Edit"
+        template="../templates/poll-newoption.pt"
+        />
+    <browser:defaultView
+        name="+edit"
+        for="lp.registry.interfaces.poll.IPollOption"
+        />
+    <browser:url
+        for="lp.registry.interfaces.poll.IPollOption"
+        path_expression="string:+option/${id}"
+        attribute_to_parent="poll"
+        />
+    <browser:page
+        name="+edit"
+        for="lp.registry.interfaces.poll.IPollOption"
+        class="lp.registry.browser.poll.PollOptionEditView"
+        permission="launchpad.Edit"
+        template="../templates/polloption-edit.pt"
+        />
     <browser:url
         for="lp.registry.interfaces.announcement.IAnnouncement"
         path_expression="string:+announcement/${id}"
-        attribute_to_parent="target"/>
+        attribute_to_parent="target"
+        />
     <browser:defaultView
+        name="+index"
         for="lp.registry.interfaces.announcement.IAnnouncement"
-        name="+index"/>
+        />
     <browser:page
+        name="+index"
         for="lp.registry.interfaces.announcement.IAnnouncement"
         class="lp.registry.browser.announcement.AnnouncementView"
         permission="launchpad.View"
         template="../templates/announcement-index.pt"
-        name="+index"/>
+        />
     <browser:page
+        name="+edit"
         for="lp.registry.interfaces.announcement.IAnnouncement"
         class="lp.registry.browser.announcement.AnnouncementEditView"
         permission="launchpad.Edit"
-        name="+edit"
-        template="../templates/announcement-edit.pt"/>
+        template="../templates/announcement-edit.pt"
+        />
     <browser:page
+        name="+retarget"
         for="lp.registry.interfaces.announcement.IAnnouncement"
         class="lp.registry.browser.announcement.AnnouncementRetargetView"
         permission="launchpad.Edit"
-        name="+retarget"
-        template="../templates/announcement-retarget.pt"/>
+        template="../templates/announcement-retarget.pt"
+        />
     <browser:page
+        name="+publish"
         for="lp.registry.interfaces.announcement.IAnnouncement"
         class="lp.registry.browser.announcement.AnnouncementPublishView"
         permission="launchpad.Edit"
-        name="+publish"
-        template="../templates/announcement-publish.pt"/>
+        template="../templates/announcement-publish.pt"
+        />
     <browser:page
+        name="+retract"
         for="lp.registry.interfaces.announcement.IAnnouncement"
         class="lp.registry.browser.announcement.AnnouncementRetractView"
         permission="launchpad.Edit"
-        name="+retract"
-        template="../templates/announcement-retract.pt"/>
+        template="../templates/announcement-retract.pt"
+        />
     <browser:page
+        name="+delete"
         for="lp.registry.interfaces.announcement.IAnnouncement"
         class="lp.registry.browser.announcement.AnnouncementDeleteView"
         permission="launchpad.Edit"
-        name="+delete"
-        template="../templates/announcement-delete.pt"/>
+        template="../templates/announcement-delete.pt"
+        />
     <browser:pages
         for="lp.registry.interfaces.announcement.IHasAnnouncements"
         class="lp.registry.browser.announcement.HasAnnouncementsView"
         permission="zope.Public">
-        <browser:page
-            name="+announcements"
-            template="../templates/hasannouncements-index.pt"/>
-        <browser:page
-            name="+portlet-latestannouncements"
-            template="../templates/hasannouncements-portlet-latest.pt"/>
+      <browser:page
+          name="+announcements"
+          template="../templates/hasannouncements-index.pt"
+          />
+      <browser:page
+          name="+portlet-latestannouncements"
+          template="../templates/hasannouncements-portlet-latest.pt"
+          />
     </browser:pages>
     <browser:page
+        name="+announce"
         for="lp.registry.interfaces.announcement.IMakesAnnouncements"
         class="lp.registry.browser.announcement.AnnouncementAddView"
         permission="launchpad.Edit"
-        name="+announce"
-        template="../templates/announcement-add.pt"/>
+        template="../templates/announcement-add.pt"
+        />
     <browser:url
         for="lp.registry.interfaces.announcement.IAnnouncementSet"
         path_expression="string:+announcements"
-        parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"/>
+        parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
+        />
     <browser:defaultView
+        name="+announcements"
         for="lp.registry.interfaces.announcement.IAnnouncementSet"
-        name="+announcements"/>
+        />
     <browser:page
+        name="+announcements"
         for="lp.registry.interfaces.announcement.IAnnouncementSet"
-        name="+announcements"
         class="lp.registry.browser.announcement.AnnouncementSetView"
         permission="zope.Public"
-        template="../templates/announcements-all.pt"/>
+        template="../templates/announcements-all.pt"
+        />
     <browser:page
-        for="lp.registry.interfaces.announcement.IAnnouncement"
         name="+announcement-macros"
+        for="lp.registry.interfaces.announcement.IAnnouncement"
+        class="lp.app.browser.launchpad.Macro"
         permission="zope.Public"
         template="../templates/announcement-macros.pt"
-        class="lp.app.browser.launchpad.Macro"/>
+        />
     <adapter
-        provides="lp.services.webapp.interfaces.IBreadcrumb"
-        for="lp.registry.interfaces.announcement.IAnnouncement"
         factory="lp.services.webapp.breadcrumb.TitleBreadcrumb"
-        permission="zope.Public"/>
+        for="lp.registry.interfaces.announcement.IAnnouncement"
+        provides="lp.services.webapp.interfaces.IBreadcrumb"
+        permission="zope.Public"
+        />
     <browser:menus
         module="lp.registry.browser.announcement"
         classes="
-            AnnouncementCreateNavigationMenu
-            AnnouncementEditNavigationMenu"/>
-        <browser:navigation
-            module="lp.registry.browser.person"
-            classes="PersonNavigation"/>
-        <browser:navigation
-            module="lp.registry.browser.team"
-            classes="TeamNavigation"/>
-        <browser:menus
-            module="lp.registry.browser.person"
-            classes="
-                PersonEditNavigationMenu
-                PersonFacets
-                PersonIndexMenu
-                PersonOverviewMenu
-                PersonRelatedSoftwareNavigationMenu
-                PersonSetActionNavigationMenu
-                PersonSetContextMenu
-                "/>
-        <browser:menus
-            module="lp.registry.browser.menu"
-            classes="
-                RegistryCollectionNavigationMenu
-                "/>
-        <browser:menus
-            module="lp.registry.browser.team"
-            classes="
-                TeamEditMenu
-                TeamIndexMenu
-                TeamOverviewMenu
-                TeamOverviewNavigationMenu
-                "/>
-        <browser:url
-            for="lp.registry.interfaces.person.IPerson"
-            path_expression="string:~${name}"
-            parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"/>
-        <browser:defaultView
-            for="lp.registry.interfaces.person.IPerson"
-            name="+index"/>
-        <adapter
-          factory="lp.registry.browser.person.PersonXHTMLRepresentation"
-          name="lazr.restful.EntryResource" />
-        <browser:page
-            name="+review"
-            for="lp.registry.interfaces.person.IPerson"
-            class="lp.registry.browser.person.PersonAdministerView"
-            permission="launchpad.Moderate"
-            template="../templates/person-review.pt"/>
-        <browser:page
-            name="+reviewaccount"
-            for="lp.registry.interfaces.person.IPerson"
-            class="lp.registry.browser.person.PersonAccountAdministerView"
-            permission="launchpad.Moderate"
-            template="../templates/person-review.pt"/>
-        <browser:page
-            name="+claimteam"
-            for="lp.registry.interfaces.person.IPerson"
-            class="lp.registry.browser.person.BeginTeamClaimView"
-            permission="launchpad.AnyPerson"
-            template="../templates/person-claim-team.pt"/>
-        <browser:page
-            name="+editlanguages"
-            for="lp.registry.interfaces.person.IPerson"
-            class="lp.registry.browser.person.PersonLanguagesView"
-            permission="launchpad.Edit"
-            template="../templates/person-editlanguages.pt"/>
-        <browser:page
-            for="lp.services.webapp.interfaces.ILaunchpadApplication"
-            permission="launchpad.AnyPerson"
-            class="lp.registry.browser.person.RedirectToEditLanguagesView"
-            name="+editmylanguages"
-            />
-        <browser:page
-            name="+edit"
-            for="lp.registry.interfaces.person.IPerson"
-            class="lp.registry.browser.person.PersonEditView"
-            permission="launchpad.Edit"
-            template="../templates/person-edit.pt"/>
-        <browser:page
-            name="+editlocation"
-            for="lp.registry.interfaces.person.IPerson"
-            class="lp.registry.browser.person.PersonEditTimeZoneView"
-            permission="launchpad.Edit"
-            template="../../app/templates/generic-edit.pt"/>
-        <browser:page
-            name="+contactuser"
-            for="lp.registry.interfaces.person.IPerson"
-            class="lp.registry.browser.person.EmailToPersonView"
-            permission="launchpad.View"
-            template="../templates/contact-user.pt"/>
-        <browser:page
-            name="+branding"
-            for="lp.registry.interfaces.person.IPerson"
-            class="lp.registry.browser.person.PersonBrandingView"
-            permission="launchpad.Edit"
-            template="../templates/object-branding.pt"/>
-        <browser:pages
-            for="lp.registry.interfaces.person.IPerson"
-            permission="zope.Public"
-            class="lp.registry.browser.person.PersonKarmaView">
-            <browser:page
-                name="+karma"
-                template="../templates/person-karma.pt"/>
-        </browser:pages>
-        <browser:page
-            for="lp.registry.interfaces.person.IPerson"
-            permission="zope.Public"
-            name="+participation"
-            class="lp.registry.browser.person.PersonParticipationView"
-            template="../templates/person-participation.pt"
-            />
-        <browser:pages
-            for="lp.registry.interfaces.person.IPerson"
-            permission="zope.Public"
-            class="lp.registry.browser.person.PersonView">
-            <browser:page
-                name="+sshkeys"
-                attribute="showSSHKeys"/>
-            <browser:page
-                name="+portlet-contact-details"
-                template="../templates/person-portlet-contact-details.pt"/>
-            <browser:page
-                name="+portlet-contributions"
-                template="../templates/person-portlet-contributions.pt"/>
-            <browser:page
-                name="+portlet-currentfocus"
-                template="../templates/person-portlet-currentfocus.pt"/>
-            <browser:page
-                name="+portlet-memberships"
-                template="../templates/person-portlet-memberships.pt"/>
-
-            <!-- this should be on IPerson because we don't always know if it is a
-                team or a person -->
-
-            <browser:page
-                name="+teamlist"
-                template="../templates/team-listing.pt"/>
-        </browser:pages>
-        <browser:page
-            for="*"
-            name="+person-macros"
-            permission="zope.Public"
-            template="../templates/person-macros.pt"
-            class="lp.app.browser.launchpad.Macro"/>
-        <browser:page
-            for="lp.registry.interfaces.person.IPerson"
-            permission="zope.Public"
-            class="lp.registry.browser.person.PersonRelatedSoftwareView"
-            name="+related-packages"
-            template="../templates/person-related-software.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.IPerson"
-            permission="zope.Public"
-            class="lp.registry.browser.person.PersonRelatedProjectsView"
-            name="+related-projects"
-            template="../templates/person-related-projects.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.IPerson"
-            permission="zope.Public"
-            class="lp.registry.browser.person.PersonOwnedTeamsView"
-            name="+owned-teams"
-            template="../templates/person-owned-teams.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.IPerson"
-            class="lp.registry.browser.person.PersonRelatedSoftwareView"
-            permission="zope.Public"
-            name="+related-software-navlinks"
-            template="../templates/person-related-software-navlinks.pt"/>
-        <browser:renamed-page
-            for="lp.registry.interfaces.person.IPerson"
-            name="+related-software"
-            new_name="+related-packages"/>
-        <browser:renamed-page
-            for="lp.registry.interfaces.person.IPerson"
-            name="+packages"
-            new_name="+related-packages"/>
-        <browser:renamed-page
-            for="lp.registry.interfaces.person.IPerson"
-            name="+projects"
-            new_name="+related-projects"/>
-        <browser:pages
-            for="lp.registry.interfaces.person.IPerson"
-            permission="zope.Public"
-            class="lp.registry.browser.person.PersonIndexView">
-            <browser:page
-                name="+index"
-                template="../templates/person-index.pt"/>
-            <browser:page
-                name="+xrds"
-                attribute="xrds"/>
-        </browser:pages>
-        <browser:page
-            for="lp.registry.interfaces.person.IPerson"
-            name="+portlet-related-projects"
-            permission="zope.Public"
-            class="lp.registry.browser.person.PersonRelatedSoftwareView"
-            template="../templates/person-portlet-related-projects.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.IPerson"
-            name="+vouchers"
-            permission="launchpad.Commercial"
-            class="lp.registry.browser.person.PersonVouchersView"
-            template="../templates/person-vouchers.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.IPerson"
-            name="+rdf"
-            permission="zope.Public"
-            class="lp.registry.browser.person.PersonRdfView"
-            attribute="__call__"/>
-        <browser:page
-            for="lp.registry.interfaces.person.IPerson"
-            name="+rdf-contents"
-            permission="zope.Public"
-            class="lp.registry.browser.person.PersonRdfContentsView"
-            attribute="__call__"/>
-        <browser:page
-            name="+editsshkeys"
-            for="lp.registry.interfaces.person.IPerson"
-            permission="launchpad.Special"
-            class="lp.registry.browser.person.PersonEditSSHKeysView"
-            template="../templates/person-editsshkeys.pt"/>
-        <browser:page
-            name="+deactivate-account"
-            for="lp.registry.interfaces.person.IPerson"
-            permission="launchpad.Special"
-            class="lp.registry.browser.person.PersonDeactivateAccountView"
-            template="../templates/person-deactivate-account.pt"/>
-        <browser:page
-            name="+codesofconduct"
-            for="lp.registry.interfaces.person.IPerson"
-            permission="launchpad.Edit"
-            class="lp.registry.browser.person.PersonCodeOfConductEditView"
-            template="../templates/person-codesofconduct.pt"/>
-        <browser:page
-            name="+editircnicknames"
-            for="lp.registry.interfaces.person.IPerson"
-            permission="launchpad.Edit"
-            class="lp.registry.browser.person.PersonEditIRCNicknamesView"
-            template="../templates/person-editircnicknames.pt"/>
-        <browser:page
-            name="+editjabberids"
-            for="lp.registry.interfaces.person.IPerson"
-            permission="launchpad.Edit"
-            class="lp.registry.browser.person.PersonEditJabberIDsView"
-            template="../templates/person-editjabberids.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.IPerson"
-            permission="launchpad.Edit"
-            class="lp.registry.browser.person.PersonGPGView"
-            name="+editpgpkeys"
-            template="../templates/person-editpgpkeys.pt"/>
-        <browser:pages
-            for="lp.registry.interfaces.person.IPerson"
-            permission="launchpad.Edit"
-            class="lp.registry.browser.person.PersonEditEmailsView">
-            <browser:page
-                name="+editemails"
-                template="../templates/person-editemails.pt"/>
-        </browser:pages>
-        <browser:page
-            for="lp.registry.interfaces.person.IPerson"
-            permission="launchpad.Edit"
-            class="lp.registry.browser.person.PersonEditMailingListsView"
-            name="+editmailinglists"
-            template="../templates/person-editmailinglists.pt"/>
-        <browser:page
-            name="+oauth-tokens"
-            for="lp.registry.interfaces.person.IPerson"
-            class="lp.registry.browser.person.PersonOAuthTokensView"
-            permission="launchpad.Edit"
-            template="../templates/person-oauth-tokens.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            permission="zope.Public"
-            class="lp.registry.browser.team.TeamIndexView"
-            name="+index"
-            template="../templates/team-index.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            class="lp.registry.browser.team.TeamIndexView"
-            permission="zope.Public"
-            name="+portlet-polls"
-            template="../templates/team-portlet-polls.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            class="lp.registry.browser.team.TeamMailingListSubscribersView"
-            permission="zope.Public"
-            name="+mailing-list-subscribers"
-            template="../templates/team-mailinglist-subscribers.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            permission="zope.Public"
-            name="+listing-simple"
-            template="../templates/team-listing-simple.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            permission="zope.Public"
-            name="+mugshots"
-            template="../templates/team-mugshots.pt"
-            class="lp.registry.browser.team.TeamMugshotView"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            class="lp.registry.browser.team.TeamIndexView"
-            permission="zope.Public"
-            name="+portlet-membership"
-            template="../templates/team-portlet-membership.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            class="lp.registry.browser.person.PersonIndexView"
-            permission="zope.Public"
-            name="+portlet-mailinglist"
-            template="../templates/team-portlet-mailinglist.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            permission="launchpad.Edit"
-            class="lp.registry.browser.team.TeamContactAddressView"
-            name="+contactaddress"
-            template="../templates/team-contactaddress.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            permission="launchpad.Moderate"
-            class="lp.registry.browser.team.TeamMailingListConfigurationView"
-            name="+mailinglist"
-            template="../templates/team-mailinglist.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            permission="launchpad.Edit"
-            class="lp.registry.browser.team.TeamMailingListModerationView"
-            name="+mailinglist-moderate"
-            template="../templates/team-mailinglist-moderate.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            class="lp.registry.browser.team.TeamMailingListArchiveView"
-            permission="zope.Public"
-            name="+mailing-list-archive"
-            template="../templates/team-mailinglist-archive.pt"/>
-        <browser:page
-            name="+edit"
-            for="lp.registry.interfaces.person.ITeam"
-            class="lp.registry.browser.team.TeamEditView"
-            permission="launchpad.Edit"
-            template="../templates/team-edit.pt"/>
-        <browser:page
-            name="+review"
-            for="lp.registry.interfaces.person.ITeam"
-            class="lp.registry.browser.team.TeamAdministerView"
-            permission="launchpad.Moderate"
-            template="../templates/person-review.pt"/>
-        <browser:page
-            name="+branding"
-            for="lp.registry.interfaces.person.ITeam"
-            class="lp.registry.browser.team.TeamBrandingView"
-            permission="launchpad.Edit"
-            template="../templates/object-branding.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            permission="launchpad.Owner"
-            class="lp.registry.browser.team.TeamReassignmentView"
-            name="+reassign"
-            template="../../app/templates/object-reassignment.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            permission="launchpad.AnyPerson"
-            class="lp.registry.browser.team.TeamAddMyTeamsView"
-            name="+add-my-teams"
-            template="../templates/team-add-my-teams.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            permission="launchpad.AnyPerson"
-            class="lp.registry.browser.team.TeamJoinView"
-            name="+join"
-            template="../templates/team-join.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            permission="launchpad.AnyPerson"
-            class="lp.registry.browser.team.TeamLeaveView"
-            name="+leave"
-            template="../templates/team-leave.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            permission="zope.Public"
-            class="lp.registry.browser.poll.TeamPollsView"
-            name="+polls"
-            template="../templates/team-polls.pt"/>
-        <browser:page
-            name="+newpoll"
-            for="lp.registry.interfaces.person.ITeam"
-            class="lp.registry.browser.poll.PollAddView"
-            permission="launchpad.Edit"
-            template="../templates/team-newpoll.pt"/>
-        <browser:page
-            name="+members"
-            for="lp.registry.interfaces.person.ITeam"
-            permission="zope.Public"
-            template="../templates/team-members.pt"
-            class="lp.registry.browser.team.TeamMembershipView"/>
-        <browser:page
-            name="+invitations"
-            for="lp.registry.interfaces.person.ITeam"
-            permission="launchpad.Edit"
-            template="../templates/team-invitations.pt"
-            class="lp.registry.browser.teammembership.TeamInvitationsView"/>
-        <browser:page
-            name="+addmember"
-            for="lp.registry.interfaces.person.ITeam"
-            class="lp.registry.browser.team.TeamMemberAddView"
-            permission="launchpad.Edit"
-            template="../../app/templates/generic-edit.pt"/>
-        <browser:page
-            name="+editproposedmembers"
-            for="lp.registry.interfaces.person.ITeam"
-            permission="launchpad.Edit"
-            class="lp.registry.browser.team.ProposedTeamMembersEditView"
-            template="../templates/team-editproposed.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.ITeam"
-            permission="launchpad.Moderate"
-            class="lp.registry.browser.peoplemerge.DeleteTeamView"
-            name="+delete"
-            template="../templates/team-delete.pt"/>
-        <browser:defaultView
-            for="lp.registry.interfaces.person.IPersonSet"
-            name="+index"/>
-        <browser:navigation
-            module="lp.registry.browser.person"
-            classes="
-                PersonSetNavigation"/>
-        <browser:page
-            name="+newteam"
-            for="lp.registry.interfaces.person.IPersonSet"
-            class="lp.registry.browser.team.TeamAddView"
-            permission="launchpad.AnyPerson"
-            template="../templates/people-newteam.pt"/>
-        <browser:page
-            name="+simplenewteam"
-            for="lp.registry.interfaces.person.IPersonSet"
-            class="lp.registry.browser.team.SimpleTeamAddView"
-            permission="launchpad.AnyPerson"
-            template="../../app/templates/generic-edit.pt"/>
-        <browser:pages
-            for="lp.registry.interfaces.person.IPersonSet"
-            permission="zope.Public"
-            class="lp.registry.browser.person.PeopleSearchView">
-            <browser:page
-                name="+index"
-                template="../templates/people-index.pt"/>
-        </browser:pages>
-        <browser:page
-            name="+requestmerge"
-            for="lp.registry.interfaces.person.IPersonSet"
-            class="lp.registry.browser.peoplemerge.RequestPeopleMergeView"
-            permission="launchpad.AnyPerson"
-            template="../templates/people-requestmerge.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.IPersonSet"
-            permission="launchpad.Admin"
-            class="lp.registry.browser.peoplemerge.AdminPeopleMergeView"
-            name="+adminpeoplemerge"
-            template="../templates/people-adminrequestmerge.pt"/>
-        <browser:page
-            for="lp.registry.interfaces.person.IPersonSet"
-            permission="launchpad.Moderate"
-            class="lp.registry.browser.peoplemerge.AdminTeamMergeView"
-            name="+adminteammerge"
-            template="../templates/people-adminrequestmerge.pt"/>
-        <browser:pages
-            for="lp.registry.interfaces.person.IPersonSet"
-            permission="launchpad.AnyPerson"
-            class="lp.registry.browser.peoplemerge.RequestPeopleMergeMultipleEmailsView">
-            <browser:page
-                name="+requestmerge-multiple"
-                template="../templates/people-requestmerge-multiple.pt"/>
-        </browser:pages>
-        <browser:pages
-            for="lp.registry.interfaces.person.IPersonSet"
-            permission="launchpad.AnyPerson"
-            class="lp.registry.browser.peoplemerge.FinishedPeopleMergeRequestView">
-            <browser:page
-                name="+mergerequest-sent"
-                template="../templates/people-mergerequest-sent.pt"/>
-        </browser:pages>
+                 AnnouncementCreateNavigationMenu
+                 AnnouncementEditNavigationMenu"
+        />
+    <browser:navigation
+        module="lp.registry.browser.person"
+        classes="PersonNavigation"
+        />
+    <browser:navigation
+        module="lp.registry.browser.team"
+        classes="TeamNavigation"
+        />
+    <browser:menus
+        module="lp.registry.browser.person"
+        classes="
+                 PersonEditNavigationMenu
+                 PersonFacets
+                 PersonIndexMenu
+                 PersonOverviewMenu
+                 PersonRelatedSoftwareNavigationMenu
+                 PersonSetActionNavigationMenu
+                 PersonSetContextMenu
+                 "
+        />
+    <browser:menus
+        module="lp.registry.browser.menu"
+        classes="
+                 RegistryCollectionNavigationMenu
+                 "
+        />
+    <browser:menus
+        module="lp.registry.browser.team"
+        classes="
+                 TeamEditMenu
+                 TeamIndexMenu
+                 TeamOverviewMenu
+                 TeamOverviewNavigationMenu
+                 "
+        />
+    <browser:url
+        for="lp.registry.interfaces.person.IPerson"
+        path_expression="string:~${name}"
+        parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
+        />
+    <browser:defaultView
+        name="+index"
+        for="lp.registry.interfaces.person.IPerson"
+        />
+    <adapter
+        name="lazr.restful.EntryResource"
+        factory="lp.registry.browser.person.PersonXHTMLRepresentation"
+        />
+    <browser:page
+        name="+review"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonAdministerView"
+        permission="launchpad.Moderate"
+        template="../templates/person-review.pt"
+        />
+    <browser:page
+        name="+reviewaccount"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonAccountAdministerView"
+        permission="launchpad.Moderate"
+        template="../templates/person-review.pt"
+        />
+    <browser:page
+        name="+claimteam"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.BeginTeamClaimView"
+        permission="launchpad.AnyPerson"
+        template="../templates/person-claim-team.pt"
+        />
+    <browser:page
+        name="+editlanguages"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonLanguagesView"
+        permission="launchpad.Edit"
+        template="../templates/person-editlanguages.pt"
+        />
+    <browser:page
+        name="+editmylanguages"
+        for="lp.services.webapp.interfaces.ILaunchpadApplication"
+        class="lp.registry.browser.person.RedirectToEditLanguagesView"
+        permission="launchpad.AnyPerson"
+        />
+    <browser:page
+        name="+edit"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonEditView"
+        permission="launchpad.Edit"
+        template="../templates/person-edit.pt"
+        />
+    <browser:page
+        name="+editlocation"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonEditTimeZoneView"
+        permission="launchpad.Edit"
+        template="../../app/templates/generic-edit.pt"
+        />
+    <browser:page
+        name="+contactuser"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.EmailToPersonView"
+        permission="launchpad.View"
+        template="../templates/contact-user.pt"
+        />
+    <browser:page
+        name="+branding"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonBrandingView"
+        permission="launchpad.Edit"
+        template="../templates/object-branding.pt"
+        />
+    <browser:pages
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonKarmaView"
+        permission="zope.Public">
+      <browser:page
+          name="+karma"
+          template="../templates/person-karma.pt"
+          />
+    </browser:pages>
+    <browser:page
+        name="+participation"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonParticipationView"
+        permission="zope.Public"
+        template="../templates/person-participation.pt"
+        />
+    <browser:pages
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonView"
+        permission="zope.Public">
+      <browser:page
+          name="+sshkeys"
+          attribute="showSSHKeys"
+          />
+      <browser:page
+          name="+portlet-contact-details"
+          template="../templates/person-portlet-contact-details.pt"
+          />
+      <browser:page
+          name="+portlet-contributions"
+          template="../templates/person-portlet-contributions.pt"
+          />
+      <browser:page
+          name="+portlet-currentfocus"
+          template="../templates/person-portlet-currentfocus.pt"
+          />
+      <browser:page
+          name="+portlet-memberships"
+          template="../templates/person-portlet-memberships.pt"
+          />
+      <!-- this should be on IPerson because we don't always know if it is a
+           team or a person -->
+      <browser:page
+          name="+teamlist"
+          template="../templates/team-listing.pt"
+          />
+    </browser:pages>
+    <browser:page
+        name="+person-macros"
+        for="*"
+        class="lp.app.browser.launchpad.Macro"
+        permission="zope.Public"
+        template="../templates/person-macros.pt"
+        />
+    <browser:page
+        name="+related-packages"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonRelatedSoftwareView"
+        permission="zope.Public"
+        template="../templates/person-related-software.pt"
+        />
+    <browser:page
+        name="+related-projects"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonRelatedProjectsView"
+        permission="zope.Public"
+        template="../templates/person-related-projects.pt"
+        />
+    <browser:page
+        name="+owned-teams"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonOwnedTeamsView"
+        permission="zope.Public"
+        template="../templates/person-owned-teams.pt"
+        />
+    <browser:page
+        name="+related-software-navlinks"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonRelatedSoftwareView"
+        permission="zope.Public"
+        template="../templates/person-related-software-navlinks.pt"
+        />
+    <browser:renamed-page
+        name="+related-software"
+        new_name="+related-packages"
+        for="lp.registry.interfaces.person.IPerson"
+        />
+    <browser:renamed-page
+        name="+packages"
+        new_name="+related-packages"
+        for="lp.registry.interfaces.person.IPerson"
+        />
+    <browser:renamed-page
+        name="+projects"
+        new_name="+related-projects"
+        for="lp.registry.interfaces.person.IPerson"
+        />
+    <browser:pages
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonIndexView"
+        permission="zope.Public">
+      <browser:page
+          name="+index"
+          template="../templates/person-index.pt"
+          />
+      <browser:page
+          name="+xrds"
+          attribute="xrds"
+          />
+    </browser:pages>
+    <browser:page
+        name="+portlet-related-projects"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonRelatedSoftwareView"
+        permission="zope.Public"
+        template="../templates/person-portlet-related-projects.pt"
+        />
+    <browser:page
+        name="+vouchers"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonVouchersView"
+        permission="launchpad.Commercial"
+        template="../templates/person-vouchers.pt"
+        />
+    <browser:page
+        name="+rdf"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonRdfView"
+        permission="zope.Public"
+        attribute="__call__"
+        />
+    <browser:page
+        name="+rdf-contents"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonRdfContentsView"
+        permission="zope.Public"
+        attribute="__call__"
+        />
+    <browser:page
+        name="+editsshkeys"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonEditSSHKeysView"
+        permission="launchpad.Special"
+        template="../templates/person-editsshkeys.pt"
+        />
+    <browser:page
+        name="+deactivate-account"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonDeactivateAccountView"
+        permission="launchpad.Special"
+        template="../templates/person-deactivate-account.pt"
+        />
+    <browser:page
+        name="+codesofconduct"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonCodeOfConductEditView"
+        permission="launchpad.Edit"
+        template="../templates/person-codesofconduct.pt"
+        />
+    <browser:page
+        name="+editircnicknames"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonEditIRCNicknamesView"
+        permission="launchpad.Edit"
+        template="../templates/person-editircnicknames.pt"
+        />
+    <browser:page
+        name="+editjabberids"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonEditJabberIDsView"
+        permission="launchpad.Edit"
+        template="../templates/person-editjabberids.pt"
+        />
+    <browser:page
+        name="+editpgpkeys"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonGPGView"
+        permission="launchpad.Edit"
+        template="../templates/person-editpgpkeys.pt"
+        />
+    <browser:pages
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonEditEmailsView"
+        permission="launchpad.Edit">
+      <browser:page
+          name="+editemails"
+          template="../templates/person-editemails.pt"
+          />
+    </browser:pages>
+    <browser:page
+        name="+editmailinglists"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonEditMailingListsView"
+        permission="launchpad.Edit"
+        template="../templates/person-editmailinglists.pt"
+        />
+    <browser:page
+        name="+oauth-tokens"
+        for="lp.registry.interfaces.person.IPerson"
+        class="lp.registry.browser.person.PersonOAuthTokensView"
+        permission="launchpad.Edit"
+        template="../templates/person-oauth-tokens.pt"
+        />
+    <browser:page
+        name="+index"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamIndexView"
+        permission="zope.Public"
+        template="../templates/team-index.pt"
+        />
+    <browser:page
+        name="+portlet-polls"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamIndexView"
+        permission="zope.Public"
+        template="../templates/team-portlet-polls.pt"
+        />
+    <browser:page
+        name="+mailing-list-subscribers"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamMailingListSubscribersView"
+        permission="zope.Public"
+        template="../templates/team-mailinglist-subscribers.pt"
+        />
+    <browser:page
+        name="+listing-simple"
+        for="lp.registry.interfaces.person.ITeam"
+        permission="zope.Public"
+        template="../templates/team-listing-simple.pt"
+        />
+    <browser:page
+        name="+mugshots"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamMugshotView"
+        permission="zope.Public"
+        template="../templates/team-mugshots.pt"
+        />
+    <browser:page
+        name="+portlet-membership"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamIndexView"
+        permission="zope.Public"
+        template="../templates/team-portlet-membership.pt"
+        />
+    <browser:page
+        name="+portlet-mailinglist"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.person.PersonIndexView"
+        permission="zope.Public"
+        template="../templates/team-portlet-mailinglist.pt"
+        />
+    <browser:page
+        name="+contactaddress"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamContactAddressView"
+        permission="launchpad.Edit"
+        template="../templates/team-contactaddress.pt"
+        />
+    <browser:page
+        name="+mailinglist"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamMailingListConfigurationView"
+        permission="launchpad.Moderate"
+        template="../templates/team-mailinglist.pt"
+        />
+    <browser:page
+        name="+mailinglist-moderate"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamMailingListModerationView"
+        permission="launchpad.Edit"
+        template="../templates/team-mailinglist-moderate.pt"
+        />
+    <browser:page
+        name="+mailing-list-archive"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamMailingListArchiveView"
+        permission="zope.Public"
+        template="../templates/team-mailinglist-archive.pt"
+        />
+    <browser:page
+        name="+edit"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamEditView"
+        permission="launchpad.Edit"
+        template="../templates/team-edit.pt"
+        />
+    <browser:page
+        name="+review"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamAdministerView"
+        permission="launchpad.Moderate"
+        template="../templates/person-review.pt"
+        />
+    <browser:page
+        name="+branding"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamBrandingView"
+        permission="launchpad.Edit"
+        template="../templates/object-branding.pt"
+        />
+    <browser:page
+        name="+reassign"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamReassignmentView"
+        permission="launchpad.Owner"
+        template="../../app/templates/object-reassignment.pt"
+        />
+    <browser:page
+        name="+add-my-teams"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamAddMyTeamsView"
+        permission="launchpad.AnyPerson"
+        template="../templates/team-add-my-teams.pt"
+        />
+    <browser:page
+        name="+join"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamJoinView"
+        permission="launchpad.AnyPerson"
+        template="../templates/team-join.pt"
+        />
+    <browser:page
+        name="+leave"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamLeaveView"
+        permission="launchpad.AnyPerson"
+        template="../templates/team-leave.pt"
+        />
+    <browser:page
+        name="+polls"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.poll.TeamPollsView"
+        permission="zope.Public"
+        template="../templates/team-polls.pt"
+        />
+    <browser:page
+        name="+newpoll"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.poll.PollAddView"
+        permission="launchpad.Edit"
+        template="../templates/team-newpoll.pt"
+        />
+    <browser:page
+        name="+members"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamMembershipView"
+        permission="zope.Public"
+        template="../templates/team-members.pt"
+        />
+    <browser:page
+        name="+invitations"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.teammembership.TeamInvitationsView"
+        permission="launchpad.Edit"
+        template="../templates/team-invitations.pt"
+        />
+    <browser:page
+        name="+addmember"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.TeamMemberAddView"
+        permission="launchpad.Edit"
+        template="../../app/templates/generic-edit.pt"
+        />
+    <browser:page
+        name="+editproposedmembers"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.team.ProposedTeamMembersEditView"
+        permission="launchpad.Edit"
+        template="../templates/team-editproposed.pt"
+        />
+    <browser:page
+        name="+delete"
+        for="lp.registry.interfaces.person.ITeam"
+        class="lp.registry.browser.peoplemerge.DeleteTeamView"
+        permission="launchpad.Moderate"
+        template="../templates/team-delete.pt"
+        />
+    <browser:defaultView
+        name="+index"
+        for="lp.registry.interfaces.person.IPersonSet"
+        />
+    <browser:navigation
+        module="lp.registry.browser.person"
+        classes="
+                 PersonSetNavigation"
+        />
+    <browser:page
+        name="+newteam"
+        for="lp.registry.interfaces.person.IPersonSet"
+        class="lp.registry.browser.team.TeamAddView"
+        permission="launchpad.AnyPerson"
+        template="../templates/people-newteam.pt"
+        />
+    <browser:page
+        name="+simplenewteam"
+        for="lp.registry.interfaces.person.IPersonSet"
+        class="lp.registry.browser.team.SimpleTeamAddView"
+        permission="launchpad.AnyPerson"
+        template="../../app/templates/generic-edit.pt"
+        />
+    <browser:pages
+        for="lp.registry.interfaces.person.IPersonSet"
+        class="lp.registry.browser.person.PeopleSearchView"
+        permission="zope.Public">
+      <browser:page
+          name="+index"
+          template="../templates/people-index.pt"
+          />
+    </browser:pages>
+    <browser:page
+        name="+requestmerge"
+        for="lp.registry.interfaces.person.IPersonSet"
+        class="lp.registry.browser.peoplemerge.RequestPeopleMergeView"
+        permission="launchpad.AnyPerson"
+        template="../templates/people-requestmerge.pt"
+        />
+    <browser:page
+        name="+adminpeoplemerge"
+        for="lp.registry.interfaces.person.IPersonSet"
+        class="lp.registry.browser.peoplemerge.AdminPeopleMergeView"
+        permission="launchpad.Admin"
+        template="../templates/people-adminrequestmerge.pt"
+        />
+    <browser:page
+        name="+adminteammerge"
+        for="lp.registry.interfaces.person.IPersonSet"
+        class="lp.registry.browser.peoplemerge.AdminTeamMergeView"
+        permission="launchpad.Moderate"
+        template="../templates/people-adminrequestmerge.pt"
+        />
+    <browser:pages
+        for="lp.registry.interfaces.person.IPersonSet"
+        class="lp.registry.browser.peoplemerge.RequestPeopleMergeMultipleEmailsView"
+        permission="launchpad.AnyPerson">
+      <browser:page
+          name="+requestmerge-multiple"
+          template="../templates/people-requestmerge-multiple.pt"
+          />
+    </browser:pages>
+    <browser:pages
+        for="lp.registry.interfaces.person.IPersonSet"
+        class="lp.registry.browser.peoplemerge.FinishedPeopleMergeRequestView"
+        permission="launchpad.AnyPerson">
+      <browser:page
+          name="+mergerequest-sent"
+          template="../templates/people-mergerequest-sent.pt"
+          />
+    </browser:pages>
     <browser:navigation
         module="lp.registry.browser.milestone"
         classes="
-            MilestoneSetNavigation
-            MilestoneNavigation"/>
+                 MilestoneSetNavigation
+                 MilestoneNavigation"
+        />
     <adapter
+        factory="lp.registry.browser.milestone.MilestoneBreadcrumb"
         provides="lp.services.webapp.interfaces.IBreadcrumb"
         for="lp.registry.interfaces.milestone.IMilestoneData"
-        factory="lp.registry.browser.milestone.MilestoneBreadcrumb"
-        permission="zope.Public"/>
+        permission="zope.Public"
+        />
     <browser:defaultView
+        name="+index"
         for="lp.registry.interfaces.milestone.IMilestoneData"
-        name="+index"/>
+        />
     <browser:url
         for="lp.registry.interfaces.milestone.IMilestoneData"
         path_expression="string:+milestone/${name}"
         rootsite="mainsite"
-        attribute_to_parent="target"/>
+        attribute_to_parent="target"
+        />
     <browser:url
         for="lp.registry.interfaces.milestonetag.IProjectGroupMilestoneTag"
         path_expression="string:+tags/${name}"
         rootsite="mainsite"
-        attribute_to_parent="target"/>
+        attribute_to_parent="target"
+        />
     <browser:page
-        for="*"
         name="+milestone-macros"
+        for="*"
+        class="lp.app.browser.launchpad.Macro"
         permission="zope.Public"
         template="../templates/milestone-macros.pt"
-        class="lp.app.browser.launchpad.Macro"/>
+        />
     <browser:pages
         for="lp.registry.interfaces.milestone.IMilestoneData"
         class="lp.registry.browser.milestone.MilestoneView"
         permission="zope.Public">
-        <browser:page
-            name="+index"
-            template="../templates/milestone-index.pt"/>
-        <browser:page
-            name="+productseries-table-row"
-            template="../templates/productseries-milestone-table-row.pt"/>
-        <browser:page
-            name="+productrelease-data"
-            template="../templates/productrelease-portlet-data.pt"/>
-        <browser:page
-            name="+portlet-privacy"
-            template="../templates/milestone-portlet-privacy.pt"/>
+      <browser:page
+          name="+index"
+          template="../templates/milestone-index.pt"
+          />
+      <browser:page
+          name="+productseries-table-row"
+          template="../templates/productseries-milestone-table-row.pt"
+          />
+      <browser:page
+          name="+productrelease-data"
+          template="../templates/productrelease-portlet-data.pt"
+          />
+      <browser:page
+          name="+portlet-privacy"
+          template="../templates/milestone-portlet-privacy.pt"
+          />
     </browser:pages>
     <browser:page
         name="+pillar-table-row"
         for="lp.registry.interfaces.milestone.IMilestone"
         class="lp.registry.browser.milestone.MilestoneWithoutCountsView"
         permission="zope.Public"
-        template="../templates/productseries-milestone-table-row.pt"/>
+        template="../templates/productseries-milestone-table-row.pt"
+        />
     <browser:page
         name="+pillar-table-row"
         for="lp.registry.interfaces.milestone.IProjectGroupMilestone"
         class="lp.registry.browser.milestone.MilestoneWithoutCountsView"
         permission="zope.Public"
-        template="../templates/productseries-milestone-table-row.pt"/>
+        template="../templates/productseries-milestone-table-row.pt"
+        />
     <browser:pages
         for="lp.registry.interfaces.milestonetag.IProjectGroupMilestoneTag"
         class="lp.registry.browser.milestone.MilestoneTagView"
         permission="zope.Public">
-        <browser:page
-            name="+index"
-            template="../templates/milestone-index.pt"/>
-
-        <!-- Project Group Milestone Tag Portlets -->
-
-        <browser:page
-            name="+portlet-milestone-tag-search"
-            template="../templates/milestone-tag-search.pt"/>
+      <browser:page
+          name="+index"
+          template="../templates/milestone-index.pt"
+          />
+      <!-- Project Group Milestone Tag Portlets -->
+      <browser:page
+          name="+portlet-milestone-tag-search"
+          template="../templates/milestone-tag-search.pt"
+          />
     </browser:pages>
     <browser:page
         name="+edit"
         for="lp.registry.interfaces.milestone.IMilestone"
         class="lp.registry.browser.milestone.MilestoneEditView"
         permission="launchpad.Edit"
-        template="../templates/milestone-edit.pt"/>
+        template="../templates/milestone-edit.pt"
+        />
     <browser:page
         name="+delete"
         for="lp.registry.interfaces.milestone.IMilestone"
         class="lp.registry.browser.milestone.MilestoneDeleteView"
         permission="launchpad.Edit"
-        template="../templates/milestone-delete.pt"/>
+        template="../templates/milestone-delete.pt"
+        />
     <browser:page
         name="+addrelease"
         for="lp.registry.interfaces.milestone.IMilestone"
         class="lp.registry.browser.productrelease.ProductReleaseAddView"
         permission="launchpad.Edit"
-        template="../templates/productrelease-add.pt"/>
+        template="../templates/productrelease-add.pt"
+        />
     <browser:page
+        name="+milestones"
         for="lp.registry.interfaces.milestone.IHasMilestones"
         class="lp.registry.browser.milestone.ObjectMilestonesView"
-        name="+milestones"
         permission="zope.Public"
-        template="../templates/object-milestones.pt"/>
+        template="../templates/object-milestones.pt"
+        />
     <browser:menus
+        module="lp.registry.browser.milestone"
         classes="
-            MilestoneContextMenu
-            MilestoneInlineNavigationMenu
-            MilestoneOverviewMenu
-            MilestoneOverviewNavigationMenu"
-        module="lp.registry.browser.milestone"/>
+                 MilestoneContextMenu
+                 MilestoneInlineNavigationMenu
+                 MilestoneOverviewMenu
+                 MilestoneOverviewNavigationMenu"
+        />
     <browser:page
         name="+moderation"
         for="lp.registry.interfaces.mailinglist.IMessageApproval"
         class="lp.registry.browser.mailinglists.HeldMessageView"
+        permission="launchpad.View"
         template="../templates/message-moderation.pt"
-        permission="launchpad.View"/>
+        />
     <browser:url
         for="lp.registry.interfaces.wikiname.IWikiName"
         path_expression="string:+wikiname/${id}"
         attribute_to_parent="person"
-        rootsite="api"/>
-    <browser:defaultView
-        for="lp.registry.interfaces.product.IProduct"
-        name="+index"/>
-    <browser:defaultView
-        for="lp.registry.interfaces.product.IProduct"
+        rootsite="api"
+        />
+    <browser:defaultView
+        name="+index"
+        for="lp.registry.interfaces.product.IProduct"
+        />
+    <browser:defaultView
         name="+branches"
-        layer="lp.code.publisher.CodeLayer"/>
+        for="lp.registry.interfaces.product.IProduct"
+        layer="lp.code.publisher.CodeLayer"
+        />
     <browser:defaultView
+        name="+questions"
         for="lp.registry.interfaces.product.IProduct"
         layer="lp.answers.publisher.AnswersLayer"
-        name="+questions"/>
+        />
     <browser:navigation
         module="lp.registry.browser.product"
-        classes="ProductNavigation"/>
+        classes="ProductNavigation"
+        />
     <browser:url
         for="lp.registry.interfaces.product.IProduct"
         path_expression="name"
-        parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"/>
+        parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
+        />
     <browser:page
         name="+get-involved"
         for="lp.registry.interfaces.product.IProduct"
         class="lp.registry.browser.product.ProductInvolvementView"
         permission="zope.Public"
-        template="../templates/pillar-involvement-portlet.pt"/>
+        template="../templates/pillar-involvement-portlet.pt"
+        />
     <browser:page
+        name="+download"
         for="lp.registry.interfaces.product.IProduct"
-        name="+download"
         class="lp.registry.browser.product.ProductDownloadFilesView"
         permission="zope.Public"
-        template="../templates/product-files.pt"/>
+        template="../templates/product-files.pt"
+        />
     <browser:pages
         for="lp.registry.interfaces.product.IProduct"
-        permission="zope.Public"
-        class="lp.registry.browser.product.ProductView">
-        <browser:page
-            name="+index"
-            template="../templates/product-index.pt"/>
-        <browser:page
-            name="+timeline-graph"
-            template="../templates/object-timeline-graph.pt"/>
-        <browser:page
-            name="+listing-for-review"
-            template="../templates/product-listing-for-review.pt"/>
-
-        <!-- Products Portlets -->
-
-        <browser:page
-            name="+portlet-requires-subscription"
-            template="../templates/product-portlet-requires-subscription.pt"/>
+        class="lp.registry.browser.product.ProductView"
+        permission="zope.Public">
+      <browser:page
+          name="+index"
+          template="../templates/product-index.pt"
+          />
+      <browser:page
+          name="+timeline-graph"
+          template="../templates/object-timeline-graph.pt"
+          />
+      <browser:page
+          name="+listing-for-review"
+          template="../templates/product-listing-for-review.pt"
+          />
+      <!-- Products Portlets -->
+      <browser:page
+          name="+portlet-requires-subscription"
+          template="../templates/product-portlet-requires-subscription.pt"
+          />
     </browser:pages>
     <browser:page
-        for="lp.registry.interfaces.product.IProduct"
-        permission="launchpad.Driver"
         name="+sharing"
+        for="lp.registry.interfaces.product.IProduct"
         class="lp.registry.browser.pillar.PillarSharingView"
-        template="../templates/pillar-sharing.pt"/>
+        permission="launchpad.Driver"
+        template="../templates/pillar-sharing.pt"
+        />
     <adapter
-        provides="lp.services.webapp.interfaces.IBreadcrumb"
-        for="lp.registry.interfaces.pillar.IPillarPerson"
         factory="lp.registry.browser.pillar.PillarPersonBreadcrumb"
-        permission="zope.Public"/>
+        provides="lp.services.webapp.interfaces.IBreadcrumb"
+        for="lp.registry.interfaces.pillar.IPillarPerson"
+        permission="zope.Public"
+        />
     <browser:url
         for="lp.registry.interfaces.pillar.IPillarPerson"
         path_expression="string:+sharing/${person/name}"
         rootsite="mainsite"
-        attribute_to_parent="pillar"/>
+        attribute_to_parent="pillar"
+        />
     <browser:page
+        name="+index"
         for="lp.registry.interfaces.pillar.IPillarPerson"
-        permission="launchpad.Driver"
-        name="+index"
         class="lp.registry.browser.pillar.PillarPersonSharingView"
-        template="../templates/pillar-sharing-details.pt"/>
+        permission="launchpad.Driver"
+        template="../templates/pillar-sharing-details.pt"
+        />
     <browser:defaultView
+        name="+index"
         for="lp.registry.interfaces.pillar.IPillarPerson"
-        name="+index"/>
+        />
     <browser:page
-        for="lp.registry.interfaces.product.IProduct"
-        permission="zope.Public"
         name="+portlet-packages"
+        for="lp.registry.interfaces.product.IProduct"
         class="lp.registry.browser.product.ProductPackagesPortletView"
-        template="../templates/product-portlet-packages.pt"/>
+        permission="zope.Public"
+        template="../templates/product-portlet-packages.pt"
+        />
     <browser:page
+        name="+series"
         for="lp.registry.interfaces.product.IProduct"
         class="lp.registry.browser.product.ProductSeriesSetView"
-        name="+series"
         permission="zope.Public"
-        template="../templates/product-series.pt"/>
+        template="../templates/product-series.pt"
+        />
     <browser:page
+        name="+packages"
         for="lp.registry.interfaces.product.IProduct"
-        permission="zope.Public"
         class="lp.registry.browser.product.ProductPackagesView"
-        name="+packages"
-        template="../templates/product-packages.pt"/>
+        permission="zope.Public"
+        template="../templates/product-packages.pt"
+        />
     <browser:page
-        for="lp.registry.interfaces.product.IProduct"
-        permission="zope.Public"
-        class="lp.services.webapp.LaunchpadView"
         name="+listing-detailed"
-        template="../templates/product-listing-detailed.pt"/>
+        for="lp.registry.interfaces.product.IProduct"
+        class="lp.services.webapp.LaunchpadView"
+        permission="zope.Public"
+        template="../templates/product-listing-detailed.pt"
+        />
     <browser:renamed-page
         name="+distributions"
         for="lp.registry.interfaces.product.IProduct"
         new_name="+packages"
-        rootsite="mainsite"/>
+        rootsite="mainsite"
+        />
     <browser:page
+        name="+rdf"
         for="lp.registry.interfaces.product.IProduct"
-        permission="zope.Public"
         class="lp.registry.browser.product.ProductRdfView"
-        name="+rdf"
-        attribute="__call__"/>
+        permission="zope.Public"
+        attribute="__call__"
+        />
     <browser:pages
         for="lp.registry.interfaces.product.IProduct"
-        permission="launchpad.Edit"
-        class="lp.registry.browser.product.ProductEditPeopleView">
-        <browser:page
-            name="+edit-people"
-            template="../../app/templates/generic-edit.pt"/>
+        class="lp.registry.browser.product.ProductEditPeopleView"
+        permission="launchpad.Edit">
+      <browser:page
+          name="+edit-people"
+          template="../../app/templates/generic-edit.pt"
+          />
     </browser:pages>
     <browser:page
         name="+edit"
         for="lp.registry.interfaces.product.IProduct"
         class="lp.registry.browser.product.ProductEditView"
         permission="launchpad.Edit"
-        template="../templates/project-edit.pt"/>
+        template="../templates/project-edit.pt"
+        />
     <browser:page
-        for="lp.registry.interfaces.product.IProduct"
-        permission="launchpad.Edit"
         name="+configure-answers"
+        for="lp.registry.interfaces.product.IProduct"
+        class="lp.registry.browser.product.ProductConfigureAnswersView"
+        permission="launchpad.Edit"
         template="../../app/templates/generic-edit.pt"
-        class="lp.registry.browser.product.ProductConfigureAnswersView"/>
+        />
     <browser:page
-        for="lp.registry.interfaces.product.IProduct"
-        permission="launchpad.Edit"
         name="+configure-blueprints"
+        for="lp.registry.interfaces.product.IProduct"
+        class="lp.registry.browser.product.ProductConfigureBlueprintsView"
+        permission="launchpad.Edit"
         template="../../app/templates/generic-edit.pt"
-        class="lp.registry.browser.product.ProductConfigureBlueprintsView"/>
+        />
     <browser:page
         name="+branding"
         for="lp.registry.interfaces.product.IProduct"
         class="lp.registry.browser.product.ProductBrandingView"
         permission="launchpad.Edit"
-        template="../templates/object-branding.pt"/>
+        template="../templates/object-branding.pt"
+        />
     <browser:page
         name="+admin"
         for="lp.registry.interfaces.product.IProduct"
         class="lp.registry.browser.product.ProductAdminView"
         permission="launchpad.Moderate"
-        template="../../app/templates/generic-edit.pt"/>
+        template="../../app/templates/generic-edit.pt"
+        />
     <browser:page
         name="+review-license"
         for="lp.registry.interfaces.product.IProduct"
         class="lp.registry.browser.product.ProductReviewLicenseView"
         permission="launchpad.Moderate"
-        template="../templates/product-review-license.pt"/>
-
+        template="../templates/product-review-license.pt"
+        />
     <browser:page
+        name="+edit"
         for="lp.registry.interfaces.nameblacklist.INameBlacklist"
-        permission="launchpad.Edit"
         class="lp.registry.browser.nameblacklist.NameBlacklistEditView"
-        name="+edit"
-        template="../../app/templates/generic-edit.pt"/>
+        permission="launchpad.Edit"
+        template="../../app/templates/generic-edit.pt"
+        />
     <browser:url
         for="lp.registry.interfaces.nameblacklist.INameBlacklistSet"
         path_expression="string:+nameblacklist"
@@ -1517,29 +1769,34 @@
         parent_utility="lp.registry.interfaces.nameblacklist.INameBlacklistSet"
         />
     <browser:defaultView
+        name="+index"
         for="lp.registry.interfaces.nameblacklist.INameBlacklistSet"
-        name="+index"/>
+        />
     <browser:page
+        name="+index"
         for="lp.registry.interfaces.nameblacklist.INameBlacklistSet"
-        permission="launchpad.View"
         class="lp.registry.browser.nameblacklist.NameBlacklistSetView"
-        name="+index"
-        template="../templates/nameblacklists-index.pt"/>
+        permission="launchpad.View"
+        template="../templates/nameblacklists-index.pt"
+        />
     <browser:page
+        name="+add"
         for="lp.registry.interfaces.nameblacklist.INameBlacklistSet"
-        permission="launchpad.Edit"
         class="lp.registry.browser.nameblacklist.NameBlacklistAddView"
-        name="+add"
-        template="../../app/templates/generic-edit.pt"/>
+        permission="launchpad.Edit"
+        template="../../app/templates/generic-edit.pt"
+        />
     <browser:navigation
         module="lp.registry.browser.nameblacklist"
-        classes="NameBlacklistSetNavigation"/>
+        classes="NameBlacklistSetNavigation"
+        />
     <browser:menus
+        module="lp.registry.browser.nameblacklist"
         classes="
-            NameBlacklistNavigationMenu
-            NameBlacklistSetNavigationMenu
-            "
-        module="lp.registry.browser.nameblacklist"/>
+                 NameBlacklistNavigationMenu
+                 NameBlacklistSetNavigationMenu
+                 "
+        />
     <adapter
         factory="lp.registry.browser.nameblacklist.NameBlacklistSetBreadcrumb"
         />
@@ -1548,69 +1805,80 @@
         for="lp.registry.interfaces.product.IProduct"
         class="lp.registry.browser.product.ProductAddSeriesView"
         permission="launchpad.Driver"
-        template="../templates/productseries-new.pt"/>
+        template="../templates/productseries-new.pt"
+        />
     <browser:defaultView
+        name="+index"
         for="lp.registry.interfaces.product.IProductSet"
-        name="+index"/>
+        />
     <browser:navigation
         module="lp.registry.browser.product"
         classes="
-            ProductSetNavigation
-            "/>
+                 ProductSetNavigation
+                 "
+        />
     <browser:url
         for="lp.registry.interfaces.product.IProductSet"
         path_expression="string:projects"
-        parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"/>
+        parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
+        />
     <browser:pages
         for="lp.registry.interfaces.product.IProductSet"
-        permission="zope.Public"
-        class="lp.registry.browser.product.ProductSetView">
-        <browser:page
-            name="+index"
-            template="../templates/products-index.pt"/>
-        <browser:page
-            name="+all"
-            template="../templates/products-all.pt"/>
+        class="lp.registry.browser.product.ProductSetView"
+        permission="zope.Public">
+      <browser:page
+          name="+index"
+          template="../templates/products-index.pt"
+          />
+      <browser:page
+          name="+all"
+          template="../templates/products-all.pt"
+          />
     </browser:pages>
     <browser:pages
         for="lp.registry.interfaces.product.IProductSet"
         class="lp.registry.browser.product.ProductSetReviewLicensesView"
         permission="launchpad.Moderate">
-        <browser:page
-            name="+review-licenses"
-            template="../templates/products-review-licenses.pt"/>
+      <browser:page
+          name="+review-licenses"
+          template="../templates/products-review-licenses.pt"
+          />
     </browser:pages>
     <browser:page
         name="+new"
         for="lp.registry.interfaces.product.IProductSet"
         class="lp.registry.browser.product.ProductAddView"
         permission="launchpad.AnyPerson"
-        template="../templates/product-new.pt"/>
+        template="../templates/product-new.pt"
+        />
     <browser:renamed-page
-        for="lp.registry.interfaces.product.IProductSet"
         name="+new-guided"
         new_name="+new"
+        for="lp.registry.interfaces.product.IProductSet"
         rootsite="mainsite"
         />
     <browser:menus
+        module="lp.registry.browser.product"
         classes="
-            ProductActionNavigationMenu
-            ProductBugsMenu
-            ProductFacets
-            ProductNavigationMenu
-            ProductOverviewMenu
-            ProductSetNavigationMenu
-            ProductSpecificationsMenu
-            "
-        module="lp.registry.browser.product"/>
+                 ProductActionNavigationMenu
+                 ProductBugsMenu
+                 ProductFacets
+                 ProductNavigationMenu
+                 ProductOverviewMenu
+                 ProductSetNavigationMenu
+                 ProductSpecificationsMenu
+                 "
+        />
     <browser:navigation
         module="lp.registry.browser.productseries"
         classes="
-            ProductSeriesNavigation"/>
+                 ProductSeriesNavigation"
+        />
     <browser:url
         for="lp.registry.interfaces.productseries.IProductSeries"
         path_expression="name"
-        attribute_to_parent="product"/>
+        attribute_to_parent="product"
+        />
     <!-- lazr.restful requires that canonical_url() provide a url for
          ITimelinProductSeries. It has been configured to return the
          same url as IProductSeries. This won't cause a problem when
@@ -1621,248 +1889,291 @@
     <browser:url
         for="lp.registry.interfaces.productseries.ITimelineProductSeries"
         path_expression="name"
-        attribute_to_parent="product"/>
+        attribute_to_parent="product"
+        />
     <adapter
+        name="overview"
+        factory="lp.registry.browser.productseries.ProductSeriesInvolvedMenu"
         provides="lp.services.webapp.interfaces.INavigationMenu"
         for="lp.registry.browser.productseries.IProductSeriesInvolved"
-        factory="lp.registry.browser.productseries.ProductSeriesInvolvedMenu"
-        name="overview"
-        permission="zope.Public"/>
+        permission="zope.Public"
+        />
     <browser:defaultView
+        name="+index"
         for="lp.registry.interfaces.productseries.IProductSeries"
-        name="+index"/>
+        />
     <browser:page
         name="+get-involved"
         for="lp.registry.interfaces.productseries.IProductSeries"
         class="lp.registry.browser.productseries.ProductSeriesInvolvementView"
         permission="zope.Public"
-        template="../templates/pillar-involvement-portlet.pt"/>
+        template="../templates/pillar-involvement-portlet.pt"
+        />
     <browser:pages
         for="lp.registry.interfaces.productseries.IProductSeries"
         class="lp.services.webapp.LaunchpadView"
         permission="zope.Public">
-        <browser:page
-            name="+timeline-graph"
-            template="../templates/object-timeline-graph.pt"/>
-        <browser:page
-            name="+portlet-packages"
-            template="../templates/productseries-portlet-packages.pt"/>
+      <browser:page
+          name="+timeline-graph"
+          template="../templates/object-timeline-graph.pt"
+          />
+      <browser:page
+          name="+portlet-packages"
+          template="../templates/productseries-portlet-packages.pt"
+          />
     </browser:pages>
     <browser:pages
         for="lp.registry.interfaces.productseries.IProductSeries"
         class="lp.registry.browser.productseries.ProductSeriesView"
         permission="zope.Public">
-        <browser:page
-            name="+index"
-            template="../templates/productseries-index.pt"/>
-        <browser:page
-            name="+table-releases"
-            template="../templates/productseries-table-releases.pt"/>
-        <browser:page
-            name="+portlet-privacy"
-            template="../templates/productseries-portlet-privacy.pt"/>
+      <browser:page
+          name="+index"
+          template="../templates/productseries-index.pt"
+          />
+      <browser:page
+          name="+table-releases"
+          template="../templates/productseries-table-releases.pt"
+          />
+      <browser:page
+          name="+portlet-privacy"
+          template="../templates/productseries-portlet-privacy.pt"
+          />
     </browser:pages>
     <browser:page
         name="+ubuntupkg"
+        for="lp.registry.interfaces.productseries.IProductSeries"
+        class="lp.registry.browser.productseries.ProductSeriesUbuntuPackagingView"
+        permission="launchpad.AnyPerson"
         template="../templates/productseries-ubuntupkg.pt"
-        for="lp.registry.interfaces.productseries.IProductSeries"
-        class="lp.registry.browser.productseries.ProductSeriesUbuntuPackagingView"
-        permission="launchpad.AnyPerson"/>
+        />
     <browser:pages
         for="lp.registry.interfaces.productseries.IProductSeries"
         class="lp.registry.browser.productseries.ProductSeriesView"
         permission="zope.Public">
-        <browser:page
-            name="+status"
-            template="../templates/productseries-status.pt"/>
-        <browser:page
-            name="+code-summary"
-            template="../templates/productseries-codesummary.pt"/>
+      <browser:page
+          name="+status"
+          template="../templates/productseries-status.pt"
+          />
+      <browser:page
+          name="+code-summary"
+          template="../templates/productseries-codesummary.pt"
+          />
     </browser:pages>
     <browser:page
+        name="+detailed-display"
         for="lp.registry.interfaces.productseries.IProductSeries"
         class="lp.registry.browser.productseries.ProductSeriesDetailedDisplayView"
+        permission="zope.Public"
         template="../templates/productseries-detailed-display.pt"
-        permission="zope.Public"
-        name="+detailed-display"/>
+        />
     <browser:page
+        name="+rdf"
         for="lp.registry.interfaces.productseries.IProductSeries"
         class="lp.registry.browser.productseries.ProductSeriesRdfView"
         permission="zope.Public"
-        name="+rdf"
-        attribute="__call__"/>
+        attribute="__call__"
+        />
     <browser:page
         name="+edit"
         for="lp.registry.interfaces.productseries.IProductSeries"
         class="lp.registry.browser.productseries.ProductSeriesEditView"
         permission="launchpad.Edit"
-        template="../templates/productseries-edit.pt"/>
+        template="../templates/productseries-edit.pt"
+        />
     <browser:page
         name="+delete"
         for="lp.registry.interfaces.productseries.IProductSeries"
         class="lp.registry.browser.productseries.ProductSeriesDeleteView"
         permission="launchpad.Edit"
-        template="../templates/productseries-delete.pt"/>
+        template="../templates/productseries-delete.pt"
+        />
     <browser:page
         name="+addrelease"
         for="lp.registry.interfaces.productseries.IProductSeries"
         class="lp.registry.browser.productrelease.ProductReleaseFromSeriesAddView"
         permission="launchpad.Edit"
-        template="../templates/productrelease-add-from-series.pt"/>
+        template="../templates/productrelease-add-from-series.pt"
+        />
     <browser:page
         name="+addmilestone"
         for="lp.registry.interfaces.productseries.IProductSeries"
         class="lp.registry.browser.milestone.MilestoneAddView"
         permission="launchpad.Edit"
-        template="../templates/milestone-add.pt"/>
+        template="../templates/milestone-add.pt"
+        />
     <browser:page
-        for="lp.registry.interfaces.productseries.IProductSeries"
         name="+setbranch"
+        for="lp.registry.interfaces.productseries.IProductSeries"
         class="lp.registry.browser.productseries.ProductSeriesSetBranchView"
+        permission="launchpad.Edit"
         template="../templates/productseries-setbranch.pt"
-        permission="launchpad.Edit"/>
+        />
     <browser:page
         name="+review"
         for="lp.registry.interfaces.productseries.IProductSeries"
         class="lp.registry.browser.productseries.ProductSeriesReviewView"
         permission="launchpad.Admin"
-        template="../templates/productseries-review.pt"/>
+        template="../templates/productseries-review.pt"
+        />
     <browser:page
         name="+ask-a-question-button"
         for="lp.registry.interfaces.productseries.IProductSeries"
         class="lp.answers.browser.questiontarget.AskAQuestionButtonPortlet"
-        permission="zope.Public"/>
+        permission="zope.Public"
+        />
     <browser:url
         for="lp.registry.interfaces.productseries.IProductSeriesSet"
         path_expression="string:series"
-        parent_utility="lp.code.interfaces.codehosting.IBazaarApplication"/>
+        parent_utility="lp.code.interfaces.codehosting.IBazaarApplication"
+        />
     <browser:menus
+        module="lp.registry.browser.productseries"
         classes="
-            ProductSeriesOverviewMenu
-            ProductSeriesBugsMenu
-            ProductSeriesOverviewNavigationMenu
-            ProductSeriesSpecificationsMenu"
-        module="lp.registry.browser.productseries"/>
+                 ProductSeriesOverviewMenu
+                 ProductSeriesBugsMenu
+                 ProductSeriesOverviewNavigationMenu
+                 ProductSeriesSpecificationsMenu"
+        />
     <browser:defaultView
+        name="+index"
         for="lp.registry.interfaces.distribution.IDistribution"
-        name="+index"/>
+        />
     <browser:defaultView
+        name="+questions"
         for="lp.registry.interfaces.distribution.IDistribution"
         layer="lp.answers.publisher.AnswersLayer"
-        name="+questions"/>
+        />
     <browser:navigation
         module="lp.registry.browser.distribution"
         classes="
-            DistributionNavigation"/>
+                 DistributionNavigation"
+        />
     <browser:page
-        for="lp.registry.interfaces.distribution.IDistribution"
-        permission="launchpad.Driver"
         name="+sharing"
+        for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.pillar.PillarSharingView"
-        template="../templates/pillar-sharing.pt"/>
+        permission="launchpad.Driver"
+        template="../templates/pillar-sharing.pt"
+        />
     <browser:page
+        name="+archivemirrors"
         for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.distribution.DistributionArchiveMirrorsView"
         permission="zope.Public"
-        name="+archivemirrors"
-        template="../templates/distribution-mirrors.pt"/>
+        template="../templates/distribution-mirrors.pt"
+        />
     <browser:page
-        for="lp.registry.interfaces.distribution.IDistribution"
         name="+countrymirrors-archive"
+        for="lp.registry.interfaces.distribution.IDistribution"
+        class="lp.registry.browser.distribution.DistributionCountryArchiveMirrorsView"
         permission="zope.Public"
-        class="lp.registry.browser.distribution.DistributionCountryArchiveMirrorsView"/>
+        />
     <browser:page
-        for="lp.registry.interfaces.distribution.IDistribution"
         name="+archivemirrors-rss"
-        permission="zope.Public"
+        for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.distribution.DistributionArchiveMirrorsRSSView"
-        template="../templates/distribution-mirrors-rss.pt"/>
+        permission="zope.Public"
+        template="../templates/distribution-mirrors-rss.pt"
+        />
     <browser:page
+        name="+cdmirrors"
         for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.distribution.DistributionSeriesMirrorsView"
         permission="zope.Public"
-        name="+cdmirrors"
-        template="../templates/distribution-mirrors.pt"/>
+        template="../templates/distribution-mirrors.pt"
+        />
     <browser:page
-        for="lp.registry.interfaces.distribution.IDistribution"
         name="+cdmirrors-rss"
-        permission="zope.Public"
+        for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.distribution.DistributionSeriesMirrorsRSSView"
-        template="../templates/distribution-mirrors-rss.pt"/>
+        permission="zope.Public"
+        template="../templates/distribution-mirrors-rss.pt"
+        />
     <browser:page
+        name="+disabledmirrors"
         for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.distribution.DistributionDisabledMirrorsView"
         permission="zope.Public"
-        name="+disabledmirrors"
-        template="../templates/distribution-mirrors.pt"/>
+        template="../templates/distribution-mirrors.pt"
+        />
     <browser:page
+        name="+unofficialmirrors"
         for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.distribution.DistributionUnofficialMirrorsView"
         permission="zope.Public"
-        name="+unofficialmirrors"
-        template="../templates/distribution-mirrors.pt"/>
+        template="../templates/distribution-mirrors.pt"
+        />
     <browser:page
+        name="+pendingreviewmirrors"
         for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.distribution.DistributionPendingReviewMirrorsView"
         permission="zope.Public"
-        name="+pendingreviewmirrors"
-        template="../templates/distribution-mirrors.pt"/>
+        template="../templates/distribution-mirrors.pt"
+        />
     <browser:page
         name="+newmirror"
         for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.distributionmirror.DistributionMirrorAddView"
         permission="launchpad.AnyPerson"
         template="../templates/distribution-newmirror.pt">
-        </browser:page>
+    </browser:page>
     <browser:page
+        name="+search"
         for="lp.registry.interfaces.distribution.IDistribution"
-        permission="zope.Public"
-        name="+search"
         class="lp.registry.browser.distribution.DistributionPackageSearchView"
-        template="../templates/distribution-search.pt"/>
+        permission="zope.Public"
+        template="../templates/distribution-search.pt"
+        />
     <browser:page
+        name="+index"
         for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.distribution.DistributionView"
         permission="zope.Public"
-        name="+index"
-        template="../templates/distribution-index.pt"/>
+        template="../templates/distribution-index.pt"
+        />
     <browser:page
+        name="+series"
         for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.distribution.DistributionSeriesView"
         permission="zope.Public"
-        name="+series"
-        template="../templates/distribution-series.pt"/>
+        template="../templates/distribution-series.pt"
+        />
     <browser:page
-        for="lp.registry.interfaces.distribution.IDistribution"
-        class="lp.registry.browser.distribution.DistributionView"
-        permission="zope.Public"
         name="+series-and-milestones"
-        template="../templates/distribution-series-and-milestones.pt"/>
+        for="lp.registry.interfaces.distribution.IDistribution"
+        class="lp.registry.browser.distribution.DistributionView"
+        permission="zope.Public"
+        template="../templates/distribution-series-and-milestones.pt"
+        />
     <browser:page
+        name="+derivatives"
         for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.distribution.DistributionDerivativesView"
         permission="zope.Public"
-        name="+derivatives"
-        template="../templates/distribution-series.pt"/>
-     <browser:page
-        for="lp.registry.interfaces.distribution.IDistribution"
-        class="lp.registry.browser.distribution.DistributionView"
-        permission="zope.Public"
+        template="../templates/distribution-series.pt"
+        />
+    <browser:page
         name="+derivatives-slot"
-        template="../templates/distribution-derivatives.pt"/>
-     <browser:page
         for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.distribution.DistributionView"
         permission="zope.Public"
+        template="../templates/distribution-derivatives.pt"
+        />
+    <browser:page
         name="+details"
-        template="../templates/distribution-details.pt"/>
+        for="lp.registry.interfaces.distribution.IDistribution"
+        class="lp.registry.browser.distribution.DistributionView"
+        permission="zope.Public"
+        template="../templates/distribution-details.pt"
+        />
     <browser:pages
         for="lp.registry.interfaces.distribution.IDistribution"
-        permission="launchpad.Edit"
-        class="lp.registry.browser.distribution.DistributionReassignmentView">
-        <browser:page
-            name="+reassign"
-            template="../../app/templates/object-reassignment.pt"/>
+        class="lp.registry.browser.distribution.DistributionReassignmentView"
+        permission="launchpad.Edit">
+      <browser:page
+          name="+reassign"
+          template="../../app/templates/object-reassignment.pt"
+          />
     </browser:pages>
 
     <!-- DistroSeries create and initialize. -->
@@ -1880,211 +2191,244 @@
         permission="launchpad.Edit"
         template="../templates/distroseries-initialize.pt">
     </browser:page>
-
     <browser:page
+        name="+edit"
         for="lp.registry.interfaces.distribution.IDistribution"
-        permission="launchpad.Edit"
         class="lp.registry.browser.distribution.DistributionEditView"
-        name="+edit"
-        template="../../app/templates/generic-edit.pt"/>
+        permission="launchpad.Edit"
+        template="../../app/templates/generic-edit.pt"
+        />
     <browser:page
+        name="+admin"
         for="lp.registry.interfaces.distribution.IDistribution"
-        permission="launchpad.Admin"
         class="lp.registry.browser.distribution.DistributionAdminView"
-        name="+admin"
-        template="../../app/templates/generic-edit.pt"/>
+        permission="launchpad.Admin"
+        template="../../app/templates/generic-edit.pt"
+        />
     <browser:page
         name="+selectmemberteam"
         for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.distribution.DistributionChangeMembersView"
         permission="launchpad.Edit"
-        template="../../app/templates/generic-edit.pt"/>
+        template="../../app/templates/generic-edit.pt"
+        />
     <browser:page
         name="+selectmirroradmins"
         for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.distribution.DistributionChangeMirrorAdminView"
         permission="launchpad.Edit"
-        template="../../app/templates/generic-edit.pt"/>
+        template="../../app/templates/generic-edit.pt"
+        />
     <browser:page
         name="+pubconf"
         for="lp.registry.interfaces.distribution.IDistribution"
         class="lp.registry.browser.distribution.DistributionPublisherConfigView"
+        permission="launchpad.Admin"
         template="../../app/templates/generic-edit.pt"
-        permission="launchpad.Admin"/>
+        />
     <browser:defaultView
+        name="+index"
         for="lp.registry.interfaces.distribution.IDistributionSet"
-        name="+index"/>
+        />
     <browser:navigation
         module="lp.registry.browser.distribution"
         classes="
-            DistributionSetNavigation"/>
+                 DistributionSetNavigation"
+        />
     <browser:url
         for="lp.registry.interfaces.distribution.IDistribution"
         path_expression="name"
-        parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"/>
-    <browser:pages
-        for="lp.registry.interfaces.distribution.IDistributionSet"
-        permission="zope.Public"
-        class="lp.registry.browser.distribution.DistributionSetView">
-        <browser:page
-            name="+index"
-            template="../templates/distros-index.pt"/>
-    </browser:pages>
-    <browser:pages
-        for="lp.registry.interfaces.distribution.IDistributionSet"
-        permission="zope.Public"
-        class="lp.registry.browser.distribution.DistributionSetView">
-        </browser:pages>
+        parent_utility="lp.services.webapp.interfaces.ILaunchpadRoot"
+        />
+    <browser:pages
+        for="lp.registry.interfaces.distribution.IDistributionSet"
+        class="lp.registry.browser.distribution.DistributionSetView"
+        permission="zope.Public">
+      <browser:page
+          name="+index"
+          template="../templates/distros-index.pt"
+          />
+    </browser:pages>
+    <browser:pages
+        for="lp.registry.interfaces.distribution.IDistributionSet"
+        class="lp.registry.browser.distribution.DistributionSetView"
+        permission="zope.Public">
+    </browser:pages>
     <browser:page
         name="+add"
         for="lp.registry.interfaces.distribution.IDistributionSet"
         class="lp.registry.browser.distribution.DistributionAddView"
         permission="launchpad.Admin"
-        template="../../app/templates/generic-edit.pt"/>
+        template="../../app/templates/generic-edit.pt"
+        />
     <browser:menus
+        module="lp.registry.browser.distribution"
         classes="
-            DistributionBugsMenu
-            DistributionFacets
-            DistributionMirrorsNavigationMenu
-            DistributionNavigationMenu
-            DistributionOverviewMenu
-            DistributionSetActionNavigationMenu
-            DistributionSetContextMenu
-            DistributionSpecificationsMenu
-            "
-        module="lp.registry.browser.distribution"/>
+                 DistributionBugsMenu
+                 DistributionFacets
+                 DistributionMirrorsNavigationMenu
+                 DistributionNavigationMenu
+                 DistributionOverviewMenu
+                 DistributionSetActionNavigationMenu
+                 DistributionSetContextMenu
+                 DistributionSpecificationsMenu
+                 "
+        />
     <browser:defaultView
+        name="+index"
         for="lp.registry.interfaces.sourcepackage.ISourcePackage"
-        name="+index"/>
+        />
     <browser:navigation
         module="lp.registry.browser.sourcepackage"
         classes="
-            SourcePackageNavigation"/>
+                 SourcePackageNavigation"
+        />
     <browser:url
         for="lp.registry.interfaces.sourcepackage.ISourcePackage"
         path_expression="string:+source/${name}"
-        attribute_to_parent="distroseries"/>
+        attribute_to_parent="distroseries"
+        />
     <browser:pages
         for="lp.registry.interfaces.sourcepackage.ISourcePackage"
         permission="zope.Public">
-        <browser:page
-            name="+portlet-releases"
-            template="../templates/sourcepackage-portlet-releases.pt"/>
+      <browser:page
+          name="+portlet-releases"
+          template="../templates/sourcepackage-portlet-releases.pt"
+          />
     </browser:pages>
     <browser:pages
         for="lp.registry.interfaces.sourcepackage.ISourcePackage"
-        permission="zope.Public"
-        class="lp.registry.browser.sourcepackage.SourcePackageView">
-        <browser:page
-            name="+index"
-            template="../templates/sourcepackage-index.pt"/>
-        <!-- SourcePackage Portlets -->
-        <browser:page
-            name="+portlet-details"
-            template="../templates/sourcepackage-portlet-details.pt"/>
+        class="lp.registry.browser.sourcepackage.SourcePackageView"
+        permission="zope.Public">
+      <browser:page
+          name="+index"
+          template="../templates/sourcepackage-index.pt"
+          />
+      <!-- SourcePackage Portlets -->
+      <browser:page
+          name="+portlet-details"
+          template="../templates/sourcepackage-portlet-details.pt"
+          />
     </browser:pages>
     <browser:page
-        for="lp.registry.interfaces.sourcepackage.ISourcePackage"
-        permission="zope.Public"
         name="+portlet-associations"
+        for="lp.registry.interfaces.sourcepackage.ISourcePackage"
         class="lp.registry.browser.sourcepackage.SourcePackageAssociationPortletView"
-        template="../templates/sourcepackage-portlet-associations.pt"/>
-
+        permission="zope.Public"
+        template="../templates/sourcepackage-portlet-associations.pt"
+        />
     <browser:page
-        for="lp.registry.interfaces.sourcepackage.ISourcePackage"
-        permission="zope.Public"
         name="+upstream-connections"
+        for="lp.registry.interfaces.sourcepackage.ISourcePackage"
         class="lp.registry.browser.sourcepackage.SourcePackageUpstreamConnectionsView"
-        template="../templates/sourcepackage-upstream-connections.pt"/>
+        permission="zope.Public"
+        template="../templates/sourcepackage-upstream-connections.pt"
+        />
     <browser:menus
+        module="lp.registry.browser.sourcepackage"
         classes="
-            SourcePackageOverviewMenu"
-        module="lp.registry.browser.sourcepackage"/>
+                 SourcePackageOverviewMenu"
+        />
     <browser:navigation
         module="lp.registry.browser.productrelease"
         classes="
-            ProductReleaseNavigation"/>
+                 ProductReleaseNavigation"/>
     <adapter
+        factory="lp.registry.browser.milestone.MilestoneBreadcrumb"
         provides="lp.services.webapp.interfaces.IBreadcrumb"
         for="lp.registry.interfaces.productrelease.IProductRelease"
-        factory="lp.registry.browser.milestone.MilestoneBreadcrumb"
-        permission="launchpad.View"/>
+        permission="launchpad.View"
+        />
     <browser:url
         for="lp.registry.interfaces.productrelease.IProductRelease"
         path_expression="version"
-        attribute_to_parent="productseries"/>
+        attribute_to_parent="productseries"
+        />
     <browser:url
         for="lp.registry.interfaces.productrelease.IProductReleaseFile"
         path_expression="string:+file/${libraryfile/filename}"
         rootsite="api"
-        attribute_to_parent="productrelease"/>
+        attribute_to_parent="productrelease"
+        />
     <browser:defaultView
+        name="+index"
         for="lp.registry.interfaces.productrelease.IProductRelease"
-        name="+index"/>
+        />
     <browser:pages
         for="lp.registry.interfaces.productrelease.IProductRelease"
         permission="launchpad.View">
-        <browser:page
-            name="+portlet-downloads"
-            template="../templates/productrelease-portlet-downloads.pt"/>
+      <browser:page
+          name="+portlet-downloads"
+          template="../templates/productrelease-portlet-downloads.pt"
+          />
     </browser:pages>
     <browser:page
-        for="lp.registry.interfaces.productrelease.IProductRelease"
-        permission="launchpad.View"
         name="+index"
+        for="lp.registry.interfaces.productrelease.IProductRelease"
         class="lp.registry.browser.milestone.MilestoneView"
-        template="../templates/milestone-index.pt"/>
+        permission="launchpad.View"
+        template="../templates/milestone-index.pt"
+        />
     <browser:page
+        name="+rdf"
         for="lp.registry.interfaces.productrelease.IProductRelease"
         class="lp.registry.browser.productrelease.ProductReleaseRdfView"
         permission="launchpad.View"
-        name="+rdf"
-        attribute="__call__"/>
+        attribute="__call__"
+        />
     <browser:page
         for="lp.registry.interfaces.productrelease.IProductRelease"
         name="+adddownloadfile"
         class="lp.registry.browser.productrelease.ProductReleaseAddDownloadFileView"
         permission="launchpad.Edit"
-        template="../templates/productrelease-file-add.pt"/>
+        template="../templates/productrelease-file-add.pt"
+        />
     <browser:page
         for="lp.registry.interfaces.productrelease.IProductRelease"
         name="+delete"
         class="lp.registry.browser.productrelease.ProductReleaseDeleteView"
         permission="launchpad.Edit"
-        template="../templates/productrelease-delete.pt"/>
+        template="../templates/productrelease-delete.pt"
+        />
     <browser:page
         name="+edit"
         for="lp.registry.interfaces.productrelease.IProductRelease"
         class="lp.registry.browser.productrelease.ProductReleaseEditView"
         permission="launchpad.Edit"
-        template="../templates/productrelease-edit.pt"/>
+        template="../templates/productrelease-edit.pt"
+        />
     <browser:menus
+        module="lp.registry.browser.productrelease"
         classes="
-            ProductReleaseContextMenu"
-        module="lp.registry.browser.productrelease"/>
+                 ProductReleaseContextMenu"
+        />
     <browser:page
         name="+driver"
         for="lp.registry.interfaces.role.IHasAppointedDriver"
         class="lp.registry.browser.driver.AppointDriverView"
         permission="launchpad.Edit"
-        template="../../app/templates/generic-edit.pt"/>
-   <browser:defaultView
+        template="../../app/templates/generic-edit.pt"
+        />
+    <browser:defaultView
+        name="+index"
         for="lp.registry.interfaces.distributionmirror.IDistributionMirror"
-        name="+index" />
+        />
     <browser:url
         for="lp.registry.interfaces.distributionmirror.IDistributionMirror"
         path_expression="string:+mirror/${name}"
-        attribute_to_parent="distribution" />
+        attribute_to_parent="distribution"
+        />
     <browser:page
-        for="*"
         name="+distributionmirror-macros"
+        for="*"
+        class="lp.app.browser.launchpad.Macro"
         permission="zope.Public"
         template="../templates/distributionmirror-macros.pt"
-        class="lp.app.browser.launchpad.Macro"/>
+        />
     <browser:page
-        for="lp.registry.interfaces.distributionmirror.IDistributionMirror"
-        permission="zope.Public"
         name="+portlet-details"
+        for="lp.registry.interfaces.distributionmirror.IDistributionMirror"
+        permission="zope.Public"
         template="../templates/distributionmirror-portlet-details.pt">
     </browser:page>
     <browser:page
@@ -2097,29 +2441,29 @@
     <browser:page
         name="+edit"
         for="lp.registry.interfaces.distributionmirror.IDistributionMirror"
-        permission="launchpad.Edit"
         class="lp.registry.browser.distributionmirror.DistributionMirrorEditView"
+        permission="launchpad.Edit"
         template="../templates/distributionmirror-edit.pt">
     </browser:page>
     <browser:page
         name="+review"
         for="lp.registry.interfaces.distributionmirror.IDistributionMirror"
-        permission="launchpad.Admin"
         class="lp.registry.browser.distributionmirror.DistributionMirrorReviewView"
+        permission="launchpad.Admin"
         template="../templates/distributionmirror-review.pt">
     </browser:page>
     <browser:page
         name="+delete"
         for="lp.registry.interfaces.distributionmirror.IDistributionMirror"
-        permission="launchpad.Admin"
         class="lp.registry.browser.distributionmirror.DistributionMirrorDeleteView"
+        permission="launchpad.Admin"
         template="../templates/distributionmirror-delete.pt">
     </browser:page>
     <browser:page
+        name="+reassign"
         for="lp.registry.interfaces.distributionmirror.IDistributionMirror"
-        permission="launchpad.Edit"
         class="lp.registry.browser.distributionmirror.DistributionMirrorReassignmentView"
-        name="+reassign"
+        permission="launchpad.Edit"
         template="../../app/templates/object-reassignment.pt">
     </browser:page>
     <browser:page
@@ -2131,75 +2475,80 @@
     </browser:page>
     <browser:menus
         module="lp.registry.browser.distributionmirror"
-        classes="DistributionMirrorOverviewMenu" />
+        classes="DistributionMirrorOverviewMenu"
+        />
     <browser:page
         name="+macros"
         for="lp.registry.interfaces.productrelease.IProductReleaseFile"
         permission="zope.Public"
         template="../templates/productreleasefile-macros.pt" />
     <browser:page
-        for="*"
         name="+timeline-macros"
+        for="*"
+        class="lp.app.browser.launchpad.Macro"
+        permission="zope.Public"
         template="../templates/timeline-macros.pt"
-        permission="zope.Public"
-        class="lp.app.browser.launchpad.Macro"
         />
     <browser:page
+        name="+edit-packaging"
         for="lp.registry.interfaces.sourcepackage.ISourcePackage"
-        permission="launchpad.AnyPerson"
         class="lp.registry.browser.sourcepackage.SourcePackageChangeUpstreamView"
-        name="+edit-packaging"
+        permission="launchpad.AnyPerson"
         template="../templates/sourcepackage-edit-packaging.pt"
         />
     <browser:page
+        name="+remove-packaging"
         for="lp.registry.interfaces.sourcepackage.ISourcePackage"
-        permission="launchpad.AnyPerson"
         class="lp.registry.browser.sourcepackage.SourcePackageRemoveUpstreamView"
-        name="+remove-packaging"
+        permission="launchpad.AnyPerson"
         template="../templates/sourcepackage-remove-packaging.pt"
         />
-
     <browser:url
         for="lp.registry.interfaces.persondistributionsourcepackage.IPersonDistributionSourcePackage"
         path_expression="string:${distro_source_package/distribution/name}/+source/${distro_source_package/sourcepackagename/name}"
-        attribute_to_parent="person"/>
+        attribute_to_parent="person"
+        />
     <browser:navigation
         module="lp.registry.browser.persondistributionsourcepackage"
         classes="
-            PersonDistributionSourcePackageNavigation"/>
+                 PersonDistributionSourcePackageNavigation"
+        />
     <browser:menus
+        module="lp.registry.browser.persondistributionsourcepackage"
         classes="
-            PersonDistributionSourcePackageFacets"
-        module="lp.registry.browser.persondistributionsourcepackage"/>
-
+                 PersonDistributionSourcePackageFacets"
+        />
     <browser:url
         for="lp.registry.interfaces.personproduct.IPersonProduct"
         path_expression="product/name"
-        attribute_to_parent="person"/>
+        attribute_to_parent="person"
+        />
     <browser:navigation
         module="lp.registry.browser.personproduct"
         classes="
-            PersonProductNavigation"/>
+                 PersonProductNavigation"
+        />
     <browser:menus
+        module="lp.registry.browser.personproduct"
         classes="
-            PersonProductFacets"
-        module="lp.registry.browser.personproduct"/>
-
+                 PersonProductFacets"
+        />
     <browser:url
         for="lp.registry.interfaces.ssh.ISSHKey"
         path_expression="string:+ssh-keys/${id}"
         rootsite="api"
-        attribute_to_parent="person" />
-
+        attribute_to_parent="person"
+        />
     <browser:url
         for="lp.registry.interfaces.gpg.IGPGKey"
         path_expression="string:+gpg-keys/${keyid}"
         rootsite="api"
-        attribute_to_parent="owner" />
-
-</facet>
-<adapter
-  provides="lp.services.messages.interfaces.message.IMessage"
-  for="lp.registry.browser.distroseriesdifference.IDistroSeriesDifferenceDisplayComment"
-  factory="lp.registry.browser.distroseriesdifference.get_message"/>
+        attribute_to_parent="owner"
+        />
+  </facet>
+  <adapter
+      factory="lp.registry.browser.distroseriesdifference.get_message"
+      provides="lp.services.messages.interfaces.message.IMessage"
+      for="lp.registry.browser.distroseriesdifference.IDistroSeriesDifferenceDisplayComment"
+      />
 </configure>


Follow ups