Refactored array list into list

Facilitates the conversion between list types if it is required. List
supports the same methods as ArrayList