pushes schedules logic down from controller and adds model tests for schedules