separating upgraders so that they can be controller separately