Generalize plan snapshot

Im not 100% happy with `SnapshotPlannerSpec` so any suggestions to make it better would be much appreciated.
Might be a larger discussion here, but it is not clear why/what is driving the tendency for private methods. Probably easiest to have a five minute catch-up tomorrow just so I understand why.