separating persistence from external