refactoring: delete init methods (move all initialization to constructors). Transition to using shared_ptr & unique_ptr