Generic Collection with Interfaces and Delegates