Rewrote everything using textproto