tighten up recursive copy a bit