private static function connect_database($name, $id) {
        if(is_null($id) && isset(self::$configs[$name])){
            $info = self::$configs[$name];
        } elseif(isset(self::$configs[$name][$id]) && is_array(self::$configs[$name])) {
            $info = self::$configs[$name][$id];
        } else {
            throw new Database_Exception("No DB with name $name $id available!");
        }
        
        Logger::debug("Connecting to DATABASE [<b>$name</b>] dns: " . var_export($info,true));
        
        if(get_class($info) != 'Dreamblaze\\SqlS\\Database_Config'){
            throw new Database_Exception("Invalid config on $name $id");
        }
        
        $fqclass = self::load_adapter_class($info->protocol);

        try {
            $connection = new $fqclass($info);
            $connection->protocol = $info->protocol;

            if (isset($info->charset))
                $connection->set_encoding($info->charset);
            
            $connection->set_timezone();
        } catch (PDOException $e) {
            throw new Database_Exception(null,null,$e);
        }
        
        if(is_null($id)){
            self::$connections[$name] = $connection;
        } else {
            self::$connections[$name][$id] = $connection;
        }
    }
    /**
     * Execute a raw SQL query on the database.
     *
     * @param string $sql Raw SQL string to execute.
     * @param array &$values Optional array of bind values
     * @return mixed A result set object
     */
    public function query($sql, $values=array()) {
        $this->last_query = $sql;
        Logger::debug($sql . ' => ' . var_export($values,true));
        
        try {
            if (!($sth = $this->connection->prepare($sql)))
                Logger::error('PDO Prepare ERROR!' . ' SQL:' . $sql);
        } catch (PDOException $e) {
            Logger::error(array($e->getMessage(), $e->getTraceAsString()));
        }

        $sth->setFetchMode(PDO::FETCH_ASSOC);
        
        try {
            if (!$sth->execute($values)){
                Logger::error(array('PDO Exec ERROR!', "SQL: " . $sql , "VALUES: " . var_export($values, true) ,'PDO: ' . $sth->errorInfo()));
                throw new Database_Exception("PDO Exec ERROR! (1)", $e->getCode() , $e);
            }

        } catch (PDOException $e) {
            Logger::error(array('PDO Exec ERROR!' , "SQL: " . $sql , "VALUES: " . var_export($values, true) , "PDO: " . $e->getMessage()));
            throw $e;
        }
        return $sth;
    }