completed builder refactor