upgrade accepting generic type