does not need protobuf dependency