refactor binary expression builder