full visitor pattern withh double dispatch
strong typing based on interface, not object
documentation (commiting now from Guadeloupe)
some comments and refactoring for D.R.Y