Refactor to use steps, WIP