introducing AbstractUrl
adding exchange method to components classes