simple singleton macro