use the new macro style for singleton define