Refactored collection code - collections are now a lot more responsible for their child events