remove mix-in, use composition for CheckpointStore and CheckpointState