#abstract pattern