object factory framework to replace raw pointers
intrusive list that works with managed pointers