new "matrix mixer" with a few abstractions to help