refactor Model.create to support completion hooks with access to results of previous hooks