Refactor so that builders are interfaces