improve fee compensation, output cleanup, use self.step_factor