- only build if necessary