don't try to put nil returns from go blocks into channel, just close it
reduce memory use by timers created in loops by sharing channels within a resolution window