Refactoring Java For Testing