added a periodic worker

The periodic worker will call a function periodically based on an input duration
Something bugs me about this timeout -- maybe make a single sub-second timeout for all 5 to happen in? 5*LongWait is a *really* long time to figure out we're not firing anything like every millisecond.