Functors:
 - generator, observer