add precompile function