TODO:partial specilaization only work for the whole class