new method of incremental compilation that doesn't break all the things