splitting up implmentation
clean up
optimize tree-for
adding addl fields
change interpretation of color
more explicit contracts and checks
save and restore csd
draw not gui
adding convertibles