Reimplemented navigation using an abstraction (NavigationController), added WM_APPCOMMAND handling