add feature: template