support explicit template param(wip)