refactor 2.0