abstract patterns