Currently only SPMC, but MPMC transformation is relatively trivial. Documentation will come in a follow-up commit.