modified templated