add compiler magic, don't pollute namespace