Streams now support non-8-bit bytes, safer implementation, better docs, cleanup