use anonymous classes for DSL

- keeps the instances out of the class heirarchy and no cross
  talk through class variables (yeah, this is overkill)