some parts of the encode process (e.g dithering) could be made modular, to allow users to choose dither impl per encode (and provide their own)