use _dump/_load for Marshal to allow custom allocation and to freeze the object safely