now we support old school MarshalJSON() and UnmarshalJSON([]byte) as well