separate expr from compiler