Builder: add text field support, make interface cleaner