split builder up into component files