starting to shape up the Pattern class hierarchy