Probably should be return-by-value, rather than ref out param.