Viruses, immunity and evolution