reimplemented BuiltinList and separated ListUpdate to a different class