https://pilgwon.github.io/post/introduction-to-reactive-programming