add preserse_fds, refactor spawn_options