final version v3: fixed conflict