first push implementation