refactor, and make ZipFolder support memory data