diff --git a/src/index.ts b/src/index.ts
index 49ade67..eac8818 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,38 +1,16 @@
-import { Logger } from "./utils/log.js";
 import runServer from "./api/index.js";
-import Memory from "./utils/memory.js";
-import type { VerifySchema } from "./reflex/verify.js";
-import { Guilds, History, ModNotes, Premium } from "./utils/database.js";
 import client from "./utils/client.js";
-import EventScheduler from "./utils/eventScheduler.js";
-import type { RoleMenuSchema } from "./actions/roleMenu.js";
+import config from "./config/main.json" assert { type: "json" };
+import register from "./utils/commandRegistration/register.js";
 
-await client.registerCommandsIn(`dist/commands`);
-await client.registerEventsIn(`dist/events`);
 client.on("ready", () => {
+    console.log(`Logged in as ${client.user!.tag}!`);
+    register();
     runServer(client);
 });
 process.on("unhandledRejection", (err) => {
     console.error(err);
 });
 
-client.logger = new Logger() as Logger;
-client.verify = {} as Record<string, VerifySchema>;
-client.roleMenu = {} as Record<string, RoleMenuSchema>;
-client.memory = new Memory() as Memory;
-client.noLog = [] as string[];
-client.database = {
-    guilds: await new Guilds().setup(),
-    history: new History(),
-    notes: new ModNotes(),
-    premium: new Premium(),
-    eventScheduler: await new EventScheduler().start()
-} as {
-    guilds: Guilds;
-    history: History;
-    notes: ModNotes;
-    premium: Premium;
-    eventScheduler: EventScheduler;
-};
-
-await client.login();
+if (config.enableDevelopment) { await client.login(config.developmentToken); }
+else { await client.login(config.token); }
