Before we get into using this abstraction, lets talk about it. No abstraction is perfect. There is room for debate and discussion. For example, here we have elected to expose a wordEntry object. We could have instead provided an addCount method. What do you feel would be better? We have factored the problem so that functions that extract a word (a string) from an array of chars are outside the words abstraction. But they have similar names. Is this confusing? Should we have introduced two distinct abstractions can further cleaned up the main application?