Feels too hard to extend.  Gave it some thought and now it's time to refactor.