Refactor shift helpers and add API controller