refactor12