short update with virtual functions