compilation and selftesting