Major refactor, pushing the collecting/reporting back to each class