Use immutable list to implement List