factory: add show() and hide() context managers