add sth about generic type