mostly work on data maps; considering use of zippers
modify streams to be lazily computed (via bind instead of inline);