半成品，only for merge