retval is superfluous