Suggestion: in practice and in example, we should decorate this with @abc.abstract method.  The advantage is that we will get an error even trying to instantiate subclasses that do not override this; the NotImplementedError will only throw an exception when we try to call run_worker (which would not occur if we accidentally override run).