[WIP] Refactor MSM

So isn't this just a specific case of a general mapping onto some basis?  If so, shouldn't we write the general version first?