refactor strgen interface once again

as this provides more flexibility and potentially better performance. We
try to squeueze all interface changes into as early an release as
possible.