push logic implemented