perfection function, add ZIP function