why are we duplicate a class? one ByteBuffer is not enough? compatibility issues?