View and Layer lifecycle  will be managed by shard_ptr for now, since this is the quickest way to implement refcounting, UserInterface is not a View anymore, instead it has a rootView now, Engine now has a ui member