Desig goals Does not return null Value object (thread safety, predictability, functional and things like that) See Martin Fowler's ListAndHash