well they can use self but it's the same instance and so not thread safe

so `x = self.my_function()` is cool but `self.my_var = x` will end in tears

the thing about having it in the class is it is self contained