Broke apart modeling into steps with promise api