diff --git a/TODO.md b/TODO.md
deleted file mode 100644
index fd3c66e2cff9ff55f46fbdb194dc33c31e8c959c..0000000000000000000000000000000000000000
--- a/TODO.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# TODO
-
-## Reaction Roles
-
-_Involves: File r/w + parsing, discord reactions_
-
-So, for reaction roles, afaict this is what needs to be done
-
--   Migrate config.rs to something like `config.toml`
--   Complete `reaction_roles.rs`
-    -   Load from config (roles, and the rr msg, if they exist)
-    -   Code up the `!rr init` command
-    -   Monitor reactions, update user roles etc.
-    -   On updated to `config.toml` (and on bot load, now that I think of it) overwrite the rr msg with content based on roles in config
-    -   **Bonus:** add command like `!rr add :emoji: role name`
-
-## LDAP Integration
-
-_Involves: LDAP r/w, email,discord nicknames+roles_
-
--   Add a `discord_ID` or similar field to the LDAP database
--   Add a `!link <ucc-username>` command, which
-    -   Created a verification token
-        -   Perhaps just hash discordID+username with hardcoded salt (is this bad?)
-    -   Sends an email with a verification token (and instruction to `!register`)
-    -   Goes back to discord and run `!register <token>`
--   Add a `!register <token>` command
-    -   Do hash, compare, if same update LDAP database
-    -   Either add `registered` role or remove `unregistered`
-        -   End result, unable to change nickname
-    -   Set nickname to something like `<tla> (<first-name>)`
--   Add a `!unlink` command
-    -   Remove LDAP entry
-    -   Make able to change nickname again
--   **Bonus:** be able to specify nickname format for registered users in `config.toml`, and add way to update
-
-## Fun with accounts
-
--   `!dispense <item name>`
-    -   Dispense the item
diff --git a/TODO.org b/TODO.org
new file mode 100644
index 0000000000000000000000000000000000000000..cd92806b3b86295f7af86d28e6d8ade420940a5f
--- /dev/null
+++ b/TODO.org
@@ -0,0 +1,38 @@
+#+TITLE: TODO
+
+* Reaction Roles
+
+_Involves: File r/w + parsing, discord reactions_
+
+So, for reaction roles, afaict this is what needs to be done
+
+ - [X]  Migrate config.rs to something like ~config.yml~
+ - [-] Complete ~reaction_roles.rs~
+     - [X] Load from config (roles, and the rr msg, if they exist)
+     - [X] Monitor reactions, update user roles etc.
+     - [ ]  On updated to ~config.yml~ (and on bot load, now that I think of it) overwrite the rr msg with content based on roles in config
+
+* LDAP Integration
+
+_Involves: LDAP r/w, email,discord nicknames+roles_
+
+- [ ] Add a ~discord_ID~ or similar field to the LDAP database
+- [ ] Add a ~!link <ucc-username>~ command, which
+  - [ ] Created a verification token
+    - [ ] Perhaps just hash discordID+username with hardcoded salt (is this bad?)
+  - [ ] Sends an email with a verification token (and instruction to ~!register~)
+  - [ ] Goes back to discord and run ~!register <token>~
+- [ ] Add a ~!register <token>~ command
+  - [ ] Do hash, compare, if same update LDAP database
+  - [ ] Either add ~registered~ role or remove ~unregistered~
+    - [ ] End result, unable to change nickname
+  - [ ] Set nickname to something like ~<tla> (<first-name>)~
+- [ ] Add a ~!unlink~ command
+  - [ ] Remove LDAP entry
+  - [ ] Make able to change nickname again
+- [ ] *Bonus:* be able to specify nickname format for registered users in ~config.toml~, and add way to update
+
+* Fun with accounts
+
+-   ~!dispense <item name>~
+    -   Dispense the item