Having an 'options' argument and a separate 'encoding' argument is kind of odd.  Suggestions for a nicer API?