final public function create($table, callable $cb)
    {
        $table = $this->getTablePrefixed($table);

        $generator = new SQLGenerator($table, $this->adapter->getName());

        call_user_func_array($cb, [$generator]);

        if ($this->adapter->getName() == 'mysql') {
            $engine = sprintf('ENGINE=%s', strtoupper($generator->getEngine()));
        } else {
            $engine = null;
        }

        $sql = sprintf("CREATE TABLE `%s` (%s) %s;", $table, $generator->make(), $engine);

        return $this->executeSqlQuery($sql);
    }