implemented jsonSerialize