I don't think these interfaces add much for the example. (They'd be useful in real code, but this is an example).