need to pass self to run