changed the canuse method to also work for creating new objets and added isValid method