precode done, except visitor code