added array list impl