Return shared_ptr instead of raw File pointer