refactor to remove AbstractUrl. It was a redundant class. This moves all implementation to the Child classes which is more proper IMO.