Adding virtual constructor idiom,small fixes.