prepare to add/update, but not tested