improve MessageSpec and ProtoParser