image generator as functional object