add push pipeline and some design changes