refactoring to keep versions in sync