introducing AbstractUrl