use new matcher on expressions; some refactors