private function _buildConnection(Dsn $dsn)
    {
        if (isset($this->_drivers[$dsn->scheme])) {
            $driver = $this->_drivers[$dsn->scheme];

            return is_string($driver)
                ? new $driver($dsn) : call_user_func($driver, $dsn);
        }

        // check built in drivers
        switch ($dsn->scheme) {
            case 'mysql':
            case 'mysqli':
                return new Mysqli\Connection($dsn);
        }

        throw new \Pheasant\Exception("Unknown driver $driver");
    }