Small thing to fix, abstract classes should _always_ have a virtual dtor, otherwise behaviour is undefined. Something to add in your examples probably