implement zip-step and partition