diff --git a/TODO.txt b/TODO.txt
index f5b000ec710059be9413e514493f6f2c4537793f_VE9ETy50eHQ=..12d4f99c07025859b12d1970c80ad6ddf8256373_VE9ETy50eHQ= 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,4 +1,9 @@
 GENERAL
 ==========
-
+* switch object mapping to hg->git since the many to one is that direction
+* respect file modes on conversions
+* explicit file renames
+* more tests?
+* bookmarks / tip / named branches - mapping policy to Git branches
+  - tracking branches?
 * submodules?
@@ -4,8 +9,4 @@
 * submodules?
-* switch object mapping to hg->git since the many to one is that direction
-* file modes
-* gclear - clear out all the git data
-* explicit file renames
 
 PUSH
 ==========
@@ -9,7 +10,6 @@
 
 PUSH
 ==========
-
 * update 'remote' references after push confirmation
 * push confirmation? is there extra data after the packfile upload?
 * output something after process is complete (master -> master etc)
@@ -13,6 +13,6 @@
 * update 'remote' references after push confirmation
 * push confirmation? is there extra data after the packfile upload?
 * output something after process is complete (master -> master etc)
-
+  - explain what branch mapping policy determined
 * convert tags to git
 
@@ -17,9 +17,4 @@
 * convert tags to git
 
-CLONE
-===========
-
-* tag conversion
-
 FETCH
 ===========
@@ -24,6 +19,5 @@
 FETCH
 ===========
-
 * add removed files to filechanged and raise IOError
 * gfetch command
 * only try to import non-mapped commits
@@ -27,3 +21,18 @@
 * add removed files to filechanged and raise IOError
 * gfetch command
 * only try to import non-mapped commits
+* tag conversion
+* save git metadata (committers, unless it's the same) as extra info
+
+SPEED/EFFICIENCY
+================
+* don't send blobs/trees already on server
+
+MILESTONES
+=============
+
+* Hg<->Git<->Hg
+  - create a repo in Hg
+  - push to a Git server
+  - clone into another Hg client
+  - verify that the node ids are identical