added exhausted and retval methods