Do not encourage anyone to override run()