no bug - remove a bunch of extra ';'s to make -pedantic happy
no bug - mark several classes final to avoid warnings about deleting objects of polymorphic type