some ground work for refactoring objects