As a note on exposing the List, my code does this too simply because I used the stock Java create getters/setters. I completely agree that the Lists should not be exposed as it always seems like good practice. I will make a note to make things more immutable in the future.