Speaking about an interface, what about adding a `ContextBuilderInterface`? I could see `add`, `run`, `from`, `write` and `build` in it.  This would allow other implementations of a builder (something not relying on the FS for example) while keeping things coherent. What do you think?