paths respect projectDir + fewer callbacks