refactor fp, bp, update
????
merge