implement AbstractList