private function fillModel()
    {
        // If we've already filled this model don't fill it again
        if ($this->hydrated) return true;

        // Fire hydrating event
        if ($this->fireModelEvent('hydrating') === false) return false;

        // Fill from data and record we've filled it
        $this->fill($this->dataset);
        $this->hydrated = true;

        // Remove any fields from the model which can't be submitted, such as objects and arrays
        // - This will prevent errors with bound objects being saved twice
        $this->removeInvalidAttributes();

        $this->fireModelEvent('hydrated', false);

        return true;
    }