add visitor mode;
add a io api;