push first implement