add Struct and template_method