[WIP] Refactor MSM

So if they're incompatible, then maybe a `ValueError` is in order?