may be have a getter for self._stop instead of should_stop()? Fine either way (couldn't make up my mind to feel strongly about either)