Java Refactoring and Designing for Testability