implement seamless generation