retval is now a property of the type, rather than the function