Simon C. Page abstract pattern