second refactored push