use abstract representation