Use TVar instead of MVar
Make Robot a lot more terse
Add boilerplate stuff
Use newtype instead of data