refactoring Container class
all smart pointers
heirarchy optimize