Update the visitor interface and add more tests