The dependency injection in the web package is weird. A better explanation in `DESIGN.md` would be nice.