Made T contravariant. Removed T class constraint