generation step