public function fill(array $data) {
        if ($this->isFullyGuarded()) {
            throw new MassAssignmentException(sprintf('Cannot assign attributes as %s is locked', get_class($this)));
        }

        foreach ($data as $key => $value) {
            if ($this->isFillable($key) && !$this->isGuarded($key)) {
                $this->set($key, $value);
            }
        }

        return $this;
    }