Added a much cleaner fix for #14 - Uses a temp file instead of loading to RAM