add push_all function