Refactoring: add pulls, extract common elements, add new behavior