more stringent compile rules