public static function create(array $pairs = null)
    {
        $self = self::newSelf($pairs);

        if (!empty($self->attributes) && null === $pairs) {
            $pairs = $self->attributes;
        }

        if (!$self->table()) {
            return false;
        }

        if (empty($pairs)) {
            throw new \LogicException('Could not create empty data');
        }

        if ($self->timestamps) {
            $pairs[self::CREATED] = $pairs[self::UPDATED] = $self->freshDate();
        }

        $query = $self->insert(array_keys($pairs))->values(array_values($pairs));

        if ($result = $query->execute()) {
            $self->attributes[$self->primary()] = $result;

            return $result;
        }

        return false;
    }