more interfaces
more separation between window and engine