now using clang to avoid typedef redefinition issues