class ConverterCommand implements ExecutableCommand {

    @Override
    public void executeCommand(CommandSender sender, List<String> arguments) {
        Class<? extends Converter> converterClass = getConverterClassFromArgs(arguments);
        if (converterClass == null) {
            sender.sendMessage("Converters: " + String.join(", ", CONVERTERS.keySet()));
            return;
        }

        // Get the proper converter instance
        final Converter converter = converterFactory.newInstance(converterClass);

        // Run the convert job
        bukkitService.runTaskAsynchronously(new Runnable() {
            @Override
            public void run() {
                try {
                    converter.execute(sender);
                } catch (Exception e) {
                    commonService.send(sender, MessageKey.ERROR);
                    ConsoleLogger.logException("Error during conversion:", e);
                }
            }
        });

        // Show a status message
        sender.sendMessage("[AuthMe] Successfully started " + arguments.get(0));
    }

}