extract IVisitor and use base if possible
new requirement coming: has implimented markdown boldtext.