adding visitor to look for capabilities; and modifying how the default implementation classes generated