Altered to use associated objects instead in lieu of subclassing.