as discussed, this will be another pull request.
please tag with `#refactor @mix` or something