Hmm.  For safety purposes I suggest you `assert not hasattr(self, "deferred")` at the top of `start()`.  If we accidentally call start() multiple times this could become difficult to debug in the long run.  The other reason is a deferred's callback can only be called once and if you assert that `deferred` we can limit the exposure others have to Twisted `AlreadyCalledError` we can be obscure when randomly figured during execution.