separating value from event flows