@Override
    public Map<String, UUID> deleteNamesAndReturn(final String... names) {
        Map<String, UUID> map = new HashMap<>();

        List<String> lowercaseNames = new ArrayList<>();
        // Convert names to lowercase
        for (int i = 0; i < names.length; i++) {
            lowercaseNames.add(i, names[i].toLowerCase());
        }

        // Loop through all uuids
        for (String uuid : config.getKeys(false)) {
            boolean changes = false;
            List<String> list = config.getStringList(uuid);

            // Loop through all the names belonging to the current uuid
            for (int i = 0; i < list.size(); i++) {
                String uuidName = list.get(i);
                // Loop through all the names requested and remove both, from the lowercaseNames (since each name is 
                // unique) and from the list (names belonging to the uuid)
                for (int j = 0; j < lowercaseNames.size(); j++) {
                    String name = lowercaseNames.get(j);
                    if (uuidName.equals(name)) {
                        // TODO figure out an efficient way to get exact name (as provided in names) instead of 
                        // putting lowercase name
                        map.put(name, UUID.fromString(uuid));
                        list.remove(i);
                        lowercaseNames.remove(j);
                        changes = true;
                    }
                }
            }
            if (changes) {
                config.set(uuid, list);
            }
        }

        return map;
    }