fixed for compiling under llvm