Reorganized files; Added interfaces for visitor pattern; Enhanced smart_ptr.