! refactoring AList and AListItem