public function copy($source)
    {
        if (!array_key_exists($source, $this->getCatalog())) {
            throw new SkeletonException('Invalid source file');
        }
        $target = $this->getCatalog()[$source];
        if (!$this->canICopyTo($target)) {
            throw new SkeletonException('Target is not writable');
        }
        $this->makeDir($target);
        if (!copy($source, $target)) {
            throw new SkeletonException('Error while copying file');
        }

        return $this;
    }