works with -Wall