all class functions done for unique, still make_unique to do and tests