books and some refactoring