Changed to clang for a change, enhanced testing framework