public function wakeByInterfaces(array $directories, $interfaceNames)
    {
        $classCollection = $this->awake($directories);
        $classes         = array();

        foreach ($classCollection as $className) {
            $reflectionClass = new ReflectionClass($className);
            $interfaces      = $reflectionClass->getInterfaces();

            if (is_array($interfaces) === true && isset($interfaces[$interfaceNames]) === true) {
                $class           = str_replace('\\', '', strrchr($className, '\\'));
                $classes[$class] = $className;
            }
        }

        return $classes;
    }