Fix oversights

Missing test coverage for `frame_no` and `process_func` let in some API inconsistencies and some functionality missing from some classes.

This adds tests and makes several important (but I think uncontroversial) fixes.