refactor part 2...