only build fmts once