list version1 added, build problem
list version2, templates implement must in header file