incomplete refactor