the build method is not re-entrant. it's probably not a problem in practice, but it might be a surprise to someone.