templated solution