virtual function calls

correctly set up vtable, including overriding methods
TODO: fix non-virtual function calling (important for union/struct)