logic change in __virtual__ method