[WIP] Refactor MSM

Is there an obvious use case for return negative infinity here rather than raising an exception?