public static void registerCommandClass(Class clazz) {
    for (Method method : clazz.getDeclaredMethods()) {
      // Channel commands
      if (method.isAnnotationPresent(ChannelCommand.class)) {
        Annotation annotation = method.getAnnotation(ChannelCommand.class);
        ChannelCommand command = (ChannelCommand) annotation;
        commandMap.put(COMMAND_PREFIX + command.name(), method);
      }

      // Private message
      if (method.isAnnotationPresent(PrivateMessageCommand.class)) {
        Annotation annotation = method.getAnnotation(PrivateMessageCommand.class);
        PrivateMessageCommand command = (PrivateMessageCommand) annotation;
        privateMessageCommandMap.put(COMMAND_PREFIX + command.name(), method);
      }
    }
  }
  // Private message commands
  public void onPrivateMessage(PrivateMessageEvent event) throws Exception {
    String message = event.getMessage();
    String[] seperated;
    if (event.getMessage().contains(" ")) seperated = event.getMessage().split(" ");
    else seperated = new String[] {event.getMessage()};

    // If it's a command, let's execute it!
    if (privateMessageCommandMap.containsKey(seperated[0])) {
      String commandString = seperated[0];
      Method method = privateMessageCommandMap.get(commandString);
      PrivateMessageCommand command = method.getAnnotation(PrivateMessageCommand.class);

      // Build args
      String[] args = buildArgs(seperated);

      // Execute command. (null represents object to invoke on, since method is static no object)
      // Check permissions
      if (hasPermission(command.permissionLevel(), event.getUser(), null)) {
        if (args.length < command.minArgs()) {
          event.respond("Not enough arguements! Usage: " + command.usage());
        } else if (args.length > command.maxArgs()) {
          event.respond("Too many arguements! Usage: " + command.usage());
        } else {
          // Okay, everything's all good, lets run the command!
          method.invoke(null, event, args);
        }
      } else {
        event.respond("You do not have permission to execute this command!");
      }
    }
  }