Feature/generic collection interfaces

**check this out**
note this