changed l_value ret type to handle arrays correctly