cache `view()` call, see #5