merge Bryan's commit and refactor spec for page:change and :restore accordingly