public function connect(string $dsn, string $username = null, string $password = null, array $options = []) : bool {
    try {
      if (empty($options)) {
        parent::__construct($dsn, $username, $password, $this->default_options);
      } else {
        parent::__construct($dsn, $username, $password, $options);
      }
    } catch (PDOException $e) {
      $this->pdo_exception = $e;
      $this->connected = false;

      return false;
    }

    $this->connected = true;

    return true;
  }