can reverse the others
complete special character list
stuff
uses arbitrary streams instead of files; many other improvements