Split the builder into separate classes for clarity.