Update controller methods to be all virtual
Fix #596