decode directly from disk.  Still space leaking