start refactoring...