make it easier to override createUrl()