Assorted suggestions

Some changes that I think are almost entirely reasonable. The tests still pass, so I clearly didn't break anything.

If you don't want to cherry pick the changes that you like, let me know what to do differently and I'll update.
I don't want these as properties until we write setters. Because if you set the bytes but not the properties, you get an async between the parsed properties and the bits.