demands model