wrapped the stuff in an IIFE