Split files out, made everything return values rather than mutate a destination parameter