However, consider that things like `Buffer`, `Region` and `Settings` are *not* in the backend package and yet are absolutely critical components. There's no *need* for them to be in the backend package so they aren't, but that doesn't mean that the backend and frontend can't make use of them. Same goes for the `backend/render` package and others.

I like to think that the package separation acts as a kind of code design barrier, ensuring a cleaner and more clearly defined public API of the services provided by the package by enforcing a decoupled package dependency.