refactor DX11App into 3 layers