should we return by value here? Or should we fill an arg? Maybe this is fine as it is.