same motivation here, recognise the concepts from reactive streams