pedantic by default
Complete rewrite