A lot of the internal logic that powers these functions should be shifted to class methods on the models.