kareila: (Default)
kareila ([personal profile] kareila) wrote in [site community profile] changelog2009-08-05 12:33 am

[dw-free] remove ".bml" on the end of links throughout site

[commit: http://hg.dwscoalition.org/dw-free/rev/47d8462593ee]

http://bugs.dwscoalition.org/show_bug.cgi?id=1464

Strip remaining links to no longer include .bml suffix.

Patch by [staff profile] denise.

Files modified:
  • cgi-bin/DW/InviteCodeRequests.pm
  • cgi-bin/DW/Logic/ProfilePage.pm
  • cgi-bin/DW/Logic/UserLinkBar.pm
  • cgi-bin/DW/Setting/XPostAccounts.pm
  • cgi-bin/DW/Widget/AccountStatistics.pm
  • cgi-bin/DW/Widget/CommunityManagement.pm
  • cgi-bin/DW/Widget/LatestNews.pm
  • cgi-bin/DW/Widget/QuickUpdate.pm
  • cgi-bin/LJ/CProd.pm
  • cgi-bin/LJ/CProd/Birthdays.pm
  • cgi-bin/LJ/CProd/Feeds.pm
  • cgi-bin/LJ/CProd/FriendsFriends.pm
  • cgi-bin/LJ/CProd/Polls.pm
  • cgi-bin/LJ/CProd/UserPic.pm
  • cgi-bin/LJ/Comment.pm
  • cgi-bin/LJ/Console/Command/ResetPassword.pm
  • cgi-bin/LJ/Customize.pm
  • cgi-bin/LJ/Event/AddedToCircle.pm
  • cgi-bin/LJ/Event/Birthday.pm
  • cgi-bin/LJ/Event/CommunityInvite.pm
  • cgi-bin/LJ/Event/CommunityJoinRequest.pm
  • cgi-bin/LJ/Event/InvitedFriendJoins.pm
  • cgi-bin/LJ/Event/JournalNewEntry.pm
  • cgi-bin/LJ/Event/NewUserpic.pm
  • cgi-bin/LJ/Event/RemovedFromCircle.pm
  • cgi-bin/LJ/M/ProfilePage.pm
  • cgi-bin/LJ/MassPrivacy.pm
  • cgi-bin/LJ/OpenID.pm
  • cgi-bin/LJ/Poll.pm
  • cgi-bin/LJ/S2.pm
  • cgi-bin/LJ/S2/EntryPage.pm
  • cgi-bin/LJ/Session.pm
  • cgi-bin/LJ/Setting/Bio.pm
  • cgi-bin/LJ/Setting/Display/AccountStatus.pm
  • cgi-bin/LJ/Setting/Display/BanUsers.pm
  • cgi-bin/LJ/Setting/Display/DomainMapping.pm
  • cgi-bin/LJ/Setting/Display/Email.pm
  • cgi-bin/LJ/Setting/Display/EmailPosts.pm
  • cgi-bin/LJ/Setting/Display/Emails.pm
  • cgi-bin/LJ/Setting/Display/Logins.pm
  • cgi-bin/LJ/Setting/Display/Password.pm
  • cgi-bin/LJ/Setting/Display/Username.pm
  • cgi-bin/LJ/Setting/EmailPosting.pm
  • cgi-bin/LJ/User.pm
  • cgi-bin/LJ/Widget/AddQotD.pm
  • cgi-bin/LJ/Widget/AddSiteMessages.pm
  • cgi-bin/LJ/Widget/Browse.pm
  • cgi-bin/LJ/Widget/CreateAccount.pm
  • cgi-bin/LJ/Widget/CreateAccountEnterCode.pm
  • cgi-bin/LJ/Widget/CreateAccountNextSteps.pm
  • cgi-bin/LJ/Widget/CreateAccountProfile.pm
  • cgi-bin/LJ/Widget/CreateAccountTheme.pm
  • cgi-bin/LJ/Widget/CreateAccountUpgrade.pm
  • cgi-bin/LJ/Widget/CurrentTheme.pm
  • cgi-bin/LJ/Widget/CustomizeTheme.pm
  • cgi-bin/LJ/Widget/Feeds.pm
  • cgi-bin/LJ/Widget/InboxFolderNav.pm
  • cgi-bin/LJ/Widget/Login.pm
  • cgi-bin/LJ/Widget/ManageQotD.pm
  • cgi-bin/LJ/Widget/ManageSiteMessages.pm
  • cgi-bin/LJ/Widget/MoodThemeChooser.pm
  • cgi-bin/LJ/Widget/PopularInterests.pm
  • cgi-bin/LJ/Widget/QotD.pm
  • cgi-bin/LJ/Widget/QotDArchive.pm
  • cgi-bin/LJ/Widget/RecentComments.pm
  • cgi-bin/LJ/Widget/Search.pm
  • cgi-bin/LJ/Widget/SubmitRequest.pm
  • cgi-bin/LJ/Widget/SubmitRequest/Support.pm
  • cgi-bin/LJ/Widget/ThemeChooser.pm
  • cgi-bin/LJ/Widget/UserpicDisplay.pm
  • cgi-bin/bml/scheme/blueshift.look
  • cgi-bin/bml/scheme/celerity.look
  • cgi-bin/bml/scheme/global.look
  • cgi-bin/bml/scheme/gradation-vertical.look
  • cgi-bin/bml/scheme/lynx.look
  • cgi-bin/cleanhtml.pl
  • cgi-bin/communitylib.pl
  • cgi-bin/crumbs.pl
  • cgi-bin/customizelib.pl
  • cgi-bin/ljcmdbuffer.pl
  • cgi-bin/ljdefaults.pl
  • cgi-bin/ljprotocol.pl
  • cgi-bin/propparse.pl
  • cgi-bin/supportlib.pl
  • cgi-bin/talklib.pl
  • cgi-bin/weblib.pl
--------------------------------------------------------------------------------
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/DW/InviteCodeRequests.pm
--- a/cgi-bin/DW/InviteCodeRequests.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/DW/InviteCodeRequests.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -230,7 +230,7 @@ sub accept {
         fromname => $LJ::SITENAME,
         charset => $u->mailencoding,
         subject => LJ::Lang::ml( 'email.invitecoderequest.accept.subject' ),
-        body => LJ::Lang::ml( 'email.invitecoderequest.accept.body', { invitesurl => "$LJ::SITEROOT/manage/invitecodes.bml"} ),
+        body => LJ::Lang::ml( 'email.invitecoderequest.accept.body', { invitesurl => "$LJ::SITEROOT/manage/invitecodes"} ),
     });
 }
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/DW/Logic/ProfilePage.pm
--- a/cgi-bin/DW/Logic/ProfilePage.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/DW/Logic/ProfilePage.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -109,11 +109,11 @@ sub userpic {
             if ( LJ::userpic_count( $u ) ) {
                 $ret->{userpic_url} = $u->allpics_base;
                 $ret->{caption_text} = LJ::Lang::ml( '.section.edit' );
-                $ret->{caption_url} = "$LJ::SITEROOT/editpics.bml?authas=$user"
+                $ret->{caption_url} = "$LJ::SITEROOT/editpics?authas=$user"
             } else {
-                $ret->{userpic_url} = "$LJ::SITEROOT/editpics.bml?authas=$user";
+                $ret->{userpic_url} = "$LJ::SITEROOT/editpics?authas=$user";
                 $ret->{caption_text} = LJ::Lang::ml( '.userpic.upload' );
-                $ret->{caption_url} = "$LJ::SITEROOT/editpics.bml?authas=$user"
+                $ret->{caption_url} = "$LJ::SITEROOT/editpics?authas=$user"
             }
         } else {
             if ( LJ::userpic_count( $u ) ) {
@@ -275,7 +275,7 @@ sub memory_stats {
     push @ret, LJ::Lang::ml( '.details.memories2', {
         num_raw => $ct,
         num_comma => LJ::commafy( $ct ),
-        aopts => "href='$LJ::SITEROOT/tools/memories.bml?user=" . $u->user . "'",
+        aopts => "href='$LJ::SITEROOT/tools/memories?user=" . $u->user . "'",
     } )
         unless $u->is_syndicated;
     
@@ -414,7 +414,7 @@ sub _basic_info_location {
             LJ::load_codes( { country => \%countries } );
 
             $country_ret = LJ::is_enabled( 'directory' ) ?
-                { url => "$LJ::SITEROOT/directory.bml?opt_sort=ut&s_loc=1&loc_cn=$ecountry", text => $countries{ $country } } :
+                { url => "$LJ::SITEROOT/directory?opt_sort=ut&s_loc=1&loc_cn=$ecountry", text => $countries{ $country } } :
                 $countries{ $country };
         }
 
@@ -427,14 +427,14 @@ sub _basic_info_location {
             $state = $states{$state} if $states_type && $states{$state};
             $estate = LJ::eurl( $state );
             $state_ret = $country && LJ::is_enabled( 'directory' ) ?
-                { url => "$LJ::SITEROOT/directory.bml?opt_sort=ut&s_loc=1&loc_cn=$ecountry&loc_st=$estate", text => LJ::ehtml( $state ) } :
+                { url => "$LJ::SITEROOT/directory?opt_sort=ut&s_loc=1&loc_cn=$ecountry&loc_st=$estate", text => LJ::ehtml( $state ) } :
                 LJ::ehtml( $state );
         }
 
         if ( $city ) {
             $city = LJ::ehtml( $city );
             $city_ret = $country && LJ::is_enabled( 'directory' ) ?
-                { url => "$LJ::SITEROOT/directory.bml?opt_sort=ut&s_loc=1&loc_cn=$ecountry&loc_st=$estate&loc_ci=$ecity", text => $city } :
+                { url => "$LJ::SITEROOT/directory?opt_sort=ut&s_loc=1&loc_cn=$ecountry&loc_st=$estate&loc_ci=$ecity", text => $city } :
                 $city;
         }
 
@@ -612,7 +612,7 @@ sub contact_rows {
 
     # private message
     if ( ( $u->is_personal || $u->is_identity ) && $remote && $u->can_receive_message( $remote ) ) {
-        push @ret, { url => "$LJ::SITEROOT/inbox/compose.bml?user=" . $u->user, text => LJ::Lang::ml( '.contact.pm' ) };
+        push @ret, { url => "$LJ::SITEROOT/inbox/compose?user=" . $u->user, text => LJ::Lang::ml( '.contact.pm' ) };
     }
 
     # email
@@ -625,7 +625,7 @@ sub contact_rows {
 
     # text message
     if ( !$u->is_syndicated && $u->can_be_text_messaged_by( $remote ) ) {
-        push @ret, { url => "$LJ::SITEROOT/tools/textmessage.bml?user=" . $u->user, text => LJ::Lang::ml( '.contact.txtmsg' ) };
+        push @ret, { url => "$LJ::SITEROOT/tools/textmessage?user=" . $u->user, text => LJ::Lang::ml( '.contact.txtmsg' ) };
     }
 
     return @ret;
@@ -677,7 +677,7 @@ sub interests {
                     my %remote_intids = map { $_ => 1 } @{ LJ::get_interests( $remote, { justids => 1 } ) };
                     $intname = "<strong>$intname</strong>" if $remote_intids{$intid};
                 }
-                push @ret, { url => "$LJ::SITEROOT/interests.bml?int=$eint", text => $intname };
+                push @ret, { url => "$LJ::SITEROOT/interests?int=$eint", text => $intname };
             } else {
                 push @ret, $intname;
             }
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/DW/Logic/UserLinkBar.pm
--- a/cgi-bin/DW/Logic/UserLinkBar.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/DW/Logic/UserLinkBar.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -140,7 +140,7 @@ sub manage_membership {
         # if logged in and a member of the community $u
         if ( $remote && $remote->member_of( $u ) ) {
             return $self->fix_link( {
-                url      => "community/leave.bml?comm=$user",
+                url      => "community/leave?comm=$user",
                 title_ml => 'userlinkbar.leavecomm.title',
                 image    => 'community_leave.png',
                 text_ml  => 'userlinkbar.leavecomm',
@@ -165,7 +165,7 @@ sub manage_membership {
 
             # allowed to join
             } else {
-                $link->{url}      = "community/join.bml?comm=$user";
+                $link->{url}      = "community/join?comm=$user";
                 $link->{title_ml} = 'userlinkbar.joincomm.title.open';
                 $link->{image}    = 'community_join.png';
                 $link->{class}    = "join";
@@ -196,7 +196,7 @@ sub trust {
         my $remote_trusts = $remote && $remote->trusts( $u ) ? 1 : 0;
         $link->{text_ml} = $remote_trusts ? 'userlinkbar.modifytrust' : 'userlinkbar.addtrust';
         if ( $remote && ( $remote_trusts || $u->is_visible ) ) {
-            $link->{url} = "manage/circle/add.bml?user=$user&action=access";
+            $link->{url} = "manage/circle/add?user=$user&action=access";
             $link->{title_ml} = $remote_trusts ? 'userlinkbar.modifytrust.title.other' : 'userlinkbar.addtrust.title.other';
             $link->{class} = "addtrust";
             if ( $remote_trusts ) {
@@ -232,7 +232,7 @@ sub watch {
     my $remote_watches = $remote && $remote->watches( $u ) ? 1 : 0;
     $link->{text_ml} = $remote_watches ? 'userlinkbar.modifysub' : 'userlinkbar.addsub';
     if ( $remote && ( $remote_watches || $u->is_visible ) ) {
-        $link->{url} = "manage/circle/add.bml?user=$user&action=subscribe";
+        $link->{url} = "manage/circle/add?user=$user&action=subscribe";
 
         if ( $remote->equals( $u ) ) {
             $link->{title_ml} = $remote_watches ? 'userlinkbar.modifysub.title.self' : 'userlinkbar.addsub.title.self';
@@ -295,7 +295,7 @@ sub post {
 
     if ( $remote && $remote->is_personal && ( $u->is_personal || $u->is_community ) && $remote->can_post_to( $u ) ) {
         my $link = {
-            url => "update.bml?usejournal=$user",
+            url => "update?usejournal=$user",
             class => "postentry",
             image => 'post.png',
         };
@@ -350,7 +350,7 @@ sub track {
         }
 
         if ( $remote && $remote->can_use_esn ) {
-            $link->{url} = "manage/subscriptions/user.bml?journal=$user";
+            $link->{url} = "manage/subscriptions/user?journal=$user";
             $link->{class} = "trackuser";
             $link->{image} = 'track.png';
         } else {
@@ -385,7 +385,7 @@ sub message {
         $link->{title_ml} = 'userlinkbar.sendmessage.title.self' if $u->equals( $remote );
 
         if ( $remote && $u->can_receive_message( $remote ) ) {
-            $link->{url} = "inbox/compose.bml?user=$user";
+            $link->{url} = "inbox/compose?user=$user";
             $link->{class} = "sendmessage";
             $link->{image} = 'message.png';
         } else {
@@ -414,7 +414,7 @@ sub tellafriend {
     if ( $remote && ! $u->is_identity && LJ::is_enabled('tellafriend') )
     {
         my $link = {
-            url => "tools/tellafriend.bml?user=$user",
+            url => "tools/tellafriend?user=$user",
             image => "$LJ::IMGPREFIX/silk/profile/tellafriend.png",
             width => 16,
             height => 16,
@@ -441,7 +441,7 @@ sub memories {
     my $user = $u->user;
 
     my $link = {
-        url => "tools/memories.bml?user=$user",
+        url => "tools/memories?user=$user",
         image => 'memories.png',
         text_ml => 'userlinkbar.memories',
         class => 'memories',
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/DW/Setting/XPostAccounts.pm
--- a/cgi-bin/DW/Setting/XPostAccounts.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/DW/Setting/XPostAccounts.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -79,7 +79,7 @@ sub option {
                 id       => "${key}xpostbydefault[${acctid}]",
                 selected => $externalacct->xpostbydefault
             }) . "</td>";
-            $ret .= "<td style='text-align: center;'><a href='$LJ::SITEROOT/manage/externalaccount.bml?acctid=${acctid}'>" . $class->ml('setting.xpost.option.change') . "</a></td>\n";
+            $ret .= "<td style='text-align: center;'><a href='$LJ::SITEROOT/manage/externalaccount?acctid=${acctid}'>" . $class->ml('setting.xpost.option.change') . "</a></td>\n";
             $ret .= "<td class='checkbox'>" . LJ::html_check({
                 name     => "${key}delete[${acctid}]",
                 value    => 1,
@@ -99,7 +99,7 @@ sub option {
 
     # add account
     if (scalar @accounts < $max_accounts) {
-        $ret .= "<div class='xpost_add'><a href='$LJ::SITEROOT/manage/externalaccount.bml'>" . $class->ml('setting.xpost.btn.add') . "</a></div>\n";
+        $ret .= "<div class='xpost_add'><a href='$LJ::SITEROOT/manage/externalaccount'>" . $class->ml('setting.xpost.btn.add') . "</a></div>\n";
     }
 
     # disable comments on crosspost
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/DW/Widget/AccountStatistics.pm
--- a/cgi-bin/DW/Widget/AccountStatistics.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/DW/Widget/AccountStatistics.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -50,7 +50,7 @@ sub render_body {
         num_posted_raw => $remote->num_comments_posted,
         num_posted_comma => LJ::commafy( $remote->num_comments_posted )
         } ) . "</li>";
-    $ret .= "<li>" . $class->ml( 'widget.accountstatistics.memories2', { num_raw => $memories_count, num_comma => LJ::commafy( $memories_count ), aopts => "href='$LJ::SITEROOT/tools/memories.bml?user=" . $remote->user . "'", } );
+    $ret .= "<li>" . $class->ml( 'widget.accountstatistics.memories2', { num_raw => $memories_count, num_comma => LJ::commafy( $memories_count ), aopts => "href='$LJ::SITEROOT/tools/memories?user=" . $remote->user . "'", } );
     $ret .= ", " . $class->ml( 'widget.accountstatistics.tags2', { num_raw => $tags_count, num_comma => LJ::commafy( $tags_count ), aopts => 'href="' . $remote->journal_base . '/tag/"' } ) . "</li>";
     $ret .= "<li>" . $accttype_string . "</li>";
     $ret .= "</ul>";
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/DW/Widget/CommunityManagement.pm
--- a/cgi-bin/DW/Widget/CommunityManagement.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/DW/Widget/CommunityManagement.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -67,10 +67,10 @@ sub render_body {
                 $list .= "<dt>" . $cu->ljuser_display;
                 $list .= "<dd>" . $class->ml( 'widget.communitymanagement.pending' );
 
-                $list .= " [<a href='$LJ::SITEROOT/community/moderate.bml?authas=" . $cu->username . "'>" . $class->ml( 'widget.communitymanagement.pending.entry', { num => $pending_entries_count } ) . "</a>]"
+                $list .= " [<a href='$LJ::SITEROOT/community/moderate?authas=" . $cu->username . "'>" . $class->ml( 'widget.communitymanagement.pending.entry', { num => $pending_entries_count } ) . "</a>]"
                     if $pending_entries_count;
 
-                $list .= " [<a href='$LJ::SITEROOT/community/pending.bml?authas=" . $cu->username . "'>" . $class->ml( 'widget.communitymanagement.pending.member', { num =>  $pending_members_count } ) . "</a>]"
+                $list .= " [<a href='$LJ::SITEROOT/community/pending?authas=" . $cu->username . "'>" . $class->ml( 'widget.communitymanagement.pending.member', { num =>  $pending_members_count } ) . "</a>]"
                     if $pending_members_count;
 
                 $list .= "</dd>";
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/DW/Widget/LatestNews.pm
--- a/cgi-bin/DW/Widget/LatestNews.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/DW/Widget/LatestNews.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -51,7 +51,7 @@ sub render_body {
     $ret .= "<div class='sidebar'>";
     $ret .= "<p><a href='" . $entry->url . "#comments'>" . $class->ml( 'widget.latestnews.comments', { num_comments => $entry->reply_count } ) . "</a></p>";
     $ret .= "<p>" . $class->ml( 'widget.latestnews.subscribe', { 
-        aopts => "href='$LJ::SITEROOT/manage/circle/add.bml?user=" . $news_journal->user. "&action=subscribe'",
+        aopts => "href='$LJ::SITEROOT/manage/circle/add?user=" . $news_journal->user. "&action=subscribe'",
         news => LJ::ljuser( $news_journal ) } ) . "</p>";
     $ret .= "</div>";
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/DW/Widget/QuickUpdate.pm
--- a/cgi-bin/DW/Widget/QuickUpdate.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/DW/Widget/QuickUpdate.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -32,7 +32,7 @@ sub render_body {
     $ret .= "<div class='contents'>";
 
     # not using the LJ::Widget form of the HTML methods, because we're directing this to update.bml
-    $ret .= $class->start_form( action => "/update.bml" );
+    $ret .= $class->start_form( action => "/update" );
     $ret .= LJ::entry_form_date_widget();
     $ret .= LJ::entry_form_xpost_widget( $remote );
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/CProd.pm
--- a/cgi-bin/LJ/CProd.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/CProd.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -197,7 +197,7 @@ sub _trackable_link_url {
 sub _trackable_link_url {
     my ($class, $href, $goodclick, $version) = @_;
     $version ||= 0;
-    return "$LJ::SITEROOT/misc/cprod.bml?class=$class&g=$goodclick&version=$version&to=" . LJ::eurl($href);
+    return "$LJ::SITEROOT/misc/cprod?class=$class&g=$goodclick&version=$version&to=" . LJ::eurl($href);
 }
 
 sub clickthru_button {
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/CProd/Birthdays.pm
--- a/cgi-bin/LJ/CProd/Birthdays.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/CProd/Birthdays.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -18,7 +18,7 @@ sub render {
 }
 
 sub ml { 'cprod.birthday.text' }
-sub link { "$LJ::SITEROOT/birthdays.bml" }
+sub link { "$LJ::SITEROOT/birthdays" }
 sub button_text { "Birthdays" }
 
 1;
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/CProd/Feeds.pm
--- a/cgi-bin/LJ/CProd/Feeds.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/CProd/Feeds.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -32,7 +32,7 @@ sub render {
 }
 
 sub ml { "cprod.feeds.text" }
-sub link { "$LJ::SITEROOT/syn/list.bml" }
+sub link { "$LJ::SITEROOT/syn/list" }
 sub button_text { "View feeds" }
 
 1;
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/CProd/FriendsFriends.pm
--- a/cgi-bin/LJ/CProd/FriendsFriends.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/CProd/FriendsFriends.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -21,7 +21,7 @@ sub ml { 'cprod.friendsfriends.text2' }
 sub ml { 'cprod.friendsfriends.text2' }
 sub link {
     my $remote = LJ::get_remote()
-        or return "$LJ::SITEROOT/login.bml";
+        or return "$LJ::SITEROOT/login";
     return $remote->friendsfriends_url . "/";
 }
 sub button_text { "Friends of Friends" }
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/CProd/Polls.pm
--- a/cgi-bin/LJ/CProd/Polls.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/CProd/Polls.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -11,7 +11,7 @@ sub applicable {
     return $used_polls ? 0 : 1;
 }
 
-sub link { "$LJ::SITEROOT/poll/create.bml" }
+sub link { "$LJ::SITEROOT/poll/create" }
 sub button_text { "Poll wizard" }
 sub ml { 'cprod.polls.text' }
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/CProd/UserPic.pm
--- a/cgi-bin/LJ/CProd/UserPic.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/CProd/UserPic.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -21,7 +21,7 @@ height: 100px; border: 1px solid #000000
 }
 
 sub ml { 'cprod.userpic.text' }
-sub link { "$LJ::SITEROOT/editpics.bml" }
+sub link { "$LJ::SITEROOT/editpics" }
 sub button_text { "Userpic" }
 
 1;
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Comment.pm
--- a/cgi-bin/LJ/Comment.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Comment.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -252,7 +252,7 @@ sub unscreen_url {
     my $journal = $entry->journal->{user};
 
     return
-        "$LJ::SITEROOT/talkscreen.bml" .
+        "$LJ::SITEROOT/talkscreen" .
         "?mode=unscreen&journal=$journal" .
         "&talkid=$dtalkid";
 }
@@ -265,7 +265,7 @@ sub delete_url {
     my $journal = $entry->journal->{user};
 
     return
-        "$LJ::SITEROOT/delcomment.bml" .
+        "$LJ::SITEROOT/delcomment" .
         "?journal=$journal&id=$dtalkid";
 }
 
@@ -990,22 +990,22 @@ sub manage_buttons {
     }
 
     if (LJ::Talk::can_delete($remote, $self->journal, $self->entry->poster, $poster)) {
-        $managebtns .= "<a href='$LJ::SITEROOT/delcomment.bml?${jargent}id=$dtalkid'>" . LJ::img("btn_del", "", { 'align' => 'absmiddle', 'hspace' => 2, 'vspace' => }) . "</a>";
+        $managebtns .= "<a href='$LJ::SITEROOT/delcomment?${jargent}id=$dtalkid'>" . LJ::img("btn_del", "", { 'align' => 'absmiddle', 'hspace' => 2, 'vspace' => }) . "</a>";
     }
 
     if (LJ::Talk::can_freeze($remote, $self->journal, $self->entry->poster, $poster)) {
         unless ($self->is_frozen) {
-            $managebtns .= "<a href='$LJ::SITEROOT/talkscreen.bml?mode=freeze&amp;${jargent}talkid=$dtalkid'>" . LJ::img("btn_freeze", "", { align => 'absmiddle', hspace => 2, vspace => }) . "</a>";
+            $managebtns .= "<a href='$LJ::SITEROOT/talkscreen?mode=freeze&amp;${jargent}talkid=$dtalkid'>" . LJ::img("btn_freeze", "", { align => 'absmiddle', hspace => 2, vspace => }) . "</a>";
         } else {
-            $managebtns .= "<a href='$LJ::SITEROOT/talkscreen.bml?mode=unfreeze&amp;${jargent}talkid=$dtalkid'>" . LJ::img("btn_unfreeze", "", { align => 'absmiddle', hspace => 2, vspace => }) . "</a>";
+            $managebtns .= "<a href='$LJ::SITEROOT/talkscreen?mode=unfreeze&amp;${jargent}talkid=$dtalkid'>" . LJ::img("btn_unfreeze", "", { align => 'absmiddle', hspace => 2, vspace => }) . "</a>";
         }
     }
 
     if (LJ::Talk::can_screen($remote, $self->journal, $self->entry->poster, $poster)) {
         unless ($self->is_screened) {
-            $managebtns .= "<a href='$LJ::SITEROOT/talkscreen.bml?mode=screen&amp;${jargent}talkid=$dtalkid'>" . LJ::img("btn_scr", "", { 'align' => 'absmiddle', 'hspace' => 2, 'vspace' => }) . "</a>";
+            $managebtns .= "<a href='$LJ::SITEROOT/talkscreen?mode=screen&amp;${jargent}talkid=$dtalkid'>" . LJ::img("btn_scr", "", { 'align' => 'absmiddle', 'hspace' => 2, 'vspace' => }) . "</a>";
         } else {
-            $managebtns .= "<a href='$LJ::SITEROOT/talkscreen.bml?mode=unscreen&amp;${jargent}talkid=$dtalkid'>" . LJ::img("btn_unscr", "", { 'align' => 'absmiddle', 'hspace' => 2, 'vspace' => }) . "</a>";
+            $managebtns .= "<a href='$LJ::SITEROOT/talkscreen?mode=unscreen&amp;${jargent}talkid=$dtalkid'>" . LJ::img("btn_unscr", "", { 'align' => 'absmiddle', 'hspace' => 2, 'vspace' => }) . "</a>";
         }
     }
 
@@ -1390,7 +1390,7 @@ sub _format_mail_both {
     my $want_form = $is_html && ($self->is_active || $can_unscreen);  # this should probably be a preference, or maybe just always off.
     if ($want_form) {
         $body .= LJ::Lang::get_text($lang, 'esn.if_suport_form', undef) . "\n";
-        $body .= "<blockquote><form method='post' target='ljreply' action=\"$LJ::SITEROOT/talkpost_do.bml\">\n";
+        $body .= "<blockquote><form method='post' target='ljreply' action=\"$LJ::SITEROOT/talkpost_do\">\n";
 
         $body .= LJ::html_hidden
             ( usertype     =>  "user",
@@ -1468,7 +1468,7 @@ sub _format_template_mail {
     $t->param(unscreen_url  => $self->unscreen_url) if $can_unscreen;
     $t->param(delete_url    => $self->delete_url) if $self->user_can_delete($targetu);
     $t->param(want_form     => ($self->is_active || $can_unscreen));
-    $t->param(form_action   => "$LJ::SITEROOT/talkpost_do.bml");
+    $t->param(form_action   => "$LJ::SITEROOT/talkpost_do");
     $t->param(hidden_fields => LJ::html_hidden
                                     ( usertype     =>  "user",
                                       parenttalkid =>  $self->jtalkid,
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Console/Command/ResetPassword.pm
--- a/cgi-bin/LJ/Console/Command/ResetPassword.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Console/Command/ResetPassword.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -44,7 +44,7 @@ sub execute {
     my $body = "The password for your $LJ::SITENAME account '$username' has been reset to:\n\n";
     $body .= "     $newpass\n\n";
     $body .= "Please change it immediately by going to:\n\n";
-    $body .= "     $LJ::SITEROOT/changepassword.bml\n\n";
+    $body .= "     $LJ::SITEROOT/changepassword\n\n";
     $body .= "Regards,\n$LJ::SITENAME Team\n\n$LJ::SITEROOT/\n";
 
     LJ::send_mail({
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Customize.pm
--- a/cgi-bin/LJ/Customize.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Customize.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -630,7 +630,7 @@ sub s2_upsell {
 
     my $ret .= "<?standout ";
     $ret .= "<p>This style system is no longer supported.</p>";
-    $ret .= "<p><a href='$LJ::SITEROOT/customize/switch_system.bml$getextra'><strong>Switch to S2</strong></a> for the latest features and themes.</p>";
+    $ret .= "<p><a href='$LJ::SITEROOT/customize/switch_system$getextra'><strong>Switch to S2</strong></a> for the latest features and themes.</p>";
     $ret .= " standout?>";
 
     return $ret;
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Event/AddedToCircle.pm
--- a/cgi-bin/LJ/Event/AddedToCircle.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Event/AddedToCircle.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -87,22 +87,22 @@ sub _as_email {
         return LJ::Lang::get_text( $lang, 'esn.addedtocircle.trusted.email_text', undef, $vars ) .
             $self->format_options( $is_html, $lang, $vars,
             {
-                'esn.add_trust'       => [ $u->trusts( $self->fromuser ) ? 0 : 1, "$LJ::SITEROOT/manage/circle/add.bml?user=$postername&action=access" ],
+                'esn.add_trust'       => [ $u->trusts( $self->fromuser ) ? 0 : 1, "$LJ::SITEROOT/manage/circle/add?user=$postername&action=access" ],
                 'esn.read_journal'    => [ 2, $journal_url ],
                 'esn.view_profile'    => [ 3, $journal_profile ],
-                'esn.edit_friends'    => [ 4, "$LJ::SITEROOT/manage/circle/edit.bml" ],
-                'esn.edit_groups'     => [ 5, "$LJ::SITEROOT/manage/circle/editfilters.bml" ],
+                'esn.edit_friends'    => [ 4, "$LJ::SITEROOT/manage/circle/edit" ],
+                'esn.edit_groups'     => [ 5, "$LJ::SITEROOT/manage/circle/editfilters" ],
             }
         );
     } else { # watched
         return LJ::Lang::get_text( $lang, 'esn.addedtocircle.watched.email_text', undef, $vars ) .
             $self->format_options( $is_html, $lang, $vars,
             {
-                'esn.add_watch'       => [ $u->watches( $self->fromuser ) ? 0 : 1, "$LJ::SITEROOT/manage/circle/add.bml?user=$postername&action=subscribe" ],
+                'esn.add_watch'       => [ $u->watches( $self->fromuser ) ? 0 : 1, "$LJ::SITEROOT/manage/circle/add?user=$postername&action=subscribe" ],
                 'esn.read_journal'    => [ 2, $journal_url ],
                 'esn.view_profile'    => [ 3, $journal_profile ],
-                'esn.edit_friends'    => [ 4, "$LJ::SITEROOT/manage/circle/edit.bml" ],
-                'esn.edit_groups'     => [ 5, "$LJ::SITEROOT/manage/circle/editfilters.bml" ],
+                'esn.edit_friends'    => [ 4, "$LJ::SITEROOT/manage/circle/edit" ],
+                'esn.edit_groups'     => [ 5, "$LJ::SITEROOT/manage/circle/editfilters" ],
             }
         );
     }
@@ -158,11 +158,11 @@ sub as_html_actions {
     if ( $self->trusted ) {
         $ret .= $u->trusts( $fromuser ) ?
             " <a href='" . $fromuser->profile_url . "'>View Profile</a>" :
-            " <a href='$LJ::SITEROOT/manage/circle/add.bml?user=" . $fromuser->user . "&action=access'>Grant Access</a>";
+            " <a href='$LJ::SITEROOT/manage/circle/add?user=" . $fromuser->user . "&action=access'>Grant Access</a>";
     } else { # watched
         $ret .= $u->watches( $fromuser ) ?
             " <a href='" . $fromuser->profile_url . "'>View Profile</a>" :
-            " <a href='$LJ::SITEROOT/manage/circle/add.bml?user=" . $fromuser->user . "&action=subscribe'>Subscribe</a>";
+            " <a href='$LJ::SITEROOT/manage/circle/add?user=" . $fromuser->user . "&action=subscribe'>Subscribe</a>";
     }
     $ret .= "</div>";
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Event/Birthday.pm
--- a/cgi-bin/LJ/Event/Birthday.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Event/Birthday.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -119,7 +119,7 @@ sub _as_email {
         }) .
         $self->format_options($is_html, $lang, undef,
             {
-                'esn.post_happy_bday'   => [ 1, "$LJ::SITEROOT/update.bml" ],
+                'esn.post_happy_bday'   => [ 1, "$LJ::SITEROOT/update" ],
             },
             LJ::run_hook('birthday_notif_extra_' . ($is_html ? 'html' : 'plaintext'), $u)
         );
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Event/CommunityInvite.pm
--- a/cgi-bin/LJ/Event/CommunityInvite.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Event/CommunityInvite.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -64,11 +64,11 @@ sub _as_email {
     return LJ::Lang::get_text($lang, 'esn.comm_invite.email', undef, $vars) .
         $self->format_options($is_html, $lang, $vars,
         {
-            'esn.manage_invitations'        => [ 1, "$LJ::SITEROOT/manage/invites.bml" ],
+            'esn.manage_invitations'        => [ 1, "$LJ::SITEROOT/manage/invites" ],
             'esn.read_last_comm_entries'    => [ 2, $community_url ],
             'esn.view_profile'              => [ 3, $community_profile ],
             'esn.add_watch'                 => [ $u->watches( $self->comm ) ? 0 : 4,
-                                                "$LJ::SITEROOT/manage/circle/add.bml?user=$community_user&action=subscribe" ],
+                                                "$LJ::SITEROOT/manage/circle/add?user=$community_user&action=subscribe" ],
         }
     );
 }
@@ -97,7 +97,7 @@ sub comm {
 
 sub as_html {
     my $self = shift;
-    return sprintf("The user %s has <a href=\"$LJ::SITEROOT/manage/invites.bml\">invited you to join</a> the community %s.",
+    return sprintf("The user %s has <a href=\"$LJ::SITEROOT/manage/invites\">invited you to join</a> the community %s.",
                    $self->inviter->ljuser_display,
                    $self->comm->ljuser_display);
 }
@@ -107,7 +107,7 @@ sub as_html_actions {
 
     my $ret .= "<div class='actions'>";
     $ret .= " <a href='" . $self->comm->profile_url . "'>View Profile</a>";
-    $ret .= " <a href='$LJ::SITEROOT/manage/invites.bml'>Join Community</a>";
+    $ret .= " <a href='$LJ::SITEROOT/manage/invites'>Join Community</a>";
     $ret .= "</div>";
 
     return $ret;
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Event/CommunityJoinRequest.pm
--- a/cgi-bin/LJ/Event/CommunityJoinRequest.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Event/CommunityJoinRequest.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -41,7 +41,7 @@ sub authurl {
 
 sub as_html {
     my $self = shift;
-    return sprintf("The user %s has <a href=\"$LJ::SITEROOT/community/pending.bml?authas=%s\">requested to join</a> the community %s.",
+    return sprintf("The user %s has <a href=\"$LJ::SITEROOT/community/pending?authas=%s\">requested to join</a> the community %s.",
                    $self->requestor->ljuser_display, $self->comm->user,
                    $self->comm->ljuser_display);
 }
@@ -51,7 +51,7 @@ sub as_html_actions {
 
     my $ret .= "<div class='actions'>";
     $ret .= " <a href='" . $self->requestor->profile_url . "'>View Profile</a>";
-    $ret .= " <a href='$LJ::SITEROOT/community/pending.bml?authas=" . $self->comm->user . "'>Manage Members</a>";
+    $ret .= " <a href='$LJ::SITEROOT/community/pending?authas=" . $self->comm->user . "'>Manage Members</a>";
     $ret .= "</div>";
 
     return $ret;
@@ -117,8 +117,8 @@ sub _as_email {
         {
             'esn.manage_request_approve'  => [ 1, $auth_url ],
             'esn.manage_request_reject'   => [ 2, $rej_url ],
-            'esn.manage_membership_reqs'  => [ 3, "$LJ::SITEROOT/community/pending.bml?authas=$communityname&jumpto=$user" ],
-            'esn.manage_community'        => [ 4, "$LJ::SITEROOT/community/manage.bml" ],
+            'esn.manage_membership_reqs'  => [ 3, "$LJ::SITEROOT/community/pending?authas=$communityname&jumpto=$user" ],
+            'esn.manage_community'        => [ 4, "$LJ::SITEROOT/community/manage" ],
         }
     );
 }
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Event/InvitedFriendJoins.pm
--- a/cgi-bin/LJ/Event/InvitedFriendJoins.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Event/InvitedFriendJoins.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -62,11 +62,11 @@ sub _as_email {
     return LJ::Lang::get_text($lang, 'esn.invited_friend_joins.email', undef, $vars) .
         $self->format_options($is_html, $lang, $vars,
         {
-            'esn.add_trust'             => [ 1, "$LJ::SITEROOT/manage/circle/add.bml?user=$newusername&action=access" ],
-            'esn.add_watch'             => [ 2, "$LJ::SITEROOT/manage/circle/add.bml?user=$newusername&action=subscribe" ],
+            'esn.add_trust'             => [ 1, "$LJ::SITEROOT/manage/circle/add?user=$newusername&action=access" ],
+            'esn.add_watch'             => [ 2, "$LJ::SITEROOT/manage/circle/add?user=$newusername&action=subscribe" ],
             'esn.read_journal'          => [ 3, $newuser_url ],
             'esn.view_profile'          => [ 4, $newuser_profile ],
-            'esn.invite_another_friend' => [ 5, "$LJ::SITEROOT/manage/circle/invite.bml" ],
+            'esn.invite_another_friend' => [ 5, "$LJ::SITEROOT/manage/circle/invite" ],
         }
     );
 }
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Event/JournalNewEntry.pm
--- a/cgi-bin/LJ/Event/JournalNewEntry.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Event/JournalNewEntry.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -231,11 +231,11 @@ sub _as_email {
                 'esn.read_recent_entries'   => [ $self->entry->journal->is_comm ? 2 : 0,
                                                     $journal_url ],
                 'esn.join_community'        => [ ($self->entry->journal->is_comm && !$u->member_of( $self->entry->journal )) ? 3 : 0,
-                                                    "$LJ::SITEROOT/community/join.bml?comm=$journal_user" ],
+                                                    "$LJ::SITEROOT/community/join?comm=$journal_user" ],
                 'esn.read_user_entries'     => [ ($self->entry->journal->is_comm) ? 0 : 4,
                                                     $journal_url ],
                 'esn.add_watch'             => [ $u->watches( $self->entry->journal ) ? 0 : 5,
-                                                    "$LJ::SITEROOT/manage/circle/add.bml?user=$journal_user&action=subscribe" ],
+                                                    "$LJ::SITEROOT/manage/circle/add?user=$journal_user&action=subscribe" ],
             });
 
     return $email;
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Event/NewUserpic.pm
--- a/cgi-bin/LJ/Event/NewUserpic.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Event/NewUserpic.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -49,7 +49,7 @@ You can:
     unless ( $u->watches( $self->userpic->owner ) ) {
         $email .= "
   - Add $poster to your reading list:
-    $LJ::SITEROOT/manage/circle/add.bml?user=$poster&action=subscribe";
+    $LJ::SITEROOT/manage/circle/add?user=$poster&action=subscribe";
     }
 
 $email .= "
@@ -81,7 +81,7 @@ You can:<ul>";
 You can:<ul>";
 
     $email .= "<li><a href=\"$icons_url\">View all of $postername\'s userpics</a></li>";
-    $email .= "<li><a href=\"$LJ::SITEROOT/manage/circle/add.bml?user=$postername&action=subscribe\">Add $postername to your reading list</a></li>"
+    $email .= "<li><a href=\"$LJ::SITEROOT/manage/circle/add?user=$postername&action=subscribe\">Add $postername to your reading list</a></li>"
         unless $u->watches( $self->userpic->owner );
     $email .= "<li><a href=\"$journal_url\">View their journal</a></li>";
     $email .= "<li><a href=\"$profile\">View their profile</a></li></ul>";
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Event/RemovedFromCircle.pm
--- a/cgi-bin/LJ/Event/RemovedFromCircle.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Event/RemovedFromCircle.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -82,20 +82,20 @@ sub _as_email {
         return LJ::Lang::get_text( $lang, 'esn.removedfromcircle.trusted.email_text', undef, $vars ) .
             $self->format_options( $is_html, $lang, $vars,
             {
-                'esn.remove_trust'    => [ !$u->trusts( $self->fromuser ) ? 0 : 1, "$LJ::SITEROOT/manage/circle/add.bml?user=$postername" ],
-                'esn.post_entry'      => [ 2, "$LJ::SITEROOT/update.bml" ],
-                'esn.edit_friends'    => [ 3, "$LJ::SITEROOT/manage/circle/edit.bml" ],
-                'esn.edit_groups'     => [ 4, "$LJ::SITEROOT/manage/circle/editfilters.bml" ],
+                'esn.remove_trust'    => [ !$u->trusts( $self->fromuser ) ? 0 : 1, "$LJ::SITEROOT/manage/circle/add?user=$postername" ],
+                'esn.post_entry'      => [ 2, "$LJ::SITEROOT/update" ],
+                'esn.edit_friends'    => [ 3, "$LJ::SITEROOT/manage/circle/edit" ],
+                'esn.edit_groups'     => [ 4, "$LJ::SITEROOT/manage/circle/editfilters" ],
             }
         );
     } else { # watched
         return LJ::Lang::get_text( $lang, 'esn.removedfromcircle.watched.email_text', undef, $vars ) .
             $self->format_options( $is_html, $lang, $vars,
             {
-                'esn.remove_watch'    => [ !$u->watches( $self->fromuser ) ? 0 : 1, "$LJ::SITEROOT/manage/circle/add.bml?user=$postername" ],
-                'esn.post_entry'      => [ 2, "$LJ::SITEROOT/update.bml" ],
-                'esn.edit_friends'    => [ 3, "$LJ::SITEROOT/manage/circle/edit.bml" ],
-                'esn.edit_groups'     => [ 4, "$LJ::SITEROOT/manage/circle/editfilters.bml" ],
+                'esn.remove_watch'    => [ !$u->watches( $self->fromuser ) ? 0 : 1, "$LJ::SITEROOT/manage/circle/add?user=$postername" ],
+                'esn.post_entry'      => [ 2, "$LJ::SITEROOT/update" ],
+                'esn.edit_friends'    => [ 3, "$LJ::SITEROOT/manage/circle/edit" ],
+                'esn.edit_groups'     => [ 4, "$LJ::SITEROOT/manage/circle/editfilters" ],
             }
         );
     }
@@ -149,11 +149,11 @@ sub as_html_actions {
 
     my $ret .= "<div class='actions'>";
     if ( $self->trusted ) {
-        $ret .= "<a href='$LJ::SITEROOT/manage/circle/add.bml?user=" . $fromuser->user . "'>Remove Access</a>"
+        $ret .= "<a href='$LJ::SITEROOT/manage/circle/add?user=" . $fromuser->user . "'>Remove Access</a>"
             if $u->trusts( $fromuser );
         $ret .= " <a href='" . $fromuser->profile_url . "'>View Profile</a>";
     } else { # watched
-        $ret .= "<a href='$LJ::SITEROOT/manage/circle/add.bml?user=" . $fromuser->user . "'>Unsubscribe</a>"
+        $ret .= "<a href='$LJ::SITEROOT/manage/circle/add?user=" . $fromuser->user . "'>Unsubscribe</a>"
             if $u->watches( $fromuser );
         $ret .= " <a href='" . $fromuser->profile_url . "'>View Profile</a>";
     }
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/M/ProfilePage.pm
--- a/cgi-bin/LJ/M/ProfilePage.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/M/ProfilePage.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -97,7 +97,7 @@ sub header_bar_links {
     my $label = $pm->{u}->is_community ? $BML::ML{'.monitor.comm2'} : $BML::ML{'.monitor.user'};
 
     my $user = $pm->{u}->user;
-    push @ret, "<a href='$LJ::SITEROOT/manage/circle/add.bml?user=$user'><img src='$LJ::IMGPREFIX/silk/profile/subscription_add.png' width='16' height='16' alt='$label' title='$label' align='middle' border='0' /></a>";
+    push @ret, "<a href='$LJ::SITEROOT/manage/circle/add?user=$user'><img src='$LJ::IMGPREFIX/silk/profile/subscription_add.png' width='16' height='16' alt='$label' title='$label' align='middle' border='0' /></a>";
 
     my $remote = LJ::get_remote();
 
@@ -109,24 +109,24 @@ sub header_bar_links {
         }
 
         $label = LJ::ehtml($label);
-        push @ret, "<a href='$LJ::SITEROOT/update.bml?usejournal=$user'><img src='$LJ::IMGPREFIX/silk/profile/post.png' width='16' height='16' alt='$label' title='$label' align='middle' border='0' /></a>";
+        push @ret, "<a href='$LJ::SITEROOT/update?usejournal=$user'><img src='$LJ::IMGPREFIX/silk/profile/post.png' width='16' height='16' alt='$label' title='$label' align='middle' border='0' /></a>";
     }
 
     unless ($pm->{u}->is_identity || $pm->{u}->is_syndicated) {
         $label = LJ::ehtml($BML::ML{'.label.memories'});
-        push @ret, "<a href='$LJ::SITEROOT/tools/memories.bml?user=$user'><img src='$LJ::IMGPREFIX/silk/profile/memories.png' width='16' height='16' alt='$label' title='$label' align='middle' border='0' /></a>";
+        push @ret, "<a href='$LJ::SITEROOT/tools/memories?user=$user'><img src='$LJ::IMGPREFIX/silk/profile/memories.png' width='16' height='16' alt='$label' title='$label' align='middle' border='0' /></a>";
     }
 
      if ( LJ::is_enabled('tellafriend') && !$pm->{u}->is_identity ) {
-         push @ret, "<a href='$LJ::SITEROOT/tools/tellafriend.bml?user=$user'><img align='middle' hspace='2' vspace='2' src='$LJ::IMGPREFIX/silk/profile/tellafriend.png' width='16' height='16' alt='$BML::ML{'.tellafriend'}' title='$BML::ML{'.tellafriend'}' border='0' /></a>";
+         push @ret, "<a href='$LJ::SITEROOT/tools/tellafriend?user=$user'><img align='middle' hspace='2' vspace='2' src='$LJ::IMGPREFIX/silk/profile/tellafriend.png' width='16' height='16' alt='$BML::ML{'.tellafriend'}' title='$BML::ML{'.tellafriend'}' border='0' /></a>";
      }
 
      if ( LJ::is_enabled('offsite_journal_search') && $pm->has_journal ) {
-         push @ret, "<a href='$LJ::SITEROOT/tools/search.bml?journal=$user'><img align='middle' hspace='2' vspace='2' src='$LJ::IMGPREFIX/btn_search.gif' width='22' height='20' alt='$BML::ML{'.label.searchjournal'}' title='$BML::ML{'.label.searchjournal'}' border='0' /></a>";
+         push @ret, "<a href='$LJ::SITEROOT/tools/search?journal=$user'><img align='middle' hspace='2' vspace='2' src='$LJ::IMGPREFIX/btn_search.gif' width='22' height='20' alt='$BML::ML{'.label.searchjournal'}' title='$BML::ML{'.label.searchjournal'}' border='0' /></a>";
      }
 
      if ($remote && !$pm->{u}->is_syndicated && $remote->can_use_esn) {
-         push @ret, "<a href='$LJ::SITEROOT/manage/subscriptions/user.bml?journal=$user'>" .
+         push @ret, "<a href='$LJ::SITEROOT/manage/subscriptions/user?journal=$user'>" .
              LJ::img("track", "", { 'align' => 'middle' }) . "</a>";
      }
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/MassPrivacy.pm
--- a/cgi-bin/LJ/MassPrivacy.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/MassPrivacy.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -128,7 +128,7 @@ sub handle {
               "been changed to be " . $privacy{$opts->{e_security}} . ".\n\n" .
               "If you made this change by mistake, or if you want to change " .
               "the security on more of your entries, you can do so at " .
-              "$LJ::SITEROOT/editprivacy.bml\n\n" .
+              "$LJ::SITEROOT/editprivacy\n\n" .
               "Thanks!\n\n" .
               "$LJ::SITENAME Team\n" .
               "$LJ::SITEROOT";
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/OpenID.pm
--- a/cgi-bin/LJ/OpenID.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/OpenID.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -37,7 +37,7 @@ sub server {
                                     },
                                     is_trusted   => \&LJ::OpenID::is_trusted,
 
-                                    setup_url    => "$LJ::SITEROOT/openid/approve.bml",
+                                    setup_url    => "$LJ::SITEROOT/openid/approve",
 
                                     server_secret => \&LJ::OpenID::server_secret,
                                     secret_gen_interval => 3600,
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Poll.pm
--- a/cgi-bin/LJ/Poll.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Poll.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -1402,7 +1402,7 @@ sub process_submission {
     if ($poll->is_unique) {
         # make sure their email address is validated
         unless ($remote->is_validated) {
-            $$error = LJ::Lang::ml('poll.error.notvalidated2', { aopts => "href='$LJ::SITEROOT/register.bml'" });
+            $$error = LJ::Lang::ml('poll.error.notvalidated2', { aopts => "href='$LJ::SITEROOT/register'" });
             return 0;
         }
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/S2.pm
--- a/cgi-bin/LJ/S2.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/S2.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -2021,7 +2021,7 @@ sub Page
             archive  => "$base_url/calendar",
             read     => "$base_url/read",
             tags     => "$base_url/tag",
-            memories => "$LJ::SITEROOT/tools/memories.bml?user=$u->{user}",
+            memories => "$LJ::SITEROOT/tools/memories?user=$u->{user}",
         },
         'linklist' => $linklist,
         'views_order' => [ 'recent', 'archive', 'read', 'tags', 'memories', 'userinfo' ],
@@ -2903,35 +2903,35 @@ sub _Comment__get_link
 
     if ($key eq "delete_comment") {
         return $null_link unless LJ::Talk::can_delete($remote, $u, $post_user, $com_user);
-        return LJ::S2::Link("$LJ::SITEROOT/delcomment.bml?journal=$u->{'user'}&amp;id=$this->{'talkid'}",
+        return LJ::S2::Link("$LJ::SITEROOT/delcomment?journal=$u->{'user'}&amp;id=$this->{'talkid'}",
                             $ctx->[S2::PROPS]->{"text_multiform_opt_delete"},
                             LJ::S2::Image("$LJ::IMGPREFIX/silk/comments/delete.png", 16, 16));
     }
     if ($key eq "freeze_thread") {
         return $null_link if $this->{'frozen'};
         return $null_link unless LJ::Talk::can_freeze($remote, $u, $post_user, $com_user);
-        return LJ::S2::Link("$LJ::SITEROOT/talkscreen.bml?mode=freeze&amp;journal=$u->{'user'}&amp;talkid=$this->{'talkid'}",
+        return LJ::S2::Link("$LJ::SITEROOT/talkscreen?mode=freeze&amp;journal=$u->{'user'}&amp;talkid=$this->{'talkid'}",
                             $ctx->[S2::PROPS]->{"text_multiform_opt_freeze"},
                             LJ::S2::Image("$LJ::IMGPREFIX/silk/comments/freeze.png", 16, 16));
     }
     if ($key eq "unfreeze_thread") {
         return $null_link unless $this->{'frozen'};
         return $null_link unless LJ::Talk::can_unfreeze($remote, $u, $post_user, $com_user);
-        return LJ::S2::Link("$LJ::SITEROOT/talkscreen.bml?mode=unfreeze&amp;journal=$u->{'user'}&amp;talkid=$this->{'talkid'}",
+        return LJ::S2::Link("$LJ::SITEROOT/talkscreen?mode=unfreeze&amp;journal=$u->{'user'}&amp;talkid=$this->{'talkid'}",
                             $ctx->[S2::PROPS]->{"text_multiform_opt_unfreeze"},
                             LJ::S2::Image("$LJ::IMGPREFIX/silk/comments/unfreeze.png", 16, 16));
     }
     if ($key eq "screen_comment") {
         return $null_link if $this->{'screened'};
         return $null_link unless LJ::Talk::can_screen($remote, $u, $post_user, $com_user);
-        return LJ::S2::Link("$LJ::SITEROOT/talkscreen.bml?mode=screen&amp;journal=$u->{'user'}&amp;talkid=$this->{'talkid'}",
+        return LJ::S2::Link("$LJ::SITEROOT/talkscreen?mode=screen&amp;journal=$u->{'user'}&amp;talkid=$this->{'talkid'}",
                             $ctx->[S2::PROPS]->{"text_multiform_opt_screen"},
                             LJ::S2::Image("$LJ::IMGPREFIX/silk/comments/screen.png", 16, 16));
     }
     if ($key eq "unscreen_comment") {
         return $null_link unless $this->{'screened'};
         return $null_link unless LJ::Talk::can_unscreen($remote, $u, $post_user, $com_user);
-        return LJ::S2::Link("$LJ::SITEROOT/talkscreen.bml?mode=unscreen&amp;journal=$u->{'user'}&amp;talkid=$this->{'talkid'}",
+        return LJ::S2::Link("$LJ::SITEROOT/talkscreen?mode=unscreen&amp;journal=$u->{'user'}&amp;talkid=$this->{'talkid'}",
                             $ctx->[S2::PROPS]->{"text_multiform_opt_unscreen"},
                             LJ::S2::Image("$LJ::IMGPREFIX/silk/comments/unscreen.png", 16, 16));
     }
@@ -2940,7 +2940,7 @@ sub _Comment__get_link
     if ($key eq "unscreen_to_reply") {
         #return $null_link unless $this->{'screened'};
         #return $null_link unless LJ::Talk::can_unscreen($remote, $u, $post_user, $com_user);
-        return LJ::S2::Link("$LJ::SITEROOT/talkscreen.bml?mode=unscreen&amp;journal=$u->{'user'}&amp;talkid=$this->{'talkid'}",
+        return LJ::S2::Link("$LJ::SITEROOT/talkscreen?mode=unscreen&amp;journal=$u->{'user'}&amp;talkid=$this->{'talkid'}",
                             $ctx->[S2::PROPS]->{"text_multiform_opt_unscreen_to_reply"},
                             LJ::S2::Image("$LJ::IMGPREFIX/silk/comments/unscreen.png", 16, 16));
     }
@@ -2965,7 +2965,7 @@ sub _Comment__get_link
 
             my $etypeid = 'LJ::Event::JournalNewComment'->etypeid;
 
-            return LJ::S2::Link("$LJ::SITEROOT/manage/subscriptions/comments.bml?journal=$u->{'user'}&amp;talkid=" . $comment->dtalkid,
+            return LJ::S2::Link("$LJ::SITEROOT/manage/subscriptions/comments?journal=$u->{'user'}&amp;talkid=" . $comment->dtalkid,
                                 $ctx->[S2::PROPS]->{"text_multiform_opt_untrack"},
                                 LJ::S2::Image("$LJ::IMGPREFIX/silk/entry/untrack.png", 16, 16, 'Untrack this',
                                               'lj_etypeid'    => $etypeid,
@@ -3020,12 +3020,12 @@ sub _Comment__get_link
         $btn_params{'id'}            = "lj_track_btn_" . $dtalkid;
 
         if ($key eq "watch_thread" && !$watching_parent) {
-            return LJ::S2::Link("$LJ::SITEROOT/manage/subscriptions/comments.bml?journal=$u->{'user'}&amp;talkid=$dtalkid",
+            return LJ::S2::Link("$LJ::SITEROOT/manage/subscriptions/comments?journal=$u->{'user'}&amp;talkid=$dtalkid",
                                 $ctx->[S2::PROPS]->{"text_multiform_opt_track"},
                                 LJ::S2::Image("$LJ::IMGPREFIX/silk/entry/track.png", 16, 16, 'Track This', %btn_params));
         }
         if ($key eq "watching_parent" && $watching_parent) {
-            return LJ::S2::Link("$LJ::SITEROOT/manage/subscriptions/comments.bml?journal=$u->{'user'}&amp;talkid=$dtalkid",
+            return LJ::S2::Link("$LJ::SITEROOT/manage/subscriptions/comments?journal=$u->{'user'}&amp;talkid=$dtalkid",
                                 $ctx->[S2::PROPS]->{"text_multiform_opt_track"},
                                 LJ::S2::Image("$LJ::IMGPREFIX/silk/entry/untrack.png", 16, 16, 'Untrack This', %btn_params));
         }
@@ -3511,13 +3511,13 @@ sub _Entry__get_link
         return $null_link unless $remote && ($remote->{'user'} eq $journal ||
                                         $remote->{'user'} eq $poster ||
                                         LJ::can_manage($remote, LJ::load_user($journal)));
-        return LJ::S2::Link("$LJ::SITEROOT/editjournal.bml?journal=$journal&amp;itemid=$this->{'itemid'}",
+        return LJ::S2::Link("$LJ::SITEROOT/editjournal?journal=$journal&amp;itemid=$this->{'itemid'}",
                             $ctx->[S2::PROPS]->{"text_edit_entry"},
                             LJ::S2::Image("$LJ::IMGPREFIX/silk/entry/edit.png", 16, 16));
     }
     if ($key eq "edit_tags") {
         return $null_link unless $remote && LJ::Tags::can_add_tags(LJ::load_user($journal), $remote);
-        return LJ::S2::Link("$LJ::SITEROOT/edittags.bml?journal=$journal&amp;itemid=$this->{'itemid'}",
+        return LJ::S2::Link("$LJ::SITEROOT/edittags?journal=$journal&amp;itemid=$this->{'itemid'}",
                             $ctx->[S2::PROPS]->{"text_edit_tags"},
                             LJ::S2::Image("$LJ::IMGPREFIX/silk/entry/tag_edit.png", 16, 16));
     }
@@ -3525,23 +3525,23 @@ sub _Entry__get_link
         return $null_link unless LJ::is_enabled('tellafriend');
         my $entry = LJ::Entry->new($journalu->{'userid'}, ditemid => $this->{'itemid'});
         return $null_link unless $entry->can_tellafriend($remote);
-        return LJ::S2::Link("$LJ::SITEROOT/tools/tellafriend.bml?journal=$journal&amp;itemid=$this->{'itemid'}",
+        return LJ::S2::Link("$LJ::SITEROOT/tools/tellafriend?journal=$journal&amp;itemid=$this->{'itemid'}",
                             $ctx->[S2::PROPS]->{"text_tell_friend"},
                             LJ::S2::Image("$LJ::IMGPREFIX/silk/entry/tellafriend.png", 16, 16));
     }
     if ($key eq "mem_add") {
         return $null_link unless LJ::is_enabled('memories');
-        return LJ::S2::Link("$LJ::SITEROOT/tools/memadd.bml?journal=$journal&amp;itemid=$this->{'itemid'}",
+        return LJ::S2::Link("$LJ::SITEROOT/tools/memadd?journal=$journal&amp;itemid=$this->{'itemid'}",
                             $ctx->[S2::PROPS]->{"text_mem_add"},
                             LJ::S2::Image("$LJ::IMGPREFIX/silk/entry/memories_add.png", 16, 16));
     }
     if ($key eq "nav_prev") {
-        return LJ::S2::Link("$LJ::SITEROOT/go.bml?journal=$journal&amp;itemid=$this->{'itemid'}&amp;dir=prev",
+        return LJ::S2::Link("$LJ::SITEROOT/go?journal=$journal&amp;itemid=$this->{'itemid'}&amp;dir=prev",
                             $ctx->[S2::PROPS]->{"text_entry_prev"},
                             LJ::S2::Image("$LJ::IMGPREFIX//silk/entry/previous.png", 16, 16));
     }
     if ($key eq "nav_next") {
-        return LJ::S2::Link("$LJ::SITEROOT/go.bml?journal=$journal&amp;itemid=$this->{'itemid'}&amp;dir=next",
+        return LJ::S2::Link("$LJ::SITEROOT/go?journal=$journal&amp;itemid=$this->{'itemid'}&amp;dir=next",
                             $ctx->[S2::PROPS]->{"text_entry_next"},
                             LJ::S2::Image("$LJ::IMGPREFIX//silk/entry/next.png", 16, 16));
     }
@@ -3588,7 +3588,7 @@ sub _Entry__get_link
                                                    arg1      => $this->{itemid},
                                                    );
 
-        return LJ::S2::Link("$LJ::SITEROOT/manage/subscriptions/entry.bml?journal=$journal&amp;itemid=$this->{'itemid'}",
+        return LJ::S2::Link("$LJ::SITEROOT/manage/subscriptions/entry?journal=$journal&amp;itemid=$this->{'itemid'}",
                             $ctx->[S2::PROPS]->{"text_watch_comments"},
                             LJ::S2::Image("$LJ::IMGPREFIX/silk/entry/track.png", 16, 16, 'Track This',
                                           'lj_journalid'        => $journalu->id,
@@ -3618,7 +3618,7 @@ sub _Entry__get_link
                                                    subid  => $subscr->id,
                                                    action => 'delsub');
 
-        return LJ::S2::Link("$LJ::SITEROOT/manage/subscriptions/entry.bml?journal=$journal&amp;itemid=$this->{'itemid'}",
+        return LJ::S2::Link("$LJ::SITEROOT/manage/subscriptions/entry?journal=$journal&amp;itemid=$this->{'itemid'}",
                             $ctx->[S2::PROPS]->{"text_unwatch_comments"},
                             LJ::S2::Image("$LJ::IMGPREFIX/silk/entry/untrack.png", 16, 16, 'Untrack this',
                                           'lj_journalid'        => $journalu->id,
@@ -3670,7 +3670,7 @@ sub EntryPage__print_multiform_start
 {
     my ($ctx, $this) = @_;
     return unless $this->{'multiform_on'};
-    $S2::pout->("<form style='display: inline' method='post' action='$LJ::SITEROOT/talkmulti.bml' name='multiform'>\n" .
+    $S2::pout->("<form style='display: inline' method='post' action='$LJ::SITEROOT/talkmulti' name='multiform'>\n" .
                 LJ::html_hidden("ditemid", $this->{'entry'}->{'itemid'},
                                 "journal", $this->{'entry'}->{'journal'}->{'username'}) . "\n");
 }
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/S2/EntryPage.pm
--- a/cgi-bin/LJ/S2/EntryPage.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/S2/EntryPage.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -328,7 +328,7 @@ sub EntryPage
 
         $recurse->($recurse, $p->{'comments'});
 
-        my $js = "<script>\n// don't crawl this.  read http://www.livejournal.com/developer/exporting.bml\n";
+        my $js = "<script>\n// don't crawl this.  read http://www.livejournal.com/developer/exporting\n";
         $js .= "var LJ_cmtinfo = " . LJ::js_dumper($cmtinfo) . "\n";
         $js .= '</script>';
         $p->{'LJ_cmtinfo'} = $js if $opts->{'need_cmtinfo'};
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Session.pm
--- a/cgi-bin/LJ/Session.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Session.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -510,7 +510,7 @@ sub session_from_domain_cookie {
         my $reason = shift;
         my $rr = $opts->{redirect_ref};
         if ($rr) {
-            $$rr = "$LJ::SITEROOT/misc/get_domain_session.bml?return=" . LJ::eurl(_current_url());
+            $$rr = "$LJ::SITEROOT/misc/get_domain_session?return=" . LJ::eurl(_current_url());
         }
         return undef;
     };
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Setting/Bio.pm
--- a/cgi-bin/LJ/Setting/Bio.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Setting/Bio.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -22,7 +22,7 @@ sub as_html {
         $ret .= "<p class='detail'>" . $class->ml('.setting.bio.note') . "</p>";
     } else {
         $ret .= LJ::html_hidden("${key}bio_absent", 'yes');
-        $ret .= "<?p <?inerr " . LJ::Lang::ml('/manage/profile/index.bml.error.invalidbio', {'aopts' => "href='$LJ::SITEROOT/utf8convert.bml'"}) . " inerr?> p?>";
+        $ret .= "<?p <?inerr " . LJ::Lang::ml('/manage/profile/index.bml.error.invalidbio', {'aopts' => "href='$LJ::SITEROOT/utf8convert'"}) . " inerr?> p?>";
     }
     $ret .= $class->errdiv($errs, "bio");
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Setting/Display/AccountStatus.pm
--- a/cgi-bin/LJ/Setting/Display/AccountStatus.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Setting/Display/AccountStatus.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -25,11 +25,11 @@ sub actionlink {
     my ($class, $u) = @_;
 
     if ($u->is_deleted) {
-        return "<a href='$LJ::SITEROOT/accountstatus.bml?authas=" . $u->user . "'>" . $class->ml('setting.display.accountstatus.actionlink.undelete') . "</a>";
+        return "<a href='$LJ::SITEROOT/accountstatus?authas=" . $u->user . "'>" . $class->ml('setting.display.accountstatus.actionlink.undelete') . "</a>";
     } elsif ($u->is_suspended || $u->is_readonly) {
-        return $class->ml('setting.display.accountstatus.actionlink.contactabuse', { aopts => "href='$LJ::SITEROOT/abuse/report.bml'" });
+        return $class->ml('setting.display.accountstatus.actionlink.contactabuse', { aopts => "href='$LJ::SITEROOT/abuse/report'" });
     } elsif ($u->is_visible) {
-        return "<a href='$LJ::SITEROOT/accountstatus.bml?authas=" . $u->user . "'>" . $class->ml('setting.display.accountstatus.actionlink.delete') . "</a>";
+        return "<a href='$LJ::SITEROOT/accountstatus?authas=" . $u->user . "'>" . $class->ml('setting.display.accountstatus.actionlink.delete') . "</a>";
     }
 
     return "";
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Setting/Display/BanUsers.pm
--- a/cgi-bin/LJ/Setting/Display/BanUsers.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Setting/Display/BanUsers.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -27,7 +27,7 @@ sub option {
     my $remote = LJ::get_remote();
     my $getextra = $remote && $remote->user ne $u->user ? "?authas=" . $u->user : "";
 
-    my $ret = "<a href='$LJ::SITEROOT/manage/banusers.bml$getextra'>";
+    my $ret = "<a href='$LJ::SITEROOT/manage/banusers$getextra'>";
     $ret .= $u->is_community ? $class->ml('setting.display.banusers.option.comm') : $class->ml('setting.display.banusers.option.self');
     $ret .= "</a>";
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Setting/Display/DomainMapping.pm
--- a/cgi-bin/LJ/Setting/Display/DomainMapping.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Setting/Display/DomainMapping.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -23,9 +23,9 @@ sub actionlink {
     my $upgrade_link = LJ::run_hook("upgrade_link", $u, "plus") || "";
 
     if ($u->get_cap('domainmap')) {
-        return "<a href='$LJ::SITEROOT/manage/domain.bml?authas=" . $u->user . "'>" . $class->ml('setting.display.domainmapping.actionlink') . "</a>";
+        return "<a href='$LJ::SITEROOT/manage/domain?authas=" . $u->user . "'>" . $class->ml('setting.display.domainmapping.actionlink') . "</a>";
     } elsif ($has_domain) {
-        return "<a href='$LJ::SITEROOT/manage/domain.bml?authas=" . $u->user . "'>" . $class->ml('setting.display.domainmapping.actionlink.remove') . "</a> $upgrade_link";
+        return "<a href='$LJ::SITEROOT/manage/domain?authas=" . $u->user . "'>" . $class->ml('setting.display.domainmapping.actionlink.remove') . "</a> $upgrade_link";
     } elsif ($upgrade_url) {
         return "<a href='$upgrade_url'>" . $class->ml('setting.display.domainmapping.actionlink') . "</a> $upgrade_link";
     }
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Setting/Display/Email.pm
--- a/cgi-bin/LJ/Setting/Display/Email.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Setting/Display/Email.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -19,7 +19,7 @@ sub actionlink {
     my ($class, $u) = @_;
 
     my $text = $u->is_identity && !$u->email_raw ? $class->ml('setting.display.email.actionlink.set') : $class->ml('setting.display.email.actionlink.change');
-    return "<a href='$LJ::SITEROOT/changeemail.bml?authas=" . $u->user . "'>$text</a>";
+    return "<a href='$LJ::SITEROOT/changeemail?authas=" . $u->user . "'>$text</a>";
 }
 
 sub label {
@@ -38,7 +38,7 @@ sub option {
     } elsif ($u->email_status eq "A") {
         return "$email " . $class->ml('setting.display.email.option.validated');
     } else {
-        return "$email " . $class->ml('setting.display.email.option.notvalidated', { aopts => "href='$LJ::SITEROOT/register.bml?authas=" . $u->user . "'" });
+        return "$email " . $class->ml('setting.display.email.option.notvalidated', { aopts => "href='$LJ::SITEROOT/register?authas=" . $u->user . "'" });
     }
 }
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Setting/Display/EmailPosts.pm
--- a/cgi-bin/LJ/Setting/Display/EmailPosts.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Setting/Display/EmailPosts.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -18,7 +18,7 @@ sub option {
 sub option {
     my ($class, $u, $errs, $args) = @_;
 
-    return "<a href='$LJ::SITEROOT/tools/recent_emailposts.bml'>" . $class->ml('setting.display.emailposts.option') . "</a>";
+    return "<a href='$LJ::SITEROOT/tools/recent_emailposts'>" . $class->ml('setting.display.emailposts.option') . "</a>";
 }
 
 1;
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Setting/Display/Emails.pm
--- a/cgi-bin/LJ/Setting/Display/Emails.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Setting/Display/Emails.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -18,7 +18,7 @@ sub option {
 sub option {
     my ($class, $u, $errs, $args) = @_;
 
-    return "<a href='$LJ::SITEROOT/tools/emailmanage.bml'>" . $class->ml('setting.display.emails.option') . "</a>";
+    return "<a href='$LJ::SITEROOT/tools/emailmanage'>" . $class->ml('setting.display.emails.option') . "</a>";
 }
 
 1;
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Setting/Display/Logins.pm
--- a/cgi-bin/LJ/Setting/Display/Logins.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Setting/Display/Logins.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -18,7 +18,7 @@ sub option {
 sub option {
     my ($class, $u, $errs, $args) = @_;
 
-    return "<a href='$LJ::SITEROOT/manage/logins.bml'>" . $class->ml('setting.display.logins.option') . "</a>";
+    return "<a href='$LJ::SITEROOT/manage/logins'>" . $class->ml('setting.display.logins.option') . "</a>";
 }
 
 1;
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Setting/Display/Password.pm
--- a/cgi-bin/LJ/Setting/Display/Password.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Setting/Display/Password.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -18,7 +18,7 @@ sub actionlink {
 sub actionlink {
     my ($class, $u) = @_;
 
-    return "<a href='$LJ::SITEROOT/changepassword.bml'>" . $class->ml('setting.display.password.actionlink') . "</a>";
+    return "<a href='$LJ::SITEROOT/changepassword'>" . $class->ml('setting.display.password.actionlink') . "</a>";
 }
 
 sub label {
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Setting/Display/Username.pm
--- a/cgi-bin/LJ/Setting/Display/Username.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Setting/Display/Username.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -33,7 +33,7 @@ sub option {
     if ($u->is_identity) {
         return $u->display_username . " " . $class->ml('setting.display.username.option.openidusername', { user => $u->user });
     } else {
-        return $u->user . " <a href='$LJ::SITEROOT/misc/expunged_list.bml' class='smaller'>" . $class->ml('setting.display.username.option.list') . "</a>";
+        return $u->user . " <a href='$LJ::SITEROOT/misc/expunged_list' class='smaller'>" . $class->ml('setting.display.username.option.list') . "</a>";
     }
 }
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Setting/EmailPosting.pm
--- a/cgi-bin/LJ/Setting/EmailPosting.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Setting/EmailPosting.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -33,7 +33,7 @@ sub option {
 
     my $pin = $class->get_arg($args, "emailposting_pin") || $u->prop("emailpost_pin");
 
-    my $ret .= "<p>" . $class->ml('setting.emailposting.option', { domain => $LJ::EMAIL_POST_DOMAIN, aopts => "href='$LJ::SITEROOT/manage/emailpost.bml?mode=help'" }) . " $upgrade_link</p>";
+    my $ret .= "<p>" . $class->ml('setting.emailposting.option', { domain => $LJ::EMAIL_POST_DOMAIN, aopts => "href='$LJ::SITEROOT/manage/emailpost?mode=help'" }) . " $upgrade_link</p>";
 
     $ret .= "<table class='setting_table' cellspacing='5' cellpadding='0'>";
 
@@ -76,7 +76,7 @@ sub option {
 
     if ($can_emailpost) {
         $ret .= "<tr><td>&nbsp;</td>";
-        $ret .= "<td><a href='$LJ::SITEROOT/manage/emailpost.bml'>" . $class->ml('setting.emailposting.option.advanced') . "</a></td></tr>";
+        $ret .= "<td><a href='$LJ::SITEROOT/manage/emailpost'>" . $class->ml('setting.emailposting.option.advanced') . "</a></td></tr>";
     }
 
     $ret .= "</table>";
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/User.pm
--- a/cgi-bin/LJ/User.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/User.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -2075,7 +2075,7 @@ sub profile_url {
 
     my $url;
     if ($u->{journaltype} eq "I") {
-        $url = "$LJ::SITEROOT/userinfo.bml?userid=$u->{'userid'}&t=I";
+        $url = "$LJ::SITEROOT/userinfo?userid=$u->{'userid'}&t=I";
         $url .= "&mode=full" if $opts{full};
     } else {
         $url = $u->journal_base . "/profile";
@@ -2360,7 +2360,7 @@ sub ljuser_display {
             $imgurl = $site->icon_url;
         }
 
-        my $profile = $profile_url ne '' ? $profile_url : "$LJ::SITEROOT/userinfo.bml?userid=$u->{userid}&amp;t=I$andfull";
+        my $profile = $profile_url ne '' ? $profile_url : "$LJ::SITEROOT/userinfo?userid=$u->{userid}&amp;t=I$andfull";
 
         return "<span $display_class lj:user='$name' style='white-space: nowrap;$strike'><a href='$profile'><img src='$imgurl' alt='[info - $type] ' width='$width' height='$height' style='vertical-align: bottom; border: 0; padding-right: 1px;' /></a><a href='$url' rel='nofollow'><b>$name</b></a></span>";
 
@@ -3238,8 +3238,8 @@ sub render_promo_of_community {
 
     my $blurb = $comm->prop('comm_promo_blurb') || '';
 
-    my $join_link = "$LJ::SITEROOT/community/join.bml?comm=$comm->{user}";
-    my $watch_link = "$LJ::SITEROOT/manage/circle/add.bml?user=$comm->{user}&action=subscribe";
+    my $join_link = "$LJ::SITEROOT/community/join?comm=$comm->{user}";
+    my $watch_link = "$LJ::SITEROOT/manage/circle/add?user=$comm->{user}&action=subscribe";
     my $read_link = $comm->journal_base;
 
     LJ::need_res("stc/lj_base.css");
@@ -4696,7 +4696,7 @@ sub message_url {
     croak "invalid user object passed" unless LJ::isu($u);
 
     return undef unless LJ::is_enabled('user_messaging');
-    return "$LJ::SITEROOT/inbox/compose.bml?user=$u->{'user'}";
+    return "$LJ::SITEROOT/inbox/compose?user=$u->{'user'}";
 }
 
 
@@ -6425,8 +6425,8 @@ sub ljuser
     # if invalid user, link to dummy userinfo page
     unless ($u && isu($u)) {
         $user = LJ::canonical_username($user);
-        $profile = "$LJ::SITEROOT/userinfo.bml?user=$user";
-        return $make_tag->('silk/identity/user.png', "$LJ::SITEROOT/userinfo.bml?user=$user", 17);
+        $profile = "$LJ::SITEROOT/userinfo?user=$user";
+        return $make_tag->('silk/identity/user.png', "$LJ::SITEROOT/userinfo?user=$user", 17);
     }
 
     $profile = $u->profile_url;
@@ -7752,7 +7752,7 @@ sub bad_password_redirect {
 
     return undef unless $remote->prop('badpassword');
 
-    my $redir = "$LJ::SITEROOT/changepassword.bml";
+    my $redir = "$LJ::SITEROOT/changepassword";
     unless (defined $opts->{'returl'}) {
         return BML::redirect($redir);
     } else {
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/AddQotD.pm
--- a/cgi-bin/LJ/Widget/AddQotD.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/AddQotD.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -61,7 +61,7 @@ sub render_body {
 
     # form entry
     my $ret =
-        "<?p (<a href='$LJ::SITEROOT/admin/qotd/manage.bml'>" . 
+        "<?p (<a href='$LJ::SITEROOT/admin/qotd/manage'>" . 
         "Manage questions</a>) p?>" . 
         "<?p Enter a new Question of the Day. p?>";
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/AddSiteMessages.pm
--- a/cgi-bin/LJ/Widget/AddSiteMessages.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/AddSiteMessages.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -47,7 +47,7 @@ sub render_body {
 
     # form entry
     my $ret =
-        "<?p (<a href='$LJ::SITEROOT/admin/sitemessages/manage.bml'>" . 
+        "<?p (<a href='$LJ::SITEROOT/admin/sitemessages/manage'>" . 
         "Manage site messages</a>) p?>" . 
         "<?p Enter a new site message. p?>";
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/Browse.pm
--- a/cgi-bin/LJ/Widget/Browse.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/Browse.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -24,13 +24,13 @@ sub render_body {
     $ret .= "<div class='browse-findby'>";
     $ret .= "<p><strong>" . $class->ml('widget.browse.findusers') . "</strong><br />";
     $ret .= "&raquo; <a href='$LJ::SITEROOT/schools/'>" . $class->ml('widget.browse.findusers.school') . "</a><br />";
-    $ret .= "&raquo; <a href='$LJ::SITEROOT/directory.bml'>" . $class->ml('widget.browse.findusers.location') . "</a></p>";
+    $ret .= "&raquo; <a href='$LJ::SITEROOT/directory'>" . $class->ml('widget.browse.findusers.location') . "</a></p>";
     $ret .= "</div>";
 
     $ret .= "<div class='browse-directorysearch'>";
     $ret .= "<p><strong>" . $class->ml('widget.browse.directorysearch') . "</strong><br />";
-    $ret .= "&raquo; <a href='$LJ::SITEROOT/directorysearch.bml'>" . $class->ml('widget.browse.directorysearch.users') . "</a><br />";
-    $ret .= "&raquo; <a href='$LJ::SITEROOT/community/search.bml'>" . $class->ml('widget.browse.directorysearch.communities') . "</a></p>";
+    $ret .= "&raquo; <a href='$LJ::SITEROOT/directorysearch'>" . $class->ml('widget.browse.directorysearch.users') . "</a><br />";
+    $ret .= "&raquo; <a href='$LJ::SITEROOT/community/search'>" . $class->ml('widget.browse.directorysearch.communities') . "</a></p>";
     $ret .= "</div>";
 
     $ret .= "</div>";
@@ -39,7 +39,7 @@ sub render_body {
     $ret .= "<div class='browse-extras'>";
     $ret .= "<div class='browse-randomuser'>";
     $ret .= "<img src='$LJ::IMGPREFIX/explore/randomuser.jpg' alt='' />";
-    $ret .= "<p><a href='$LJ::SITEROOT/random.bml'><strong>" . $class->ml('widget.browse.extras.random') . "</strong></a><br />";
+    $ret .= "<p><a href='$LJ::SITEROOT/random'><strong>" . $class->ml('widget.browse.extras.random') . "</strong></a><br />";
     $ret .= $class->ml('widget.browse.extras.random.desc') . "</p>";
     $ret .= "</div>";
     $ret .= LJ::run_hook('browse_widget_extras');
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/CreateAccount.pm
--- a/cgi-bin/LJ/Widget/CreateAccount.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/CreateAccount.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -299,8 +299,8 @@ sub render_body {
         $ret .= " <label for='create_tos' class='text'>";
         $ret .= $class->ml( 'widget.createaccount.field.tos', {
             sitename => $LJ::SITENAMESHORT,
-            aopts1 => "href='$LJ::SITEROOT/legal/tos.bml' target='_new'",
-            aopts2 => "href='$LJ::SITEROOT/legal/privacy.bml' target='_new'",
+            aopts1 => "href='$LJ::SITEROOT/legal/tos' target='_new'",
+            aopts2 => "href='$LJ::SITEROOT/legal/privacy' target='_new'",
         } );
         $ret .= "</label>";
         $ret .= $error_msg->( 'tos', '<span class="formitemFlag">', '</span><br />' );
@@ -392,7 +392,7 @@ sub handle_post {
             my $r = DW::Request->get;
             my $args = $r->query_string;
             my $querysep = $args ? "?" : "";
-            my $uri = "$LJ::SITEROOT/create.bml" . $querysep . $args;
+            my $uri = "$LJ::SITEROOT/create" . $querysep . $args;
             return BML::redirect( $uri );
         }
     }
@@ -515,13 +515,13 @@ sub handle_post {
             username => $nu->user,
             siteroot => $LJ::SITEROOT,
             sitenameshort => $LJ::SITENAMESHORT,
-            lostinfourl => "$LJ::SITEROOT/lostinfo.bml",
+            lostinfourl => "$LJ::SITEROOT/lostinfo",
             editprofileurl => "$LJ::SITEROOT/manage/profile/",
-            searchinterestsurl => "$LJ::SITEROOT/interests.bml",
-            editpicsurl => "$LJ::SITEROOT/editpics.bml",
+            searchinterestsurl => "$LJ::SITEROOT/interests",
+            editpicsurl => "$LJ::SITEROOT/editpics",
             customizeurl => "$LJ::SITEROOT/customize/",
-            postentryurl => "$LJ::SITEROOT/update.bml",
-            setsecreturl => "$LJ::SITEROOT/set_secret.bml",
+            postentryurl => "$LJ::SITEROOT/update",
+            setsecreturl => "$LJ::SITEROOT/set_secret",
             LJ::run_hook('extra_fields_in_postreg_esn'),
         });
 
@@ -567,7 +567,7 @@ sub handle_post {
         $redirect = LJ::run_hook('rewrite_redirect_after_create', $nu);
         return BML::redirect($redirect) if $redirect;
 
-        return BML::redirect( "$LJ::SITEROOT/create/setup.bml" );
+        return BML::redirect( "$LJ::SITEROOT/create/setup" );
     }
 
     return %from_post;
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/CreateAccountEnterCode.pm
--- a/cgi-bin/LJ/Widget/CreateAccountEnterCode.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/CreateAccountEnterCode.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -54,7 +54,7 @@ sub render_body {
 
     $ret .= "<p>" . $class->ml( 'widget.createaccountentercode.info' ) . "</p>";
 
-    $ret .= "<form method='get' action='$LJ::SITEROOT/create.bml'>";
+    $ret .= "<form method='get' action='$LJ::SITEROOT/create'>";
     $ret .= "<?standout " . $class->ml( 'widget.createaccountentercode.code' ) . " ";
     $ret .= LJ::html_text( {
         name => 'code',
@@ -72,8 +72,8 @@ sub render_body {
         $ret .= "<p style='margin-top: 10px;'>";
         $ret .= $class->ml( 'widget.createaccountentercode.pay', { aopts => "href='$LJ::SITEROOT/shop/account?for=new'", sitename => $LJ::SITENAMESHORT } );
         my $remote = LJ::get_remote(); 
-        $ret .= " " . $class->ml( 'widget.createaccountentercode.comm', { aopts => "href='$LJ::SITEROOT/community/create.bml'" } );
-        $ret .= " " . $class->ml( 'widget.createaccountentercode.comm.loggedout', { aopts => "href='$LJ::SITEROOT/community/create.bml'" } ) unless $remote;
+        $ret .= " " . $class->ml( 'widget.createaccountentercode.comm', { aopts => "href='$LJ::SITEROOT/community/create'" } );
+        $ret .= " " . $class->ml( 'widget.createaccountentercode.comm.loggedout', { aopts => "href='$LJ::SITEROOT/community/create'" } ) unless $remote;
         
         $ret .= "</p>";
     }
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/CreateAccountNextSteps.pm
--- a/cgi-bin/LJ/Widget/CreateAccountNextSteps.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/CreateAccountNextSteps.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -16,9 +16,9 @@ sub render_body {
 
     $ret .= "<table cellspacing='0' cellpadding='0'>";
     $ret .= "<tr valign='top'><td><ul>";
-    $ret .= "<li><a href='$LJ::SITEROOT/update.bml'>" . $class->ml('widget.createaccountnextsteps.steps.post') . "</a></li>";
-    $ret .= "<li><a href='$LJ::SITEROOT/editpics.bml'>" . $class->ml('widget.createaccountnextsteps.steps.userpics') . "</a></li>";
-    $ret .= "<li><a href='$LJ::SITEROOT/interests.bml'>" . $class->ml('widget.createaccountnextsteps.steps.find') . "</a></li>";
+    $ret .= "<li><a href='$LJ::SITEROOT/update'>" . $class->ml('widget.createaccountnextsteps.steps.post') . "</a></li>";
+    $ret .= "<li><a href='$LJ::SITEROOT/editpics'>" . $class->ml('widget.createaccountnextsteps.steps.userpics') . "</a></li>";
+    $ret .= "<li><a href='$LJ::SITEROOT/interests'>" . $class->ml('widget.createaccountnextsteps.steps.find') . "</a></li>";
     $ret .= "</ul></td><td><ul>";
     $ret .= "<li><a href='$LJ::SITEROOT/customize/'>" . $class->ml('widget.createaccountnextsteps.steps.customize') . "</a></li>";
     $ret .= "<li><a href='$LJ::SITEROOT/manage/profile/'>" . $class->ml('widget.createaccountnextsteps.steps.profile') . "</a></li>";
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/CreateAccountProfile.pm
--- a/cgi-bin/LJ/Widget/CreateAccountProfile.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/CreateAccountProfile.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -39,7 +39,7 @@ sub render_body {
         );
     } else {
         $ret .= $class->html_hidden( name_absent => "yes" );
-        $ret .= "<?inerr " . LJ::Lang::ml('/manage/profile/index.bml.error.invalidname2', { aopts => "href='$LJ::SITEROOT/utf8convert.bml'" }) . " inerr?>";
+        $ret .= "<?inerr " . LJ::Lang::ml('/manage/profile/index.bml.error.invalidname2', { aopts => "href='$LJ::SITEROOT/utf8convert'" }) . " inerr?>";
     }
     $ret .= $error_msg->('name', '<br /><span class="formitemFlag">', '</span>');
     $ret .= "</td></tr>\n";
@@ -151,7 +151,7 @@ sub render_body {
         );
     } else {
         $ret .= $class->html_hidden( bio_absent => "yes" );
-        $ret .= "<?inerr " . LJ::Lang::ml('/manage/profile/index.bml.error.invalidbio', { aopts => "href='$LJ::SITEROOT/utf8convert.bml'" }) . " inerr?>";
+        $ret .= "<?inerr " . LJ::Lang::ml('/manage/profile/index.bml.error.invalidbio', { aopts => "href='$LJ::SITEROOT/utf8convert'" }) . " inerr?>";
     }
     $ret .= $error_msg->('bio', '<br /><span class="formitemFlag">', '</span>');
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/CreateAccountTheme.pm
--- a/cgi-bin/LJ/Widget/CreateAccountTheme.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/CreateAccountTheme.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -32,7 +32,7 @@ sub render_body {
         $ret .= "<td class='theme-box'>";
         $ret .= "<div class='theme-box-inner'>";
         $ret .= "<label for='theme_$image_class'><img src='" . $theme->preview_imgurl . "' width='90' height='68' class='theme-image' alt='$name' title='$name' /></label><br />";
-        $ret .= "<a href='$LJ::SITEROOT/customize/preview_redirect.bml?themeid=" . $theme->themeid . "' target='_blank' onclick='window.open(href, \"theme_preview\", \"resizable=yes,status=yes,toolbar=no,location=no,menubar=no,scrollbars=yes\"); return false;' class='theme-preview-link' title='" . $class->ml('widget.createaccounttheme.preview') . "'>";
+        $ret .= "<a href='$LJ::SITEROOT/customize/preview_redirect?themeid=" . $theme->themeid . "' target='_blank' onclick='window.open(href, \"theme_preview\", \"resizable=yes,status=yes,toolbar=no,location=no,menubar=no,scrollbars=yes\"); return false;' class='theme-preview-link' title='" . $class->ml('widget.createaccounttheme.preview') . "'>";
         $ret .= "<img src='$LJ::IMGPREFIX/customize/preview-theme.gif' class='theme-preview-image' /></a>";
         $ret .= $class->html_check(
             name => 'theme',
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/CreateAccountUpgrade.pm
--- a/cgi-bin/LJ/Widget/CreateAccountUpgrade.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/CreateAccountUpgrade.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -31,7 +31,7 @@ sub render_body {
     $ret .= $class->start_form;
     $ret .= $class->html_submit( submit => $class->ml( 'widget.createaccountupgrade.btn.purchase' ) );
     $ret .= $class->end_form;
-    $ret .= "<p style='margin-top: 10px;'><a href='$LJ::SITEROOT/create/confirm.bml'>" . $class->ml( 'widget.createaccountupgrade.nextstep' ) . "</a></p>";
+    $ret .= "<p style='margin-top: 10px;'><a href='$LJ::SITEROOT/create/confirm'>" . $class->ml( 'widget.createaccountupgrade.nextstep' ) . "</a></p>";
 
     return $ret;
 }
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/CurrentTheme.pm
--- a/cgi-bin/LJ/Widget/CurrentTheme.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/CurrentTheme.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -57,15 +57,15 @@ sub render_body {
     if ($no_theme_chooser) {
         $ret .= "<li><a href='$LJ::SITEROOT/customize/$getextra'>" . $class->ml('widget.currenttheme.options.newtheme') . "</a></li>";
     } else {
-        $ret .= "<li><a href='$LJ::SITEROOT/customize/options.bml$getextra'>" . $class->ml('widget.currenttheme.options.change') . "</a></li>";
+        $ret .= "<li><a href='$LJ::SITEROOT/customize/options$getextra'>" . $class->ml('widget.currenttheme.options.change') . "</a></li>";
     }
     if (! $no_layer_edit && $theme->is_custom && $theme->available_to($u)) {
         $ret .= "<li><a href='$LJ::SITEROOT/customize/advanced'>" . $class->ml( 'widget.currenttheme.options.advancedcust' ) . "</a></li>";
         if ($theme->layoutid && !$theme->layout_uniq) {
-            $ret .= "<li><a href='$LJ::SITEROOT/customize/advanced/layeredit.bml?id=" . $theme->layoutid . "'>" . $class->ml('widget.currenttheme.options.editlayoutlayer') . "</a></li>";
+            $ret .= "<li><a href='$LJ::SITEROOT/customize/advanced/layeredit?id=" . $theme->layoutid . "'>" . $class->ml('widget.currenttheme.options.editlayoutlayer') . "</a></li>";
         }
         if ($theme->themeid && !$theme->uniq) {
-            $ret .= "<li><a href='$LJ::SITEROOT/customize/advanced/layeredit.bml?id=" . $theme->themeid . "'>" . $class->ml('widget.currenttheme.options.editthemelayer') . "</a></li>";
+            $ret .= "<li><a href='$LJ::SITEROOT/customize/advanced/layeredit?id=" . $theme->themeid . "'>" . $class->ml('widget.currenttheme.options.editthemelayer') . "</a></li>";
         }
     }
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/CustomizeTheme.pm
--- a/cgi-bin/LJ/Widget/CustomizeTheme.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/CustomizeTheme.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -57,7 +57,7 @@ sub render_body {
     ### Navigation ###
 
     $ret .= "<ul class='customize-nav nostyle' id='customize_theme_nav_links'>";
-    $ret .= "<li" . $nav_class->("display") . "><a class='customize-nav-group' href='$LJ::SITEROOT/customize/options.bml$getextra'>" . $class->ml('widget.customizetheme.nav.display') . "</a>";
+    $ret .= "<li" . $nav_class->("display") . "><a class='customize-nav-group' href='$LJ::SITEROOT/customize/options$getextra'>" . $class->ml('widget.customizetheme.nav.display') . "</a>";
     $ret .= "<ul>";
     $ret .= "<li>" . $class->ml('widget.customizetheme.nav.display.moodthemes') . "</li>";
     $ret .= "<li>" . $class->ml('widget.customizetheme.nav.display.navstrip') . "</li>";
@@ -82,7 +82,7 @@ sub render_body {
     }
 
     if ($print_style_header) {
-        $ret .= "<li" . $nav_class->("style") . "><a class='customize-nav-group' href='$LJ::SITEROOT/customize/options.bml$getextra${getsep}group=style'>" . $class->ml('widget.customizetheme.nav.style') . "</a>";
+        $ret .= "<li" . $nav_class->("style") . "><a class='customize-nav-group' href='$LJ::SITEROOT/customize/options$getextra${getsep}group=style'>" . $class->ml('widget.customizetheme.nav.style') . "</a>";
         $ret .= "<ul>";
 
         foreach my $g (@style_groups_order) {
@@ -102,14 +102,14 @@ sub render_body {
         next if $g eq "customcss";
 
         my $name = LJ::Customize->propgroup_name($g, $u, $style);
-        $ret .= "<li" . $nav_class->($g) . "><a class='customize-nav-group' href='$LJ::SITEROOT/customize/options.bml$getextra${getsep}group=$g'>$name</a></li>";
+        $ret .= "<li" . $nav_class->($g) . "><a class='customize-nav-group' href='$LJ::SITEROOT/customize/options$getextra${getsep}group=$g'>$name</a></li>";
     }
 
-    $ret .= "<li" . $nav_class->("linkslist") . "><a class='customize-nav-group' href='$LJ::SITEROOT/customize/options.bml$getextra${getsep}group=linkslist'>" . $class->ml('widget.customizetheme.nav.linkslist') . "</a></li>";
+    $ret .= "<li" . $nav_class->("linkslist") . "><a class='customize-nav-group' href='$LJ::SITEROOT/customize/options$getextra${getsep}group=linkslist'>" . $class->ml('widget.customizetheme.nav.linkslist') . "</a></li>";
 
     if ($has_group{customcss}) {
         my $name = LJ::Customize->propgroup_name("customcss", $u, $style);
-        $ret .= "<li" . $nav_class->("customcss") . "><a class='customize-nav-group' href='$LJ::SITEROOT/customize/options.bml$getextra${getsep}group=customcss'>$name</a></li>";
+        $ret .= "<li" . $nav_class->("customcss") . "><a class='customize-nav-group' href='$LJ::SITEROOT/customize/options$getextra${getsep}group=customcss'>$name</a></li>";
     }
 
     $ret .= "</ul>";
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/Feeds.pm
--- a/cgi-bin/LJ/Widget/Feeds.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/Feeds.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -15,7 +15,7 @@ sub render_body {
     my $cart = $get->{'cart'} || $BML::COOKIE{cart};
     my $body;
     $body .= "<h2 class='solid-neutral'>" . $class->ml('widget.feeds.title') . "</h2>";
-    $body .= "<a href='$LJ::SITEROOT/syn/list.bml' class='more-link'>" .
+    $body .= "<a href='$LJ::SITEROOT/syn/list' class='more-link'>" .
              $class->ml('widget.feeds.viewall') . "</a>";
 
     # get user IDs of most popular feeds
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/InboxFolderNav.pm
--- a/cgi-bin/LJ/Widget/InboxFolderNav.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/InboxFolderNav.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -45,7 +45,7 @@ sub render_body {
     my $unread_usermsg_sent = $unread_html->($inbox->usermsg_sent_event_count);
     my $message_button = "";
     $message_button = qq{
-        <form action="./compose.bml" method="GET">
+        <form action="./compose" method="GET">
         <input type="submit" value="<?_ml inbox.menu.new_message.btn _ml?>" style="width: 100%">
         </form>} if LJ::is_enabled('user_messaging');
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/Login.pm
--- a/cgi-bin/LJ/Widget/Login.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/Login.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -33,7 +33,7 @@ sub render_body {
     my $root = $LJ::IS_SSL ? $LJ::SSLROOT : $LJ::SITEROOT;
     my $form_class = LJ::run_hook("login_form_class_name_$opts{mode}");
     $form_class = "lj_login_form pkg" unless $form_class;
-    $ret .= "<form action='$root/login.bml$getextra' method='post' class='$form_class'>\n";
+    $ret .= "<form action='$root/login$getextra' method='post' class='$form_class'>\n";
     $ret .= LJ::form_auth();
 
     my $chal = LJ::challenge_generate(300); # 5 minute auth token
@@ -66,14 +66,14 @@ sub render_body {
         $ret .= "</fieldset>\n";
         $ret .= "<fieldset class='pkg nostyle'>\n";
         $ret .= "<label for='lj_loginwidget_password' class='left'>" . LJ::Lang::ml('/login.bml.login.password') . "</label>\n";
-        $ret .= "<input type='password' id='lj_loginwidget_password' name='password' class='lj_login_password text' size='20' maxlength='30' /><a href='$LJ::SITEROOT/lostinfo.bml' class='small-link'>" . LJ::Lang::ml('/login.bml.login.forget2') . "</a>\n";
+        $ret .= "<input type='password' id='lj_loginwidget_password' name='password' class='lj_login_password text' size='20' maxlength='30' /><a href='$LJ::SITEROOT/lostinfo' class='small-link'>" . LJ::Lang::ml('/login.bml.login.forget2') . "</a>\n";
         $ret .= "</fieldset>\n";
         $ret .= "<p><input type='checkbox' name='remember_me' id='remember_me' value='1' tabindex='4' /> <label for='remember_me'>Remember me</label></p>";
 
         # standard/secure links removed for now
         my $secure = "<p>";
         $secure .= "<img src='$LJ::IMGPREFIX/padlocked.gif' class='secure-image' width='20' height='16' alt='secure login' />";
-        $secure .= LJ::Lang::ml('/login.bml.login.secure') . " | <a href='$LJ::SITEROOT/login.bml?nojs=1'>" . LJ::Lang::ml('/login.bml.login.standard') . "</a></p>";
+        $secure .= LJ::Lang::ml('/login.bml.login.secure') . " | <a href='$LJ::SITEROOT/login?nojs=1'>" . LJ::Lang::ml('/login.bml.login.standard') . "</a></p>";
 
         $ret .= "<p><input name='action:login' type='submit' value='" . LJ::Lang::ml('/login.bml.login.btn.login') . "' /> <a href='$LJ::SITEROOT/openid/' class='small-link'>" . LJ::Lang::ml('/login.bml.login.openid') . "</a></p>";
 
@@ -86,18 +86,18 @@ sub render_body {
                 # noscript to SSL
                 $ret .= "<script type='text/javascript' language='Javascript'>\n";
                 $ret .= "<!-- \n document.write(\"<p style='padding-bottom: 5px'><img src='$LJ::IMGPREFIX/unpadlocked.gif' width='20' height='16' alt='secure login' align='middle' />" .
-                    LJ::ejs(" <a href='$LJ::SITEROOT/login.bml'>" . LJ::Lang::ml('/login.bml.login.secure') . "</a> | " . LJ::Lang::ml('/login.bml.login.standard') . "</p>") .
+                    LJ::ejs(" <a href='$LJ::SITEROOT/login'>" . LJ::Lang::ml('/login.bml.login.secure') . "</a> | " . LJ::Lang::ml('/login.bml.login.standard') . "</p>") .
                     "\"); \n // -->\n </script>\n";
                 if ($LJ::USE_SSL) {
                     $ret .= "<noscript>";
-                    $ret .= "<p style='padding-bottom: 5px'><img src='$LJ::IMGPREFIX/unpadlocked.gif' width='20' height='16' alt='secure login' align='middle' /> <a href='$LJ::SSLROOT/login.bml'>" . LJ::Lang::ml('/login.bml.login.secure') . "</a> | " . LJ::Lang::ml('/login.bml.login.standard') . "</p>";
+                    $ret .= "<p style='padding-bottom: 5px'><img src='$LJ::IMGPREFIX/unpadlocked.gif' width='20' height='16' alt='secure login' align='middle' /> <a href='$LJ::SSLROOT/login'>" . LJ::Lang::ml('/login.bml.login.secure') . "</a> | " . LJ::Lang::ml('/login.bml.login.standard') . "</p>";
                     $ret .= "</noscript>";
                 }
             } else {
                 # insecure now, and not because it was forced, so javascript doesn't work.
                 # only way to get to secure now is via SSL, so link there
                 $ret .= "<p><img src='$LJ::IMGPREFIX/unpadlocked.gif' width='20' height='16' class='secure-image' alt='secure login' />";
-                $ret .= " <a href='$LJ::SSLROOT/login.bml'>" . LJ::Lang::ml('/login.bml.login.secure') . "</a> | " . LJ::Lang::ml('/login.bml.login.standard') . "</p>\n"
+                $ret .= " <a href='$LJ::SSLROOT/login'>" . LJ::Lang::ml('/login.bml.login.secure') . "</a> | " . LJ::Lang::ml('/login.bml.login.standard') . "</p>\n"
                     if $LJ::USE_SSL;
 
             }
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/ManageQotD.pm
--- a/cgi-bin/LJ/Widget/ManageQotD.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/ManageQotD.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -26,7 +26,7 @@ sub render_body {
         $month = $time[4]+1;
     }
 
-    $ret .= "<?p (<a href='$LJ::SITEROOT/admin/qotd/add.bml'>Add a question</a>) p?>";
+    $ret .= "<?p (<a href='$LJ::SITEROOT/admin/qotd/add'>Add a question</a>) p?>";
     $ret .= "<?p Select a month to view all questions that are starting and running during that month. p?>";
 
     # TODO: supported way for widgets to do GET forms?
@@ -122,7 +122,7 @@ sub table_display {
         $ret .= "<td>" . $start_date->strftime("%F %r %Z")  . "</td>";
         $ret .= "<td>" . $end_date->strftime("%F %r %Z")  . "</td>";
         $ret .= $class->get_active_text($row->{qid}, $row->{active});
-        $ret .= "<td>(<a href='$LJ::SITEROOT/admin/qotd/add.bml?qid=$row->{qid}'>edit</a>)</td>";
+        $ret .= "<td>(<a href='$LJ::SITEROOT/admin/qotd/add?qid=$row->{qid}'>edit</a>)</td>";
         $ret .= "</tr>";
     }
     $ret .= "</table>";
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/ManageSiteMessages.pm
--- a/cgi-bin/LJ/Widget/ManageSiteMessages.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/ManageSiteMessages.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -26,7 +26,7 @@ sub render_body {
         $month = $time[4]+1;
     }
 
-    $ret .= "<?p (<a href='$LJ::SITEROOT/admin/sitemessages/add.bml'>Add a site message</a>) p?>";
+    $ret .= "<?p (<a href='$LJ::SITEROOT/admin/sitemessages/add'>Add a site message</a>) p?>";
     $ret .= "<?p Select a month to view all messages that started during that month. p?>";
 
     # TODO: supported way for widgets to do GET forms?
@@ -55,7 +55,7 @@ sub render_body {
         $ret .= "<td>" . $start_date->strftime("%F %r %Z")  . "</td>";
         $ret .= "<td>" . $end_date->strftime("%F %r %Z")  . "</td>";
         $ret .= $class->get_active_text($row->{mid}, $row->{active});
-        $ret .= "<td>(<a href='$LJ::SITEROOT/admin/sitemessages/add.bml?mid=$row->{mid}'>edit</a>)</td>";
+        $ret .= "<td>(<a href='$LJ::SITEROOT/admin/sitemessages/add?mid=$row->{mid}'>edit</a>)</td>";
         $ret .= "</tr>";
     }
     $ret .= "</table>";
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/MoodThemeChooser.pm
--- a/cgi-bin/LJ/Widget/MoodThemeChooser.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/MoodThemeChooser.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -45,8 +45,8 @@ sub render_body {
 
     my $journalarg = $getextra ? "?journal=" . $u->user : "";
     $ret .= "<ul class='moodtheme-links nostyle'>";
-    $ret .= "<li><a href='$LJ::SITEROOT/moodlist.bml$journalarg'>" . $class->ml('widget.moodthemechooser.links.allthemes') . "</a></li>";
-    $ret .= "<li><a href='$LJ::SITEROOT/manage/moodthemes.bml$getextra'>" . $class->ml('widget.moodthemechooser.links.customthemes') . "</a></li>";
+    $ret .= "<li><a href='$LJ::SITEROOT/moodlist$journalarg'>" . $class->ml('widget.moodthemechooser.links.allthemes') . "</a></li>";
+    $ret .= "<li><a href='$LJ::SITEROOT/manage/moodthemes$getextra'>" . $class->ml('widget.moodthemechooser.links.customthemes') . "</a></li>";
     $ret .= "</ul>";
     $ret .= "</div>";
 
@@ -76,7 +76,7 @@ sub render_body {
         } else {
             $ret .= "<td>";
         }
-        $ret .= "<p><a href='$LJ::SITEROOT/moodlist.bml?moodtheme=$preview_moodthemeid'>" . $class->ml('widget.moodthemechooser.viewtheme') . "</a></p>";
+        $ret .= "<p><a href='$LJ::SITEROOT/moodlist?moodtheme=$preview_moodthemeid'>" . $class->ml('widget.moodthemechooser.viewtheme') . "</a></p>";
         $ret .= "</td></tr></table>";
         my $mood_des = LJ::mood_theme_des($preview_moodthemeid);
         LJ::CleanHTML::clean (\$mood_des);
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/PopularInterests.pm
--- a/cgi-bin/LJ/Widget/PopularInterests.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/PopularInterests.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -29,14 +29,14 @@ sub render_body {
         $interests{$int} = {
                             int   => $int,
                             eint  => LJ::ehtml($int),
-                            url   => "/interests.bml?int=" . LJ::eurl($int),
+                            url   => "/interests?int=" . LJ::eurl($int),
                             value => $count,
                             };
     }
 
     $body .= "<p>" . LJ::tag_cloud(\%interests, {'font_size_range' => 16}) . "</p>";
 
-    $body .= "<p class='viewall'>&raquo; <a href='$LJ::SITEROOT/interests.bml?view=popular'>" .
+    $body .= "<p class='viewall'>&raquo; <a href='$LJ::SITEROOT/interests?view=popular'>" .
              $class->ml('widget.popularinterests.viewall') . "</a></p>";
 
     return $body;
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/QotD.pm
--- a/cgi-bin/LJ/Widget/QotD.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/QotD.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -112,7 +112,7 @@ sub qotd_display_embed {
             my $between_text = $from_text && $extra_text ? "<br />" : "";
 
             my $qid = $q->{qid};
-            my $answers_link = "<a href=\"$LJ::SITEROOT/misc/latestqotd.bml?qid=$qid\">" . $class->ml('widget.qotd.view.other.answers') . "</a>";
+            my $answers_link = "<a href=\"$LJ::SITEROOT/misc/latestqotd?qid=$qid\">" . $class->ml('widget.qotd.view.other.answers') . "</a>";
 
             my $answer_link = "";
             unless ($opts{no_answer_link}) {
@@ -144,7 +144,7 @@ sub qotd_display_archive {
         LJ::CleanHTML::clean_event(\$text);
 
         my $qid = $q->{qid};
-        my $answers_link = "<a href='$LJ::SITEROOT/misc/latestqotd.bml?qid=$qid'>" . $class->ml('widget.qotd.viewanswers') . "</a>";
+        my $answers_link = "<a href='$LJ::SITEROOT/misc/latestqotd?qid=$qid'>" . $class->ml('widget.qotd.viewanswers') . "</a>";
 
         my $answer_link = "";
         unless ($opts{no_answer_link}) {
@@ -193,9 +193,9 @@ sub qotd_display {
             $ret .= "<table><tr><td>";
             my $viewanswers;
             if ($opts{small_view_link}) {
-                $viewanswers .= " <a class='small-view-link' href=\"$LJ::SITEROOT/misc/latestqotd.bml?qid=$q->{qid}\">" . $class->ml('widget.qotd.view.more') . "</a>";
+                $viewanswers .= " <a class='small-view-link' href=\"$LJ::SITEROOT/misc/latestqotd?qid=$q->{qid}\">" . $class->ml('widget.qotd.view.more') . "</a>";
             } else {
-                $viewanswers .= " <br /><a href=\"$LJ::SITEROOT/misc/latestqotd.bml?qid=$q->{qid}\">" . $class->ml('widget.qotd.viewanswers') . "</a>";
+                $viewanswers .= " <br /><a href=\"$LJ::SITEROOT/misc/latestqotd?qid=$q->{qid}\">" . $class->ml('widget.qotd.viewanswers') . "</a>";
             }
 
             $ret .= $text;
@@ -212,8 +212,8 @@ sub qotd_display {
             }
             $ret .= "</td></tr></table>";
 
-            my $archive = "<a href='$LJ::SITEROOT/misc/qotdarchive.bml'>" . $class->ml('widget.qotd.archivelink') . "</a>";
-            my $suggest = "<a href='$LJ::SITEROOT/misc/suggest_qotd.bml'>" . $class->ml('widget.qotd.suggestions') . "</a>";
+            my $archive = "<a href='$LJ::SITEROOT/misc/qotdarchive'>" . $class->ml('widget.qotd.archivelink') . "</a>";
+            my $suggest = "<a href='$LJ::SITEROOT/misc/suggest_qotd'>" . $class->ml('widget.qotd.suggestions') . "</a>";
             $ret .= "<p class='detail'><span class='suggestions'>$archive | $suggest</span>$from_text<br />" . $class->impression_img($q) . "</p>";
         }
 
@@ -246,7 +246,7 @@ sub answer_url {
     my $question = shift;
     my %opts = @_;
 
-    return "$LJ::SITEROOT/update.bml?qotd=$question->{qid}";
+    return "$LJ::SITEROOT/update?qotd=$question->{qid}";
 }
 
 sub subject_text {
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/QotDArchive.pm
--- a/cgi-bin/LJ/Widget/QotDArchive.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/QotDArchive.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -33,11 +33,11 @@ sub render_body {
 
     $ret .= "<p class='skiplinks'>" if $show_page_back || $show_page_forward;
     if ($show_page_back) {
-        $ret .= "<a href='$LJ::SITEROOT/misc/qotdarchive.bml?page=$page_back'>&lt; " . $class->ml('widget.qotdarchive.skip.previous') . "</a>";
+        $ret .= "<a href='$LJ::SITEROOT/misc/qotdarchive?page=$page_back'>&lt; " . $class->ml('widget.qotdarchive.skip.previous') . "</a>";
     }
     $ret .= " | " if $show_page_back && $show_page_forward;
     if ($show_page_forward) {
-        my $url = $page_forward == 1 ? "$LJ::SITEROOT/misc/qotdarchive.bml" : "$LJ::SITEROOT/misc/qotdarchive.bml?page=$page_forward";
+        my $url = $page_forward == 1 ? "$LJ::SITEROOT/misc/qotdarchive" : "$LJ::SITEROOT/misc/qotdarchive?page=$page_forward";
         $ret .= "<a href='$url'>" . $class->ml('widget.qotdarchive.skip.next') . " &gt;</a>";
     }
     $ret .= "</p>" if $show_page_back || $show_page_forward;
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/RecentComments.pm
--- a/cgi-bin/LJ/Widget/RecentComments.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/RecentComments.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -25,10 +25,10 @@ sub render_body {
     my $ret;
 
     $ret .= "<h2><span>" . $class->ml('widget.recentcomments.title') . "</span></h2>";
-    $ret .= "<a href='$LJ::SITEROOT/tools/recent_comments.bml' class='more-link'>" . $class->ml('widget.recentcomments.viewall') . "</a>";
+    $ret .= "<a href='$LJ::SITEROOT/tools/recent_comments' class='more-link'>" . $class->ml('widget.recentcomments.viewall') . "</a>";
 
     # return if no comments
-    return "<h2><span>" . $class->ml('widget.recentcomments.title') . "</span></h2><?warningbar " . $class->ml('widget.recentcomments.nocomments', {'aopts' => "href='$LJ::SITEROOT/update.bml'"}) . " warningbar?>"
+    return "<h2><span>" . $class->ml('widget.recentcomments.title') . "</span></h2><?warningbar " . $class->ml('widget.recentcomments.nocomments', {'aopts' => "href='$LJ::SITEROOT/update'"}) . " warningbar?>"
         unless @comments && defined $comments[0];
 
     # there are comments, print them
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/Search.pm
--- a/cgi-bin/LJ/Widget/Search.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/Search.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -32,7 +32,7 @@ sub render_body {
         $search_btn = LJ::html_submit( $class->ml( 'widget.search.btn.go' ) );
     }
 
-    $ret .= "<form action='$LJ::SITEROOT/multisearch.bml' method='post'>\n";
+    $ret .= "<form action='$LJ::SITEROOT/multisearch' method='post'>\n";
     $ret .= LJ::html_text( { name => 'q', id => 'search', class => 'text', title => $class->ml( 'widget.search.title' ), size => 20 } ) . " ";
     $ret .= $select_box;
     $ret .= $search_btn;
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/SubmitRequest.pm
--- a/cgi-bin/LJ/Widget/SubmitRequest.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/SubmitRequest.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -29,7 +29,7 @@ sub render_body {
 
     unless ($remote && $remote->email_raw) {
         unless ($remote) {
-            $ret .= "<?p <em>" . $class->ml('widget.support.submit.login.note', {sitename=>$LJ::SITENAMESHORT, loginlink=>"href='$LJ::SITEROOT/login.bml?ret=1'"}) . "</em> p?>";
+            $ret .= "<?p <em>" . $class->ml('widget.support.submit.login.note', {sitename=>$LJ::SITENAMESHORT, loginlink=>"href='$LJ::SITEROOT/login?ret=1'"}) . "</em> p?>";
 
             $ret .= "<p><b>" . $class->ml('widget.support.submit.yourname') . "</b><br />";
             $ret .= "<div style='margin-left: 30px'>";
@@ -134,7 +134,7 @@ sub text_done {
 
     my $spid = $opts{spid};
     my $auth = LJ::Support::mini_auth(LJ::Support::load_request($spid, undef, {'db_force' => 1}));
-    my $url = "$LJ::SITEROOT/support/see_request.bml?id=$spid&amp;auth=$auth";
+    my $url = "$LJ::SITEROOT/support/see_request?id=$spid&amp;auth=$auth";
 
     return $class->ml('widget.support.submit.complete.text', {'url'=>$url});
 }
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/SubmitRequest/Support.pm
--- a/cgi-bin/LJ/Widget/SubmitRequest/Support.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/SubmitRequest/Support.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -11,7 +11,7 @@ sub text_done {
 
     $ret .= "<div class='right-sidebar'>";
     $ret .= "<?h2 " . $class->ml('/support/submit.bml.help.header') . " h2?>";
-    $ret .= "<?p " . $class->ml('/support/submit.bml.help.text', { aopts => "href='$LJ::SITEROOT/support/help.bml'" }) . " p?>";
+    $ret .= "<?p " . $class->ml('/support/submit.bml.help.text', { aopts => "href='$LJ::SITEROOT/support/help'" }) . " p?>";
     $ret .= "</div>";
 
     $ret .= $class->SUPER::text_done(%opts);
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/ThemeChooser.pm
--- a/cgi-bin/LJ/Widget/ThemeChooser.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/ThemeChooser.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -147,13 +147,13 @@ sub render_body {
             my $no_layer_edit = LJ::run_hook("no_theme_or_layer_edit", $u);
 
             $theme_class .= " current";
-            $theme_options .= "<strong><a href='$LJ::SITEROOT/customize/options.bml$getextra'>" . $class->ml('widget.themechooser.theme.customize') . "</a></strong>";
+            $theme_options .= "<strong><a href='$LJ::SITEROOT/customize/options$getextra'>" . $class->ml('widget.themechooser.theme.customize') . "</a></strong>";
             if (! $no_layer_edit && $theme->is_custom && !$theme_types{upgrade}) {
                 if ($theme->layoutid && !$theme->layout_uniq) {
-                    $theme_options .= "<br /><strong><a href='$LJ::SITEROOT/customize/advanced/layeredit.bml?id=" . $theme->layoutid . "'>" . $class->ml('widget.themechooser.theme.editlayoutlayer') . "</a></strong>";
+                    $theme_options .= "<br /><strong><a href='$LJ::SITEROOT/customize/advanced/layeredit?id=" . $theme->layoutid . "'>" . $class->ml('widget.themechooser.theme.editlayoutlayer') . "</a></strong>";
                 }
                 if ($theme->themeid && !$theme->uniq) {
-                    $theme_options .= "<br /><strong><a href='$LJ::SITEROOT/customize/advanced/layeredit.bml?id=" . $theme->themeid . "'>" . $class->ml('widget.themechooser.theme.editthemelayer') . "</a></strong>";
+                    $theme_options .= "<br /><strong><a href='$LJ::SITEROOT/customize/advanced/layeredit?id=" . $theme->themeid . "'>" . $class->ml('widget.themechooser.theme.editthemelayer') . "</a></strong>";
                 }
             }
         }
@@ -178,9 +178,9 @@ sub render_body {
 
         my $preview_redirect_url;
         if ($theme->themeid) {
-            $preview_redirect_url = "$LJ::SITEROOT/customize/preview_redirect.bml$getextra${getsep}themeid=" . $theme->themeid;
+            $preview_redirect_url = "$LJ::SITEROOT/customize/preview_redirect$getextra${getsep}themeid=" . $theme->themeid;
         } else {
-            $preview_redirect_url = "$LJ::SITEROOT/customize/preview_redirect.bml$getextra${getsep}layoutid=" . $theme->layoutid;
+            $preview_redirect_url = "$LJ::SITEROOT/customize/preview_redirect$getextra${getsep}layoutid=" . $theme->layoutid;
         }
         $ret .= "<a href='$preview_redirect_url' target='_blank' class='theme-preview-link' title='" . $class->ml('widget.themechooser.theme.preview') . "'>";
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/LJ/Widget/UserpicDisplay.pm
--- a/cgi-bin/LJ/Widget/UserpicDisplay.pm	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/LJ/Widget/UserpicDisplay.pm	Tue Aug 04 19:32:47 2009 -0500
@@ -99,7 +99,7 @@ sub render_body {
                             userpic_preview_image.alt = alttext[userpic_select.selectedIndex];
                         } else {
                             userpic_preview.className += " userpic_preview_border";
-                            userpic_preview.innerHTML = '<a href="$LJ::SITEROOT/editpics.bml"><img src="" alt="selected userpic" id="userpic_preview_image" style="display: none;" /><span id="userpic_msg">' + userpic_msg + '</span></a>';
+                            userpic_preview.innerHTML = '<a href="$LJ::SITEROOT/editpics"><img src="" alt="selected userpic" id="userpic_preview_image" style="display: none;" /><span id="userpic_msg">' + userpic_msg + '</span></a>';
                         }
                     }
                 }
@@ -207,7 +207,7 @@ sub render_body {
     } elsif (!$u)  {
         $$pic .= "<div id='userpic'><p id='userpic_preview'><img src='/img/nouserpic.png' alt='selected userpic' id='userpic_preview_image' class='userpic_loggedout'  /></p></div>";
     } else {
-        $$pic .= "<div id='userpic'><p id='userpic_preview' class='userpic_preview_border'><a href='$LJ::SITEROOT/editpics.bml'>Upload a userpic</a></p></div>";
+        $$pic .= "<div id='userpic'><p id='userpic_preview' class='userpic_preview_border'><a href='$LJ::SITEROOT/editpics'>Upload a userpic</a></p></div>";
     }
 
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/bml/scheme/blueshift.look
--- a/cgi-bin/bml/scheme/blueshift.look	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/bml/scheme/blueshift.look	Tue Aug 04 19:32:47 2009 -0500
@@ -74,7 +74,7 @@ accountlinks<=
             }
         }
 
-        $ret .= "<div id='account-links-userpic'><a href='$LJ::SITEROOT/editpics.bml'>";
+        $ret .= "<div id='account-links-userpic'><a href='$LJ::SITEROOT/editpics'>";
         if ( $userpic ) {
             $ret .= "<img src='" . $userpic->url . "' $wh alt=\"$ML{'sitescheme.accountlinks.userpic.alt'}\" />";
         } else {
@@ -82,27 +82,27 @@ accountlinks<=
         }
         $ret .= "</a></div>";
         $ret .= "<div id='account-links-text'>";
-        $ret .= "<form action='$LJ::SITEROOT/logout.bml?ret=1' method='post'>";
+        $ret .= "<form action='$LJ::SITEROOT/logout?ret=1' method='post'>";
         $ret .= $remote->ljuser_display;
         $ret .= "<input type='hidden' name='user' value='" . $remote->user . "' />";
         $ret .= "<input type='hidden' name='sessid' value='$remote->{_session}->{sessid}' />";
         $ret .= " <input type='submit' value=\"$ML{'sitescheme.accountlinks.btn.logout'}\" />";
         $ret .= "</form>";
         $ret .= "<ul>";
-        $ret .= "<li><a href='$LJ::SITEROOT/update.bml'>$ML{'sitescheme.accountlinks.post'}</a>  &bull; </li>" unless $identity;
+        $ret .= "<li><a href='$LJ::SITEROOT/update'>$ML{'sitescheme.accountlinks.post'}</a>  &bull; </li>" unless $identity;
         $ret .= "<li><a href='" . $remote->journal_base . "/read'>$ML{'sitescheme.accountlinks.readinglist'}</a> &bull; </li>";
         $ret .= "<li><a href='$LJ::SITEROOT/inbox/'>$ML{'sitescheme.accountlinks.inbox'}";
         $ret .= " ($unread)" if $unread;
         $ret .= "</a> &bull; </li>";
         $ret .= "<li><a href='$LJ::SITEROOT/manage/settings/'>$ML{'sitescheme.accountlinks.account'}</a></li> <br />";
-        $ret .= "<li><a href='$LJ::SITEROOT/manage/circle/invite.bml'>$ML{'sitescheme.accountlinks.invitefriend'}</a> &bull; </li>" unless $identity;
+        $ret .= "<li><a href='$LJ::SITEROOT/manage/circle/invite'>$ML{'sitescheme.accountlinks.invitefriend'}</a> &bull; </li>" unless $identity;
         $ret .= "<li><a href='$LJ::SITEROOT/support/'>$ML{'sitescheme.accountlinks.help'}</a></li>";
         $ret .= "</ul>";
         $ret .= "</div>";
     } else {
         my $chal = LJ::challenge_generate(300);
 
-        $ret .= "<form action='$LJ::SITEROOT/login.bml?ret=1' method='post'>";
+        $ret .= "<form action='$LJ::SITEROOT/login?ret=1' method='post'>";
         $ret .= LJ::html_hidden( returnto => $GET{returnto} );
         $ret .= "<input type='hidden' name='chal' class='lj_login_chal' value='$chal' />\n";
         $ret .= "<input type='hidden' name='response' class='lj_login_response' value='' />\n";
@@ -122,7 +122,7 @@ accountlinks<=
             id => "login_password",
             size => 20,
             tabindex => 2,
-        }) . " <a href='$LJ::SITEROOT/lostinfo.bml'>$ML{'sitescheme.accountlinks.login.forgotpassword'}</a></td></tr>";
+        }) . " <a href='$LJ::SITEROOT/lostinfo'>$ML{'sitescheme.accountlinks.login.forgotpassword'}</a></td></tr>";
         $ret .= "<tr><td>&nbsp;</td>";
         $ret .= "<td class='remember-me-cell'>";
         $ret .= LJ::html_check({
@@ -145,10 +145,10 @@ _code?>
 
 footer<=
 <ul>
-    <li><a href="<?siteroot?>/legal/privacy.bml"><?_ml sitescheme.footer.legal.privacypolicy _ml?></a> &bull; </li>
-    <li><a href="<?siteroot?>/legal/tos.bml"><?_ml sitescheme.footer.legal.tos _ml?></a> &bull; </li>
-    <li><a href="<?siteroot?>/legal/diversity.bml"><?_ml sitescheme.footer.legal.diversitystatement _ml?></a> &bull; </li>
-    <li><a href="<?siteroot?>/legal/principles.bml"><?_ml sitescheme.footer.legal.guidingprinciples _ml?></a> &bull; </li>
+    <li><a href="<?siteroot?>/legal/privacy"><?_ml sitescheme.footer.legal.privacypolicy _ml?></a> &bull; </li>
+    <li><a href="<?siteroot?>/legal/tos"><?_ml sitescheme.footer.legal.tos _ml?></a> &bull; </li>
+    <li><a href="<?siteroot?>/legal/diversity"><?_ml sitescheme.footer.legal.diversitystatement _ml?></a> &bull; </li>
+    <li><a href="<?siteroot?>/legal/principles"><?_ml sitescheme.footer.legal.guidingprinciples _ml?></a> &bull; </li>
     <li><a href="<?siteroot?>/site/"><?_ml sitescheme.footer.sitemap _ml?></a></li>
 </ul>
 <p><?_ml sitescheme.footer.info _ml?></p>
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/bml/scheme/celerity.look
--- a/cgi-bin/bml/scheme/celerity.look	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/bml/scheme/celerity.look	Tue Aug 04 19:32:47 2009 -0500
@@ -67,27 +67,27 @@ accountlinks<=
         my $wh = "";
 
         $ret .= "<div id='account-links-text'>";
-        $ret .= "<form action='$LJ::SITEROOT/logout.bml?ret=1' method='post'>";
+        $ret .= "<form action='$LJ::SITEROOT/logout?ret=1' method='post'>";
         $ret .= $remote->ljuser_display;
         $ret .= "<input type='hidden' name='user' value='" . $remote->user . "' />";
         $ret .= "<input type='hidden' name='sessid' value='$remote->{_session}->{sessid}' />";
         $ret .= " <input type='submit' value=\"$ML{'sitescheme.accountlinks.btn.logout'}\" />";
         $ret .= "</form>";
         $ret .= "<ul>";
-        $ret .= "<li><a href='$LJ::SITEROOT/update.bml'>$ML{'sitescheme.accountlinks.post'}</a>  &bull; </li>" unless $identity;
+        $ret .= "<li><a href='$LJ::SITEROOT/update'>$ML{'sitescheme.accountlinks.post'}</a>  &bull; </li>" unless $identity;
         $ret .= "<li><a href='" . $remote->journal_base . "/read'>$ML{'sitescheme.accountlinks.readinglist'}</a> &bull; </li>";
         $ret .= "<li><a href='$LJ::SITEROOT/inbox/'>$ML{'sitescheme.accountlinks.inbox'}";
         $ret .= " ($unread)" if $unread;
         $ret .= "</a> &bull; </li>";
         $ret .= "<li><a href='$LJ::SITEROOT/manage/settings/'>$ML{'sitescheme.accountlinks.account'}</a></li> <br />";
-        $ret .= "<li><a href='$LJ::SITEROOT/manage/circle/invite.bml'>$ML{'sitescheme.accountlinks.invitefriend'}</a> &bull; </li>" unless $identity;
+        $ret .= "<li><a href='$LJ::SITEROOT/manage/circle/invite'>$ML{'sitescheme.accountlinks.invitefriend'}</a> &bull; </li>" unless $identity;
         $ret .= "<li><a href='$LJ::SITEROOT/support/'>$ML{'sitescheme.accountlinks.help'}</a></li>";
         $ret .= "</ul>";
         $ret .= "</div>";
     } else {
         my $chal = LJ::challenge_generate(300);
 
-        $ret .= "<form action='$LJ::SITEROOT/login.bml?ret=1' method='post'>";
+        $ret .= "<form action='$LJ::SITEROOT/login?ret=1' method='post'>";
         $ret .= LJ::html_hidden( returnto => $GET{returnto} );
         $ret .= "<input type='hidden' name='chal' class='lj_login_chal' value='$chal' />\n";
         $ret .= "<input type='hidden' name='response' class='lj_login_response' value='' />\n";
@@ -107,7 +107,7 @@ accountlinks<=
             id => "login_password",
             size => 20,
             tabindex => 2,
-        }) . " <a href='$LJ::SITEROOT/lostinfo.bml'>$ML{'sitescheme.accountlinks.login.forgotpassword'}</a></td></tr>";
+        }) . " <a href='$LJ::SITEROOT/lostinfo'>$ML{'sitescheme.accountlinks.login.forgotpassword'}</a></td></tr>";
         $ret .= "<tr><td>&nbsp;</td>";
         $ret .= "<td class='remember-me-cell'>";
         $ret .= LJ::html_check({
@@ -130,10 +130,10 @@ _code?>
 
 footer<=
 <ul>
-    <li><a href="<?siteroot?>/legal/privacy.bml"><?_ml sitescheme.footer.legal.privacypolicy _ml?></a> &bull; </li>
-    <li><a href="<?siteroot?>/legal/tos.bml"><?_ml sitescheme.footer.legal.tos _ml?></a> &bull; </li>
-    <li><a href="<?siteroot?>/legal/diversity.bml"><?_ml sitescheme.footer.legal.diversitystatement _ml?></a> &bull; </li>
-    <li><a href="<?siteroot?>/legal/principles.bml"><?_ml sitescheme.footer.legal.guidingprinciples _ml?></a> &bull; </li>
+    <li><a href="<?siteroot?>/legal/privacy"><?_ml sitescheme.footer.legal.privacypolicy _ml?></a> &bull; </li>
+    <li><a href="<?siteroot?>/legal/tos"><?_ml sitescheme.footer.legal.tos _ml?></a> &bull; </li>
+    <li><a href="<?siteroot?>/legal/diversity"><?_ml sitescheme.footer.legal.diversitystatement _ml?></a> &bull; </li>
+    <li><a href="<?siteroot?>/legal/principles"><?_ml sitescheme.footer.legal.guidingprinciples _ml?></a> &bull; </li>
     <li><a href="<?siteroot?>/site/"><?_ml sitescheme.footer.sitemap _ml?></a></li>
 </ul>
 <p><?_ml sitescheme.footer.info _ml?></p>
@@ -146,7 +146,7 @@ userpic<=
     my $remote = LJ::get_remote();
     my $ret;
 
-    $ret .= "<div id='header-userpic'><a href='$LJ::SITEROOT/editpics.bml'>";
+    $ret .= "<div id='header-userpic'><a href='$LJ::SITEROOT/editpics'>";
 
     if ( $remote ) {
         my $userpic = $remote->userpic;
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/bml/scheme/global.look
--- a/cgi-bin/bml/scheme/global.look	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/bml/scheme/global.look	Tue Aug 04 19:32:47 2009 -0500
@@ -35,12 +35,12 @@ LOAD_PAGE_INFO<=
            'match' => "^/(index\\.bml)?(\\?.*)?\$",
            'children' => [
                   { 'name' => 'Create Journal',
-                'uri' => '/create.bml', },
+                'uri' => '/create', },
                   { 'name' => 'Update',
-                'uri' => '/update.bml',
+                'uri' => '/update',
 #                'children' => [
 #                           { 'name' => 'Full Update',
-#                         'uri' => '/update.bml?mode=full', }
+#                         'uri' => '/update?mode=full', }
 #                           ],
                 },
                   ],
@@ -48,13 +48,13 @@ LOAD_PAGE_INFO<=
          { 'name' => 'Find Users',
            'children' => [
                          { 'name' => 'Random!',
-                'uri' => '/random.bml', },
+                'uri' => '/random', },
                          { 'name' => 'By Region',
-                'uri' => '/directory.bml', },
+                'uri' => '/directory', },
                          { 'name' => 'By Interest',
-                'uri' => '/interests.bml', },
+                'uri' => '/interests', },
                               { 'name' => 'Search',
-                'uri' => '/directorysearch.bml', }
+                'uri' => '/directorysearch', }
                   ], },
          { 'name' => 'Manage ...',
            uri => '/manage/',
@@ -64,13 +64,13 @@ LOAD_PAGE_INFO<=
                   { 'name' => 'Your Style',
                 'uri' => '/customize/', },
                   { 'name' => 'Your Friends',
-                'uri' => '/manage/circle/edit.bml', },
+                'uri' => '/manage/circle/edit', },
                   { 'name' => 'Your Entries',
-                'uri' => '/editjournal.bml', },
+                'uri' => '/editjournal', },
                   { 'name' => 'Your Pictures',
-                'uri' => '/editpics.bml', },
+                'uri' => '/editpics', },
                   { 'name' => 'Your Password',
-                'uri' => '/changepassword.bml', },
+                'uri' => '/changepassword', },
                   ],
        },
          { 'name' => 'Developer Area',
@@ -79,21 +79,21 @@ LOAD_PAGE_INFO<=
            'recursematch' => "^/developer/",
            'children' => [
                   { 'name' => 'Style System',
-                'uri' => '/developer/styles.bml',
+                'uri' => '/developer/styles',
                 'children' => [
                            { 'name' => 'View Types',
-                         'uri' => '/developer/views.bml', },
+                         'uri' => '/developer/views', },
                            { 'name' => 'Variable List',
-                         'uri' => '/developer/varlist.bml', },
+                         'uri' => '/developer/varlist', },
                            ],
                 },
                   { 'name' => 'Embedding',
-                'uri' => '/developer/embedding.bml', },
+                'uri' => '/developer/embedding', },
                   { 'name' => 'Protocol',
-                'uri' => '/developer/protocol.bml',
+                'uri' => '/developer/protocol',
                 'children' => [
                            { 'name' => 'Mode List',
-                         'uri' => '/developer/modelist.bml', }
+                         'uri' => '/developer/modelist', }
                            ],
                 },
                   ],
@@ -101,9 +101,9 @@ LOAD_PAGE_INFO<=
          { 'name' => 'Need Help?',
            'children' => [
                   { 'name' => 'Lost Password?',
-                'uri' => '/lostinfo.bml', },
+                'uri' => '/lostinfo', },
                   { 'name' => 'FAQ / Guide',
-                'uri' => '/support/faq.bml', },
+                'uri' => '/support/faq', },
                   { 'name' => 'Support Area',
                 'uri' => '/support/', },
                   ],
@@ -113,7 +113,7 @@ LOAD_PAGE_INFO<=
  my $remote = LJ::get_remote();
  my $remuser = $remote ? $remote->{'user'} : "";
  my $uri = BML::get_uri();
- if ($remuser ne "" && $uri ne "/logout.bml")
+ if ($remuser ne "" && $uri ne "/logout")
  {
      my $subdomain = $remuser;
      $subdomain =~ s/_/-/g;
@@ -127,21 +127,21 @@ LOAD_PAGE_INFO<=
                                'uri' => "/users/$remuser/calendar", },
                              { 'name' => 'Friends',
                                'uri' => "/users/$remuser/read",
-                               'extra' => "/friend/filter.bml",
+                               'extra' => "/friend/filter",
                                },
                              ],
                       },
                     { 'name' => 'User Info',
-                      'uri' => "/userinfo.bml?user=$remuser", },
+                      'uri' => "/userinfo?user=$remuser", },
                     { 'name' => 'Memories',
-                      'uri' => "/tools/memories.bml?user=$remuser", },
+                      'uri' => "/tools/memories?user=$remuser", },
                     { 'name' => 'Logout',
-                      'uri' => '/logout.bml', },
+                      'uri' => '/logout', },
                     ]
                     };
- } elsif ($uri ne "/login.bml") {
+ } elsif ($uri ne "/login") {
      unshift @sidebar, { 'name' => "Log In",
-             'uri' => '/login.bml', }
+             'uri' => '/login', }
  }
 
 return "";
@@ -292,7 +292,7 @@ menunav<=
             push @displayed, "<li class='subnav'><a href='$item->{url}'>" . BML::ml( "$item->{text}", $item->{text_opts} ) . "</a></li>" if $item->{display};
         }
         if ( @displayed ) {   # only display a top-level menu if any of its items are displayed
-            $ret .= "<li id='${cat}_topnav' class='topnav'><a href='$LJ::SITEROOT/nav.bml?cat=$cat'>$ML{\"menunav.$cat\"}</a>\n";
+            $ret .= "<li id='${cat}_topnav' class='topnav'><a href='$LJ::SITEROOT/nav?cat=$cat'>$ML{\"menunav.$cat\"}</a>\n";
             $ret .= "<ul id='${cat}_subnav' class='subnav_container'>\n";
             $ret .= join( "\n", @displayed ) . "\n";
             $ret .= "</ul>\n";
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/bml/scheme/gradation-vertical.look
--- a/cgi-bin/bml/scheme/gradation-vertical.look	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/bml/scheme/gradation-vertical.look	Tue Aug 04 19:32:47 2009 -0500
@@ -74,7 +74,7 @@ accountlinks<=
             }
         }
 
-        $ret .= "<div id='account-links-userpic'><a href='$LJ::SITEROOT/editpics.bml'>";
+        $ret .= "<div id='account-links-userpic'><a href='$LJ::SITEROOT/editpics'>";
         if ( $userpic ) {
             $ret .= "<img src='" . $userpic->url . "' $wh alt=\"$ML{'sitescheme.accountlinks.userpic.alt'}\" />";
         } else {
@@ -82,27 +82,27 @@ accountlinks<=
         }
         $ret .= "</a></div>";
         $ret .= "<div id='account-links-text'>";
-        $ret .= "<form action='$LJ::SITEROOT/logout.bml?ret=1' method='post'>";
+        $ret .= "<form action='$LJ::SITEROOT/logout?ret=1' method='post'>";
         $ret .= $remote->ljuser_display;
         $ret .= "<input type='hidden' name='user' value='" . $remote->user . "' />";
         $ret .= "<input type='hidden' name='sessid' value='$remote->{_session}->{sessid}' />";
         $ret .= " <input type='submit' value=\"$ML{'sitescheme.accountlinks.btn.logout'}\" />";
         $ret .= "</form>";
         $ret .= "<ul>";
-        $ret .= "<li><a href='$LJ::SITEROOT/update.bml'>$ML{'sitescheme.accountlinks.post'}</a>  &bull; </li>" unless $identity;
+        $ret .= "<li><a href='$LJ::SITEROOT/update'>$ML{'sitescheme.accountlinks.post'}</a>  &bull; </li>" unless $identity;
         $ret .= "<li><a href='" . $remote->journal_base . "/read'>$ML{'sitescheme.accountlinks.readinglist'}</a> &bull; </li>";
         $ret .= "<li><a href='$LJ::SITEROOT/inbox/'>$ML{'sitescheme.accountlinks.inbox'}";
         $ret .= " ($unread)" if $unread;
         $ret .= "</a> &bull; </li>";
         $ret .= "<li><a href='$LJ::SITEROOT/manage/settings/'>$ML{'sitescheme.accountlinks.account'}</a></li> <br />";
-        $ret .= "<li><a href='$LJ::SITEROOT/manage/circle/invite.bml'>$ML{'sitescheme.accountlinks.invitefriend'}</a> &bull; </li>" unless $identity;
+        $ret .= "<li><a href='$LJ::SITEROOT/manage/circle/invite'>$ML{'sitescheme.accountlinks.invitefriend'}</a> &bull; </li>" unless $identity;
         $ret .= "<li><a href='$LJ::SITEROOT/support/'>$ML{'sitescheme.accountlinks.help'}</a></li>";
         $ret .= "</ul>";
         $ret .= "</div>";
     } else {
         my $chal = LJ::challenge_generate(300);
 
-        $ret .= "<form action='$LJ::SITEROOT/login.bml?ret=1' method='post'>";
+        $ret .= "<form action='$LJ::SITEROOT/login?ret=1' method='post'>";
         $ret .= LJ::html_hidden( returnto => $GET{returnto} );
         $ret .= "<input type='hidden' name='chal' class='lj_login_chal' value='$chal' />\n";
         $ret .= "<input type='hidden' name='response' class='lj_login_response' value='' />\n";
@@ -122,7 +122,7 @@ accountlinks<=
             id => "login_password",
             size => 20,
             tabindex => 2,
-        }) . " <a href='$LJ::SITEROOT/lostinfo.bml'>$ML{'sitescheme.accountlinks.login.forgotpassword'}</a></td></tr>";
+        }) . " <a href='$LJ::SITEROOT/lostinfo'>$ML{'sitescheme.accountlinks.login.forgotpassword'}</a></td></tr>";
         $ret .= "<tr><td>&nbsp;</td>";
         $ret .= "<td class='remember-me-cell'>";
         $ret .= LJ::html_check({
@@ -145,10 +145,10 @@ _code?>
 
 footer<=
 <ul>
-    <li><a href="<?siteroot?>/legal/privacy.bml"><?_ml sitescheme.footer.legal.privacypolicy _ml?></a> &bull; </li>
-    <li><a href="<?siteroot?>/legal/tos.bml"><?_ml sitescheme.footer.legal.tos _ml?></a> &bull; </li>
-    <li><a href="<?siteroot?>/legal/diversity.bml"><?_ml sitescheme.footer.legal.diversitystatement _ml?></a> &bull; </li>
-    <li><a href="<?siteroot?>/legal/principles.bml"><?_ml sitescheme.footer.legal.guidingprinciples _ml?></a> &bull; </li>
+    <li><a href="<?siteroot?>/legal/privacy"><?_ml sitescheme.footer.legal.privacypolicy _ml?></a> &bull; </li>
+    <li><a href="<?siteroot?>/legal/tos"><?_ml sitescheme.footer.legal.tos _ml?></a> &bull; </li>
+    <li><a href="<?siteroot?>/legal/diversity"><?_ml sitescheme.footer.legal.diversitystatement _ml?></a> &bull; </li>
+    <li><a href="<?siteroot?>/legal/principles"><?_ml sitescheme.footer.legal.guidingprinciples _ml?></a> &bull; </li>
     <li><a href="<?siteroot?>/site/"><?_ml sitescheme.footer.sitemap _ml?></a></li>
 </ul>
 <p><?_ml sitescheme.footer.info _ml?></p>
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/bml/scheme/lynx.look
--- a/cgi-bin/bml/scheme/lynx.look	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/bml/scheme/lynx.look	Tue Aug 04 19:32:47 2009 -0500
@@ -59,7 +59,7 @@ _code?>
          $ret .= "<a href='<?siteroot?>/login'><?_ml lynx.nav.login _ml?></a> | ";
     }
 
-    $ret .= "<a href='<?siteroot?>/tools/search.bml'><?_ml lynx.nav.search _ml?></a> | ";
+    $ret .= "<a href='<?siteroot?>/tools/search'><?_ml lynx.nav.search _ml?></a> | ";
     $ret .= "<a href='<?siteroot?>/manage/settings/'><?_ml lynx.nav.siteopts _ml?></a> | ";
     $ret .= "<a href='<?siteroot?>/site/'><?_ml lynx.nav.sitemap _ml?></a> ]</p>";
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/cleanhtml.pl
--- a/cgi-bin/cleanhtml.pl	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/cleanhtml.pl	Tue Aug 04 19:32:47 2009 -0500
@@ -1030,9 +1030,9 @@ sub clean
         my $link_style = "color: #00c; text-decoration: underline; background: transparent; border: 0;";
 
         if ($unsuspend_supportid) {
-            $msg .= LJ::Lang::ml('cleanhtml.suspend_msg_with_supportid', { aopts => "href='$LJ::SITEROOT/support/see_request.bml?id=$unsuspend_supportid' style='$link_style'" });
+            $msg .= LJ::Lang::ml('cleanhtml.suspend_msg_with_supportid', { aopts => "href='$LJ::SITEROOT/support/see_request?id=$unsuspend_supportid' style='$link_style'" });
         } else {
-            $msg .= LJ::Lang::ml('cleanhtml.suspend_msg', { aopts => "href='$LJ::SITEROOT/abuse/report.bml' style='$link_style'" });
+            $msg .= LJ::Lang::ml('cleanhtml.suspend_msg', { aopts => "href='$LJ::SITEROOT/abuse/report' style='$link_style'" });
         }
 
         $msg .= "</div>";
@@ -1142,31 +1142,31 @@ sub ExpandLJURL
          'faq' => sub {
              my $id = shift()+0;
              if ($id) {
-                 return "support/faqbrowse.bml?faqid=$id";
+                 return "support/faqbrowse?faqid=$id";
              } else {
-                 return "support/faq.bml";
+                 return "support/faq";
              }
          },
          'memories' => sub {
              my $user = LJ::canonical_username(shift);
              if ($user) {
-                 return "memories.bml?user=$user";
+                 return "memories?user=$user";
              } else {
-                 return "memories.bml";
+                 return "memories";
              }
          },
          'pubkey' => sub {
              my $user = LJ::canonical_username(shift);
              if ($user) {
-                 return "pubkey.bml?user=$user";
+                 return "pubkey?user=$user";
              } else {
-                 return "pubkey.bml";
+                 return "pubkey";
              }
          },
          'support' => sub {
              my $id = shift()+0;
              if ($id) {
-                 return "support/see_request.bml?id=$id";
+                 return "support/see_request?id=$id";
              } else {
                  return "support/";
              }
@@ -1175,23 +1175,23 @@ sub ExpandLJURL
              my $user = LJ::canonical_username(shift);
              return "" if grep { /[\"\'\<\>\n\&]/ } @_;
              return $_[0] eq 'profile' ?
-                 "userinfo.bml?user=$user" :
+                 "userinfo?user=$user" :
                  "users/$user/" . join("", map { "$_/" } @_ );
          },
          'userinfo' => sub {
              my $user = LJ::canonical_username(shift);
              if ($user) {
-                 return "userinfo.bml?user=$user";
+                 return "userinfo?user=$user";
              } else {
-                 return "userinfo.bml";
+                 return "userinfo";
              }
          },
          'userpics' => sub {
              my $user = LJ::canonical_username(shift);
              if ($user) {
-                 return "allpics.bml?user=$user";
+                 return "allpics?user=$user";
              } else {
-                 return "allpics.bml";
+                 return "allpics";
              }
          },
         );
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/communitylib.pl
--- a/cgi-bin/communitylib.pl	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/communitylib.pl	Tue Aug 04 19:32:47 2009 -0500
@@ -583,16 +583,16 @@ sub maintainer_linkbar {
             "<a href='$LJ::SITEROOT/customize/?authas=$username'>" . LJ::Lang::ml('/community/manage.bml.commlist.customize2') . "</a>",
         $page eq "settings" ?
             "<strong>" . LJ::Lang::ml('/community/manage.bml.commlist.actsettings2') . "</strong>" :
-            "<a href='$LJ::SITEROOT/community/settings.bml?authas=$username'>" . LJ::Lang::ml('/community/manage.bml.commlist.actsettings2') . "</a>",
+            "<a href='$LJ::SITEROOT/community/settings?authas=$username'>" . LJ::Lang::ml('/community/manage.bml.commlist.actsettings2') . "</a>",
         $page eq "invites" ?
             "<strong>" . LJ::Lang::ml('/community/manage.bml.commlist.actinvites') . "</strong>" :
-            "<a href='$LJ::SITEROOT/community/sentinvites.bml?authas=$username'>" . LJ::Lang::ml('/community/manage.bml.commlist.actinvites') . "</a>",
+            "<a href='$LJ::SITEROOT/community/sentinvites?authas=$username'>" . LJ::Lang::ml('/community/manage.bml.commlist.actinvites') . "</a>",
         $page eq "members" ?
             "<strong>" . LJ::Lang::ml('/community/manage.bml.commlist.actmembers2') . "</strong>" :
-            "<a href='$LJ::SITEROOT/community/members.bml?authas=$username'>" . LJ::Lang::ml('/community/manage.bml.commlist.actmembers2') . "</a>",
+            "<a href='$LJ::SITEROOT/community/members?authas=$username'>" . LJ::Lang::ml('/community/manage.bml.commlist.actmembers2') . "</a>",
         $page eq "queue" ?
             "<strong>" . LJ::Lang::ml('/community/manage.bml.commlist.queue') . "</strong>" :
-            "<a href='$LJ::SITEROOT/community/moderate.bml?authas=$username'>" . LJ::Lang::ml('/community/manage.bml.commlist.queue' ) . "</a>",
+            "<a href='$LJ::SITEROOT/community/moderate?authas=$username'>" . LJ::Lang::ml('/community/manage.bml.commlist.queue' ) . "</a>",
 
     );
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/crumbs.pl
--- a/cgi-bin/crumbs.pl	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/crumbs.pl	Tue Aug 04 19:32:47 2009 -0500
@@ -5,89 +5,89 @@ use Errno qw(ENOENT);
 use Errno qw(ENOENT);
 
 %LJ::CRUMBS = (
-    'acctstatus' => ['Account Status', '/accountstatus.bml', 'manage'],
+    'acctstatus' => ['Account Status', '/accountstatus', 'manage'],
     'addfriend' => ['Add Friend', '', 'friends'],
     'advcustomize' => ['Customize Advanced S2 Settings', '/customize/advanced/', 'manage'],
-    'advsearch' => ['Advanced Search', '/directorysearch.bml', 'search'],
-    'birthdays' => ['Birthdays', '/birthdays.bml', 'friends'],
-    'changeemail' => ['Change Email Address', '/changeemail.bml', 'editprofile'],
-    'changepass' => ['Change Password', '/changepassword.bml', 'manage'],
-    'comminvites' => ['Community Invitations', '/manage/invites.bml', 'manage'],
+    'advsearch' => ['Advanced Search', '/directorysearch', 'search'],
+    'birthdays' => ['Birthdays', '/birthdays', 'friends'],
+    'changeemail' => ['Change Email Address', '/changeemail', 'editprofile'],
+    'changepass' => ['Change Password', '/changepassword', 'manage'],
+    'comminvites' => ['Community Invitations', '/manage/invites', 'manage'],
     'commmembers' => ['Community Membership', '', 'managecommunity'],
     'commpending' => ['Pending Memberships', '', 'managecommunity'],
-    'commsearch' => ['Community Search', '/community/search.bml', 'community'],
-    'commsentinvites' => ['Sent Invitations', '/community/sentinvites.bml', 'managecommunity'],
-    'commsettings' => ['Community Settings', '/community/settings.bml', 'managecommunity'],
+    'commsearch' => ['Community Search', '/community/search', 'community'],
+    'commsentinvites' => ['Sent Invitations', '/community/sentinvites', 'managecommunity'],
+    'commsettings' => ['Community Settings', '/community/settings', 'managecommunity'],
     'community' => ['Community Center', '/community/', 'home'],
-    'createcommunity' => ['Create Community', '/community/create.bml', 'managecommunity'],
-    'createjournal_1' => ['Create Your Account', '/create.bml', 'home'],
-    'createstyle' => ['Create Style', '/styles/create.bml', 'modify'],
+    'createcommunity' => ['Create Community', '/community/create', 'managecommunity'],
+    'createjournal_1' => ['Create Your Account', '/create', 'home'],
+    'createstyle' => ['Create Style', '/styles/create', 'modify'],
     'customize' => ['Customize S2 Settings', '/customize/', 'manage'],
-    'customizelayer' => ['Individual Customizations', '/customize/layer.bml', 'customize'],
-    'domain' => ['Domain Aliasing', '/manage/domain.bml', 'manage'],
-    'delcomment' => ['Delete Comment', '/delcomment.bml', 'home'],
-    'editentries' => ['Edit Entries', '/editjournal.bml', 'manage'],
+    'customizelayer' => ['Individual Customizations', '/customize/layer', 'customize'],
+    'domain' => ['Domain Aliasing', '/manage/domain', 'manage'],
+    'delcomment' => ['Delete Comment', '/delcomment', 'home'],
+    'editentries' => ['Edit Entries', '/editjournal', 'manage'],
     'editinfo' => ['Personal Info', '/manage/profile/', 'manage'],
     'editprofile' => ['Edit Profile', '/manage/profile/', 'manage'],
     'editsettings' => ['Viewing Options', '/manage/profile/', 'manage'],
-    'editstyle' => ['Edit Style', '/styles/edit.bml', 'modify'],
-    'emailmanage' => ['Email Management', '/tools/emailmanage.bml', 'manage'],
-    'export' => ['Export Journal', '/export.bml', 'home'],
-    'faq' => ['Frequently Asked Questions', '/support/faq.bml', 'support'],
-    'feedstersearch' => ['Search a Journal', '/tools/search.bml', 'home'],
-    'filterfriends' => ['Filter Reading Page', '/manage/circle/filter.bml', 'friends'],
+    'editstyle' => ['Edit Style', '/styles/edit', 'modify'],
+    'emailmanage' => ['Email Management', '/tools/emailmanage', 'manage'],
+    'export' => ['Export Journal', '/export', 'home'],
+    'faq' => ['Frequently Asked Questions', '/support/faq', 'support'],
+    'feedstersearch' => ['Search a Journal', '/tools/search', 'home'],
+    'filterfriends' => ['Filter Reading Page', '/manage/circle/filter', 'friends'],
     'friends' => ['Circle Tools', '/manage/circle/', 'manage'],
     'home' => ['Home', '/', ''],
-    'invitefriend' => ['Invite a Friend', '/manage/circle/invite.bml', 'friends'],
+    'invitefriend' => ['Invite a Friend', '/manage/circle/invite', 'friends'],
     'joincomm' => ['Join Community', '', 'community'],
-    'latestposts' => ['Latest Posts', '/stats/latest.bml', 'stats'],
-    'layerbrowse' => ['Public Layer Browser', '/customize/advanced/layerbrowse.bml', 'advcustomize'],
+    'latestposts' => ['Latest Posts', '/stats/latest', 'stats'],
+    'layerbrowse' => ['Public Layer Browser', '/customize/advanced/layerbrowse', 'advcustomize'],
     'leavecomm' => ['Leave Community', '', 'community'],
-    'login' => ['Login', '/login.bml', 'home'],
-    'logout' => ['Logout', '/logout.bml', 'home'],
-    'lostinfo' => ['Lost Info', '/lostinfo.bml', 'manage'],
+    'login' => ['Login', '/login', 'home'],
+    'logout' => ['Logout', '/logout', 'home'],
+    'lostinfo' => ['Lost Info', '/lostinfo', 'manage'],
     'manage' => ['Manage Accounts', '/manage/', 'home'],
-    'managecomments' => ['Manage Comments', '/tools/recent_comments.bml', 'manage'],
+    'managecomments' => ['Manage Comments', '/tools/recent_comments', 'manage'],
     'managecommentsettings' => [ 'Manage Comment Settings', '/manage/comments', 'manage'],
-    'managecommunities' => ['Manage Communities', '/community/manage.bml', 'manage'],
-    'managefriends' => ['Manage Circle', '/manage/circle/edit.bml', 'friends'],
-    'managefriendgrps' => ['Manage Filters', '/manage/circle/editfilters.bml', 'friends'],
-    'managetags' => ['Manage Tags', '/manage/tags.bml', 'manage'],
-    'managelogins' => ['Manage Your Login Sessions', '/manage/logins.bml', 'manage'],
-    'manageuserpics' => ['Manage Userpics', '/editpics.bml', 'manage'],
-    'memories' => ['Memorable Posts', '/tools/memories.bml', 'manage'],
-    'mobilepost' => ['Mobile Post Settings', '/manage/emailpost.bml', 'manage'],
-    'moderate' => ['Community Moderation', '/community/moderate.bml', 'community'],
-    'moodeditor' => ['Custom Mood Theme Editor', '/manage/moodthemes.bml', 'manage'],
-    'moodlist' => ['Mood Viewer', '/moodlist.bml', 'manage'],
-    'popfaq' => ['Popular FAQs', '/support/popfaq.bml', 'faq'],
-    'postentry' => ['Post an Entry', '/update.bml', 'home'],
-    'register' => ['Validate Email', '/register.bml', 'home'],
+    'managecommunities' => ['Manage Communities', '/community/manage', 'manage'],
+    'managefriends' => ['Manage Circle', '/manage/circle/edit', 'friends'],
+    'managefriendgrps' => ['Manage Filters', '/manage/circle/editfilters', 'friends'],
+    'managetags' => ['Manage Tags', '/manage/tags', 'manage'],
+    'managelogins' => ['Manage Your Login Sessions', '/manage/logins', 'manage'],
+    'manageuserpics' => ['Manage Userpics', '/editpics', 'manage'],
+    'memories' => ['Memorable Posts', '/tools/memories', 'manage'],
+    'mobilepost' => ['Mobile Post Settings', '/manage/emailpost', 'manage'],
+    'moderate' => ['Community Moderation', '/community/moderate', 'community'],
+    'moodeditor' => ['Custom Mood Theme Editor', '/manage/moodthemes', 'manage'],
+    'moodlist' => ['Mood Viewer', '/moodlist', 'manage'],
+    'popfaq' => ['Popular FAQs', '/support/popfaq', 'faq'],
+    'postentry' => ['Post an Entry', '/update', 'home'],
+    'register' => ['Validate Email', '/register', 'home'],
     'schools' => ['Schools Directory', '/schools/', 'home'],
     'schoolsfind' => ['Find a School', '', 'schools'],
-    'schoolsmy' => ['My Schools', '/schools/manage.bml', 'schools'],
-    'searchinterests' => ['Search By Interest', '/interests.bml', 'search'],
-    'searchregion' => ['Search By Region', '/directory.bml', 'search'],
+    'schoolsmy' => ['My Schools', '/schools/manage', 'schools'],
+    'searchinterests' => ['Search By Interest', '/interests', 'search'],
+    'searchregion' => ['Search By Region', '/directory', 'search'],
     'seeoverrides' => ['View User Overrides', '', 'support'],
-    'setpgpkey' => ['Public Key', '/manage/pubkey.bml', 'manage'],
-    'sitestats' => ['Site Statistics', '/stats/site.bml', 'about'],
-    'stats' => ['Statistics', '/stats.bml', 'about'],
+    'setpgpkey' => ['Public Key', '/manage/pubkey', 'manage'],
+    'sitestats' => ['Site Statistics', '/stats/site', 'about'],
+    'stats' => ['Statistics', '/stats', 'about'],
     'styles' => ['Styles', '/styles/', 'modify'],
     'support' => ['Support', '/support/', 'home'],
     'supportact' => ['Request Action', '', 'support'],
     'supportappend' => ['Append to Request', '', 'support'],
-    'supporthelp' => ['Request Board', '/support/help.bml', 'support'],
-    'supportnotify' => ['Notification Settings', '/support/changenotify.bml', 'support'],
-    'supportscores' => ['High Scores', '/support/highscores.bml', 'support'],
-    'supportsubmit' => ['Submit Request', '/support/submit.bml', 'support'],
-    'textmessage' => ['Send Text Message', '/tools/textmessage.bml', 'home'],
-    'transfercomm' => ['Transfer Community', '/community/transfer.bml', 'managecommunity'],
+    'supporthelp' => ['Request Board', '/support/help', 'support'],
+    'supportnotify' => ['Notification Settings', '/support/changenotify', 'support'],
+    'supportscores' => ['High Scores', '/support/highscores', 'support'],
+    'supportsubmit' => ['Submit Request', '/support/submit', 'support'],
+    'textmessage' => ['Send Text Message', '/tools/textmessage', 'home'],
+    'transfercomm' => ['Transfer Community', '/community/transfer', 'managecommunity'],
     'translate' => ['Translation Area', '/translate/', 'home'],
-    'translateteams' => ['Translation Teams', '/translate/teams.bml', 'translate'],
-    'unsubscribe' => ['Unsubscribe', '/unsubscribe.bml', 'home'],
-    'utf8convert' => ['UTF-8 Converter', '/utf8convert.bml', 'manage'],
-    'yourlayers' => ['Your Layers', '/customize/advanced/layers.bml', 'advcustomize'],
-    'yourstyles' => ['Your Styles', '/customize/advanced/styles.bml', 'advcustomize'],
+    'translateteams' => ['Translation Teams', '/translate/teams', 'translate'],
+    'unsubscribe' => ['Unsubscribe', '/unsubscribe', 'home'],
+    'utf8convert' => ['UTF-8 Converter', '/utf8convert', 'manage'],
+    'yourlayers' => ['Your Layers', '/customize/advanced/layers', 'advcustomize'],
+    'yourstyles' => ['Your Styles', '/customize/advanced/styles', 'advcustomize'],
 );
 
 # include the local crumbs info
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/customizelib.pl
--- a/cgi-bin/customizelib.pl	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/customizelib.pl	Tue Aug 04 19:32:47 2009 -0500
@@ -205,10 +205,10 @@ sub js_redirect
     my %opts = @_;
 
     my %redirect = (
-                    "display_index" => "index.bml",
-                    "display_style" => "style.bml",
-                    "display_options" => "options.bml",
-                    "display_advanced" => "advanced.bml",
+                    "display_index" => "index",
+                    "display_style" => "style",
+                    "display_options" => "options",
+                    "display_advanced" => "advanced",
                     );
 
     if ($POST->{"action:redir"} ne "" && $redirect{$POST->{"action:redir"}}) {
@@ -310,7 +310,7 @@ sub html_tablinks
         if ($page eq $tab) {
             $ret .= "<li class='SelectedTab'>$strings{$tab}</li>";
         } else {
-            $ret .= "<li><a id='display_$tab' href='$tab.bml$getextra'>$strings{$tab}</a></li>";
+            $ret .= "<li><a id='display_$tab' href='$tab$getextra'>$strings{$tab}</a></li>";
         }
     }
     $ret .= "</ul>";
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/ljcmdbuffer.pl
--- a/cgi-bin/ljcmdbuffer.pl	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/ljcmdbuffer.pl	Tue Aug 04 19:32:47 2009 -0500
@@ -176,7 +176,7 @@ sub _weblogscom {
                 ->call('weblogUpdates.ping', # xml-rpc method call
                        LJ::ehtml($a->{'title'}) . " \@ $LJ::SITENAMESHORT",
                        $a->{'url'},
-                       "$LJ::SITEROOT/misc/weblogs-change.bml?user=$a->{'user'}");
+                       "$LJ::SITEROOT/misc/weblogs-change?user=$a->{'user'}");
         }
     };
 
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/ljdefaults.pl
--- a/cgi-bin/ljdefaults.pl	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/ljdefaults.pl	Tue Aug 04 19:32:47 2009 -0500
@@ -73,7 +73,7 @@
     # this option can be a boolean or a URL, but internally we want a URL
     # (which can also be a boolean)
     if ($LJ::OPENID_SERVER && $LJ::OPENID_SERVER == 1) {
-        $LJ::OPENID_SERVER = "$LJ::SITEROOT/openid/server.bml";
+        $LJ::OPENID_SERVER = "$LJ::SITEROOT/openid/server";
     }
 
     # set default capability limits if the site maintainer hasn't.
@@ -359,29 +359,29 @@
     # "RPC" URI mappings
     # add default URI handler mappings
     my %ajaxmapping = (
-                       delcomment     => "delcomment.bml",
-                       talkscreen     => "talkscreen.bml",
-                       controlstrip   => "tools/endpoints/controlstrip.bml",
-                       ctxpopup       => "tools/endpoints/ctxpopup.bml",
-                       changerelation => "tools/endpoints/changerelation.bml",
-                       userpicselect  => "tools/endpoints/getuserpics.bml",
-                       esn_inbox      => "tools/endpoints/esn_inbox.bml",
-                       esn_subs       => "tools/endpoints/esn_subs.bml",
-                       trans_save     => "tools/endpoints/trans_save.bml",
-                       dirsearch      => "tools/endpoints/directorysearch.bml",
-                       poll           => "tools/endpoints/poll.bml",
-                       jobstatus      => "tools/endpoints/jobstatus.bml",
-                       widget         => "tools/endpoints/widget.bml",
-                       multisearch    => "tools/endpoints/multisearch.bml",
-                       extacct_auth   => "tools/endpoints/extacct_auth.bml",
+                       delcomment     => "delcomment",
+                       talkscreen     => "talkscreen",
+                       controlstrip   => "tools/endpoints/controlstrip",
+                       ctxpopup       => "tools/endpoints/ctxpopup",
+                       changerelation => "tools/endpoints/changerelation",
+                       userpicselect  => "tools/endpoints/getuserpics",
+                       esn_inbox      => "tools/endpoints/esn_inbox",
+                       esn_subs       => "tools/endpoints/esn_subs",
+                       trans_save     => "tools/endpoints/trans_save",
+                       dirsearch      => "tools/endpoints/directorysearch",
+                       poll           => "tools/endpoints/poll",
+                       jobstatus      => "tools/endpoints/jobstatus",
+                       widget         => "tools/endpoints/widget",
+                       multisearch    => "tools/endpoints/multisearch",
+                       extacct_auth   => "tools/endpoints/extacct_auth",
                        );
 
     foreach my $src (keys %ajaxmapping) {
         $LJ::AJAX_URI_MAP{$src} ||= $ajaxmapping{$src};
     }
-    $LJ::AJAX_URI_MAP{load_state_codes} = 'tools/endpoints/load_state_codes.bml';
-    $LJ::AJAX_URI_MAP{profileexpandcollapse} = 'tools/endpoints/profileexpandcollapse.bml';
-    $LJ::AJAX_URI_MAP{dismisspagenotice} = 'tools/endpoints/dismisspagenotice.bml';
+    $LJ::AJAX_URI_MAP{load_state_codes} = 'tools/endpoints/load_state_codes';
+    $LJ::AJAX_URI_MAP{profileexpandcollapse} = 'tools/endpoints/profileexpandcollapse';
+    $LJ::AJAX_URI_MAP{dismisspagenotice} = 'tools/endpoints/dismisspagenotice';
 
     # List all countries that have states listed in 'codes' table in DB
     # These countries will be displayed with drop-down menu on Profile edit page
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/ljprotocol.pl
--- a/cgi-bin/ljprotocol.pl	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/ljprotocol.pl	Tue Aug 04 19:32:47 2009 -0500
@@ -1308,8 +1308,8 @@ sub postevent
                             modid       => $modid,
                             siteroot    => $LJ::SITEROOT,
                             sitename    => $LJ::SITENAME,
-                            moderateurl => "$LJ::SITEROOT/community/moderate.bml?authas=$uowner->{'user'}&modid=$modid",
-                            viewurl     => "$LJ::SITEROOT/community/moderate.bml?authas=$uowner->{'user'}",
+                            moderateurl => "$LJ::SITEROOT/community/moderate?authas=$uowner->{'user'}&modid=$modid",
+                            viewurl     => "$LJ::SITEROOT/community/moderate?authas=$uowner->{'user'}",
                         });
 
                     my $subject = LJ::Lang::get_text($to->{'browselang'},'esn.moderated_submission.subject');
@@ -2186,7 +2186,7 @@ sub getevents
                 if ($req->{'selecttype'} eq 'day') {
                     $t->[0] = $t->[1] = $CannotBeShown;
                 } else {
-                    return fail($err,207,"Cannot display/edit a Unicode post with a non-Unicode client. Please see $LJ::SITEROOT/support/encodings.bml for more information.");
+                    return fail($err,207,"Cannot display/edit a Unicode post with a non-Unicode client. Please see $LJ::SITEROOT/support/encodings for more information.");
                 }
             }
         }
@@ -2560,7 +2560,7 @@ sub hash_menus
                   'url' => "$LJ::SITEROOT/users/$user/read", },
                 { 'text' => "-", },
                 { 'text' => "Your Profile",
-                  'url' => "$LJ::SITEROOT/userinfo.bml?user=$user", },
+                  'url' => "$LJ::SITEROOT/userinfo?user=$user", },
                 { 'text' => "-", },
                 { 'text' => "Change Settings",
                   'sub' => [ { 'text' => "Personal Info",
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/propparse.pl
--- a/cgi-bin/propparse.pl	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/propparse.pl	Tue Aug 04 19:32:47 2009 -0500
@@ -124,8 +124,8 @@ sub xlinkify
 sub xlinkify
 {
     my ($a) = $_[0];
-    $$a =~ s/\[var\[([A-Z0-9\_]{2,})\]\]/<a href=\"\/developer\/varinfo.bml?$1\">$1<\/a>/g;
-    $$a =~ s/\[view\[(\S+?)\]\]/<a href=\"\/developer\/views.bml\#$1\">$1<\/a>/g;
+    $$a =~ s/\[var\[([A-Z0-9\_]{2,})\]\]/<a href=\"\/developer\/varinfo?$1\">$1<\/a>/g;
+    $$a =~ s/\[view\[(\S+?)\]\]/<a href=\"\/developer\/views\#$1\">$1<\/a>/g;
 }
 
 sub dump_struct
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/supportlib.pl
--- a/cgi-bin/supportlib.pl	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/supportlib.pl	Tue Aug 04 19:32:47 2009 -0500
@@ -601,7 +601,7 @@ sub file_request
 
     my $body;
     my $miniauth = mini_auth({ 'authcode' => $authcode });
-    $url = "$LJ::SITEROOT/support/see_request.bml?id=$spid";
+    $url = "$LJ::SITEROOT/support/see_request?id=$spid";
     $urlauth = "$url&auth=$miniauth";
 
     $body = "Your $LJ::SITENAME support request regarding \"$o->{'subject'}\" has been filed and will be answered as soon as possible.  Your request tracking number is $spid.\n\n";
@@ -610,7 +610,7 @@ sub file_request
 
     if ($scat->{user_closeable}) {
         $body .= "If you figure out the problem before somebody gets back to you, please cancel your request by clicking this:\n\n  ";
-        $body .= "$LJ::SITEROOT/support/act.bml?close;$spid;$authcode";
+        $body .= "$LJ::SITEROOT/support/act?close;$spid;$authcode";
     }
 
     # disable auto-replies for the entire category, or per request
@@ -811,7 +811,7 @@ sub mail_response_to_user
     $body .= "Below is $what your support question regarding \"$sp->{'subject'}\"\n";
 
     my $miniauth = mini_auth($sp);
-    $body .= "($LJ::SITEROOT/support/see_request.bml?id=$spid&auth=$miniauth).\n\n";
+    $body .= "($LJ::SITEROOT/support/see_request?id=$spid&auth=$miniauth).\n\n";
 
     $body .= "="x70 . "\n\n";
     if ($faqid) {
@@ -826,7 +826,7 @@ sub mail_response_to_user
         if ( $faq ) {
             $faq->render_in_place;
             $body .= "FAQ REFERENCE: " . $faq->question_raw . "\n";
-            $body .= "$LJ::SITEROOT/support/faqbrowse.bml?faqid=$faqid&view=full";
+            $body .= "$LJ::SITEROOT/support/faqbrowse?faqid=$faqid&view=full";
             $body .= "\n\n";
         }
     }
@@ -835,9 +835,9 @@ sub mail_response_to_user
 
     if ($sp->{_cat}->{user_closeable}) {
         $body .= "Did this answer your question?\nYES:\n";
-        $body .= "$LJ::SITEROOT/support/act.bml?close;$spid;$sp->{'authcode'}";
+        $body .= "$LJ::SITEROOT/support/act?close;$spid;$sp->{'authcode'}";
         $body .= ";$splid" if $type eq "answer";
-        $body .= "\nNO:\n$LJ::SITEROOT/support/see_request.bml?id=$spid&auth=$miniauth\n\n";
+        $body .= "\nNO:\n$LJ::SITEROOT/support/see_request?id=$spid&auth=$miniauth\n\n";
     }
 
     $body .= "If you are having problems using any of the links in this email, please try copying and pasting the *entire* link into your browser's address bar rather than clicking on it.";
@@ -1088,13 +1088,13 @@ sub work {
         $body = "A $LJ::SITENAME support request has been submitted regarding the following:\n\n";
         $body .= "Category: $sp->{_cat}{catname}\n";
         $body .= "Subject:  $sp->{subject}\n";
-        $body .= "URL: $LJ::SITEROOT/support/see_request.bml?id=$spid\n";
+        $body .= "URL: $LJ::SITEROOT/support/see_request?id=$spid\n";
         $body .= "Text:\n\n  $sp->{body}";
         $body .= "\n\n" . "="x4 . "\n\n";
         $body .= "You can view this request here:\n\n";
-        $body .= "$LJ::SITEROOT/support/see_request.bml?id=$spid";
+        $body .= "$LJ::SITEROOT/support/see_request?id=$spid";
         $body .= "\n\nYou are receiving this email because you've requested notifications of new support requests. You may change this notification setting here:\n\n";
-        $body .= "$LJ::SITEROOT/support/changenotify.bml";
+        $body .= "$LJ::SITEROOT/support/changenotify";
 
 
         foreach my $u (values %$userids) {
@@ -1114,13 +1114,13 @@ sub work {
         $body = "A follow-up to the following $LJ::SITENAME support request has been submitted:\n\n";
         $body .= "Category: $sp->{_cat}{catname}\n";
         $body .= "Subject:  $sp->{subject}\n";
-        $body .= "URL: $LJ::SITEROOT/support/see_request.bml?id=$spid\n";
+        $body .= "URL: $LJ::SITEROOT/support/see_request?id=$spid\n";
         $body .= "Text:\n\n  $resp";
         $body .= "\n\n" . "="x4 . "\n\n";
         $body .= "You can view this request here:\n\n";
-        $body .= "$LJ::SITEROOT/support/see_request.bml?id=$spid";
+        $body .= "$LJ::SITEROOT/support/see_request?id=$spid";
         $body .= "\n\nYou are receiving this email because you've requested notifications of changes to support requests. You may change this notification setting here:\n\n";
-        $body .= "$LJ::SITEROOT/support/changenotify.bml";
+        $body .= "$LJ::SITEROOT/support/changenotify";
 
 
         # now see who this should be sent to
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/talklib.pl
--- a/cgi-bin/talklib.pl	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/talklib.pl	Tue Aug 04 19:32:47 2009 -0500
@@ -118,12 +118,12 @@ sub link_bar
     my $entry = LJ::Entry->new($u, ditemid => $itemid);
 
     # << Previous
-    push @linkele, $mlink->("$LJ::SITEROOT/go.bml?${jargent}itemid=$itemid&amp;dir=prev", "prev_entry");
-    $$headref .= "<link href='$LJ::SITEROOT/go.bml?${jargent}itemid=$itemid&amp;dir=prev' rel='Previous' />\n";
+    push @linkele, $mlink->("$LJ::SITEROOT/go?${jargent}itemid=$itemid&amp;dir=prev", "prev_entry");
+    $$headref .= "<link href='$LJ::SITEROOT/go?${jargent}itemid=$itemid&amp;dir=prev' rel='Previous' />\n";
 
     # memories
     if ( LJ::is_enabled('memories') ) {
-        push @linkele, $mlink->("$LJ::SITEROOT/tools/memadd.bml?${jargent}itemid=$itemid", "memadd");
+        push @linkele, $mlink->("$LJ::SITEROOT/tools/memadd?${jargent}itemid=$itemid", "memadd");
     }
 
     # edit entry - if we have a remote, and that person can manage
@@ -132,31 +132,31 @@ sub link_bar
     if (defined $remote && (LJ::can_manage($remote, $u) ||
                             (LJ::u_equals($remote, $up) && LJ::can_use_journal($up->{userid}, $u->{user}, {}))))
     {
-        push @linkele, $mlink->("$LJ::SITEROOT/editjournal.bml?${jargent}itemid=$itemid", "editentry");
+        push @linkele, $mlink->("$LJ::SITEROOT/editjournal?${jargent}itemid=$itemid", "editentry");
     }
 
     # edit tags
     if ( LJ::is_enabled('tags') ) {
         if (defined $remote && LJ::Tags::can_add_tags($u, $remote)) {
-            push @linkele, $mlink->("$LJ::SITEROOT/edittags.bml?${jargent}itemid=$itemid", "edittags");
+            push @linkele, $mlink->("$LJ::SITEROOT/edittags?${jargent}itemid=$itemid", "edittags");
         }
     }
 
     if ( LJ::is_enabled('tellafriend') ) {
-        push @linkele, $mlink->("$LJ::SITEROOT/tools/tellafriend.bml?${jargent}itemid=$itemid", "tellfriend")
+        push @linkele, $mlink->("$LJ::SITEROOT/tools/tellafriend?${jargent}itemid=$itemid", "tellfriend")
             if ($entry->can_tellafriend($remote));
     }
 
     if ($remote && $remote->can_use_esn) {
         my $img_key = $remote->has_subscription(journal => $u, event => "JournalNewComment", arg1 => $itemid, require_active => 1) ?
             "track_active" : "track";
-        push @linkele, $mlink->("$LJ::SITEROOT/manage/subscriptions/entry.bml?${jargent}itemid=$itemid", $img_key);
+        push @linkele, $mlink->("$LJ::SITEROOT/manage/subscriptions/entry?${jargent}itemid=$itemid", $img_key);
     }
 
 
     ## >>> Next
-    push @linkele, $mlink->("$LJ::SITEROOT/go.bml?${jargent}itemid=$itemid&amp;dir=next", "next_entry");
-    $$headref .= "<link href='$LJ::SITEROOT/go.bml?${jargent}itemid=$itemid&amp;dir=next' rel='Next' />\n";
+    push @linkele, $mlink->("$LJ::SITEROOT/go?${jargent}itemid=$itemid&amp;dir=next", "next_entry");
+    $$headref .= "<link href='$LJ::SITEROOT/go?${jargent}itemid=$itemid&amp;dir=next' rel='Next' />\n";
 
     if (@linkele) {
         $ret .= BML::fill_template("standout", {
@@ -293,7 +293,7 @@ sub check_viewable
 
         if (defined $remote) {
             if ( $journal->is_community && ! $journal->is_closed_membership && $remote ) {
-                return $err->( BML::ml( 'talk.error.notauthorised.comm.open', { aopts => "href='$LJ::SITEROOT/community/join.bml?comm=$journalname'" } ) );
+                return $err->( BML::ml( 'talk.error.notauthorised.comm.open', { aopts => "href='$LJ::SITEROOT/community/join?comm=$journalname'" } ) );
             } elsif ( $journal->is_community && $journal->is_closed_membership ) {
                 return $err->( BML::ml( 'talk.error.notauthorised.comm.closed' ) );
             } else {
@@ -1223,7 +1223,7 @@ sub talkform {
     if (!$editid && $parpost->{'state'} eq "S") {
         $ret .= "<div class='ljwarnscreened'>$BML::ML{'.warnscreened'}</div>";
     }
-    $ret .= "<form method='post' action='$LJ::SITEROOT/talkpost_do.bml' id='postform'>";
+    $ret .= "<form method='post' action='$LJ::SITEROOT/talkpost_do' id='postform'>";
     $ret .= LJ::form_auth();
 
     # Login challenge/response
@@ -1431,7 +1431,7 @@ sub talkform {
                 $ret .= "<td align='center'><img src='$LJ::IMGPREFIX/silk/identity/openid.png' onclick='handleRadios(3);' /></td>";
                 $ret .= "<td align='center'>(  )</td>";
                 $ret .= "<td align='left' colspan='2'><font color='#c0c0c0'><b>OpenID</b></font>";
-                $ret .= BML::ml('.opt.noopenidpost', { aopts1 => "href='$LJ::SITEROOT/changeemail.bml'", aopts2 => "href='$LJ::SITEROOT/register.bml'" })
+                $ret .= BML::ml('.opt.noopenidpost', { aopts1 => "href='$LJ::SITEROOT/changeemail'", aopts2 => "href='$LJ::SITEROOT/register'" })
                     if defined $oid_identity;
 
                 $ret .= LJ::help_icon_html("openid", " ");
@@ -1568,7 +1568,7 @@ sub talkform {
     if (!$create_link && (!$remote || defined $oid_identity)) {
         $ret .= "<tr valign='middle' align='left'>";
         $ret .= "<td colspan='2'></td><td><span style='font-size: 8pt; font-style: italic;'>";
-        $ret .= BML::ml('.noaccount', {'aopts' => "href='$LJ::SITEROOT/create.bml'"});
+        $ret .= BML::ml('.noaccount', {'aopts' => "href='$LJ::SITEROOT/create'"});
         $ret .= "</span></td>";
         $ret .= "</tr>\n";
     }
@@ -2886,7 +2886,7 @@ sub init {
 
     # anonymous/cookie users cannot authenticate with ecphash
     if ($form->{'ecphash'} && $form->{'usertype'} ne "user") {
-        $err->(BML::ml("$SC.error.badusername2", {'sitename' => $LJ::SITENAMESHORT, 'aopts' => "href='$LJ::SITEROOT/lostinfo.bml'"}));
+        $err->(BML::ml("$SC.error.badusername2", {'sitename' => $LJ::SITENAMESHORT, 'aopts' => "href='$LJ::SITEROOT/lostinfo'"}));
         return undef;
     }
 
@@ -2958,7 +2958,7 @@ sub init {
                         {
                             $used_ecp = 1;
                         } else {
-                            $err->(BML::ml("$SC.error.badpassword2", {'aopts' => "href='$LJ::SITEROOT/lostinfo.bml'"}));
+                            $err->(BML::ml("$SC.error.badpassword2", {'aopts' => "href='$LJ::SITEROOT/lostinfo'"}));
                         }
 
                     # otherwise authenticate on username/password
@@ -2969,7 +2969,7 @@ sub init {
                         } else {
                             $ok = LJ::auth_okay($up, $form->{'password'}, $form->{'hpassword'});
                         }
-                        $err->(BML::ml("$SC.error.badpassword2", {'aopts' => "href='$LJ::SITEROOT/lostinfo.bml'"})) unless $ok;
+                        $err->(BML::ml("$SC.error.badpassword2", {'aopts' => "href='$LJ::SITEROOT/lostinfo'"})) unless $ok;
                     }
                 }
 
@@ -2978,7 +2978,7 @@ sub init {
                     $init->{didlogin} = $up->make_login_session($exptype, $ipfixed);
                 }
             } else {
-                $err->(BML::ml("$SC.error.badusername2", {'sitename' => $LJ::SITENAMESHORT, 'aopts' => "href='$LJ::SITEROOT/lostinfo.bml'"}));
+                $err->(BML::ml("$SC.error.badusername2", {'sitename' => $LJ::SITENAMESHORT, 'aopts' => "href='$LJ::SITEROOT/lostinfo'"}));
             }
         } elsif ($journalu->{'opt_whocanreply'} eq "all") {
             $err->(BML::ml("$SC.error.nousername", {'sitename' => $LJ::SITENAMESHORT}));
@@ -3021,7 +3021,7 @@ sub init {
 
             unless ($claimed_id) {
                 return $err->("You can't use a $LJ::SITENAMESHORT OpenID account on $LJ::SITENAME &mdash; ".
-                                 "just <a href='/login.bml'>go login</a> with your actual $LJ::SITENAMESHORT account.") if $$tried_local_ref;
+                                 "just <a href='/login'>go login</a> with your actual $LJ::SITENAMESHORT account.") if $$tried_local_ref;
                 return $err->("No claimed id: ".$csr->err);
             }
 
@@ -3048,7 +3048,7 @@ sub init {
             $err->($journalu->errstr) if $journalu->err;
 
             my $check_url = $claimed_id->check_url(
-                                                   return_to      => "$LJ::SITEROOT/talkpost_do.bml?jid=$journalu->{'userid'}&pendcid=$pendcid",
+                                                   return_to      => "$LJ::SITEROOT/talkpost_do?jid=$journalu->{'userid'}&pendcid=$pendcid",
                                                    trust_root     => "$LJ::SITEROOT",
                                                    delayed_return => 1,
                                                    );
@@ -3139,7 +3139,7 @@ sub init {
 
     if ($up) {
         if ($up->{'status'} eq "N" && !$up->is_identity && !LJ::run_hook("journal_allows_unvalidated_commenting", $journalu)) {
-            $err->(BML::ml("$SC.error.noverify2", {'aopts' => "href='$LJ::SITEROOT/register.bml'"}));
+            $err->(BML::ml("$SC.error.noverify2", {'aopts' => "href='$LJ::SITEROOT/register'"}));
         }
 
         $bmlerr->("$SC.error.purged")    if $up->is_expunged;
diff -r 3bf4a5b125e5 -r 47d8462593ee cgi-bin/weblib.pl
--- a/cgi-bin/weblib.pl	Tue Aug 04 15:52:13 2009 +0000
+++ b/cgi-bin/weblib.pl	Tue Aug 04 19:32:47 2009 -0500
@@ -347,9 +347,9 @@ sub tosagree_widget {
     return
         "<div class='formitemDesc'>" .
         BML::ml('tos.mustread',
-                { aopts => "target='_new' href='$LJ::SITEROOT/legal/tos.bml'" }) .
+                { aopts => "target='_new' href='$LJ::SITEROOT/legal/tos'" }) .
         "</div>" .
-        "<iframe width='684' height='300' src='/legal/tos-mini.bml' " .
+        "<iframe width='684' height='300' src='/legal/tos-mini' " .
         "style='border: 1px solid gray;'></iframe>" .
         "<div>" . LJ::html_check({ name => 'agree_tos', id => 'agree_tos',
                                    value => '1', selected =>  $checked }) .
@@ -668,7 +668,7 @@ sub create_qr_div {
     LJ::load_user_props($remote, "opt_no_quickreply");
     return undef if $remote->{'opt_no_quickreply'};
 
-    $qrhtml .= "<div id='qrformdiv'><form id='qrform' name='qrform' method='POST' action='$LJ::SITEROOT/talkpost_do.bml'>";
+    $qrhtml .= "<div id='qrformdiv'><form id='qrform' name='qrform' method='POST' action='$LJ::SITEROOT/talkpost_do'>";
     $qrhtml .= LJ::form_auth();
 
     my $stylemineuri = $stylemine ? "style=mine&" : "";
@@ -1071,7 +1071,7 @@ sub entry_form {
                                     userpic_preview_image.alt = alttext[userpic_select.selectedIndex];
                                 } else {
                                     userpic_preview.className += " userpic_preview_border";
-                                    userpic_preview.innerHTML = '<a href="$LJ::SITEROOT/editpics.bml"><img src="" alt="selected userpic" id="userpic_preview_image" style="display: none;" /><span id="userpic_msg">' + userpic_msg + '</span></a>';
+                                    userpic_preview.innerHTML = '<a href="$LJ::SITEROOT/editpics"><img src="" alt="selected userpic" id="userpic_preview_image" style="display: none;" /><span id="userpic_msg">' + userpic_msg + '</span></a>';
                                 }
                             }
                         }
@@ -1177,7 +1177,7 @@ sub entry_form {
             } elsif (!$remote || $altlogin)  {
                 $out .= "<div id='userpic'><p id='userpic_preview'><img src='/img/nouserpic.png' alt='selected userpic' id='userpic_preview_image' class='userpic_loggedout'  /></p></div>";
             } else {
-                $out .= "<div id='userpic'><p id='userpic_preview' class='userpic_preview_border'><a href='$LJ::SITEROOT/editpics.bml'>Upload a userpic</a></p></div>";
+                $out .= "<div id='userpic'><p id='userpic_preview' class='userpic_preview_border'><a href='$LJ::SITEROOT/editpics'>Upload a userpic</a></p></div>";
             }
 
 
@@ -2488,22 +2488,22 @@ sub control_strip
     my $uri = $baseuri ? "http://$baseuri" : "http://" . $r->header_in('Host') . $r->uri;
     $uri .= "$querysep$args";
     my $euri = LJ::eurl($uri);
-    my $create_link = LJ::run_hook("override_create_link_on_navstrip", $journal) || "<a href='$LJ::SITEROOT/create.bml'>" . BML::ml('web.controlstrip.links.create', {'sitename' => $LJ::SITENAMESHORT}) . "</a>";
+    my $create_link = LJ::run_hook("override_create_link_on_navstrip", $journal) || "<a href='$LJ::SITEROOT/create'>" . BML::ml('web.controlstrip.links.create', {'sitename' => $LJ::SITENAMESHORT}) . "</a>";
 
     # Build up some common links
     my %links = (
                  'login'             => "<a href='$LJ::SITEROOT/?returnto=$euri'>$BML::ML{'web.controlstrip.links.login'}</a>",
-                 'post_journal'      => "<a href='$LJ::SITEROOT/update.bml'>$BML::ML{'web.controlstrip.links.post2'}</a>",
+                 'post_journal'      => "<a href='$LJ::SITEROOT/update'>$BML::ML{'web.controlstrip.links.post2'}</a>",
                  'home'              => "<a href='$LJ::SITEROOT/'>" . $BML::ML{'web.controlstrip.links.home'} . "</a>",
-                 'recent_comments'   => "<a href='$LJ::SITEROOT/tools/recent_comments.bml'>$BML::ML{'web.controlstrip.links.recentcomments'}</a>",
+                 'recent_comments'   => "<a href='$LJ::SITEROOT/tools/recent_comments'>$BML::ML{'web.controlstrip.links.recentcomments'}</a>",
                  'manage_friends'    => "<a href='$LJ::SITEROOT/manage/circle/'>$BML::ML{'web.controlstrip.links.managecircle'}</a>",
-                 'manage_entries'    => "<a href='$LJ::SITEROOT/editjournal.bml'>$BML::ML{'web.controlstrip.links.manageentries'}</a>",
-                 'invite_friends'    => "<a href='$LJ::SITEROOT/manage/circle/invite.bml'>$BML::ML{'web.controlstrip.links.invitefriends'}</a>",
+                 'manage_entries'    => "<a href='$LJ::SITEROOT/editjournal'>$BML::ML{'web.controlstrip.links.manageentries'}</a>",
+                 'invite_friends'    => "<a href='$LJ::SITEROOT/manage/circle/invite'>$BML::ML{'web.controlstrip.links.invitefriends'}</a>",
                  'create_account'    => $create_link,
-                 'syndicated_list'   => "<a href='$LJ::SITEROOT/syn/list.bml'>$BML::ML{'web.controlstrip.links.popfeeds'}</a>",
+                 'syndicated_list'   => "<a href='$LJ::SITEROOT/syn/list'>$BML::ML{'web.controlstrip.links.popfeeds'}</a>",
                  'learn_more'        => LJ::run_hook('control_strip_learnmore_link') || "<a href='$LJ::SITEROOT/'>$BML::ML{'web.controlstrip.links.learnmore'}</a>",
                  'explore'           => "<a href='$LJ::SITEROOT/explore/'>" . BML::ml('web.controlstrip.links.explore', { sitenameabbrev => $LJ::SITENAMEABBREV }) . "</a>",
-                 'confirm'           => "<a href='$LJ::SITEROOT/register.bml'>$BML::ML{'web.controlstrip.links.confirm'}</a>",
+                 'confirm'           => "<a href='$LJ::SITEROOT/register'>$BML::ML{'web.controlstrip.links.confirm'}</a>",
                  );
 
     if ($remote) {
@@ -2513,24 +2513,24 @@ sub control_strip
         $links{inbox} .= "</a>";
 
         $links{'view_friends_page'} = "<a href='" . $remote->journal_base . "/read/'>$BML::ML{'web.controlstrip.links.viewreadingpage'}</a>";
-        $links{'add_friend'} = "<a href='$LJ::SITEROOT/manage/circle/add.bml?user=$journal->{user}'>$BML::ML{'web.controlstrip.links.addtocircle'}</a>";
-        $links{'edit_friend'} = "<a href='$LJ::SITEROOT/manage/circle/add.bml?user=$journal->{user}'>$BML::ML{'web.controlstrip.links.modifycircle'}</a>";
-        $links{'track_user'} = "<a href='$LJ::SITEROOT/manage/subscriptions/user.bml?journal=$journal->{user}'>$BML::ML{'web.controlstrip.links.trackuser'}</a>";
+        $links{'add_friend'} = "<a href='$LJ::SITEROOT/manage/circle/add?user=$journal->{user}'>$BML::ML{'web.controlstrip.links.addtocircle'}</a>";
+        $links{'edit_friend'} = "<a href='$LJ::SITEROOT/manage/circle/add?user=$journal->{user}'>$BML::ML{'web.controlstrip.links.modifycircle'}</a>";
+        $links{'track_user'} = "<a href='$LJ::SITEROOT/manage/subscriptions/user?journal=$journal->{user}'>$BML::ML{'web.controlstrip.links.trackuser'}</a>";
         if ($journal->is_syndicated ) {
-            $links{'add_friend'} = "<a href='$LJ::SITEROOT/manage/circle/add.bml?user=$journal->{user}&action=subscribe'>$BML::ML{'web.controlstrip.links.addfeed'}</a>";
-            $links{'remove_friend'} = "<a href='$LJ::SITEROOT/manage/circle/add.bml?user=$journal->{user}&action=remove'>$BML::ML{'web.controlstrip.links.removefeed'}</a>";
+            $links{'add_friend'} = "<a href='$LJ::SITEROOT/manage/circle/add?user=$journal->{user}&action=subscribe'>$BML::ML{'web.controlstrip.links.addfeed'}</a>";
+            $links{'remove_friend'} = "<a href='$LJ::SITEROOT/manage/circle/add?user=$journal->{user}&action=remove'>$BML::ML{'web.controlstrip.links.removefeed'}</a>";
         }
         if ($journal->is_community) {
-            $links{'join_community'}   = "<a href='$LJ::SITEROOT/community/join.bml?comm=$journal->{user}'>$BML::ML{'web.controlstrip.links.joincomm'}</a>"
+            $links{'join_community'}   = "<a href='$LJ::SITEROOT/community/join?comm=$journal->{user}'>$BML::ML{'web.controlstrip.links.joincomm'}</a>"
                 unless $journal->is_closed_membership;
-            $links{'leave_community'}  = "<a href='$LJ::SITEROOT/community/leave.bml?comm=$journal->{user}'>$BML::ML{'web.controlstrip.links.leavecomm'}</a>";
-            $links{'watch_community'}  = "<a href='$LJ::SITEROOT/manage/circle/add.bml?user=$journal->{user}&action=subscribe'>$BML::ML{'web.controlstrip.links.watchcomm'}</a>";
-            $links{'unwatch_community'}   = "<a href='$LJ::SITEROOT/community/leave.bml?comm=$journal->{user}'>$BML::ML{'web.controlstrip.links.removecomm'}</a>";
-            $links{'post_to_community'}   = "<a href='$LJ::SITEROOT/update.bml?usejournal=$journal->{user}'>$BML::ML{'web.controlstrip.links.postcomm'}</a>";
+            $links{'leave_community'}  = "<a href='$LJ::SITEROOT/community/leave?comm=$journal->{user}'>$BML::ML{'web.controlstrip.links.leavecomm'}</a>";
+            $links{'watch_community'}  = "<a href='$LJ::SITEROOT/manage/circle/add?user=$journal->{user}&action=subscribe'>$BML::ML{'web.controlstrip.links.watchcomm'}</a>";
+            $links{'unwatch_community'}   = "<a href='$LJ::SITEROOT/community/leave?comm=$journal->{user}'>$BML::ML{'web.controlstrip.links.removecomm'}</a>";
+            $links{'post_to_community'}   = "<a href='$LJ::SITEROOT/update?usejournal=$journal->{user}'>$BML::ML{'web.controlstrip.links.postcomm'}</a>";
             $links{'edit_community_profile'} = "<a href='$LJ::SITEROOT/manage/profile/?authas=$journal->{user}'>$BML::ML{'web.controlstrip.links.editcommprofile'}</a>";
-            $links{'edit_community_invites'} = "<a href='$LJ::SITEROOT/community/sentinvites.bml?authas=$journal->{user}'>$BML::ML{'web.controlstrip.links.managecomminvites'}</a>";
-            $links{'edit_community_members'} = "<a href='$LJ::SITEROOT/community/members.bml?authas=$journal->{user}'>$BML::ML{'web.controlstrip.links.editcommmembers'}</a>";
-            $links{'track_community'} = "<a href='$LJ::SITEROOT/manage/subscriptions/user.bml?journal=$journal->{user}'>$BML::ML{'web.controlstrip.links.trackcomm'}</a>";
+            $links{'edit_community_invites'} = "<a href='$LJ::SITEROOT/community/sentinvites?authas=$journal->{user}'>$BML::ML{'web.controlstrip.links.managecomminvites'}</a>";
+            $links{'edit_community_members'} = "<a href='$LJ::SITEROOT/community/members?authas=$journal->{user}'>$BML::ML{'web.controlstrip.links.editcommmembers'}</a>";
+            $links{'track_community'} = "<a href='$LJ::SITEROOT/manage/subscriptions/user?journal=$journal->{user}'>$BML::ML{'web.controlstrip.links.trackcomm'}</a>";
             $links{'queue'} = "<a href='$LJ::SITEROOT/community/moderate?authas=$journal->{user}'>$BML::ML{'web.controlstrip.links.queue'}</a>";
         }
     }
@@ -2573,7 +2573,7 @@ sub control_strip
         my $remote_display  = LJ::ljuser($remote);
         if ($remote->{'defaultpicid'}) {
             my $url = "$LJ::USERPIC_ROOT/$remote->{'defaultpicid'}/$remote->{'userid'}";
-            $ret .= "<td id='lj_controlstrip_userpic' style='background-image: none;'><a href='$LJ::SITEROOT/editpics.bml'><img src='$url' alt=\"$BML::ML{'web.controlstrip.userpic.alt'}\" title=\"$BML::ML{'web.controlstrip.userpic.title'}\" height='43' /></a></td>";
+            $ret .= "<td id='lj_controlstrip_userpic' style='background-image: none;'><a href='$LJ::SITEROOT/editpics'><img src='$url' alt=\"$BML::ML{'web.controlstrip.userpic.alt'}\" title=\"$BML::ML{'web.controlstrip.userpic.title'}\" height='43' /></a></td>";
         } else {
             my $tinted_nouserpic_img = "";
 
@@ -2589,7 +2589,7 @@ sub control_strip
                     }
                 }
             }
-            $ret .= "<td id='lj_controlstrip_userpic' style='background-image: none;'><a href='$LJ::SITEROOT/editpics.bml'>";
+            $ret .= "<td id='lj_controlstrip_userpic' style='background-image: none;'><a href='$LJ::SITEROOT/editpics'>";
             if ($tinted_nouserpic_img eq "") {
                 $ret .= "<img src='$LJ::IMGPREFIX/controlstrip/nouserpic.gif' alt=\"$BML::ML{'web.controlstrip.nouserpic.alt'}\" title=\"$BML::ML{'web.controlstrip.nouserpic.title'}\" height='43' />";
             } else {
@@ -2597,7 +2597,7 @@ sub control_strip
             }
             $ret .= "</a></td>";
         }
-        $ret .= "<td id='lj_controlstrip_user' nowrap='nowrap'><form id='Greeting' class='nopic' action='$LJ::SITEROOT/logout.bml?ret=1' method='post'><div>";
+        $ret .= "<td id='lj_controlstrip_user' nowrap='nowrap'><form id='Greeting' class='nopic' action='$LJ::SITEROOT/logout?ret=1' method='post'><div>";
         $ret .= "<input type='hidden' name='user' value='$remote->{'user'}' />";
         $ret .= "<input type='hidden' name='sessid' value='$remote->{'_session'}->{'sessid'}' />"
             if $remote->session;
@@ -2647,7 +2647,7 @@ sub control_strip
                 }
 
                 $ret .= "$links{'manage_friends'}&nbsp;&nbsp; ";
-                $ret .= "$BML::ML{'web.controlstrip.select.friends.label'} <form method='post' style='display: inline;' action='$LJ::SITEROOT/manage/circle/filter.bml'>\n";
+                $ret .= "$BML::ML{'web.controlstrip.select.friends.label'} <form method='post' style='display: inline;' action='$LJ::SITEROOT/manage/circle/filter'>\n";
                 $ret .= LJ::html_hidden("user", $remote->{'user'}, "mode", "view", "type", "allfilters");
                 $ret .= LJ::html_select({'name' => "view", 'selected' => $selected }, @filters) . " ";
                 $ret .= LJ::html_submit($BML::ML{'web.controlstrip.btn.view'});
@@ -2794,7 +2794,7 @@ sub control_strip
             my $contents = LJ::run_hook('control_strip_userpic_contents', $euri) || "&nbsp;";
             $ret .= <<"LOGIN_BAR";
                 <td id='lj_controlstrip_userpic'>$contents</td>
-                <td id='lj_controlstrip_login' style='background-image: none;' nowrap='nowrap'><form id="login" class="lj_login_form" action="$LJ::SITEROOT/login.bml?ret=1" method="post"><div>
+                <td id='lj_controlstrip_login' style='background-image: none;' nowrap='nowrap'><form id="login" class="lj_login_form" action="$LJ::SITEROOT/login?ret=1" method="post"><div>
                 <input type="hidden" name="mode" value="login" />
                 <input type='hidden' name='chal' id='login_chal' class='lj_login_chal' value='$chal' />
                 <input type='hidden' name='response' id='login_response' class='lj_login_response' value='' />
@@ -2807,7 +2807,7 @@ LOGIN_BAR
             $ret .= "</td></tr>";
 
             $ret .= "<tr><td valign='top'>";
-            $ret .= "<a href='$LJ::SITEROOT/lostinfo.bml'>$BML::ML{'web.controlstrip.login.forgot'}</a>";
+            $ret .= "<a href='$LJ::SITEROOT/lostinfo'>$BML::ML{'web.controlstrip.login.forgot'}</a>";
             $ret .= " <a href='$LJ::SITEROOT/openid/'>$BML::ML{'web.controlstrip.login.openid'}</a>";
             $ret .= "</td><td style='font: 10px Arial, Helvetica, sans-serif;' valign='top' colspan='2' align='right'>";
             $ret .= "<input type='checkbox' id='xc_remember' name='remember_me' style='height: 10px; width: 10px;' tabindex='3' />";
--------------------------------------------------------------------------------