compiles under clang without warnings