cleaner Op() production
template visitor class