implemented arraylist