Extensible Object Factories
A number of base classes in imstk use enums for types and object factories. This looks like a giant if statement with a ton of includes. These are ok, but they aren't extensible. The better solution is to have each class register to the factory a function by its class name to create itself.
If one is familiar with VTK, it does this with vtkStandardNewMacro.