protected function downloadFolder($dest, $callback = null)
    {
        $retval = [
            'success' => false,
            'data'    => [],
        ];

        if (!is_string($dest)) {
            throw new \Exception("Must pass in local path to download directory to.");
        }

        $nodes = $this->getChildren();

        $dest = rtrim($dest) . "/{$this['name']}";
        if (!file_exists($dest)) {
            mkdir($dest);
        }

        foreach ($nodes as $node) {
            if ($node->isFile()) {
                $node->download("{$dest}/{$node['name']}", $callback);
            } else if ($node->isFolder()) {
                $node->download($dest, $callback);
            }
        }

        $retval['success'] = true;

        return $retval;
    }