protected function _attachListeners($plugin, $path)
    {
        $path = normalizePath("{$path}/");
        $eventsPath = normalizePath("{$path}/src/Event/");

        if (is_readable($eventsPath) && is_dir($eventsPath)) {
            $EventManager = EventManager::instance();
            $eventsFolder = new Folder($eventsPath);
            Plugin::load($plugin, [
                'autoload' => true,
                'bootstrap' => false,
                'routes' => false,
                'path' => $path,
                'classBase' => 'src',
                'ignoreMissing' => true,
            ]);

            foreach ($eventsFolder->read(false, false, true)[1] as $classPath) {
                $className = preg_replace('/\.php$/i', '', basename($classPath));
                $fullClassName = implode('\\', [$plugin, 'Event', $className]);

                if (class_exists($fullClassName)) {
                    $handler = new $fullClassName;
                    $this->_listeners[] = $handler;
                    $EventManager->on($handler);
                }
            }
        }
    }