new structure

- use ByteBufferReader to read and ByteBufferWriter to write
- removed ByteBufferHandler
- new Option System
- new write test