This function has so many input arguments, I think it's okay to move these before `verbose`.