Added generic implementation of MaterialCollection