Switched to JSON for the wire format as it's more readable, and doesn't seem to trigger the decoder 8 times (although I'm still not sure why that was)
Started to move to a more decoupled system involving channels, and therefore fewer pointers
Removed some more pointers in favour of channels
Merge branch 'refactor'