support -Wall -pedantic-errors