IName = Base name for a class, use for devices which need a clean base container, usually purely virtual? Also contains base class methods and tracking.
Name = IName contained in a smart pointer container
CNameImpl = Class implementation base, sometimes derived from IName
NameImpl = Class implementation in a smart pointer container
CName = C Implementation of Name?