def load_plugins(config, reinit=False):
        plugins = []

        for config_section in config.sections():
            config_section = config_section.strip()

            if config_section in config_base_sections:
                continue

            # Parse other possible imports
            parsed_plugin = config_section.split('.')

            if len(parsed_plugin) == 1:
                modname = 'ludolph.plugins.' + config_section
                plugin = config_section
            else:
                modname = config_section
                plugin = parsed_plugin[-1]

            logger.info('Loading plugin: %s', modname)

            try:
                # Translate super_ludolph_plugin into SuperLudolphPlugin
                clsname = plugin[0].upper() + re.sub(r'_+([a-zA-Z0-9])', lambda m: m.group(1).upper(), plugin[1:])
                module = __import__(modname, fromlist=[clsname])

                if reinit and getattr(module, '_loaded_', False):
                    reload(module)

                module._loaded_ = True
                imported_class = getattr(module, clsname)

                if not issubclass(imported_class, LudolphPlugin):
                    raise TypeError('Plugin: %s is not LudolphPlugin instance' % modname)

                plugins.append(Plugin(config_section, modname, imported_class))
            except Exception as ex:
                logger.exception(ex)
                logger.critical('Could not load plugin: %s', modname)

        return plugins