I think the `Context` must be immutable to prevent side effects. This way we can track all context modifications and why not provide a history ?