make app._page listenable
fix client-side initialization