feat: add new steps and refactor