templated approach