some of these (e.g. `_refresh`) could do with a docstring explaining what is expected of an implementation