smart return-value object
