build with cache