Input handling via events (close #3). Allow sending messages and replying to messages (close #4)