diff --git a/COMMANDS/help.ts b/COMMANDS/help.ts
deleted file mode 100644
index b326c90..0000000
--- a/COMMANDS/help.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = new SlashCommandBuilder()
-    .setName("help")
-    .setDescription("Shows help for commands")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("hel p");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/_meta.ts b/COMMANDS/mod/_meta.ts
deleted file mode 100644
index adfc5da..0000000
--- a/COMMANDS/mod/_meta.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-const name = "mod";
-const description = "Perform mod actions";
-
-export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/mod/ban.ts b/COMMANDS/mod/ban.ts
deleted file mode 100644
index cddc794..0000000
--- a/COMMANDS/mod/ban.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("ban")
-    .setDescription("Bans a user from the server")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [mod/ban]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/clear.ts b/COMMANDS/mod/clear.ts
deleted file mode 100644
index 78909a9..0000000
--- a/COMMANDS/mod/clear.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("clear")
-    .setDescription("Clears a users messages in a channel")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [mod/clear]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/kick.ts b/COMMANDS/mod/kick.ts
deleted file mode 100644
index 895f035..0000000
--- a/COMMANDS/mod/kick.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("kick")
-    .setDescription("Clears a users messages in a channel")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [mod/kick]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/lock/_meta.ts b/COMMANDS/mod/lock/_meta.ts
deleted file mode 100644
index 73cc18e..0000000
--- a/COMMANDS/mod/lock/_meta.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-const name = "lock";
-const description = "Quickly lock and unlock channels";
-
-export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/mod/lock/add.ts b/COMMANDS/mod/lock/add.ts
deleted file mode 100644
index cb89b55..0000000
--- a/COMMANDS/mod/lock/add.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("add")
-    .setDescription("Adds a lock to a channel")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [mod/lock/add]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/lock/remove.ts b/COMMANDS/mod/lock/remove.ts
deleted file mode 100644
index 698bee9..0000000
--- a/COMMANDS/mod/lock/remove.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("remove")
-    .setDescription("Removes a lock from a channel")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [mod/lock/remove]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/purge.ts b/COMMANDS/mod/purge.ts
deleted file mode 100644
index 7c52b13..0000000
--- a/COMMANDS/mod/purge.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("purge")
-    .setDescription("Clears messages in a channel")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [mod/purge]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/slowmode/_meta.ts b/COMMANDS/mod/slowmode/_meta.ts
deleted file mode 100644
index 4200b58..0000000
--- a/COMMANDS/mod/slowmode/_meta.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-const name = "slowmode";
-const description = "Settings for slowmode in channels";
-
-export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/mod/slowmode/clear.ts b/COMMANDS/mod/slowmode/clear.ts
deleted file mode 100644
index 3b09dea..0000000
--- a/COMMANDS/mod/slowmode/clear.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("clear")
-    .setDescription("Clears slowmode from a channel")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [mod/slowmode/clear]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/slowmode/set.ts b/COMMANDS/mod/slowmode/set.ts
deleted file mode 100644
index a2dd7ca..0000000
--- a/COMMANDS/mod/slowmode/set.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("clear")
-    .setDescription("Sets slowmode in a channel")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [mod/slowmode/set]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/slowmode/toggle.ts b/COMMANDS/mod/slowmode/toggle.ts
deleted file mode 100644
index fc44f75..0000000
--- a/COMMANDS/mod/slowmode/toggle.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("clear")
-    .setDescription("Toggles slowmode in a channel")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [mod/slowmode/toggle]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/softban.ts b/COMMANDS/mod/softban.ts
deleted file mode 100644
index 19db3c2..0000000
--- a/COMMANDS/mod/softban.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("softban")
-    .setDescription("Softbans a user")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [mod/softban]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/unban.ts b/COMMANDS/mod/unban.ts
deleted file mode 100644
index fe2133e..0000000
--- a/COMMANDS/mod/unban.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("unban")
-    .setDescription("Unbans a user")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [mod/unban]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/viewas.ts b/COMMANDS/mod/viewas.ts
deleted file mode 100644
index fc5474f..0000000
--- a/COMMANDS/mod/viewas.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setDescription("View the server as a specific member")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [mod/viewas]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/mod/warn.ts b/COMMANDS/mod/warn.ts
deleted file mode 100644
index f050ef2..0000000
--- a/COMMANDS/mod/warn.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("warn")
-    .setDescription("Warns a user")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [mod/warn]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/nucleus/_meta.ts b/COMMANDS/nucleus/_meta.ts
deleted file mode 100644
index df978ba..0000000
--- a/COMMANDS/nucleus/_meta.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-const name = "nucleus";
-const description = "Commands relating to Nucleus itself";
-
-export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/nucleus/ping.ts b/COMMANDS/nucleus/ping.ts
deleted file mode 100644
index 43a5fd7..0000000
--- a/COMMANDS/nucleus/ping.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("ping")
-    .setDescription("Gets the bot's ping time")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [nucleus/ping]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/nucleus/stats.ts b/COMMANDS/nucleus/stats.ts
deleted file mode 100644
index 7f468fa..0000000
--- a/COMMANDS/nucleus/stats.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("stats")
-    .setDescription("Gets the bot's statse")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [nucleus/stats]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/nucleus/suggest.ts b/COMMANDS/nucleus/suggest.ts
deleted file mode 100644
index e76d49f..0000000
--- a/COMMANDS/nucleus/suggest.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("suggest")
-    .setDescription("Sends a suggestion to the developers")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [nucleus/suggest]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/privacy.ts b/COMMANDS/privacy.ts
deleted file mode 100644
index dc97370..0000000
--- a/COMMANDS/privacy.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = new SlashCommandBuilder()
-    .setName("privacy")
-    .setDescription("Shows info about Nucleus' privacy options")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [privacy]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/role/_meta.ts b/COMMANDS/role/_meta.ts
deleted file mode 100644
index 408576f..0000000
--- a/COMMANDS/role/_meta.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-const name = "role";
-const description = "Change roles for users";
-
-export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/role/add.ts b/COMMANDS/role/add.ts
deleted file mode 100644
index 6fa80a2..0000000
--- a/COMMANDS/role/add.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("add")
-    .setDescription("Adds a role to someone")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [role/add]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/role/all/_meta.ts b/COMMANDS/role/all/_meta.ts
deleted file mode 100644
index 4db116a..0000000
--- a/COMMANDS/role/all/_meta.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-const name = "all";
-const description = "Role all users";
-
-export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/role/all/add.ts b/COMMANDS/role/all/add.ts
deleted file mode 100644
index 18ab380..0000000
--- a/COMMANDS/role/all/add.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("add")
-    .setDescription("Adds a role to everyone")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [role/all/add]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/role/all/remove.ts b/COMMANDS/role/all/remove.ts
deleted file mode 100644
index 414bfd6..0000000
--- a/COMMANDS/role/all/remove.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("add")
-    .setDescription("removes a role from everyone")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [role/all/remove]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/role/all/toggle.ts b/COMMANDS/role/all/toggle.ts
deleted file mode 100644
index 9b2f3e3..0000000
--- a/COMMANDS/role/all/toggle.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("toggle")
-    .setDescription("Adds a role to everyone if they don't have it, removes it if they do")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [role/all/toggle]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/role/info.ts b/COMMANDS/role/info.ts
deleted file mode 100644
index d5874bd..0000000
--- a/COMMANDS/role/info.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("info")
-    .setDescription("Gets info about a role")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [role/info]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/role/remove.ts b/COMMANDS/role/remove.ts
deleted file mode 100644
index c5f44cb..0000000
--- a/COMMANDS/role/remove.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("remove")
-    .setDescription("Removes a role from someone")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [role/remove]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/_meta.ts b/COMMANDS/settings/_meta.ts
deleted file mode 100644
index 63d726e..0000000
--- a/COMMANDS/settings/_meta.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-const name = "settings";
-const description = "Change bot settings";
-
-export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/settings/all.ts b/COMMANDS/settings/all.ts
deleted file mode 100644
index 0f17545..0000000
--- a/COMMANDS/settings/all.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("all")
-    .setDescription("Shows a full UI of all settings")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [settings/all]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/automation.ts b/COMMANDS/settings/automation.ts
deleted file mode 100644
index 3874f7f..0000000
--- a/COMMANDS/settings/automation.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("automation")
-    .setDescription("Shows all automation options")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [settings/automation]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/log/_meta.ts b/COMMANDS/settings/log/_meta.ts
deleted file mode 100644
index 15a6fd4..0000000
--- a/COMMANDS/settings/log/_meta.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-const name = "log";
-const description = "Settings for logging";
-
-export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/settings/log/channel.ts b/COMMANDS/settings/log/channel.ts
deleted file mode 100644
index af570a7..0000000
--- a/COMMANDS/settings/log/channel.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("channel")
-    .setDescription("Sets the log channel")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [settings/log/channel]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/log/events.ts b/COMMANDS/settings/log/events.ts
deleted file mode 100644
index 4f4c9bd..0000000
--- a/COMMANDS/settings/log/events.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("events")
-    .setDescription("Sets what events should be logged")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [settings/log/events]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/log/ignore.ts b/COMMANDS/settings/log/ignore.ts
deleted file mode 100644
index eea7048..0000000
--- a/COMMANDS/settings/log/ignore.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("ignore")
-    .setDescription("Sets which users, channels and roles should be ignored")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [settings/log/ignore]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/log/ignored.ts b/COMMANDS/settings/log/ignored.ts
deleted file mode 100644
index df5f7b6..0000000
--- a/COMMANDS/settings/log/ignored.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("ignored")
-    .setDescription("Gets the ignored users, channels and roles")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [settings/log/ignored]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/mod/_meta.ts b/COMMANDS/settings/mod/_meta.ts
deleted file mode 100644
index 713bb48..0000000
--- a/COMMANDS/settings/mod/_meta.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-const name = "announcements";
-const description = "Settings for mod messages";
-
-export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/settings/mod/channel.ts b/COMMANDS/settings/mod/channel.ts
deleted file mode 100644
index 16230ba..0000000
--- a/COMMANDS/settings/mod/channel.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("channel")
-    .setDescription("Sets the channel for staff messages to go to")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [settings/mod/channel]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/mod/events.ts b/COMMANDS/settings/mod/events.ts
deleted file mode 100644
index 3dc5e99..0000000
--- a/COMMANDS/settings/mod/events.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("events")
-    .setDescription("Sets which events mods should be notified about")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [settings/mod/events]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/tickets.ts b/COMMANDS/settings/tickets.ts
deleted file mode 100644
index 33e1586..0000000
--- a/COMMANDS/settings/tickets.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("tickets")
-    .setDescription("Shows settings for tickets")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [settings/tickets]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/verify/_meta.ts b/COMMANDS/settings/verify/_meta.ts
deleted file mode 100644
index 999c50b..0000000
--- a/COMMANDS/settings/verify/_meta.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-const name = "verify";
-const description = "Settings for verification";
-
-export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/settings/verify/channel.ts b/COMMANDS/settings/verify/channel.ts
deleted file mode 100644
index ad881c2..0000000
--- a/COMMANDS/settings/verify/channel.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("channel")
-    .setDescription("Sets the verify channel")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [settings/verify/channel]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/settings/verify/role.ts b/COMMANDS/settings/verify/role.ts
deleted file mode 100644
index 3082c71..0000000
--- a/COMMANDS/settings/verify/role.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("role")
-    .setDescription("Sets the role given after verifying")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [settings/verify/role]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/tag.ts b/COMMANDS/tag.ts
deleted file mode 100644
index d716670..0000000
--- a/COMMANDS/tag.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = new SlashCommandBuilder()
-    .setName("tag")
-    .setDescription("Manage or get a tag")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [tag]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/ticket/_meta.ts b/COMMANDS/ticket/_meta.ts
deleted file mode 100644
index 8c21466..0000000
--- a/COMMANDS/ticket/_meta.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-const name = "ticket";
-const description = "Manage modmail tickets";
-
-export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/ticket/close.ts b/COMMANDS/ticket/close.ts
deleted file mode 100644
index 1e0856d..0000000
--- a/COMMANDS/ticket/close.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("close")
-    .setDescription("Closes a ticket")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [ticket/close]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/ticket/create.ts b/COMMANDS/ticket/create.ts
deleted file mode 100644
index 6f45cc2..0000000
--- a/COMMANDS/ticket/create.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("create")
-    .setDescription("Creates a new modmail ticket")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [ticket/create]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/ticket/delete.ts b/COMMANDS/ticket/delete.ts
deleted file mode 100644
index 587ecf4..0000000
--- a/COMMANDS/ticket/delete.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("delete")
-    .setDescription("Deletes a ticket")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [ticket/delete]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/user/_meta.ts b/COMMANDS/user/_meta.ts
deleted file mode 100644
index 6c14052..0000000
--- a/COMMANDS/user/_meta.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-const name = "user";
-const description = "Commands for user info";
-
-export { name, description };
\ No newline at end of file
diff --git a/COMMANDS/user/about.ts b/COMMANDS/user/about.ts
deleted file mode 100644
index 9015c13..0000000
--- a/COMMANDS/user/about.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("about")
-    .setDescription("Shows info about a user")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [user/about]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/user/avatar.ts b/COMMANDS/user/avatar.ts
deleted file mode 100644
index 9e22d0c..0000000
--- a/COMMANDS/user/avatar.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = (builder: SlashCommandSubcommandBuilder) =>
-    builder
-    .setName("avatar")
-    .setDescription("Shows a users avatar")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [user/avatar]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/COMMANDS/verify.ts b/COMMANDS/verify.ts
deleted file mode 100644
index bb93dde..0000000
--- a/COMMANDS/verify.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = new SlashCommandBuilder()
-    .setName("verify")
-    .setDescription("Get verified in the server")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Command incomplete [verify]");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return true;
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/package.json b/package.json
index b5b9798..8e5042f 100644
--- a/package.json
+++ b/package.json
@@ -12,7 +12,7 @@
   "scripts": {
     "build": "tsc",
     "start": "node --experimental-json-modules dist/index.js",
-    "dev": "tsc && node --experimental-json-modules dist/index.js"
+    "dev": "rm -rf dist && tsc && node --experimental-json-modules dist/index.js"
   },
   "repository": {
     "type": "git",
diff --git a/src/commands/example.ts b/src/commands/example.ts
deleted file mode 100644
index 73e967e..0000000
--- a/src/commands/example.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { CommandInteraction } from "discord.js";
-import { SlashCommandBuilder } from "@discordjs/builders";
-import { WrappedCheck } from "jshaiku";
-
-const command = new SlashCommandBuilder()
-    .setName("examplecommand")
-    .setDescription("An example command")
-
-const callback = (interaction: CommandInteraction) => {
-    interaction.reply("Hello, world!");
-}
-
-const check = (interaction: CommandInteraction, defaultCheck: WrappedCheck) => {
-    return interaction.user.id !== "123456789";
-}
-
-export { command };
-export { callback };
-export { check };
\ No newline at end of file
diff --git a/src/config.json b/src/config.json
deleted file mode 100644
index 14a32a7..0000000
--- a/src/config.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-    "token": "your-token-here",
-    "developmentToken": "Nzc5Mzg4ODU2NTM2NTMwOTg0.X7f0bw.yzZg659UsLtHTfmeTsDXZa7O8K8",
-    "managementGuildID": "your-management-guild-id-here",
-    "developmentGuildID": "864185037078790195",
-    "enableDevelopment": true,
-    "owners": [
-      "317731855317336067",
-      "438733159748599813"
-    ]
-}
\ No newline at end of file
diff --git a/src/index.ts b/src/index.ts
index 6bc97b7..9a361f6 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,6 +1,6 @@
 import { HaikuClient } from 'jshaiku';
 import { Intents } from 'discord.js';
-import config from './config.json' assert {type: 'json'};
+import config from './config/main.json' assert {type: 'json'};
 
 const client = new HaikuClient({
     intents: new Intents(32767).bitfield,  // This is a way of specifying all intents w/o having to type them out
diff --git a/tsconfig.json b/tsconfig.json
index 94aa211..257f513 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -4,11 +4,11 @@
         "target": "es2020",
         "sourceMap": true,
         "esModuleInterop": true,
-        "moduleResolution": "Node",
+        "outDir": "./dist",
+        "declaration": true,
+        "declarationMap": true,
         "resolveJsonModule": true,
-        "outDir": "./dist"
+        "moduleResolution": "node",
     },
-    "include": [
-        "src/**/*"
-, "old/commands", "COMMANDS/mod/lock", "COMMANDS/role", "COMMANDS/settings"    ]
+    "include": ["src/**/*"]
 }
\ No newline at end of file
