public static Object loadExtension(Class extensionClass) {
        Object ret = null;
        try {
            if (BasicExtension.class.isAssignableFrom(extensionClass)) {
                Constructor[] cs = extensionClass.getConstructors();
                for (Constructor c : cs) {
                    Class[] p = c.getParameterTypes();
                    if (p.length == 1 && p[0].equals(BlackBoard.class)) {
                        ret = extensionClass.getConstructor(BlackBoard.class).newInstance(Application.blackboard);
                        break;
                    }
                }
                if (ret == null && extensionClass.getConstructor() != null) {
                    ret = extensionClass.newInstance();
                }
            }
            if (ret != null) {
                SETTINGS.registerSetting(ret, "Extention Options");
            }
            return ret;
        } catch (Exception e) {
            System.err.println(extensionClass);
            ExceptionHandler.catchException(e);
            StaticUtils.addExceptiontoLog(e, Application.blackboard);
        }
        return ret;
    }