I'm thinking `core.js`, `middleware.js`, and `browser.js` should each be their own node module with the latter 2 depending on `core.js`. Thoughts?