Started rewriting with Google Protocol Buffers