added IIFE and usestrict