GetPropertyValue should be generic to save having to remember to cast all the time.