generation framework