stage 1 refactor