Full solution, includes a DiagramBuilder, some pseudo logging, some basic tests