refactor v1