change extern to namespace to get around clang bug.