revised model so its not a hack