https://objectdisoriented.evokewonder.com/posts/introducing-rustybot-part-3/
Introducing Rustybot (part 3 of n) - Object Disoriented