better iife structure