Why should this be awful? You have got the global entity list and if you want to maintain own lists you could for example use a std::vector or so for this and could write an own function like entRemove that removes the pointer from the list and the global list at the same time. Kinda trivial.