TODO: 

 - purpose statement for each interface method 

 - one day, not now: blank out error messages somehow on the next event 
 - one day, not now: a common abstract class
      ;; Information about the union's common fields:
      (add-button info-pane "Add Common Field"
                    (lambda (x e) (send field-panel add)))
      (define field-panel
          (new field-panel%
               (parent info-pane) (window this) 
               (error-message (lambda (x) (error-message x)))))

--------------------------------------------------------------------------------

adapted wizard to interfaces (from abstract classes)
 unions are interfaces plus implementing classes 
 signatures of common methods 

              | construction attributes   --- presentation only 
	      |
Languages     | template       toString         diagram
------------------------------------------------------------------
 BEGINNER     |    --               --             okay
 INTERMEDIATE |  no "public"     no "public"       okay
 PROFESSIONAL |   okay              okay	   okay

--------------------------------------------------------------------------------
view0: 
 design interfaces by hand 
 abstract into functions 
 abstract common pieces via multiple values 

view: 
 replace the multiple values abstraction with classes

data-def0
 everything is a list 

data-def 
 unions (dt) becomes a struct so that I could add common fields 

draw-txt0
 explorative prototype
