Push some exceptions down, and use ByteBuffer instead of Object