work on convertors + generic visiting infrastructure

**please review**, @dwightguth, @osa1, @radumereuta 
use Java 8's Optional.