Added a ByteReader protocol (for #4)