public function createDirectories()
    {
        if (!file_exists($this->getDomainPath())) {
            mkdir($this->getDomainPath(), 0777);
        }

        if (!file_exists($this->getInfrastructurePath())) {
            mkdir($this->getInfrastructurePath(), 0777);
        }

        if (!file_exists($this->getTestPath())) {
            mkdir($this->getTestPath(), 0777);
        }

        if (!$this->option('without-abstracts')) {
            $this->copyAbstractClasses();
        }

        $this->setDomainPath($this->getDomainPath(DIRECTORY_SEPARATOR.$this->getDirectory()));
        $this->setInfrastructurePath($this->getInfrastructurePath(DIRECTORY_SEPARATOR.$this->getDirectory()));
        $this->setTestPath($this->getTestPath(DIRECTORY_SEPARATOR.$this->getDirectory()));

        if (!file_exists($this->getDomainPath())) {
            mkdir($this->getDomainPath(), 0777);
            mkdir($this->getDomainPath('/Contracts'), 0777);
        }

        if (!file_exists($this->getInfrastructurePath())) {
            mkdir($this->getInfrastructurePath(), 0777);
            mkdir($this->getInfrastructurePath('/Contracts'), 0777);
        }

        if (!file_exists($this->getTestPath())) {
            mkdir($this->getTestPath(), 0777);
        }

        return true;
    }