Looking to visual programming languages, I have begin to look these last days to Lava programming language (not to be confused with the hardware description language).
As usual, looking through the wikipedia page, may be the nice way to begin: http://en.wikipedia.org/wiki/Lava_(programming_language) "completely prevents inadvertent access to uninitialized variables and null objects already at programming time by complete static initialization checks." is a nice feature. Lava is a dynamic language however (based on an interpreter). Buth, like D, include pre and post conditions assertions (design by contract as Eiffel coined the term). Value objects, similar to the invariant of D version 2, more or less. I don't know enough to judge about things like "virtual types" and compare it to the templates. Single assignment, that for me is equivalent to logic variables (with unassigned value, that can be assign just once), allows to have faster algorithms than pure functional style, while keeping the advantage of thread-safe code (without to have locks). This is more or less what I have remembered from trying to read CTM book: http://www.info.ucl.ac.be/~pvr/book.html that pretty use the OZ programming language (in my opinion one of the first programming language to allows Funtionnal, OO, imperative, and logic style of programming, in a massively threaded distributed programming language). Anyway, I think, not even sure, this is lacking in D, and could be interesting. Well, enough said, what I just try to say is: "Lava, as a new experimental object-oriented programming language, is trying some nice features other than visual programming that you may want to look at for ideas of what is going on". The Lave PE (Programming Environment), have integrated help, that describe design choices, and is almost a paper being written.