Why do we need another class for this? This introduces a cyclic class dependency: WorkspaceProtocol > WorkspaceUrlHandler > WorkspaceUrlConnection > WorkspaceProtocol.