setup Command/visitor interfaces and basic inferstructure