operate on binary data instead of lists of bytes