Draft check-in of the Builder pattern. Needs cleaning up.