generation seperate