Update controller methods to be all virtual

Fix #596
this pattern is gone (it's fine to leave in if there are not other changes, but if you make another iteration just cut it out)