Unique pointers added, tetsing needs to be done.