putting coercive type decl into typename is better.