use abstract
tweak