be more precise in describing the return value
handle the optional 'expire' argument