abstracted builders