public void loadCommands(ComponentManager componentManager) {
		// use reflection to get access to bukkit's command map
		try {			
			// grab our field
			final Field commandMapField = Bukkit.getServer().getClass().getDeclaredField("commandMap");
			
			// make it accessible
			boolean accessible = commandMapField.isAccessible();
			commandMapField.setAccessible(true);
			
			// now get the actual command map
			CommandMap commandMap = (CommandMap)commandMapField.get(Bukkit.getServer());
			
			// register commands from the class manager
			HashMap<String, Component> registeredComponents = componentManager.getRegisteredComponents();
			for(String component: registeredComponents.keySet()) {
				// and register it's methods
				// but only if its not disabled
				if(!registeredComponents.get(component).disabled) {
					registerComponentCommands(commandMap, registeredComponents.get(component));
				}
			}
			
			// now register all our commands and aliases with bukkit
			final Field commandMapKnownCommandsField = commandMap.getClass().getDeclaredField("knownCommands");
			commandMapKnownCommandsField.setAccessible(true);
			@SuppressWarnings("unchecked")
			HashMap<String, org.bukkit.command.Command> knownCommands = (HashMap<String, org.bukkit.command.Command>)commandMapKnownCommandsField.get(commandMap);
			for(String knownAlias: knownAliases) {
				// if it's already a bukkit command, overwrite it
				if(commandMap.getCommand(knownAlias) != null) {
					Logger.warning("Overwriting command '%s'!", knownAlias);
					commandMap.getCommand(knownAlias).unregister(commandMap);
				}
				
				// create an actual command, injecting it into the Bukkit commandMap
				EssentialsCommand essentialsCommand = new EssentialsCommand(knownAlias);
				/// manually overwrite the command
				knownCommands.put(knownAlias, essentialsCommand);
				// register our command map to our command
				essentialsCommand.register(commandMap);
				// set our new command's executor to be this class
				essentialsCommand.setExecutor(this);
			}
			
			// restore our commandMap to its former glory
			commandMapField.setAccessible(accessible);
		}
		catch(Exception e) {
			e.printStackTrace();
			Logger.error("Failed to load components / commands!");
		}
	}