Observer design pattern in kotlin