def _create_template(zmat, memory_size):
    """ wrapper for the template creation
    this is the most flexible way in case it needs to be changed in the future
    """
    template = zmat.get()
    template += '*ACES2( BASIS={basis:s},'
    template += '\n\t' + 'CALC={theory:s},'
    template += '\n\t' + 'MEMORY_SIZE={:d}GB,'.format(memory_size)
    template += '\n\t' + 'IP_CALC=IP_EOMCC,'
    template += '\n\t' + 'PREP_VIBRON=ON,'
    template += '\n\t' + 'GRID_VIBRON={gridVibron:d},'
    template += '\n\t' + 'CC_CONV={ccConv:d},'
    template += '\n\t' + 'SCF_CONV={scfConv:d},'
    template += '\n\t' + 'ESTATE_TOL={estateTol:d},'
    template += '\n\t' + ')'
    template += '\n'
    template += '\n' + '*mrcc_gen'
    template += '\n\t' + 'nip={nip:d}'
    template += '\n' + '*ip_eom'
    template += '\n\t' + 'diabatize=on'
    template += '\n\t' + 'heff_low=0'
    template += '\n\t' + 'heff_high=200'
    template += '\n' + '*end'
    template += '\n'
    return
