wrap everything in an IIFE.