Refactored push