preprocessor now skips empty files; fixes #147 and #137