add visit methods for block and program