refactoring volume two