use LinkedList instead of ArrayList