much stricter compile