templates can change some behaviors in some classes