add a combine function in new implementation