What is the thinking behind making MachineSpec separate from MachineState?