initial working generator
merge