add templatemethod