added distinction rval and lval