question mark galore
sharing arrays is bas design

It is dangerous to return internal arrays when the expecation is that the caller should not be able to modify the contents. Hence we are using a List and relying on unmodifiable collections to pull it off