I'm not sure how deep we want to go into different encodings. If we want to be able to accept any data as input, this is the kind of thing we'll need though.