diff --git a/TODO b/TODO
new file mode 100644
index 0000000..75cfb41
--- /dev/null
+++ b/TODO
@@ -0,0 +1,3 @@
+Role all
+Server rules
+A way to add buttons to verify / role menu
\ No newline at end of file
diff --git a/src/commands/role/all.ts b/src/Unfinished/all.ts
similarity index 96%
rename from src/commands/role/all.ts
rename to src/Unfinished/all.ts
index 7ea7cb6..05eb603 100644
--- a/src/commands/role/all.ts
+++ b/src/Unfinished/all.ts
@@ -1,13 +1,13 @@
 import Discord, { CommandInteraction, GuildMember, MessageActionRow, MessageButton, MessageSelectMenu } from "discord.js";
 import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
 import { WrappedCheck } from "jshaiku";
-import EmojiEmbed from "../../utils/generateEmojiEmbed.js";
-import getEmojiByName from "../../utils/getEmojiByName.js";
-import addPlural from "../../utils/plurals.js";
-import client from "../../utils/client.js";
+import EmojiEmbed from "../utils/generateEmojiEmbed.js";
+import getEmojiByName from "../utils/getEmojiByName.js";
+import addPlural from "../utils/plurals.js";
+import client from "../utils/client.js";
 
 const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
+    builder // TODO: DON'T RELEASE THIS
     .setName("all")
     .setDescription("Gives or removes a role from everyone")
 
diff --git a/src/commands/createTestButton.ts b/src/commands/createTestButton.ts
index 71f9ef1..c04e13d 100644
--- a/src/commands/createTestButton.ts
+++ b/src/commands/createTestButton.ts
@@ -4,7 +4,7 @@
 
 const command = new SlashCommandBuilder()
     .setName("createtestbutton")
-    .setDescription("creates a test button")
+    .setDescription("creates a test button") // TODO: remove for release
 
 const callback = (interaction: CommandInteraction) => {
     interaction.reply({components: [new MessageActionRow().addComponents([
diff --git a/src/commands/help.ts b/src/commands/help.ts
index b326c90..568a90c 100644
--- a/src/commands/help.ts
+++ b/src/commands/help.ts
@@ -7,7 +7,7 @@
     .setDescription("Shows help for commands")
 
 const callback = (interaction: CommandInteraction) => {
-    interaction.reply("hel p");
+    interaction.reply("hel p"); // TODO: FINISH THIS FOR RELEASE
 }
 
 const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
diff --git a/src/commands/mod/lock.ts b/src/commands/mod/lock.ts
deleted file mode 100644
index 9199cd4..0000000
--- a/src/commands/mod/lock.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("lock")
-    .setDescription("Manages a lock on a channel")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("This command is not yet finished [mod/lock]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command, callback, check };
\ No newline at end of file
