returnProperty and requiredProperties don't have to be set any more; handles null