use matching push instead of simple