sub-class bindings on string type

this is where most of the polymorphism will be so makes a lot of
sense split into sub classes. It should make it pretty easy to tune
their behaviour later on.
mark extension points