Changed all delegates to optional