only AbstractUrl implements UrlInterface
adding ComponentInterface::exchange method