checkpointing; preparing to add opaque value handling