forget_state can be a callback - close #786