first cut at a Poller API.  feedback is requested!