added exceptions, operators, virtual function