The following are initial findings, but it's a good place to start: Members which need a mutex protecting them: - [x] `conversations` - [x] `timeout_jobs` Members which should be removed. Instead `check_update()` should probably return a context to be passed to `handle_updates()`: - [x] `current_conversation` - [x] `current_handler` - [x] All other members must be set internal (i.e. renamed to be prefixed with `__`) so they won't be modified after `__init__()`.