add plusplus subsub operator.
add visitor pattern for future use