Make Window::{create, create_shared} both return an Option<Window>
Add spawn function to make initialisation simpler