making TemplateSource an interface