Non-OC code cleanup

There are two small changes I made here.

1.) Use Collection interfaces instead of the actual implementation classes when referring to collections.

We discussed this in one of the OC reviews. Why use the interfaces instead? http://www.javapractices.com/topic/TopicAction.do?Id=26 puts it nicely:

"In general, references to objects should be as generic as possible. The user of such a reference will be protected from possible changes to the underlying implementation class. The ripple effects of such a change are limited to the single line of code which creates the object, and will not propagate any further."

In the case of your OC code, your code shouldn't care that you're using an ArrayList; they just care that it's a List.

2.) Remove unnecessary "public" keyword from method signatures in interfaces

You don't need to write "public" before method signatures in interfaces. They are already assumed to be public.