added views and decoupled window & renderer from engine to a user view