new version (add precompile)