the error messages it produces are sometimes useful though