add virtual function test