Refactored to copy checkpoint object before persisting to prevent side effects when batch artifacts reuse checkpoint objects
Refactored to use SerializationUtils and cleaned up throws clause