make Synthesis a template class