This commit switches from using a String to a user supplied generic that implements Serialize and Deserialize to make the API more extensible. It also renames some methods and fields for clarity. We aren't really getting so much as we are sending. I also feel that data
is a more idiomatic name than contents
.