Not a great fan of passing owned pointers, but no obvious simple replacements.