Move URL decoding to the model so it's cached