This simply looks for the first interface with the appropriate class, subclass and protocol which we can initialize now.