diff --git a/web/components/contract/contracts-list.tsx b/web/components/contract/contracts-list.tsx
index 28fae7da..9d74064d 100644
--- a/web/components/contract/contracts-list.tsx
+++ b/web/components/contract/contracts-list.tsx
@@ -19,6 +19,7 @@ export function ContractsGrid(props: {
   const isBottomVisible = useIsVisible(elem)
 
   useEffect(() => {
+    console.log({ isBottomVisible, hasMore })
     if (isBottomVisible) {
       loadMore()
     }
diff --git a/web/components/nav/nav-bar.tsx b/web/components/nav/nav-bar.tsx
index 987e3142..04c8e891 100644
--- a/web/components/nav/nav-bar.tsx
+++ b/web/components/nav/nav-bar.tsx
@@ -47,7 +47,7 @@ export function BottomNavBar() {
       )}
 
       {user !== null && (
-        
+        
           
              {
   }
 }
 
-function getNavigation(userName: string) {
-  return [
-    { name: 'Home', href: '/home', icon: HomeIcon },
-    { name: 'Activity', href: '/activity', icon: ChatAltIcon },
-    {
-      name: 'Portfolio',
-      href: `/${userName}/bets`,
-      icon: PresentationChartLineIcon,
-    },
-    { name: 'Charity', href: '/charity', icon: HeartIcon },
-  ]
-}
+const navigation = [
+  { name: 'Home', href: '/home', icon: HomeIcon },
+  { name: 'Activity', href: '/activity', icon: ChatAltIcon },
+  { name: 'Portfolio', href: '/portfolio', icon: PresentationChartLineIcon },
+  { name: 'Charity', href: '/charity', icon: HeartIcon },
+]
 
 const signedOutNavigation = [
   { name: 'Home', href: '/home', icon: HomeIcon },
@@ -125,8 +119,7 @@ export default function Sidebar(props: { className?: string }) {
   folds = _.sortBy(folds, 'followCount').reverse()
   const deservesDailyFreeMarket = !useHasCreatedContractToday(user)
 
-  const navigationOptions =
-    user === null ? signedOutNavigation : getNavigation(user?.name || 'error')
+  const navigationOptions = user === null ? signedOutNavigation : navigation
   const mobileNavigationOptions =
     user === null ? signedOutMobileNavigation : mobileNavigation
 
diff --git a/web/components/user-page.tsx b/web/components/user-page.tsx
index 9f78165c..89750b28 100644
--- a/web/components/user-page.tsx
+++ b/web/components/user-page.tsx
@@ -21,9 +21,6 @@ import { getContractFromId, listContracts } from 'web/lib/firebase/contracts'
 import { LoadingIndicator } from './loading-indicator'
 import { useRouter } from 'next/router'
 import _ from 'lodash'
-import { BetsList } from './bets-list'
-import { Bet } from 'common/bet'
-import { getUserBets } from 'web/lib/firebase/bets'
 
 export function UserLink(props: {
   name: string
@@ -41,13 +38,12 @@ export function UserLink(props: {
   )
 }
 
-export const TAB_IDS = ['markets', 'comments', 'bets']
-
 export function UserPage(props: {
   user: User
   currentUser?: User
-  defaultTabTitle?: 'markets' | 'comments' | 'bets'
+  defaultTabTitle?: string
 }) {
+  const router = useRouter()
   const { user, currentUser, defaultTabTitle } = props
   const isCurrentUser = user.id === currentUser?.id
   const bannerUrl = user.bannerUrl ?? defaultBannerUrl(user.id)
@@ -55,7 +51,6 @@ export function UserPage(props: {
   const [usersContracts, setUsersContracts] = useState(
     'loading'
   )
-  const [usersBets, setUsersBets] = useState('loading')
   const [commentsByContract, setCommentsByContract] = useState<
     Map | 'loading'
   >('loading')
@@ -64,7 +59,6 @@ export function UserPage(props: {
     if (!user) return
     getUsersComments(user.id).then(setUsersComments)
     listContracts(user.id).then(setUsersContracts)
-    getUserBets(user.id).then(setUsersBets)
   }, [user])
 
   useEffect(() => {
@@ -193,14 +187,17 @@ export function UserPage(props: {
         {usersContracts !== 'loading' && commentsByContract != 'loading' ? (
            {
-              const tabId = tabName.toLowerCase()
-              const subpath = tabId === 'markets' ? '' : '/' + tabId
-              // BUG: if you start on `/Bob/bets`, then click on Markets, use-query-and-sort-params
-              // rewrites the url incorrectly to `/Bob/bets` instead of `/Bob`
-              window.history.replaceState('', '', `/${user.username}${subpath}`)
-            }}
+            defaultIndex={defaultTabTitle === 'Comments' ? 1 : 0}
+            onClick={(tabName) =>
+              router.push(
+                {
+                  pathname: `/${user.username}`,
+                  query: { tab: tabName },
+                },
+                undefined,
+                { shallow: true }
+              )
+            }
             tabs={[
               {
                 title: 'Markets',
@@ -223,24 +220,6 @@ export function UserPage(props: {
                   {usersComments.length}
                 ),
               },
-              {
-                title: 'Bets',
-                content: (
-                  
-                    
-                    {isCurrentUser && 
}
-                  
{usersBets.length}
-                ),
-              },
             ]}
           />
         ) : (
@@ -263,27 +242,3 @@ export function defaultBannerUrl(userId: string) {
   ]
   return defaultBanner[genHash(userId)() % defaultBanner.length]
 }
-
-import { ExclamationIcon } from '@heroicons/react/solid'
-
-function AlertBox(props: { title: string; text: string }) {
-  const { title, text } = props
-  return (
-    
-  )
-}
diff --git a/web/hooks/use-sort-and-query-params.tsx b/web/hooks/use-sort-and-query-params.tsx
index 776bcd4d..7a9abb85 100644
--- a/web/hooks/use-sort-and-query-params.tsx
+++ b/web/hooks/use-sort-and-query-params.tsx
@@ -47,6 +47,7 @@ export function useInitialQueryAndSort(options?: {
         }
         setInitialSort(localSort ?? defaultSort)
       } else {
+        console.log('ready setting to ', sort ?? defaultSort)
         setInitialSort(sort ?? defaultSort)
       }
     }
diff --git a/web/lib/firebase/bets.ts b/web/lib/firebase/bets.ts
index c3ca8508..b55b0027 100644
--- a/web/lib/firebase/bets.ts
+++ b/web/lib/firebase/bets.ts
@@ -60,12 +60,6 @@ export function listenForBets(
   })
 }
 
-export async function getUserBets(userId: string) {
-  return getValues(
-    query(collectionGroup(db, 'bets'), where('userId', '==', userId))
-  )
-}
-
 export function listenForUserBets(
   userId: string,
   setBets: (bets: Bet[]) => void
diff --git a/web/pages/[username]/bets.tsx b/web/pages/[username]/bets.tsx
deleted file mode 100644
index 0403d263..00000000
--- a/web/pages/[username]/bets.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import UserProfile from '.'
-
-export default function UserBets() {
-  return 
-}
diff --git a/web/pages/[username]/comments.tsx b/web/pages/[username]/comments.tsx
deleted file mode 100644
index 65a53028..00000000
--- a/web/pages/[username]/comments.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import UserProfile from '.'
-
-export default function UserBets() {
-  return 
-}
diff --git a/web/pages/[username]/index.tsx b/web/pages/[username]/index.tsx
index eaef8471..cbc53235 100644
--- a/web/pages/[username]/index.tsx
+++ b/web/pages/[username]/index.tsx
@@ -6,12 +6,10 @@ import { UserPage } from 'web/components/user-page'
 import { useUser } from 'web/hooks/use-user'
 import Custom404 from '../404'
 
-export default function UserProfile(props: {
-  tab?: 'markets' | 'comments' | 'bets'
-}) {
+export default function UserProfile() {
   const router = useRouter()
   const [user, setUser] = useState('loading')
-  const { username } = router.query as { username: string }
+  const { username, tab } = router.query as { username: string; tab: string }
   useEffect(() => {
     if (username) {
       getUserByUsername(username).then(setUser)
@@ -26,7 +24,7 @@ export default function UserProfile(props: {
     
   ) : (