nits: I'd be more comfortable with goBackward(), goForward(), canGoBackward(), canGoForward().