refactor, etc