refactor demand explosion out of utils and into models
(refactoring made possible by tests)