Nit-pick: You could stub out `check_op_output()` as an abstract method to make sure it gets implemented in derived classes, like you did with `op()`.