Let's get event driven! And various improvements