tried to implement ProtoBase