add weaken, refactor status update