app and page classes