semi working generation