monadizing the visitor