Go always does assignment, argument passing, and channel puts by copy rather than by reference. Since a MonitorResponse.ResponseData could potentially be pretty large, it'd be better to minimize copies by using `chan *MonitorResponse` and generally working w/ pointers to MonitorResponse structs rather than the structs themselves.