Abstract Pattern Design